Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
In <peer>, make the latency parameter non-mandatory
[simgrid.git] / src / surf / xml / simgrid_dtd.c
1
2 #define  YY_INT_ALIGNED short int
3
4 /* A lexical scanner generated by flex */
5
6 #define yy_create_buffer surf_parse__create_buffer
7 #define yy_delete_buffer surf_parse__delete_buffer
8 #define yy_flex_debug surf_parse__flex_debug
9 #define yy_init_buffer surf_parse__init_buffer
10 #define yy_flush_buffer surf_parse__flush_buffer
11 #define yy_load_buffer_state surf_parse__load_buffer_state
12 #define yy_switch_to_buffer surf_parse__switch_to_buffer
13 #define yyin surf_parse_in
14 #define yyleng surf_parse_leng
15 #define yylex surf_parse_lex
16 #define yylineno surf_parse_lineno
17 #define yyout surf_parse_out
18 #define yyrestart surf_parse_restart
19 #define yytext surf_parse_text
20 #define yywrap surf_parse_wrap
21 #define yyalloc surf_parse_alloc
22 #define yyrealloc surf_parse_realloc
23 #define yyfree surf_parse_free
24
25 #define FLEX_SCANNER
26 #define YY_FLEX_MAJOR_VERSION 2
27 #define YY_FLEX_MINOR_VERSION 6
28 #define YY_FLEX_SUBMINOR_VERSION 1
29 #if YY_FLEX_SUBMINOR_VERSION > 0
30 #define FLEX_BETA
31 #endif
32
33 /* First, we deal with  platform-specific or compiler-specific issues. */
34
35 /* begin standard C headers. */
36 #include <stdio.h>
37 #include <string.h>
38 #include <errno.h>
39 #include <stdlib.h>
40
41 /* end standard C headers. */
42
43 /* flex integer type definitions */
44
45 #ifndef FLEXINT_H
46 #define FLEXINT_H
47
48 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
49
50 #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
51
52 /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
53  * if you want the limit (max/min) macros for int types. 
54  */
55 #ifndef __STDC_LIMIT_MACROS
56 #define __STDC_LIMIT_MACROS 1
57 #endif
58
59 #include <inttypes.h>
60 typedef int8_t flex_int8_t;
61 typedef uint8_t flex_uint8_t;
62 typedef int16_t flex_int16_t;
63 typedef uint16_t flex_uint16_t;
64 typedef int32_t flex_int32_t;
65 typedef uint32_t flex_uint32_t;
66 #else
67 typedef signed char flex_int8_t;
68 typedef short int flex_int16_t;
69 typedef int flex_int32_t;
70 typedef unsigned char flex_uint8_t; 
71 typedef unsigned short int flex_uint16_t;
72 typedef unsigned int flex_uint32_t;
73
74 /* Limits of integral types. */
75 #ifndef INT8_MIN
76 #define INT8_MIN               (-128)
77 #endif
78 #ifndef INT16_MIN
79 #define INT16_MIN              (-32767-1)
80 #endif
81 #ifndef INT32_MIN
82 #define INT32_MIN              (-2147483647-1)
83 #endif
84 #ifndef INT8_MAX
85 #define INT8_MAX               (127)
86 #endif
87 #ifndef INT16_MAX
88 #define INT16_MAX              (32767)
89 #endif
90 #ifndef INT32_MAX
91 #define INT32_MAX              (2147483647)
92 #endif
93 #ifndef UINT8_MAX
94 #define UINT8_MAX              (255U)
95 #endif
96 #ifndef UINT16_MAX
97 #define UINT16_MAX             (65535U)
98 #endif
99 #ifndef UINT32_MAX
100 #define UINT32_MAX             (4294967295U)
101 #endif
102
103 #endif /* ! C99 */
104
105 #endif /* ! FLEXINT_H */
106
107 /* TODO: this is always defined, so inline it */
108 #define yyconst const
109
110 #if defined(__GNUC__) && __GNUC__ >= 3
111 #define yynoreturn __attribute__((__noreturn__))
112 #else
113 #define yynoreturn
114 #endif
115
116 /* Returned upon end-of-file. */
117 #define YY_NULL 0
118
119 /* Promotes a possibly negative, possibly signed char to an unsigned
120  * integer for use as an array index.  If the signed char is negative,
121  * we want to instead treat it as an 8-bit unsigned char, hence the
122  * double cast.
123  */
124 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
125
126 /* Enter a start condition.  This macro really ought to take a parameter,
127  * but we do it the disgusting crufty way forced on us by the ()-less
128  * definition of BEGIN.
129  */
130 #define BEGIN (yy_start) = 1 + 2 *
131
132 /* Translate the current start state into a value that can be later handed
133  * to BEGIN to return to the state.  The YYSTATE alias is for lex
134  * compatibility.
135  */
136 #define YY_START (((yy_start) - 1) / 2)
137 #define YYSTATE YY_START
138
139 /* Action number for EOF rule of a given start state. */
140 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
141
142 /* Special action meaning "start processing a new file". */
143 #define YY_NEW_FILE surf_parse_restart(surf_parse_in  )
144
145 #define YY_END_OF_BUFFER_CHAR 0
146
147 /* Size of default input buffer. */
148 #ifndef YY_BUF_SIZE
149 #ifdef __ia64__
150 /* On IA-64, the buffer size is 16k, not 8k.
151  * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
152  * Ditto for the __ia64__ case accordingly.
153  */
154 #define YY_BUF_SIZE 32768
155 #else
156 #define YY_BUF_SIZE 16384
157 #endif /* __ia64__ */
158 #endif
159
160 /* The state buf must be large enough to hold one state per character in the main buffer.
161  */
162 #define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
163
164 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
165 #define YY_TYPEDEF_YY_BUFFER_STATE
166 typedef struct yy_buffer_state *YY_BUFFER_STATE;
167 #endif
168
169 #ifndef YY_TYPEDEF_YY_SIZE_T
170 #define YY_TYPEDEF_YY_SIZE_T
171 typedef size_t yy_size_t;
172 #endif
173
174 extern int surf_parse_leng;
175
176 extern FILE *surf_parse_in, *surf_parse_out;
177
178 #define EOB_ACT_CONTINUE_SCAN 0
179 #define EOB_ACT_END_OF_FILE 1
180 #define EOB_ACT_LAST_MATCH 2
181
182     /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires
183      *       access to the local variable yy_act. Since yyless() is a macro, it would break
184      *       existing scanners that call yyless() from OUTSIDE surf_parse_lex.
185      *       One obvious solution it to make yy_act a global. I tried that, and saw
186      *       a 5% performance hit in a non-surf_parse_lineno scanner, because yy_act is
187      *       normally declared as a variable-- so it is not worth it.
188      */
189     #define  YY_LESS_LINENO(n) \
190             do { \
191                 int yyl;\
192                 for ( yyl = n; yyl < surf_parse_leng; ++yyl )\
193                     if ( surf_parse_text[yyl] == '\n' )\
194                         --surf_parse_lineno;\
195             }while(0)
196     #define YY_LINENO_REWIND_TO(dst) \
197             do {\
198                 const char *p;\
199                 for ( p = yy_cp-1; p >= (dst); --p)\
200                     if ( *p == '\n' )\
201                         --surf_parse_lineno;\
202             }while(0)
203     
204 /* Return all but the first "n" matched characters back to the input stream. */
205 #define yyless(n) \
206         do \
207                 { \
208                 /* Undo effects of setting up surf_parse_text. */ \
209         int yyless_macro_arg = (n); \
210         YY_LESS_LINENO(yyless_macro_arg);\
211                 *yy_cp = (yy_hold_char); \
212                 YY_RESTORE_YY_MORE_OFFSET \
213                 (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
214                 YY_DO_BEFORE_ACTION; /* set up surf_parse_text again */ \
215                 } \
216         while ( 0 )
217
218 #define unput(c) yyunput( c, (yytext_ptr)  )
219
220 #ifndef YY_STRUCT_YY_BUFFER_STATE
221 #define YY_STRUCT_YY_BUFFER_STATE
222 struct yy_buffer_state
223         {
224         FILE *yy_input_file;
225
226         char *yy_ch_buf;                /* input buffer */
227         char *yy_buf_pos;               /* current position in input buffer */
228
229         /* Size of input buffer in bytes, not including room for EOB
230          * characters.
231          */
232         int yy_buf_size;
233
234         /* Number of characters read into yy_ch_buf, not including EOB
235          * characters.
236          */
237         int yy_n_chars;
238
239         /* Whether we "own" the buffer - i.e., we know we created it,
240          * and can realloc() it to grow it, and should free() it to
241          * delete it.
242          */
243         int yy_is_our_buffer;
244
245         /* Whether this is an "interactive" input source; if so, and
246          * if we're using stdio for input, then we want to use getc()
247          * instead of fread(), to make sure we stop fetching input after
248          * each newline.
249          */
250         int yy_is_interactive;
251
252         /* Whether we're considered to be at the beginning of a line.
253          * If so, '^' rules will be active on the next match, otherwise
254          * not.
255          */
256         int yy_at_bol;
257
258     int yy_bs_lineno; /**< The line count. */
259     int yy_bs_column; /**< The column count. */
260
261         /* Whether to try to fill the input buffer when we reach the
262          * end of it.
263          */
264         int yy_fill_buffer;
265
266         int yy_buffer_status;
267
268 #define YY_BUFFER_NEW 0
269 #define YY_BUFFER_NORMAL 1
270         /* When an EOF's been seen but there's still some text to process
271          * then we mark the buffer as YY_EOF_PENDING, to indicate that we
272          * shouldn't try reading from the input source any more.  We might
273          * still have a bunch of tokens to match, though, because of
274          * possible backing-up.
275          *
276          * When we actually see the EOF, we change the status to "new"
277          * (via surf_parse_restart()), so that the user can continue scanning by
278          * just pointing surf_parse_in at a new input file.
279          */
280 #define YY_BUFFER_EOF_PENDING 2
281
282         };
283 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
284
285 /* Stack of input buffers. */
286 static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
287 static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
288 static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */
289
290 /* We provide macros for accessing buffer states in case in the
291  * future we want to put the buffer states in a more general
292  * "scanner state".
293  *
294  * Returns the top of the stack, or NULL.
295  */
296 #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
297                           ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
298                           : NULL)
299
300 /* Same as previous macro, but useful when we know that the buffer stack is not
301  * NULL or when we need an lvalue. For internal use only.
302  */
303 #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
304
305 /* yy_hold_char holds the character lost when surf_parse_text is formed. */
306 static char yy_hold_char;
307 static int yy_n_chars;          /* number of characters read into yy_ch_buf */
308 int surf_parse_leng;
309
310 /* Points to current character in buffer. */
311 static char *yy_c_buf_p = NULL;
312 static int yy_init = 0;         /* whether we need to initialize */
313 static int yy_start = 0;        /* start state number */
314
315 /* Flag which is used to allow surf_parse_wrap()'s to do buffer switches
316  * instead of setting up a fresh surf_parse_in.  A bit of a hack ...
317  */
318 static int yy_did_buffer_switch_on_eof;
319
320 void surf_parse_restart (FILE *input_file  );
321 void surf_parse__switch_to_buffer (YY_BUFFER_STATE new_buffer  );
322 YY_BUFFER_STATE surf_parse__create_buffer (FILE *file,int size  );
323 void surf_parse__delete_buffer (YY_BUFFER_STATE b  );
324 void surf_parse__flush_buffer (YY_BUFFER_STATE b  );
325 void surf_parse_push_buffer_state (YY_BUFFER_STATE new_buffer  );
326 void surf_parse_pop_buffer_state (void );
327
328 static void surf_parse_ensure_buffer_stack (void );
329 static void surf_parse__load_buffer_state (void );
330 static void surf_parse__init_buffer (YY_BUFFER_STATE b,FILE *file  );
331
332 #define YY_FLUSH_BUFFER surf_parse__flush_buffer(YY_CURRENT_BUFFER )
333
334 YY_BUFFER_STATE surf_parse__scan_buffer (char *base,yy_size_t size  );
335 YY_BUFFER_STATE surf_parse__scan_string (yyconst char *yy_str  );
336 YY_BUFFER_STATE surf_parse__scan_bytes (yyconst char *bytes,int len  );
337
338 void *surf_parse_alloc (yy_size_t  );
339 void *surf_parse_realloc (void *,yy_size_t  );
340 void surf_parse_free (void *  );
341
342 #define yy_new_buffer surf_parse__create_buffer
343
344 #define yy_set_interactive(is_interactive) \
345         { \
346         if ( ! YY_CURRENT_BUFFER ){ \
347         surf_parse_ensure_buffer_stack (); \
348                 YY_CURRENT_BUFFER_LVALUE =    \
349             surf_parse__create_buffer(surf_parse_in,YY_BUF_SIZE ); \
350         } \
351         YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
352         }
353
354 #define yy_set_bol(at_bol) \
355         { \
356         if ( ! YY_CURRENT_BUFFER ){\
357         surf_parse_ensure_buffer_stack (); \
358                 YY_CURRENT_BUFFER_LVALUE =    \
359             surf_parse__create_buffer(surf_parse_in,YY_BUF_SIZE ); \
360         } \
361         YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
362         }
363
364 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
365
366 /* Begin user sect3 */
367
368 #define surf_parse_wrap() (/*CONSTCOND*/1)
369 #define YY_SKIP_YYWRAP
370
371 typedef unsigned char YY_CHAR;
372
373 FILE *surf_parse_in = NULL, *surf_parse_out = NULL;
374
375 typedef int yy_state_type;
376
377 extern int surf_parse_lineno;
378
379 int surf_parse_lineno = 1;
380
381 extern char *surf_parse_text;
382 #ifdef yytext_ptr
383 #undef yytext_ptr
384 #endif
385 #define yytext_ptr surf_parse_text
386
387 static yy_state_type yy_get_previous_state (void );
388 static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
389 static int yy_get_next_buffer (void );
390 static void yynoreturn yy_fatal_error (yyconst char* msg  );
391
392 /* Done after the current pattern has been matched and before the
393  * corresponding action - sets up surf_parse_text.
394  */
395 #define YY_DO_BEFORE_ACTION \
396         (yytext_ptr) = yy_bp; \
397         surf_parse_leng = (int) (yy_cp - yy_bp); \
398         (yy_hold_char) = *yy_cp; \
399         *yy_cp = '\0'; \
400         (yy_c_buf_p) = yy_cp;
401
402 #define YY_NUM_RULES 561
403 #define YY_END_OF_BUFFER 562
404 /* This struct is not used in this scanner,
405    but its presence is necessary. */
406 struct yy_trans_info
407         {
408         flex_int32_t yy_verify;
409         flex_int32_t yy_nxt;
410         };
411 static yyconst flex_int16_t yy_accept[3334] =
412     {   0,
413         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
414         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
415         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
416         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
417         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
418         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
419         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
420         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
421         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
422         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
423
424         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
425         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
426         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
427         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
428         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
429         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
430         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
431         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
432         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
433         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
434
435         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
436         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
437         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
438         0,    0,    0,    0,    0,    0,    0,    0,  562,  560,
439        15,   10,   10,   15,   15,  540,   10,  540,    5,    6,
440         5,    8,    9,    8,  556,  548,  549,  557,  554,  557,
441       555,  559,  548,  549,  559,   42,   10,   42,   42,   42,
442        40,   42,   42,   46,   10,   46,   46,  560,   46,  560,
443       560,   46,   63,   10,   63,   63,   63,   61,   63,   63,
444        63,   67,   10,   67,  560,   67,   74,   10,   74,   74,
445
446        74,   72,   74,   78,   10,   78,   89,   10,   89,   89,
447        89,   87,   89,   89,   89,   93,   10,   93,  106,   10,
448       106,  106,  106,  104,  106,  106,  106,  110,   10,  110,
449       110,  119,   10,  119,  119,  119,  117,  119,  119,  123,
450        10,  123,  123,  142,   10,  142,  142,  142,  140,  142,
451       142,  142,  142,  142,  142,  146,   10,  146,  199,   10,
452       199,  199,  199,  197,  199,  199,  199,  199,  199,  199,
453       199,  199,  203,   10,  203,  203,  210,   10,  210,  210,
454       210,  208,  210,  214,   10,  214,  214,  233,   10,  233,
455       233,  233,  231,  233,  233,  233,  233,  233,  237,   10,
456
457       237,  560,  237,  248,   10,  248,  248,  248,  246,  248,
458       248,  248,  252,   10,  252,  259,   10,  259,  259,  259,
459       257,  259,  263,   10,  263,  560,  263,  286,   10,  286,
460       286,  286,  284,  286,  286,  286,  286,  290,   10,  290,
461       290,  303,   10,  303,  303,  303,  301,  303,  303,  307,
462        10,  307,  316,   10,  316,  316,  316,  314,  316,  316,
463       320,   10,  320,  329,   10,  329,  329,  329,  327,  329,
464       329,  333,   10,  333,  354,   10,  354,  354,  354,  352,
465       354,  354,  354,  354,  354,  354,  358,   10,  358,  560,
466       365,   10,  365,  365,  365,  363,  365,  369,   10,  369,
467
468       369,  560,  369,  560,  369,  386,   10,  386,  386,  386,
469       384,  386,  386,  386,  386,  386,  390,   10,  390,  560,
470       390,  399,   10,  399,  399,  399,  397,  399,  399,  403,
471        10,  403,  430,   10,  430,  430,  430,  428,  430,  430,
472       430,  430,  430,  434,   10,  434,  447,   10,  447,  447,
473       447,  445,  447,  447,  451,   10,  451,  451,  460,   10,
474       460,  460,  460,  458,  460,  460,  464,   10,  464,  479,
475        10,  479,  479,  479,  477,  479,  479,  479,  479,  483,
476        10,  483,  483,  498,   10,  498,  498,  498,  496,  498,
477       498,  498,  498,  502,   10,  502,  560,  502,  513,   10,
478
479       513,  513,  513,  511,  513,  513,  513,  557,  556,  535,
480        10,  535,  535,  535,  533,  535,  535,  535,  539,   10,
481       539,   10,    0,    2,    2,    0,    4,    7,  551,  550,
482         0,    0,    0,    0,    0,    0,   41,   43,   43,   43,
483         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
484         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
485         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
486        62,   64,   64,   64,   64,   64,    0,    0,   73,   75,
487        75,    0,   88,   90,   90,   90,   90,    0,  105,  107,
488       107,  107,  107,    0,  118,  120,  120,  120,    0,  141,
489
490       143,  143,  143,  143,  143,  143,  143,  143,    0,  198,
491       200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
492       200,  200,  200,  200,  200,    0,  209,  211,  211,    0,
493       232,  234,  234,  234,  234,  234,  234,  234,    0,    0,
494       247,  249,  249,  249,  249,    0,  258,  260,  260,    0,
495         0,  285,  287,  287,  287,  287,  287,  287,    0,  302,
496       304,  304,  304,    0,  315,  317,  317,  317,    0,  328,
497       330,  330,  330,    0,  353,  355,  355,  355,  355,  355,
498       355,  355,  355,    0,    0,  364,  366,  366,    0,    0,
499         0,    0,    0,    0,  385,  387,  387,  387,  387,  387,
500
501       387,    0,    0,  398,  400,  400,  400,    0,  429,  431,
502       431,  431,  431,  431,  431,  431,  431,  431,    0,  446,
503       448,  448,  448,  448,    0,  459,  461,  461,  461,    0,
504       478,  480,  480,  480,  480,  480,    0,  497,  499,  499,
505       499,  499,  499,    0,    0,  512,  514,  514,  514,  514,
506         0,    0,    0,  534,  536,  536,  536,  536,    0,    0,
507         0,    0,    0,    3,    0,    0,    0,    0,    0,    0,
508         0,  558,    0,    0,   43,    0,    0,   17,    0,    0,
509         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
510         0,    0,    0,    0,    0,    0,   16,    0,    0,    0,
511
512         0,    0,    0,    0,    0,    0,    0,    0,   16,    0,
513         0,   64,   64,   64,   64,    0,    0,    0,   75,    0,
514         0,   90,    0,    0,   90,    0,    0,  107,  107,  107,
515         0,    0,  120,  120,    0,    0,    0,    0,    0,    0,
516       143,  143,  143,  143,  143,    0,    0,  200,    0,    0,
517       200,    0,    0,  200,  200,  200,  200,  200,  200,  200,
518       200,  200,  200,    0,    0,    0,    0,    0,    0,  234,
519       234,  234,    0,    0,  234,  234,  234,    0,    0,    0,
520       249,    0,    0,    0,    0,    0,    0,  260,    0,    0,
521        17,  287,    0,    0,  287,  287,  287,    0,    0,  304,
522
523         0,    0,    0,    0,    0,    0,  317,    0,    0,  330,
524       330,    0,    0,  355,  355,  355,    0,    0,  355,  355,
525       355,    0,    0,    0,  366,    0,    0,    0,    0,    0,
526       387,  387,  387,  387,  387,    0,    0,    0,    0,    0,
527       400,    0,    0,  431,    0,    0,  431,  431,  431,  431,
528       431,  431,    0,    0,  448,  448,  448,    0,    0,  461,
529         0,    0,    0,    0,  480,  480,    0,    0,  480,    0,
530         0,  499,    0,    0,  499,  499,    0,    0,    0,  514,
531         0,    0,  514,    0,    0,    0,  553,  536,  536,  536,
532         0,    0,    0,   14,    1,    0,    0,  546,    0,    0,
533
534         0,  543,  542,    0,    0,   19,   18,   43,    0,    0,
535        45,    0,   17,    0,    0,    0,    0,    0,    0,    0,
536         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
537         0,    0,    0,   16,    0,    0,    0,    0,    0,    0,
538         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
539        64,   64,    0,    0,   64,    0,    0,   66,    0,    0,
540        75,    0,    0,   77,    0,   90,    0,   84,   83,   90,
541         0,    0,   92,    0,    0,    0,  107,  107,    0,    0,
542         0,    0,  109,    0,    0,    0,    0,    0,    0,    0,
543       122,    0,    0,  127,  126,    0,  129,  128,    0,    0,
544
545       143,  143,  143,  143,    0,    0,  145,    0,  200,  200,
546       200,    0,  158,  157,  200,    0,  162,  161,    0,    0,
547       200,  200,  200,  200,  200,  200,  200,  200,  200,    0,
548         0,  202,    0,    0,  207,  206,    0,    0,  213,    0,
549       234,  234,  234,    0,  224,  223,  234,  234,  234,    0,
550         0,  236,    0,    0,  249,    0,  243,  242,    0,  245,
551       244,    0,    0,  251,    0,  260,    0,    0,  262,    0,
552       287,    0,  271,  270,  287,  287,  287,    0,    0,  289,
553         0,  304,    0,  300,  299,    0,    0,  306,    0,    0,
554       311,  310,  317,    0,    0,  319,    0,  330,  330,    0,
555
556         0,  332,    0,  355,  355,  355,  355,    0,  345,  344,
557         0,    0,  355,  355,    0,    0,  357,    0,    0,  366,
558         0,    0,  368,    0,    0,    0,    0,  387,  387,  387,
559       387,  387,    0,    0,  389,    0,    0,    0,  394,  393,
560       400,    0,    0,  402,    0,  431,    0,  415,  414,    0,
561         0,  431,    0,    0,  431,  431,  431,    0,    0,  433,
562         0,    0,    0,    0,    0,  448,    0,    0,  450,    0,
563       461,    0,  457,  456,    0,    0,  463,    0,  480,  480,
564         0,  474,  473,  480,    0,    0,  482,    0,  499,    0,
565       491,  490,  499,  499,    0,    0,  501,    0,    0,  514,
566
567         0,  508,  507,  514,    0,    0,    0,  516,    0,  536,
568       536,  536,    0,    0,  538,    0,    0,    0,  547,  541,
569         0,    0,   43,    0,   44,    0,    0,    0,    0,    0,
570         0,    0,  216,    0,  265,    0,    0,  335,    0,    0,
571       392,    0,    0,    0,    0,  391,    0,    0,    0,    0,
572         0,  215,    0,  264,  334,    0,    0,    0,    0,    0,
573         0,   50,   49,   64,   64,    0,   56,   55,   64,    0,
574       264,   75,    0,   90,   90,    0,    0,   97,   96,  107,
575       107,    0,  103,  102,    0,    0,  114,  113,    0,  116,
576       115,    0,    0,  131,  130,  143,  143,  143,  143,    0,
577
578       200,  200,  200,    0,    0,    0,  164,  163,  200,  200,
579       200,  200,  200,  200,  200,  200,  200,  200,    0,    0,
580       234,  234,    0,    0,  234,  234,  234,    0,    0,    0,
581         0,    0,    0,    0,    0,  287,  287,  287,  287,    0,
582       304,    0,  317,    0,    0,    0,  330,    0,  355,  355,
583       355,  355,    0,  347,  346,  355,  355,    0,    0,  366,
584         0,    0,    0,    0,  387,    0,    0,  387,  387,  387,
585         0,    0,  400,    0,  431,    0,  417,  416,    0,    0,
586         0,  421,  420,  431,    0,    0,  431,    0,    0,  438,
587       437,    0,  440,  439,  448,    0,  461,    0,  480,  480,
588
589       480,    0,  499,  499,    0,    0,    0,    0,    0,    0,
590       514,    0,    0,  536,    0,    0,  536,    0,    0,    0,
591         0,   12,    0,  544,  545,   43,    0,    0,    0,    0,
592         0,    0,    0,  216,    0,    0,  265,    0,    0,  321,
593       335,    0,    0,  392,    0,  436,    0,  504,  391,    0,
594         0,    0,    0,    0,  215,    0,    0,  264,  334,  435,
595         0,  503,  436,  435,   64,   64,   64,    0,    0,    0,
596         0,    0,   90,   90,    0,  107,  107,    0,    0,  143,
597       143,    0,    0,  143,    0,    0,    0,  200,  200,    0,
598       160,  159,  200,  200,  200,  200,  200,  200,    0,    0,
599
600       200,  200,  200,    0,    0,  234,  234,    0,  222,  221,
601       234,    0,    0,  234,    0,  322,    0,  241,  240,    0,
602         0,  256,  255,    0,  287,  287,  287,  287,    0,  304,
603         0,    0,    0,    0,    0,  324,  323,  330,    0,  355,
604         0,    0,  355,  355,    0,    0,  355,    0,    0,  366,
605         0,    0,    0,    0,  387,    0,  375,  374,  387,  387,
606       387,    0,    0,    0,    0,    0,  431,    0,  419,  418,
607       431,    0,  425,  424,  431,    0,  448,    0,  461,    0,
608       480,  480,  480,    0,  499,    0,    0,    0,  495,  494,
609         0,    0,    0,  506,  505,  514,    0,    0,  536,    0,
610
611         0,    0,    0,    0,    0,    0,    0,    0,   11,   43,
612         0,    0,    0,    0,    0,    0,  204,    0,    0,    0,
613         0,  321,    0,    0,  404,  436,  453,    0,  504,    0,
614         0,    0,    0,    0,    0,    0,    0,  435,  452,    0,
615       503,    0,    0,    0,    0,    0,   64,    0,    0,    0,
616        71,   70,    0,   90,   90,    0,    0,    0,    0,    0,
617         0,    0,    0,    0,  143,    0,  137,  136,    0,    0,
618         0,    0,  150,  149,    0,    0,  200,  200,  200,    0,
619         0,  200,  200,  200,    0,  184,  183,    0,    0,  200,
620       200,    0,    0,  234,  234,    0,    0,    0,  228,  227,
621
622       234,    0,  235,  322,    0,    0,  287,  287,  287,  287,
623         0,  288,  304,    0,    0,  313,  312,    0,  330,    0,
624       355,    0,  339,  338,    0,    0,  355,    0,  349,  348,
625       355,    0,  356,    0,  366,    0,  205,    0,  405,  387,
626       387,  387,  387,    0,    0,    0,  396,  395,    0,  401,
627       431,  431,  431,    0,  448,    0,  461,    0,    0,    0,
628       480,    0,    0,    0,  499,    0,  493,  492,    0,    0,
629       514,    0,    0,  536,    0,    0,    0,    0,    0,    0,
630         0,    0,    0,  532,  531,    0,    0,    0,    0,    0,
631         0,   48,    0,    0,    0,    0,  125,  148,  204,    0,
632
633       254,    0,    0,    0,  370,  404,  453,  466,    0,   47,
634         0,    0,    0,  124,  147,    0,  253,  452,  465,    0,
635         0,   52,   51,    0,   54,   53,   64,    0,    0,    0,
636        90,    0,    0,    0,    0,   99,   98,    0,  101,  100,
637         0,    0,    0,  133,  132,    0,    0,    0,  139,  138,
638         0,    0,  152,  151,  200,  200,  200,    0,  172,  171,
639         0,    0,  200,  200,    0,  186,  185,  200,  200,    0,
640         0,  234,  234,    0,  226,  225,  234,    0,    0,  287,
641         0,    0,  287,  287,  287,  304,    0,    0,  330,    0,
642       331,  355,    0,  341,  340,  355,  355,    0,    0,    0,
643
644         0,  205,  371,  405,  387,  387,  387,  387,    0,    0,
645       431,    0,    0,  431,    0,  448,    0,  449,  461,    0,
646         0,  468,  467,    0,    0,  480,    0,  476,  475,    0,
647         0,    0,  499,    0,    0,  514,    0,    0,  515,    0,
648         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
649         0,    0,    0,    0,    0,    0,    0,    0,   48,   68,
650        80,    0,    0,  125,  148,    0,  254,  291,    0,  359,
651       370,  466,    0,    0,   47,   79,    0,    0,  124,  147,
652         0,  253,  465,    0,    0,   64,    0,  292,    0,   90,
653         0,   86,   85,    0,    0,    0,    0,  135,  134,    0,
654
655       200,  200,  200,    0,  174,  173,  200,  200,  200,    0,
656         0,    0,    0,  212,  234,  234,  234,    0,    0,  287,
657         0,  273,  272,  287,  287,  287,  304,    0,    0,  330,
658       355,  355,  355,  360,    0,  362,  361,    0,  371,    0,
659         0,  387,  387,  387,    0,   69,  431,    0,  423,  422,
660       431,    0,  432,  448,  461,    0,  462,    0,  470,  469,
661       480,    0,    0,  487,  486,  499,    0,    0,  514,  552,
662         0,  520,  519,    0,    0,    0,    0,    0,    0,    0,
663         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
664         0,    0,    0,    0,    0,    0,    0,   68,   80,    0,
665
666         0,  239,  291,    0,  359,    0,    0,   79,    0,    0,
667       238,    0,    0,   64,    0,   65,  292,    0,    0,    0,
668         0,    0,    0,    0,  144,  200,  200,  200,  200,    0,
669         0,  200,  200,    0,    0,    0,    0,  201,  234,  234,
670       234,    0,    0,  261,    0,    0,  287,  287,  287,  287,
671         0,    0,    0,    0,    0,    0,  355,  355,  355,  360,
672         0,    0,  373,  372,    0,    0,  387,  387,    0,  388,
673        69,    0,    0,  431,  448,  461,  480,    0,  481,  499,
674         0,    0,  514,    0,    0,    0,    0,    0,    0,    0,
675         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
676
677         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
678         0,  239,  308,    0,    0,    0,    0,  238,    0,    0,
679        64,    0,   76,    0,   82,   81,    0,   91,    0,    0,
680       200,  200,  200,  200,    0,  176,  175,  200,  200,    0,
681         0,    0,    0,    0,    0,  234,  234,    0,    0,    0,
682         0,  267,  266,  287,  287,  287,    0,    0,    0,    0,
683         0,    0,  305,    0,    0,  326,  325,  355,  355,    0,
684         0,    0,  367,    0,  377,  376,    0,    0,    0,    0,
685         0,    0,    0,  431,  448,  461,  480,  499,    0,  309,
686       514,    0,    0,    0,    0,    0,    0,    0,    0,    0,
687
688         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
689         0,    0,    0,    0,    0,    0,    0,    0,  112,  308,
690         0,    0,    0,  111,    0,    0,    0,    0,    0,    0,
691       200,  200,    0,    0,  200,  200,  200,    0,    0,    0,
692         0,    0,    0,    0,    0,  234,    0,    0,    0,  230,
693       229,    0,  250,  287,  287,  287,    0,  283,  282,    0,
694         0,    0,    0,    0,    0,    0,  355,    0,    0,    0,
695       351,  350,    0,    0,    0,    0,  383,  382,    0,    0,
696         0,    0,    0,    0,  431,    0,    0,    0,    0,  480,
697       499,    0,  309,    0,    0,    0,    0,    0,    0,  524,
698
699         0,    0,    0,    0,  523,    0,    0,    0,    0,    0,
700         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
701         0,    0,  112,  485,    0,    0,  111,  484,    0,    0,
702         0,    0,    0,    0,  200,    0,    0,    0,  168,  167,
703         0,    0,  200,  200,    0,    0,    0,    0,    0,    0,
704         0,    0,  234,    0,  220,  219,  287,    0,    0,  287,
705         0,    0,    0,    0,    0,    0,    0,  318,  355,    0,
706       343,  342,    0,    0,    0,    0,    0,    0,    0,    0,
707         0,    0,    0,    0,  431,    0,    0,    0,    0,  455,
708       454,    0,    0,    0,    0,    0,    0,  510,  509,    0,
709
710         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
711         0,    0,    0,    0,    0,   21,   29,    0,    0,    0,
712         0,   20,   28,    0,   95,  485,  518,   94,  484,  517,
713         0,    0,    0,    0,    0,    0,  121,  200,    0,  166,
714       165,    0,  170,  169,  200,  200,    0,    0,    0,    0,
715         0,    0,    0,    0,  234,  287,    0,  275,  274,  287,
716         0,    0,  294,    0,    0,  293,  355,    0,    0,    0,
717         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
718         0,    0,    0,    0,    0,    0,  472,  471,    0,  489,
719       488,    0,    0,    0,  530,    0,    0,    0,  529,    0,
720
721         0,    0,    0,    0,    0,    0,    0,    0,    0,   23,
722         0,    0,    0,   22,    0,   95,  518,   94,  517,    0,
723         0,    0,    0,    0,  200,    0,    0,  200,    0,    0,
724       190,    0,    0,    0,  189,    0,  234,    0,    0,    0,
725         0,    0,    0,    0,    0,  355,    0,    0,    0,    0,
726         0,    0,    0,    0,    0,    0,    0,    0,    0,  427,
727       426,    0,    0,    0,    0,    0,  500,    0,    0,    0,
728         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
729         0,    0,    0,    0,    0,    0,   60,    0,   59,    0,
730         0,  108,  200,    0,    0,    0,    0,    0,    0,    0,
731
732       192,    0,    0,  191,  234,    0,  269,  268,    0,    0,
733         0,  296,  298,  295,  297,  355,  379,    0,  378,    0,
734         0,  413,  409,    0,    0,  412,  408,    0,  444,    0,
735       443,    0,  528,    0,    0,  527,    0,    0,    0,  537,
736         0,    0,    0,   12,    0,   12,    0,   33,    0,    0,
737         0,    0,   31,   32,    0,    0,    0,    0,   30,   58,
738        57,  200,    0,    0,    0,    0,    0,  188,  187,    0,
739         0,    0,    0,  234,    0,    0,    0,    0,  355,    0,
740         0,    0,    0,    0,    0,  442,  441,  522,  526,  521,
741       525,    0,    0,    0,    0,    0,    0,    0,    0,   25,
742
743         0,    0,    0,    0,   24,    0,    0,    0,    0,    0,
744         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
745         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
746         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
747         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
748         0,    0,    0,    0,  194,    0,  193,    0,  218,  217,
749         0,    0,    0,    0,    0,    0,    0,  337,  336,    0,
750         0,  407,    0,  406,    0,    0,   11,    0,    0,    0,
751         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
752         0,    0,    0,    0,    0,  196,  195,    0,    0,    0,
753
754         0,    0,    0,  381,  380,    0,    0,    0,    0,    0,
755         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
756         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
757         0,    0,  411,  410,    0,    0,    0,   35,    0,    0,
758         0,   34,    0,    0,    0,    0,    0,    0,    0,    0,
759         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
760         0,    0,   27,    0,    0,   26,    0,    0,    0,    0,
761         0,    0,  178,    0,    0,  177,    0,    0,  277,    0,
762         0,  276,    0,    0,   37,    0,   36,    0,    0,    0,
763         0,  182,    0,  181,    0,  279,    0,  278,    0,    0,
764
765         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
766         0,   39,   38,    0,  154,    0,  153,    0,    0,    0,
767         0,    0,    0,  156,  155,  180,  179,  281,  280,    0,
768         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
769         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
770         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
771         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
772         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
773         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
774         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
775
776         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
777         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
778         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
779         0,   13,    0
780     } ;
781
782 static yyconst YY_CHAR yy_ec[256] =
783     {   0,
784         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
785         1,    2,    4,    1,    1,    1,    1,    1,    1,    1,
786         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
787         1,    2,    5,    6,    7,    1,    1,    8,    9,    1,
788         1,    1,    1,    1,   10,   11,   12,   13,   13,   13,
789        13,   14,   13,   13,   13,   15,   13,   16,   17,   18,
790        19,   20,   21,    1,   22,   23,   24,   25,   26,   27,
791        28,   29,   30,   31,   32,   33,   34,   35,   36,   37,
792        31,   38,   39,   40,   41,   42,   43,   44,   45,   31,
793        46,    1,   47,    1,   48,    1,   49,   50,   51,   52,
794
795        53,   54,   55,   56,   57,   58,   59,   60,   61,   62,
796        63,   64,   65,   66,   67,   68,   69,   70,   71,   72,
797        73,   74,    1,    1,    1,    1,    1,    1,    1,    1,
798         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
799         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
800         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
801         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
802         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
803         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
804         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
805
806         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
807         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
808         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
809         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
810         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
811         1,    1,    1,    1,    1
812     } ;
813
814 static yyconst YY_CHAR yy_meta[75] =
815     {   0,
816         1,    2,    2,    2,    1,    1,    1,    1,    1,    3,
817         3,    1,    4,    4,    4,    5,    6,    1,    7,    8,
818         1,    9,    9,    9,    9,    9,    9,    5,    5,    5,
819         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
820         5,    5,    5,    5,    5,    1,    1,    5,    9,    9,
821         9,    9,    9,    9,    5,    5,    5,    5,    5,    5,
822         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
823         5,    5,    5,    5
824     } ;
825
826 static yyconst flex_uint16_t yy_base[3813] =
827     {   0,
828         0,    0,    0,    3,    6,    9,   12,   29,   16,   19,
829        14,   17,   33,   36,   49,   55,   45,   61,  108,  174,
830        66,   72,   75,   78,   83,  128,  131,  134,  138,  141,
831       194,  197,  200,  204,  207,  224,  230,  233,  241,  250,
832       268,  335,  288,  291,  294,  298,  301,  355,  358,  361,
833       402,  472,  365,  368,  542,  602,  422,  425,  662,  729,
834       428,  432,  435,  452,  492,  495,  498,  502,  796,  863,
835       505,  522,  562,  565,  568,  572,  575,  622,  930,  997,
836       625,  628, 1064,    0,  632,  635,  682,  685,  688,  692,
837       695,  749, 1138, 1195,  752,  755,  759,  762,  816,  819,
838
839       822,  826, 1252, 1319,  829,  883,  886,  889,  893,  896,
840       950,  953, 1386, 1455,  956,  960, 1524, 1578,  963, 1017,
841      1020, 1023, 1027, 1030, 1158, 1161, 1632, 1699, 1164, 1168,
842      1171, 1215, 1218, 1221, 1225, 1228, 1766, 1823, 1272, 1275,
843      1880, 1950, 1278, 1282, 2020, 2087, 1339, 1342, 2154, 2221,
844      1345, 1349, 1406, 1409, 2288, 2358, 1412, 1416, 1419, 1475,
845      1478, 1481, 1485, 1488, 1544, 1547, 1550, 1554, 1557, 1598,
846      1601, 1604, 1608, 1611, 1652, 1655, 2428, 2495, 1658, 1662,
847      1665, 1719, 1722, 1725, 1729, 1732, 2562, 2632, 1786, 1789,
848      2702, 2769, 1792, 1796, 2836, 2903, 1799, 1843, 1846, 1849,
849
850      1853, 1856, 1900, 1903, 2970, 3027, 1906, 1910, 3084, 3152,
851      1913, 1930, 1970, 1973, 1976, 1980, 1983, 2000, 3220, 3287,
852      2040, 2043, 2046, 2050, 2053, 2107, 2110, 2113, 3354, 3418,
853      2132, 2134, 3482, 3550, 2174, 2180,    0,    0, 9063,11902,
854     11902,   95,  100,   29,   41,11902,  103,   51,11902,11902,
855      9052,11902,11902, 9039,11902, 9054, 9054,  164,11902,11902,
856     11902,11902, 9048, 9048, 9003,11902,  158, 9027,    0,  142,
857     11902, 8994, 8982,11902,  164, 3614, 8976, 3678, 2187, 1238,
858      9027,   31,11902,  253, 9018,    0,  143,11902, 8968, 8963,
859        84,11902,  258,  253, 9021, 8968,11902,  322, 9007,    0,
860
861       148,11902, 8977,11902,  325,  218,11902,  328, 9003,    0,
862       242,11902, 8973, 8969, 8967,11902,  389,  373,11902,  393,
863      8995,    0,  245,11902, 8947, 8940, 8944,11902,  396, 8997,
864        11,11902,  455, 8984,    0,  313,11902, 8936, 8936,11902,
865       458, 8987,   79,11902,  461, 8978,    0,  446,11902, 8926,
866      8940, 8942, 8924, 8938,   19,11902,  525,  509,11902,  529,
867      8966,    0,  447,11902,  101, 8922, 8928,  317, 8905,  258,
868       531, 8907,11902,  532, 8957,  246,11902,  535, 8944,    0,
869       576,11902, 8911,11902,  652, 8950,  287,11902,  716, 8937,
870         0,  577,11902, 8886, 8892, 8898, 8882,  320,11902,  719,
871
872       112, 8887,  377,11902,  722, 8923,    0,  580,11902, 8879,
873      8889, 8872,11902,  783,  639,11902,  786, 8915,    0,  636,
874     11902, 8877,11902,  789, 2129, 8917,  681,11902,  847, 8908,
875         0,  637,11902, 8878, 8870, 8872,  102,11902,  850, 8908,
876       704,11902,  853, 8895,    0,  640,11902, 8857, 8861,11902,
877       856,  900,11902,  914, 8888,    0,  706,11902, 8855, 8857,
878     11902,  920,  908,11902,  923, 8881,    0,  707,11902, 8851,
879      8831,11902,  980,  967,11902,  989, 8874,    0,  773,11902,
880      8823, 8821, 8824, 8834, 8836,  447,11902, 1047, 1034,  774,
881     11902, 1056, 8860,    0,  840,11902, 8826,11902, 1188, 1305,
882
883       748, 1183,  771, 8814,  815,11902, 1308, 8853,    0,  841,
884     11902, 8803, 8808, 8809, 8803, 8796,11902, 1311,  454, 8810,
885       882,11902, 1370, 8838,    0,  898,11902, 8805, 8803,11902,
886      1375, 1423,11902, 1378, 8831,    0,  964,11902, 8797, 8793,
887      1191, 8795,  137,11902, 1437, 1424,11902, 1444, 8823,    0,
888       965,11902, 8771,  518,11902, 1447, 8825,  204,11902, 1450,
889      8816,    0,  968,11902, 8768, 8778,11902, 1506, 1492,11902,
890      1512, 8809,    0, 1031,11902, 8756, 8760, 8770, 8744,11902,
891      1515, 8804,  949,11902, 1518, 8795,    0, 1032,11902, 8747,
892      8757, 8745, 8746,11902, 1682,  272, 8741, 1171,11902, 1691,
893
894      8781,    0, 1035,11902, 8739, 8743, 8741, 1669, 8742,11902,
895      1694, 8768,    0, 1172,11902, 8727, 8185, 8175,11902, 1749,
896      1736, 1758,  408, 8167,11902, 8228, 8217,11902,11902,11902,
897      1750,  153, 8168, 8167, 8165, 8213,11902,    0, 2120, 8162,
898      8208, 8189, 8153,  328, 1234, 8154, 8147, 8151, 8143, 1128,
899       259, 8132, 8132, 1185, 8155,  396, 1301, 8129, 8119, 8123,
900      1445,  584, 8102, 8103, 8128,  398, 1755,  652,  439,  979,
901     11902,    0, 8089, 8103, 8098, 8087, 8124, 8068,11902,    0,
902      8057, 8067,11902,    0, 8052, 2187, 8041, 8058,11902,    0,
903      8038, 8049, 8045, 8042,11902,    0, 8011, 8020, 8020,11902,
904
905         0, 2241, 2244, 8000, 8009, 8009, 8006, 7996, 7994,11902,
906         0, 7985, 2254, 7966, 2308, 7957, 7963, 7959, 7968, 7967,
907      7942, 7961, 7955, 7945, 7934, 7945,11902,    0, 2311, 7943,
908     11902,    0, 7925,  175, 2314, 7905, 7918, 7917, 7908, 7900,
909     11902,    0, 7890, 2317, 2320, 7891,11902,    0, 7868, 7869,
910      7886,11902,    0, 7861, 2338, 7844, 7852, 7851, 7838,11902,
911         0, 7827, 2378, 7832,11902,    0, 2381, 7829, 7826,11902,
912         0, 7825, 7821, 7821,11902,    0, 7832, 7831, 7802, 2384,
913      7796, 7809, 7808, 7790, 7788,11902,    0, 7780, 7773, 1506,
914      1812, 1242, 1514, 1813,11902,    0, 7774, 7763, 7769, 7779,
915
916      7767, 7749, 7742,11902,    0, 2387, 7746, 7741,11902,    0,
917      7741, 2390, 7723, 7745, 7702, 7710, 7705, 7701, 7679,11902,
918         0, 7676, 7683, 7672, 7657,11902,    0, 7659, 2408, 7654,
919     11902,    0, 7644, 7647, 2448, 7640, 7636,11902,    0, 7635,
920      2451, 7640, 7607, 7613, 7615,11902,    0, 7609, 2454, 7601,
921       512, 7594, 7641,11902,    0, 7606, 7588, 7593, 7572, 7608,
922      7613, 1272, 7561,11902, 1925,    0, 7556, 7539, 7584, 7582,
923      7534,11902, 2457, 2006, 7528, 2192, 2516, 2077, 7539, 7529,
924      7515, 7527, 7507, 7497, 7491, 7505, 7493, 1266, 7500, 7499,
925      7484, 7479, 7471, 7475, 7478, 7463, 2081, 7473, 7455, 7468,
926
927      7447, 7444, 7453, 7440, 7448, 7430, 7425, 7438, 2142, 7416,
928      7415, 2460, 2526, 2519, 2529, 2262, 2582, 7420, 7412, 2523,
929      2592, 7423, 2585, 2341, 7412, 2595, 2652, 2603, 2666, 2657,
930      2660, 2663, 2671, 2722, 2725, 2735, 2728, 2411, 2748, 2614,
931      2790, 2798, 2801, 2808, 2865, 2740, 2876, 1869, 2794, 2622,
932      7405, 2862, 2689, 2868, 7400, 7391, 7390, 7385, 7373, 7369,
933      7378, 7375, 7356, 2871, 2926, 2929, 2819, 2932, 2936, 7360,
934      7349, 7357, 2939, 2891, 7360, 7354, 7334, 2990, 2993, 1306,
935      7335, 2999, 2957, 3003, 3048, 3056, 3059, 7326, 3062, 3106,
936      2213, 7326, 3109, 3066, 7323, 7309, 7305, 3112, 3117, 7319,
937
938      3121, 3140, 3173, 3185, 3176, 3188, 7286, 3180, 3248, 7301,
939      7282, 3241, 3252, 7289,    3, 7279, 3244, 3204, 3255, 7290,
940      7265, 3310, 3317, 7283, 7263, 3320, 3323, 7263, 7258, 7257,
941      7267, 7248, 7251, 7252, 7238, 3374, 3377, 7248, 3383, 3276,
942      7232, 3386, 3389, 7240, 3438, 3343, 3442, 7226, 3447, 7230,
943      7233, 7232, 3450, 3456, 3504, 3507, 3511, 3514, 3517, 7213,
944      3529, 3401, 3571, 3574, 7225, 7205, 3579, 3465, 7218, 3582,
945      3585, 7193, 3597, 3536, 7207, 7201, 3604, 3608, 1333, 7195,
946      3611, 3636, 7190, 7221, 3629, 3648,11902, 7179, 7187, 7182,
947      3652, 3657, 7212,11902,11902,  882, 7170,11902, 7202, 7200,
948
949      7149,11902,11902, 7144, 3682,11902,11902, 7139, 3690, 3693,
950     11902, 3699, 1941, 7126, 7119, 7127, 7136, 7126, 7109, 7114,
951      7099, 7105, 7105, 7102, 7092, 7077, 7074,  718, 7085, 7068,
952      7068, 7074, 1566, 2070, 7061, 7060, 7069, 7059, 7048, 7039,
953      7046, 7042, 7034, 7026, 7023, 7035, 7007, 7001, 3702, 3745,
954      6999, 6988, 3705, 3753, 7000, 3713, 3761,11902, 3764, 6988,
955      6993, 3767, 3770,11902, 3773, 6973, 3776,11902,11902, 6974,
956      3792, 3795,11902, 3798, 3801, 3804, 6968, 6964, 3819, 3823,
957      3831, 3837,11902, 3840, 3843, 3850, 3861, 3864, 3872, 3875,
958     11902, 3879, 3882,11902,11902, 3894,11902,11902, 3903, 3906,
959
960      6972, 6976, 6973, 6967, 3914, 3917,11902, 3921, 6951, 6971,
961      6941, 3924,11902,11902, 3936, 3942,11902,11902, 3950, 3954,
962      6922, 6937, 6917, 6922, 6912, 6907, 6909, 6898, 1247, 3962,
963      3970,11902, 3973, 3977,11902,11902, 3985, 3992,11902, 3995,
964      6892, 6893, 3998, 4004,11902,11902, 6853, 6868, 6864, 4016,
965      4019,11902, 4023, 6837, 4026, 4029,11902,11902, 4044,11902,
966     11902, 4052, 4056,11902, 4059, 4062, 4065, 4071,11902, 4080,
967      6827, 4090,11902,11902, 6830, 6830, 6833, 4084, 4099,11902,
968      4103, 6833, 4106,11902,11902, 4114, 4118,11902, 4125, 4133,
969     11902,11902, 6823, 4144, 4147,11902, 4150, 4153, 4156, 4159,
970
971      4174,11902, 4178, 6815, 6811, 6803, 6814, 4182,11902,11902,
972      4193, 4197, 6810, 6798, 4205, 4211,11902, 4214, 6780, 6789,
973      4217, 4220,11902, 4224, 6788, 1567, 6784, 6767, 4239, 6785,
974      6783, 6759, 4246, 4249,11902, 4252, 6757, 4259,11902,11902,
975      6761, 4272, 4275,11902, 4278, 6740, 4281,11902,11902, 4297,
976      4300, 4308, 4315, 4319, 6751, 4327, 6732, 4333, 4336,11902,
977      4340, 4345, 4348, 4359, 4363, 6723, 4371, 4377,11902, 4380,
978      6723, 4383,11902,11902, 4391, 4401,11902, 4404, 6715, 6706,
979      4410,11902,11902, 6728, 4423, 4426,11902, 4430, 6703, 4433,
980     11902,11902, 6675, 4449, 4452, 4455,11902, 4458, 6651, 4461,
981
982      4479,11902,11902, 4467, 6653, 4487, 4492,11902, 4495, 6615,
983      4498, 6610, 4502, 4506,11902, 4516,  888, 4521,11902,11902,
984      6551, 6541, 6494, 4525,11902, 6458, 6454, 6446, 6396, 6374,
985      6313, 6307, 2073, 6294, 2281, 6301, 6291, 2116, 6304, 6286,
986      2216, 6201, 6132, 6066, 6057, 2272, 6035, 6047, 6020, 5997,
987      5974, 2350, 5870, 2420, 2486, 5855, 5807, 5798, 5722, 5719,
988      4529,11902,11902, 5684,   38, 4544,11902,11902,   26, 4552,
989      2829, 4555, 4558,   43,  195, 4564, 4567,11902,11902,  181,
990       216, 4577,11902,11902, 4585, 4588,11902,11902, 4597,11902,
991     11902, 4605, 4608,11902,11902,  239,  326, 4616,  370, 4626,
992
993      4629, 4634, 4637, 4640, 4658, 4666,11902,11902, 4647, 4674,
994      4677, 4685, 4688, 4695, 4706, 4709, 4713, 4716, 4727, 4735,
995       395,  460, 4739, 4742,  488, 4757,  525, 4760,  526, 4763,
996      4766, 4781, 4784, 4789, 4802,  539,  567,  616,  654, 4805,
997       636, 4809, 4812, 4816, 4831, 4835,  650, 4843,  658, 4851,
998       703,  715, 4869,11902,11902, 4855,  726, 4863,  782,  776,
999      4877,  784,  922,  932, 1005, 4882, 4885, 1086, 1112, 1130,
1000      4896, 1119, 4900, 4904, 1138, 4908,11902,11902, 4918, 4924,
1001      4932,11902,11902, 1162, 4940, 4946, 1173, 4954, 4958,11902,
1002     11902, 4967,11902,11902, 1169, 4975, 1211, 4978, 1231, 1227,
1003
1004      1302, 4981, 1293, 4984, 4988, 5006, 5014, 1299, 5017, 5020,
1005      1310, 1362, 5028, 1355, 5035, 5047, 5038, 5056, 1603, 1405,
1006      5061,11902, 1406,11902,11902, 1376, 1374, 1418, 1423, 1427,
1007      1442, 1447, 1468, 2490, 1480, 1512, 2557, 1516, 1525, 2684,
1008      2762, 1513, 1527, 2965, 1548, 3411, 1565, 3212, 3021, 1553,
1009      1564, 1561, 1610, 1618, 3215, 1612, 1623, 3314, 3476, 5064,
1010      1622, 3618, 5067, 5070, 5080, 5083, 5086, 5089, 1636, 5092,
1011      5113, 5121, 1636, 1618, 5124, 5135, 5143, 5146, 5153, 5157,
1012      5161, 5165, 5183, 5175, 5168, 5193, 5196, 5204, 5207, 5213,
1013     11902,11902, 5225, 5229, 5232, 5235, 5238, 5243, 5256, 5261,
1014
1015      5274, 5280, 5285, 5298, 5303, 1665, 1668, 5306,11902,11902,
1016      5317, 5322, 5328, 1684, 5341, 3644, 5344,11902,11902, 5352,
1017      5361,11902,11902, 5355, 1687, 1669, 1689, 1700, 5374, 1698,
1018      5377, 5380, 5383, 5399, 5402,11902,11902, 1705, 5410, 1732,
1019      5413, 5425, 5418, 1735, 5436, 5439, 1751, 5447, 1743, 1747,
1020      5450, 1756, 1749, 1758, 1757, 5454,11902,11902, 1782, 1794,
1021      1794, 5462, 1810, 5469, 5477, 5472, 1800, 5487,11902,11902,
1022      1816, 5496,11902,11902, 1807, 5504, 1830, 5507, 1849, 5510,
1023      5514, 5517, 5535, 5538, 1852, 5542, 5546, 5562,11902,11902,
1024      5570, 1874, 5573,11902,11902, 1866, 1885, 5589, 1862, 5592,
1025
1026      1966, 2511, 5601, 5604, 5612, 1929, 1997, 1961,11902, 5619,
1027      1882, 1879, 1884, 1968, 1879, 1926, 3728, 1936, 1947, 1943,
1028      1949, 5622, 1950, 1952, 5625, 5631, 5637, 1983, 5641, 2000,
1029      2007, 2000, 2048, 1995, 1999, 2012, 2025, 5644, 5647, 2050,
1030      5650, 2075, 5653, 5657, 5665, 5671, 2070, 5679, 2061, 5683,
1031     11902,11902, 5691, 2062, 5694, 5698, 5701, 5706, 5719, 5722,
1032      5730, 5733, 5737, 5756, 5764, 5767,11902,11902, 5775, 5778,
1033      5786, 5789,11902,11902, 5799, 5805, 2075, 2100, 2094, 5813,
1034      5817, 5825, 2113, 2137, 5831,11902,11902, 5839, 5843, 2121,
1035      2115, 5851, 5857, 2145, 2158, 5860, 5863, 5872,11902,11902,
1036
1037      2153, 5880,11902, 5883, 5886, 5889, 2145, 5892, 2201, 2193,
1038      5895,11902, 2189, 5899, 5914,11902,11902, 5922, 2224, 5925,
1039      2202, 5928,11902,11902, 5945, 5949, 2212, 5957,11902,11902,
1040      2205, 5965,11902, 2203, 5969, 5972, 5975, 2210, 5978, 2218,
1041      2225, 2218, 2247, 5987, 2263, 5991,11902,11902, 5999,11902,
1042      2263, 6002, 2271, 6006, 2274, 6009, 2283, 6012, 6020, 6034,
1043      6042, 6045, 6049, 6066, 6069, 6073,11902,11902, 6081, 2273,
1044      2287, 2324, 6089, 6092, 2326, 2313, 2377, 2314, 2333, 2320,
1045      2386, 2337, 6096,11902,11902, 6104, 2375, 2460, 2399, 6110,
1046      6116, 6124, 2328, 2349, 2379, 2358, 6128, 6131, 6135, 2363,
1047
1048      6138, 2364, 2378, 2405, 6141, 6144, 6147, 6151, 2406, 6154,
1049      2418, 2433, 2414, 6157, 6160, 2416, 6163, 6166, 6169, 2418,
1050      6172,11902,11902, 6180,11902,11902, 2432, 6188, 2423, 6191,
1051      2430, 6194, 6198, 6212, 6216,11902,11902, 6224,11902,11902,
1052      6232, 6235, 6240,11902,11902, 6256, 6259, 6274,11902,11902,
1053      6267, 6282,11902,11902, 2455, 2464, 2487, 6290,11902,11902,
1054      6298, 6301, 2485, 2475, 6309,11902,11902, 2497, 6317, 6320,
1055      6323, 2487, 2484, 6328,11902,11902, 2493, 6342, 6345, 2500,
1056      6348, 6351, 2503, 2527, 2532, 2538, 6367, 6370, 2549, 6373,
1057     11902, 2543, 6376,11902,11902, 2542, 2551, 2552, 6392, 6398,
1058
1059      6406, 6410, 6413, 6416, 6419, 6425, 6428, 6437, 6446, 2546,
1060      2561, 6449, 6455, 2580, 6467, 2579, 6471,11902, 2580, 6477,
1061      6480,11902,11902, 6497, 6500, 2589, 6508,11902,11902, 6516,
1062      6519, 6522, 2603, 6530, 2611, 2624, 2636, 6537,11902, 6540,
1063      6543, 2649, 2655, 2656, 2662, 2673, 2665, 2695, 2695, 2705,
1064      2720, 6551, 6558, 2736, 2809, 6561, 2984, 3943, 6570, 6573,
1065      6577, 2687, 2685, 6582, 6585, 2699, 6588, 6591, 2698, 6594,
1066      6597, 6601, 2694, 2723, 6604, 6607, 2725, 2726, 6610, 6613,
1067      2747, 6616, 6619, 2739, 2752, 2769, 6622, 6625, 6628, 6631,
1068      6634,11902,11902, 6642, 6649, 6652, 6655,11902,11902, 6663,
1069
1070      2764, 2777, 2839, 6671,11902,11902, 6682, 2796, 2799, 6687,
1071      6696, 6690, 6705,11902, 2805, 2810, 2832, 6709, 6714, 6717,
1072      6724,11902,11902, 6720, 6738, 6741, 6744, 6747, 6750, 6770,
1073      2829, 2837, 2839, 6776, 6779,11902,11902, 6788, 6793, 6796,
1074      6801, 6809, 6815, 6818, 6821, 6827, 6836, 6841,11902,11902,
1075      6850, 6854,11902, 2849, 2848, 6857,11902, 6861,11902,11902,
1076      2829, 6876, 6879,11902,11902, 2853, 6887, 2864, 2869,11902,
1077      6891,11902,11902, 2919, 2905, 2921, 2919, 2927, 2929, 2917,
1078      2936, 2932, 2939, 6899, 6902, 3029, 3023, 2938, 2943, 3058,
1079      2941, 2955, 2954, 2958, 3069, 2957, 2996, 6906, 6909, 2992,
1080
1081      2999, 6912, 6921, 3007, 6924, 3004, 3021, 6927, 3037, 3038,
1082      6930, 3034, 3055, 3074, 6934,11902, 6937, 6940, 6944, 6947,
1083      6955, 6965, 6968, 6974,11902, 3088, 3077, 3074, 3098, 6977,
1084      6980, 3088, 3097, 6989, 3784, 3862, 6997,11902, 3083, 3114,
1085      7000, 7003, 7006,11902, 7009, 7012, 3131, 3126, 3136, 7030,
1086      7036, 7039, 7048, 7054, 7057, 7061, 3134, 3137, 7069, 7075,
1087      7078, 7081,11902,11902, 7089, 7093, 7101, 7107, 7110,11902,
1088      7119, 7125, 7129, 7137, 3151, 3145, 3172, 7143,11902, 3185,
1089      7146, 3189, 3189, 3221, 3217, 3234, 3222, 3248, 3232, 3228,
1090      3248, 3236, 3261, 7149, 3290, 3492, 3319, 3234, 3251, 3265,
1091
1092      3269, 3269, 3262, 3266, 3278, 3278, 3282, 3289, 3283, 3315,
1093      3342, 7155, 7158, 3332, 3345, 3330, 3359, 7168, 3352, 3364,
1094      7171, 7175,11902, 7178,11902,11902, 7189,11902, 7195, 7198,
1095      3370, 3388, 7201, 3380, 7204,11902,11902, 3399, 3394, 3425,
1096      3503, 3437, 3443, 3557, 3462, 3431, 7219, 7222, 7225, 7233,
1097      7240,11902,11902, 3465, 3471, 3470, 7248, 7253, 7266, 3632,
1098      3999, 7261,11902, 7274, 7280,11902,11902, 3470, 7288, 7293,
1099      7296, 7306,11902, 7311,11902,11902, 7320, 7325, 7333, 7338,
1100      7347, 3687, 3715, 7355, 7358, 7361, 3491, 3493, 7364, 7367,
1101      7379, 3517, 3544, 3568, 3571, 3589, 3574, 3595, 3599, 3603,
1102
1103      3618, 7383, 3609, 3649, 3698, 3567, 3582, 3570, 3584, 3609,
1104      3630, 3620, 3630, 3617, 3638, 3667, 3677, 3668, 7386, 7389,
1105      3684, 3690, 3675, 7392, 3699, 3707, 7397, 7402, 7410, 7418,
1106      3698, 7421, 7424, 7430, 7444, 3732, 3733, 3766, 3749, 3769,
1107      3754, 3792, 3776, 3795, 3781, 3783, 7447, 7450, 7458,11902,
1108     11902, 7466,11902, 3776, 7470, 3786, 7474,11902,11902, 3812,
1109      3814, 3818, 3822, 3825, 3832, 7488, 3823, 7491, 7494, 7503,
1110     11902,11902, 7511, 3876, 3904, 7519,11902,11902, 3834, 3854,
1111      3914, 3855, 3858, 3969, 7527, 7530, 7533, 7541, 7548, 7559,
1112      7562, 7565, 7568, 7571, 7589, 3886, 3871, 3886, 3890,11902,
1113
1114      3910, 3905, 3905, 3917,11902, 7580, 3941, 3994, 7584, 3894,
1115      3917, 3940, 3997, 4005, 3956, 3969, 3974, 3992, 4042, 4043,
1116      4010, 4018, 7603, 7606, 4009, 4025, 7609, 7612, 4012, 7615,
1117      4079, 4095, 7623, 7628, 4029, 7632, 7635, 7643,11902,11902,
1118      7651, 7654, 4022, 4031, 4070, 4063, 4073, 4084, 4104, 4085,
1119      4101, 4102, 4090, 7662,11902,11902, 4113, 7670, 7673, 4095,
1120      4126, 4136, 4167, 4131, 4148, 4180, 7681,11902, 4136, 7684,
1121     11902,11902, 4162, 4167, 4174, 4184, 4189, 4194, 4195, 4204,
1122      4211, 4200, 4201, 4210, 7692, 7696, 4225, 4251, 7704,11902,
1123     11902, 7712, 7715, 7723, 7726, 7734, 7737,11902,11902, 4199,
1124
1125      4223, 4240, 4235, 4219, 4242, 4262, 4266, 7745, 4304, 7748,
1126      7753, 7757, 4236, 4223, 4287,11902,11902, 4242, 4244, 4237,
1127      4298,11902,11902, 4256, 7767, 7772, 7776, 7779, 7782, 7786,
1128      4277, 4288, 4284, 4300, 7789, 7795,11902, 4275, 7798,11902,
1129     11902, 7808,11902,11902, 7816, 4266, 4309, 4315, 4353, 4329,
1130      4334, 4331, 4367, 4338, 4331, 7819, 7822,11902,11902, 7830,
1131      4355, 4370,11902, 4363, 4373,11902, 4344, 4383, 4371, 4389,
1132      4378, 4383, 4394, 4397, 4384, 4396, 4412, 4415, 4402, 7837,
1133      7841, 4408, 4419, 4411, 4422, 7849,11902,11902, 7857,11902,
1134     11902, 7865, 4437, 4437,11902, 4444, 4447, 4447,11902, 4449,
1135
1136      7868, 4514, 7871, 7874, 7893, 7936, 7983, 4418, 4421,11902,
1137      4435, 4437, 4445,11902, 4456, 7901, 7904, 7907, 7912, 4508,
1138      4477, 4528, 4500, 7915, 4489, 7927, 7918, 7930, 4508, 4511,
1139     11902, 4545, 4517, 4525,11902, 4555, 4515, 7948, 7956, 7974,
1140      7966, 4576, 4579, 4584, 4586, 4536, 4592, 4562, 4595, 4573,
1141      4591, 4615, 4616, 4584, 4601, 4636, 4638, 4612, 8003,11902,
1142     11902, 4649, 4618, 4649, 4624, 7977,11902, 4659, 4638, 4640,
1143      4665, 4649, 4651, 8011, 4674, 8014, 4716, 4686, 8034, 8081,
1144      4926, 4636, 4695, 5241, 4654, 4696,11902, 4715,11902, 4715,
1145      8024,11902, 4653, 8054, 4751, 4803, 8045, 8063, 4700, 4707,
1146
1147     11902, 4723, 4726,11902, 4700, 8101,11902,11902, 8109, 4813,
1148      4821,11902,11902,11902,11902, 4703,11902, 4749,11902, 4751,
1149      4760,11902,11902, 4758, 4783,11902,11902, 4761,11902, 4794,
1150     11902, 4793,11902, 4804, 4811,11902, 4812, 4814, 8071,11902,
1151      4831, 4870, 4806, 4818, 4823, 4847, 8074,11902, 4795, 4828,
1152      4819, 4889,11902,11902, 4827, 4847, 4846, 4916,11902,11902,
1153     11902, 8117, 4924, 4886, 4953, 4889, 8120,11902,11902, 4890,
1154      4905, 4906, 4928, 8128, 4992, 4934, 5003, 4943, 8131, 4951,
1155      4955, 4981, 4971, 4984, 4974,11902,11902,11902,11902,11902,
1156     11902, 8135, 4996, 4983, 4996, 8138, 4962, 4945, 4961,11902,
1157
1158      4979, 4986, 4977, 4986,11902, 5006, 8141, 8150, 5021, 5029,
1159      5053, 5037, 5045, 5075, 5053, 5094, 5056, 5094, 8159, 8162,
1160      5064, 5073, 5086, 5070, 5079, 5091, 8170, 8173, 5078, 5080,
1161      5115, 5107, 5123, 5112, 8181, 5115, 5085, 5102, 5074, 5100,
1162      5098, 5135, 5112, 5132, 8184, 5164, 5216, 5153, 5160, 5163,
1163      5167, 5181, 5180, 5218,11902, 5216,11902, 8193,11902,11902,
1164      5212, 5219, 5215, 5219, 5228, 5231, 8201,11902,11902, 5265,
1165      5263,11902, 5240,11902, 5245, 5272,11902, 5222, 5224, 5227,
1166      5240, 5234, 5237, 5244, 5257, 5292, 5287, 5300, 5298, 5298,
1167      5308, 5309, 5308, 5314, 5316,11902,11902, 5319, 5326, 5326,
1168
1169      5332, 5343, 5343,11902,11902, 5365, 5364, 5354, 5326, 5337,
1170      5385, 5342, 5334, 5345, 5398, 5356, 5370, 5396, 5383, 5404,
1171      5396, 5394, 5411, 5407, 5405, 5422, 5424, 5421, 5443, 5432,
1172      5436, 5459,11902,11902, 5483, 5431, 5434,11902, 5488, 5441,
1173      5444,11902, 5492, 5485, 5487, 5489, 5490, 5503, 5494, 5526,
1174      5508, 5498, 5534, 5521, 5514, 5547, 5530, 5520, 5550, 5558,
1175      5502, 5563,11902, 5510, 5571,11902, 5551, 5557, 5556, 5562,
1176      5583, 5564,11902, 5590, 5567,11902, 5596, 5578,11902, 5603,
1177      5584,11902, 5642, 5545,11902, 5557,11902, 5594, 5611, 5600,
1178      5633,11902, 5638,11902, 5644,11902, 5645,11902, 5652, 8209,
1179
1180      5673, 5679, 5664, 5685, 5680, 5698, 5670, 5672, 5673, 5675,
1181      8212,11902,11902, 5721,11902, 5720,11902, 5724, 5733, 5737,
1182      5736, 5729, 5743,11902,11902,11902,11902,11902,11902, 5728,
1183      5737, 5744, 5754, 5766, 5784, 5735, 5894, 5734, 5893, 5923,
1184      5924, 5790, 5887, 5793, 5811, 5860, 5937, 5818, 5963, 5804,
1185      5918, 5942, 5976, 5913, 6005, 6030, 6045, 6007, 6008, 5902,
1186      5966, 5967, 5997, 6014, 6157, 6011, 6061, 6159, 6168, 6220,
1187      6236, 6167, 6209, 6183, 6186, 6185, 6262, 6252, 6259, 6054,
1188      6160, 6270, 6278, 6069, 6275, 6318, 6322, 6294, 6321, 6190,
1189      6230, 6346, 6348, 6247, 6336, 6369, 6405, 6371, 6422, 6386,
1190
1191      6435, 6413, 6425, 6434, 6473, 6470, 6515, 6509, 6619, 6447,
1192      6487, 6475, 6627, 6485, 6621, 6640, 6711, 6629, 6651, 6372,
1193      6659, 6712, 6717, 6694, 6718, 6735, 6741, 6456, 5816, 8220,
1194      8223,11902,11902, 8243, 8252, 8261, 8270, 8279, 8288, 8297,
1195      8306, 8315, 8324, 8333, 8342, 8351, 8360, 8369, 8378, 8387,
1196      8396, 8405, 8414, 8423, 8432, 8441, 8450, 8459, 8468, 8477,
1197      8486, 8495, 8504, 8513, 8522, 8531, 8540, 8549, 8558, 8567,
1198      8576, 8585, 8594, 8603, 8612, 8621, 8630, 8639, 8648, 8657,
1199      8666, 8675, 8684, 8693, 8702, 8711, 8720, 8729, 8738, 8747,
1200      8756, 8765, 8774, 8781, 8788, 8795, 8802, 8809, 8816, 8823,
1201
1202      8830, 8837, 8844, 8851, 8858, 8865, 8872, 8879, 8886, 8893,
1203      8900, 8907, 8914, 8921, 8928, 8935, 8942, 8949, 8956, 8963,
1204      8972, 8979, 8984, 8991, 8996, 9003, 9008, 9015, 9020, 9027,
1205      9032, 9039, 9044, 9051, 9056, 9063, 9068, 9075, 9080, 9087,
1206      9092, 9099, 9104, 9111, 9116, 9123, 9128, 9135, 9140, 9147,
1207      9152, 9159, 9164, 9171, 9176, 9183, 9188, 9195, 9200, 9207,
1208      9212, 9219, 9224, 9231, 9236, 9243, 9248, 9255, 9260, 9267,
1209      9272, 9279, 9284, 9291, 9296, 9305, 9311, 9318, 9326, 9334,
1210      9342, 9349, 9357, 9364, 9372, 9380, 9388, 9396, 9404, 9412,
1211      9420, 9427, 9435, 9443, 9450, 9458, 9465, 9473, 9480, 9488,
1212
1213      9495, 9503, 9510, 9518, 9525, 9533, 9540, 9548, 9555, 9563,
1214      9570, 9578, 9585, 9593, 9600, 9608, 9615, 9623, 9631, 9639,
1215      9646, 9654, 9661, 9669, 9676, 9684, 9691, 9699, 9706, 9714,
1216      9723, 9729, 9736, 9744, 9751, 9759, 9766, 9774, 9781, 9789,
1217      9796, 9804, 9812, 9819, 9827, 9834, 9842, 9850, 9857, 9865,
1218      9873, 9881, 9889, 9897, 9904, 9912, 9919, 9927, 9934, 9942,
1219      9950, 9958, 9965, 9973, 9980, 9988, 9995,10003,10010,10018,
1220     10025,10033,10040,10048,10055,10063,10070,10078,10085,10093,
1221     10101,10109,10116,10124,10133,10142,10149,10156,10164,10172,
1222     10180,10187,10195,10202,10210,10218,10225,10233,10241,10249,
1223
1224     10257,10264,10272,10280,10288,10295,10303,10310,10318,10326,
1225     10334,10341,10349,10356,10364,10371,10379,10386,10394,10402,
1226     10410,10417,10425,10432,10440,10447,10455,10462,10470,10477,
1227     10485,10492,10500,10507,10515,10524,10533,10540,10548,10556,
1228     10564,10571,10579,10587,10595,10603,10611,10619,10627,10635,
1229     10643,10650,10658,10666,10674,10681,10689,10696,10704,10712,
1230     10719,10727,10734,10742,10749,10757,10764,10772,10780,10787,
1231     10795,10802,10810,10817,10825,10833,10841,10848,10856,10863,
1232     10871,10878,10886,10895,10904,10912,10919,10927,10935,10942,
1233     10950,10958,10966,10974,10982,10989,10997,11005,11012,11020,
1234
1235     11028,11035,11042,11050,11058,11065,11073,11080,11088,11096,
1236     11103,11111,11118,11126,11133,11141,11148,11156,11164,11172,
1237     11180,11188,11195,11203,11211,11219,11228,11237,11244,11252,
1238     11260,11267,11275,11283,11291,11299,11306,11314,11322,11329,
1239     11337,11345,11352,11359,11367,11375,11382,11389,11397,11405,
1240     11413,11420,11428,11435,11442,11450,11457,11465,11472,11480,
1241     11487,11495,11504,11513,11520,11528,11536,11544,11552,11560,
1242     11568,11576,11583,11591,11598,11606,11614,11622,11630,11638,
1243     11646,11654,11661,11669,11677,11685,11693,11700,11707,11714,
1244     11722,11729,11737,11744,11752,11761,11770,11777,11785,11793,
1245
1246     11801,11809,11816,11823,11831,11838,11847,11856,11865,11874,
1247     11883,11892
1248     } ;
1249
1250 static yyconst flex_int16_t yy_def[3813] =
1251     {   0,
1252      3334, 3334, 3335, 3335, 3335, 3335, 3336, 3336, 3337, 3337,
1253      3338, 3338, 3339, 3339, 3339, 3339, 3340, 3340, 3341, 3341,
1254      3342, 3342, 3342, 3342, 3334, 3334, 3342, 3342, 3342, 3342,
1255      3334, 3334, 3342, 3342, 3334, 3334, 3342, 3342, 3342, 3342,
1256      3343, 3343, 3344, 3344, 3334, 3334, 3344, 3344, 3344, 3344,
1257      3345, 3345, 3346, 3346, 3347, 3347, 3348, 3348, 3349, 3349,
1258      3350, 3350, 3334, 3334, 3350, 3350, 3350, 3350, 3351, 3351,
1259      3352, 3352, 3334, 3334, 3352, 3352, 3352, 3352, 3353, 3353,
1260      3354, 3354, 3333,   83, 3355, 3355, 3334, 3334, 3355, 3355,
1261      3355, 3355, 3356, 3356, 3357, 3357, 3334, 3334, 3357, 3357,
1262
1263      3357, 3357, 3358, 3358, 3359, 3359, 3334, 3334, 3359, 3359,
1264      3359, 3359, 3360, 3360, 3361, 3361, 3362, 3362, 3363, 3363,
1265      3334, 3334, 3363, 3363, 3363, 3363, 3364, 3364, 3365, 3365,
1266      3334, 3334, 3365, 3365, 3365, 3365, 3366, 3366, 3367, 3367,
1267      3368, 3368, 3369, 3369, 3370, 3370, 3371, 3371, 3372, 3372,
1268      3373, 3373, 3334, 3334, 3374, 3374, 3375, 3375, 3375, 3375,
1269      3334, 3334, 3375, 3375, 3375, 3375, 3334, 3334, 3375, 3375,
1270      3334, 3334, 3375, 3375, 3375, 3375, 3376, 3376, 3377, 3377,
1271      3334, 3334, 3377, 3377, 3377, 3377, 3378, 3378, 3379, 3379,
1272      3380, 3380, 3381, 3381, 3382, 3382, 3383, 3383, 3334, 3334,
1273
1274      3383, 3383, 3383, 3383, 3384, 3384, 3385, 3385, 3386, 3386,
1275      3387, 3387, 3334, 3334, 3387, 3387, 3387, 3387, 3388, 3388,
1276      3389, 3389, 3334, 3334, 3389, 3389, 3389, 3389, 3390, 3390,
1277      3391, 3391, 3392, 3392, 3393, 3393, 3334, 3334, 3333, 3333,
1278      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1279      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1280      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3394, 3333,
1281      3333, 3394, 3394, 3333, 3333, 3333,  276, 3333,  278,  276,
1282       279,  278, 3333, 3333, 3333, 3395, 3333, 3333, 3395, 3395,
1283      3395, 3333, 3333,  278,  294,  294, 3333, 3333, 3333, 3396,
1284
1285      3333, 3333, 3396, 3333, 3333, 3333, 3333, 3333, 3333, 3397,
1286      3333, 3333, 3397, 3397, 3397, 3333, 3333, 3333, 3333, 3333,
1287      3333, 3398, 3333, 3333, 3398, 3398, 3398, 3333, 3333,  294,
1288       294, 3333, 3333, 3333, 3399, 3333, 3333, 3399, 3399, 3333,
1289      3333,  294,  294, 3333, 3333, 3333, 3400, 3333, 3333, 3400,
1290      3400, 3400, 3400, 3400, 3400, 3333, 3333, 3333, 3333, 3333,
1291      3333, 3401, 3333, 3333, 3401, 3401, 3401, 3401, 3401, 3401,
1292      3401, 3401, 3333, 3333,  278,  278, 3333, 3333, 3333, 3402,
1293      3333, 3333, 3402, 3333, 3333,  278,  278, 3333, 3333, 3333,
1294      3403, 3333, 3333, 3403, 3403, 3403, 3403, 3403, 3333, 3333,
1295
1296       278,  278,  278, 3333, 3333, 3333, 3404, 3333, 3333, 3404,
1297      3404, 3404, 3333, 3333, 3333, 3333, 3333, 3333, 3405, 3333,
1298      3333, 3405, 3333, 3333,  278,  425,  278, 3333, 3333, 3333,
1299      3406, 3333, 3333, 3406, 3406, 3406, 3406, 3333, 3333,  278,
1300       278, 3333, 3333, 3333, 3407, 3333, 3333, 3407, 3407, 3333,
1301      3333, 3333, 3333, 3333, 3333, 3408, 3333, 3333, 3408, 3408,
1302      3333, 3333, 3333, 3333, 3333, 3333, 3409, 3333, 3333, 3409,
1303      3409, 3333, 3333, 3333, 3333, 3333, 3333, 3410, 3333, 3333,
1304      3410, 3410, 3410, 3410, 3410, 3410, 3333, 3333, 3333, 3333,
1305      3333, 3333, 3333, 3411, 3333, 3333, 3411, 3333, 3333,  425,
1306
1307       425,  278,  278,  278,  278, 3333, 3333, 3333, 3412, 3333,
1308      3333, 3412, 3412, 3412, 3412, 3412, 3333, 3333,  278,  278,
1309       278, 3333, 3333, 3333, 3413, 3333, 3333, 3413, 3413, 3333,
1310      3333, 3333, 3333, 3333, 3333, 3414, 3333, 3333, 3414, 3414,
1311      3414, 3414, 3414, 3333, 3333, 3333, 3333, 3333, 3333, 3415,
1312      3333, 3333, 3415, 3415, 3333, 3333,  294,  294, 3333, 3333,
1313      3333, 3416, 3333, 3333, 3416, 3416, 3333, 3333, 3333, 3333,
1314      3333, 3333, 3417, 3333, 3333, 3417, 3417, 3417, 3417, 3333,
1315      3333,  278,  278, 3333, 3333, 3333, 3418, 3333, 3333, 3418,
1316      3418, 3418, 3418, 3333, 3333,  278,  278,  278, 3333, 3333,
1317
1318      3333, 3419, 3333, 3333, 3419, 3419, 3419, 3333, 3333, 3333,
1319      3333, 3333, 3420, 3333, 3333, 3420, 3420, 3420, 3333, 3333,
1320      3333, 3333, 3421, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1321      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3422, 3422, 3422,
1322      3423, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1323      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1324      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1325      3333, 3424, 3424, 3424, 3424, 3424, 3425, 3333, 3333, 3426,
1326      3426, 3427, 3333, 3428, 3428, 3428, 3428, 3429, 3333, 3430,
1327      3430, 3430, 3430, 3431, 3333, 3432, 3432, 3432, 3433, 3333,
1328
1329      3434, 3434, 3434, 3434, 3434, 3434, 3434, 3434, 3435, 3333,
1330      3436, 3436, 3436, 3436, 3436, 3436, 3436, 3436, 3436, 3436,
1331      3436, 3436, 3436, 3436, 3436, 3437, 3333, 3438, 3438, 3439,
1332      3333, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3441, 3333,
1333      3333, 3442, 3442, 3442, 3442, 3443, 3333, 3444, 3444, 3445,
1334      3333, 3333, 3446, 3446, 3446, 3446, 3446, 3446, 3447, 3333,
1335      3448, 3448, 3448, 3449, 3333, 3450, 3450, 3450, 3451, 3333,
1336      3452, 3452, 3452, 3453, 3333, 3454, 3454, 3454, 3454, 3454,
1337      3454, 3454, 3454, 3455, 3333, 3333, 3456, 3456, 3457, 3333,
1338      3333, 3333, 3333, 3333, 3333, 3458, 3458, 3458, 3458, 3458,
1339
1340      3458, 3459, 3333, 3333, 3460, 3460, 3460, 3461, 3333, 3462,
1341      3462, 3462, 3462, 3462, 3462, 3462, 3462, 3462, 3463, 3333,
1342      3464, 3464, 3464, 3464, 3465, 3333, 3466, 3466, 3466, 3467,
1343      3333, 3468, 3468, 3468, 3468, 3468, 3469, 3333, 3470, 3470,
1344      3470, 3470, 3470, 3471, 3333, 3333, 3472, 3472, 3472, 3472,
1345      3333, 3473, 3333, 3333, 3474, 3474, 3474, 3474, 3475, 3476,
1346      3333, 3476, 3333, 3333, 3333, 3477, 3333, 3333, 3333, 3333,
1347      3333, 3333, 3333, 3333, 3478, 3479, 3479, 3333, 3333, 3333,
1348      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1349      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1350
1351      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1352      3333, 3480, 3480, 3480, 3480, 3481, 3481, 3333, 3482, 3483,
1353      3483, 3484, 3333, 3333, 3484, 3485, 3485, 3486, 3486, 3486,
1354      3487, 3487, 3488, 3488, 3489, 3489, 3333, 3333, 3333, 3333,
1355      3490, 3490, 3490, 3490, 3490, 3491, 3491, 3492, 3333, 3333,
1356      3492, 3333, 3333, 3492, 3492, 3492, 3492, 3492, 3492, 3492,
1357      3492, 3492, 3492, 3493, 3493, 3333, 3333, 3494, 3494, 3495,
1358      3495, 3495, 3333, 3333, 3495, 3495, 3495, 3496, 3496, 3333,
1359      3497, 3333, 3333, 3333, 3333, 3498, 3498, 3499, 3500, 3500,
1360      3333, 3501, 3333, 3333, 3501, 3501, 3501, 3502, 3502, 3503,
1361
1362      3333, 3333, 3504, 3504, 3333, 3333, 3505, 3506, 3506, 3507,
1363      3507, 3508, 3508, 3509, 3509, 3509, 3333, 3333, 3509, 3509,
1364      3509, 3510, 3510, 3333, 3511, 3512, 3512, 3333, 3333, 3333,
1365      3513, 3513, 3513, 3513, 3513, 3514, 3514, 3333, 3333, 3333,
1366      3515, 3516, 3516, 3517, 3333, 3333, 3517, 3517, 3517, 3517,
1367      3517, 3517, 3518, 3518, 3519, 3519, 3519, 3520, 3520, 3521,
1368      3333, 3333, 3522, 3522, 3523, 3523, 3333, 3333, 3523, 3524,
1369      3524, 3525, 3333, 3333, 3525, 3525, 3526, 3526, 3333, 3527,
1370      3333, 3333, 3527, 3333, 3528, 3528, 3333, 3529, 3529, 3529,
1371      3530, 3530, 3531, 3333, 3333, 3531, 3333, 3333, 3532, 3333,
1372
1373      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3533, 3333, 3534,
1374      3333, 3534, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1375      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1376      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1377      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1378      3535, 3535, 3333, 3333, 3535, 3333, 3536, 3333, 3536, 3333,
1379      3537, 3333, 3538, 3333, 3538, 3539, 3333, 3333, 3333, 3539,
1380      3333, 3540, 3333, 3540, 3333, 3333, 3541, 3541, 3333, 3333,
1381      3333, 3542, 3333, 3542, 3333, 3333, 3333, 3333, 3333, 3543,
1382      3333, 3543, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1383
1384      3544, 3544, 3544, 3544, 3333, 3545, 3333, 3545, 3546, 3546,
1385      3546, 3333, 3333, 3333, 3546, 3333, 3333, 3333, 3333, 3333,
1386      3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3546, 3333,
1387      3547, 3333, 3547, 3333, 3333, 3333, 3333, 3548, 3333, 3548,
1388      3549, 3549, 3549, 3333, 3333, 3333, 3549, 3549, 3549, 3333,
1389      3550, 3333, 3550, 3333, 3551, 3333, 3333, 3333, 3333, 3333,
1390      3333, 3333, 3552, 3333, 3552, 3553, 3333, 3554, 3333, 3554,
1391      3555, 3333, 3333, 3333, 3555, 3555, 3555, 3333, 3556, 3333,
1392      3556, 3557, 3333, 3333, 3333, 3333, 3558, 3333, 3558, 3333,
1393      3333, 3333, 3559, 3333, 3560, 3333, 3560, 3561, 3561, 3333,
1394
1395      3562, 3333, 3562, 3563, 3563, 3563, 3563, 3333, 3333, 3333,
1396      3333, 3333, 3563, 3563, 3333, 3564, 3333, 3564, 3333, 3565,
1397      3333, 3566, 3333, 3566, 3333, 3333, 3333, 3567, 3567, 3567,
1398      3567, 3567, 3333, 3568, 3333, 3568, 3333, 3333, 3333, 3333,
1399      3569, 3333, 3570, 3333, 3570, 3571, 3333, 3333, 3333, 3333,
1400      3333, 3571, 3333, 3333, 3571, 3571, 3571, 3333, 3572, 3333,
1401      3572, 3333, 3333, 3333, 3333, 3573, 3333, 3574, 3333, 3574,
1402      3575, 3333, 3333, 3333, 3333, 3576, 3333, 3576, 3577, 3577,
1403      3333, 3333, 3333, 3577, 3333, 3578, 3333, 3578, 3579, 3333,
1404      3333, 3333, 3579, 3579, 3333, 3580, 3333, 3580, 3333, 3581,
1405
1406      3333, 3333, 3333, 3581, 3333, 3333, 3582, 3333, 3582, 3583,
1407      3583, 3583, 3333, 3584, 3333, 3584, 3585, 3586, 3333, 3333,
1408      3333, 3333, 3587, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1409      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1410      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1411      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1412      3333, 3333, 3333, 3588, 3588, 3333, 3333, 3333, 3588, 3589,
1413      3333, 3590, 3591, 3592, 3592, 3593, 3333, 3333, 3333, 3594,
1414      3594, 3333, 3333, 3333, 3595, 3333, 3333, 3333, 3333, 3333,
1415      3333, 3596, 3333, 3333, 3333, 3597, 3597, 3597, 3597, 3598,
1416
1417      3599, 3599, 3599, 3333, 3333, 3333, 3333, 3333, 3599, 3599,
1418      3599, 3599, 3599, 3599, 3599, 3599, 3599, 3599, 3600, 3601,
1419      3602, 3602, 3333, 3333, 3602, 3602, 3602, 3603, 3333, 3333,
1420      3333, 3604, 3333, 3333, 3605, 3606, 3606, 3606, 3606, 3607,
1421      3608, 3609, 3610, 3611, 3333, 3333, 3612, 3613, 3614, 3614,
1422      3614, 3614, 3333, 3333, 3333, 3614, 3614, 3615, 3333, 3616,
1423      3617, 3333, 3333, 3333, 3618, 3333, 3333, 3618, 3618, 3618,
1424      3619, 3333, 3620, 3621, 3622, 3333, 3333, 3333, 3333, 3333,
1425      3333, 3333, 3333, 3622, 3333, 3333, 3622, 3623, 3333, 3333,
1426      3333, 3333, 3333, 3333, 3624, 3625, 3626, 3627, 3628, 3628,
1427
1428      3628, 3629, 3630, 3630, 3333, 3333, 3631, 3333, 3333, 3333,
1429      3632, 3333, 3633, 3634, 3333, 3333, 3634, 3635, 3636, 3637,
1430      3637, 3333, 3637, 3333, 3333, 3638, 3333, 3333, 3333, 3333,
1431      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1432      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1433      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1434      3333, 3333, 3333, 3333, 3639, 3639, 3639, 3640, 3333, 3333,
1435      3333, 3641, 3642, 3642, 3643, 3644, 3644, 3645, 3646, 3647,
1436      3647, 3333, 3333, 3647, 3648, 3333, 3333, 3649, 3649, 3333,
1437      3333, 3333, 3649, 3649, 3649, 3649, 3649, 3649, 3333, 3333,
1438
1439      3649, 3649, 3649, 3650, 3651, 3652, 3652, 3333, 3333, 3333,
1440      3652, 3333, 3333, 3652, 3653, 3333, 3333, 3333, 3333, 3654,
1441      3333, 3333, 3333, 3655, 3656, 3656, 3656, 3656, 3657, 3658,
1442      3659, 3333, 3333, 3660, 3333, 3333, 3333, 3661, 3662, 3663,
1443      3333, 3333, 3663, 3663, 3333, 3333, 3663, 3664, 3333, 3665,
1444      3666, 3333, 3333, 3333, 3667, 3333, 3333, 3333, 3667, 3667,
1445      3667, 3668, 3333, 3333, 3333, 3669, 3670, 3333, 3333, 3333,
1446      3670, 3333, 3333, 3333, 3670, 3671, 3672, 3673, 3674, 3675,
1447      3676, 3676, 3676, 3677, 3678, 3333, 3333, 3333, 3333, 3333,
1448      3679, 3333, 3333, 3333, 3333, 3680, 3333, 3681, 3682, 3333,
1449
1450      3333, 3333, 3333, 3333, 3683, 3684, 3685, 3685, 3333, 3686,
1451      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1452      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1453      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1454      3333, 3333, 3333, 3333, 3333, 3333, 3687, 3688, 3333, 3333,
1455      3333, 3333, 3689, 3690, 3690, 3691, 3333, 3333, 3333, 3333,
1456      3692, 3693, 3333, 3333, 3694, 3333, 3333, 3333, 3333, 3333,
1457      3695, 3333, 3333, 3333, 3333, 3333, 3696, 3696, 3696, 3333,
1458      3333, 3696, 3696, 3696, 3333, 3333, 3333, 3333, 3333, 3696,
1459      3696, 3697, 3698, 3699, 3699, 3333, 3333, 3333, 3333, 3333,
1460
1461      3699, 3333, 3333, 3333, 3700, 3701, 3702, 3702, 3702, 3702,
1462      3333, 3333, 3703, 3704, 3333, 3333, 3333, 3705, 3706, 3707,
1463      3708, 3333, 3333, 3333, 3333, 3333, 3708, 3333, 3333, 3333,
1464      3708, 3333, 3333, 3333, 3709, 3710, 3333, 3333, 3333, 3711,
1465      3711, 3711, 3711, 3712, 3333, 3333, 3333, 3333, 3333, 3333,
1466      3713, 3713, 3713, 3714, 3715, 3716, 3717, 3718, 3333, 3333,
1467      3719, 3333, 3333, 3720, 3721, 3333, 3333, 3333, 3722, 3333,
1468      3723, 3333, 3724, 3725, 3333, 3333, 3333, 3333, 3333, 3333,
1469      3333, 3333, 3333, 3333, 3333, 3726, 3727, 3728, 3728, 3333,
1470      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1471
1472      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1473      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1474      3333, 3333, 3333, 3333, 3333, 3333, 3729, 3730, 3333, 3731,
1475      3732, 3333, 3333, 3733, 3333, 3333, 3333, 3333, 3333, 3333,
1476      3734, 3735, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1477      3736, 3333, 3333, 3333, 3737, 3737, 3737, 3333, 3333, 3333,
1478      3333, 3333, 3737, 3737, 3333, 3333, 3333, 3737, 3737, 3738,
1479      3739, 3740, 3740, 3333, 3333, 3333, 3740, 3741, 3742, 3743,
1480      3333, 3333, 3743, 3743, 3743, 3744, 3745, 3746, 3747, 3333,
1481      3333, 3748, 3333, 3333, 3333, 3748, 3748, 3333, 3333, 3333,
1482
1483      3749, 3333, 3333, 3333, 3750, 3750, 3750, 3750, 3751, 3333,
1484      3752, 3333, 3333, 3752, 3753, 3754, 3333, 3333, 3755, 3756,
1485      3333, 3333, 3333, 3333, 3333, 3757, 3333, 3333, 3333, 3758,
1486      3333, 3333, 3759, 3760, 3333, 3761, 3333, 3333, 3333, 3333,
1487      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1488      3333, 3762, 3763, 3764, 3764, 3333, 3333, 3333, 3333, 3333,
1489      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1490      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1491      3333, 3333, 3333, 3333, 3333, 3765, 3766, 3333, 3767, 3768,
1492      3333, 3333, 3333, 3769, 3770, 3771, 3333, 3333, 3333, 3772,
1493
1494      3773, 3773, 3773, 3333, 3333, 3333, 3773, 3773, 3773, 3333,
1495      3333, 3774, 3333, 3333, 3775, 3775, 3775, 3776, 3777, 3778,
1496      3333, 3333, 3333, 3778, 3778, 3778, 3779, 3780, 3781, 3782,
1497      3783, 3783, 3783, 3333, 3333, 3333, 3333, 3784, 3333, 3333,
1498      3333, 3785, 3785, 3785, 3786, 3333, 3787, 3333, 3333, 3333,
1499      3787, 3333, 3333, 3788, 3789, 3333, 3333, 3333, 3333, 3333,
1500      3790, 3791, 3333, 3333, 3333, 3792, 3793, 3333, 3794, 3333,
1501      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1502      3333, 3333, 3333, 3795, 3796, 3797, 3797, 3333, 3333, 3333,
1503      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1504
1505      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1506      3333, 3333, 3333, 3798, 3333, 3333, 3333, 3799, 3333, 3333,
1507      3800, 3801, 3802, 3333, 3333, 3803, 3803, 3803, 3803, 3333,
1508      3333, 3803, 3803, 3333, 3333, 3333, 3333, 3333, 3804, 3804,
1509      3804, 3805, 3333, 3333, 3333, 3333, 3806, 3806, 3806, 3806,
1510      3333, 3333, 3780, 3781, 3333, 3333, 3783, 3783, 3783, 3333,
1511      3784, 3333, 3333, 3333, 3333, 3333, 3785, 3785, 3333, 3333,
1512      3333, 3333, 3333, 3787, 3788, 3789, 3790, 3333, 3333, 3792,
1513      3793, 3333, 3794, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1514      3333, 3333, 3333, 3795, 3796, 3797, 3797, 3333, 3333, 3333,
1515
1516      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1517      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1518      3798, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3801, 3802,
1519      3803, 3803, 3803, 3803, 3333, 3333, 3333, 3803, 3803, 3333,
1520      3333, 3333, 3333, 3333, 3333, 3804, 3804, 3333, 3333, 3805,
1521      3333, 3333, 3333, 3806, 3806, 3806, 3333, 3333, 3333, 3333,
1522      3333, 3333, 3333, 3781, 3333, 3333, 3333, 3783, 3783, 3333,
1523      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1524      3333, 3333, 3333, 3787, 3788, 3789, 3790, 3792, 3793, 3333,
1525      3794, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1526
1527      3333, 3795, 3796, 3797, 3797, 3333, 3333, 3333, 3333, 3333,
1528      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1529      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3801, 3802,
1530      3803, 3803, 3333, 3333, 3803, 3803, 3803, 3333, 3333, 3333,
1531      3333, 3333, 3333, 3333, 3333, 3804, 3333, 3333, 3333, 3333,
1532      3333, 3333, 3333, 3806, 3806, 3806, 3333, 3333, 3333, 3333,
1533      3333, 3333, 3333, 3333, 3333, 3781, 3783, 3333, 3333, 3333,
1534      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1535      3333, 3333, 3333, 3333, 3787, 3333, 3333, 3333, 3333, 3790,
1536      3792, 3793, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1537
1538      3333, 3333, 3333, 3333, 3333, 3795, 3796, 3797, 3797, 3333,
1539      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1540      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1541      3333, 3333, 3801, 3802, 3803, 3333, 3333, 3333, 3333, 3333,
1542      3333, 3333, 3803, 3803, 3333, 3333, 3333, 3333, 3333, 3333,
1543      3333, 3333, 3804, 3333, 3333, 3333, 3806, 3333, 3333, 3806,
1544      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3783, 3333,
1545      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1546      3333, 3333, 3333, 3333, 3787, 3333, 3333, 3333, 3333, 3333,
1547      3333, 3333, 3333, 3333, 3333, 3793, 3333, 3333, 3333, 3333,
1548
1549      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3795, 3796, 3797,
1550      3797, 3797, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1551      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1552      3333, 3333, 3333, 3333, 3801, 3333, 3333, 3803, 3333, 3333,
1553      3333, 3333, 3333, 3333, 3803, 3803, 3333, 3333, 3333, 3333,
1554      3333, 3333, 3333, 3333, 3804, 3806, 3333, 3333, 3333, 3806,
1555      3333, 3333, 3333, 3333, 3333, 3333, 3783, 3333, 3333, 3333,
1556      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1557      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1558      3333, 3793, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1559
1560      3795, 3796, 3797, 3797, 3797, 3807, 3808, 3333, 3333, 3333,
1561      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1562      3333, 3333, 3333, 3801, 3803, 3333, 3333, 3803, 3333, 3333,
1563      3333, 3333, 3333, 3333, 3333, 3333, 3804, 3333, 3333, 3333,
1564      3333, 3333, 3333, 3333, 3333, 3783, 3333, 3333, 3333, 3333,
1565      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1566      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1567      3333, 3333, 3333, 3795, 3796, 3797, 3809, 3810, 3807, 3808,
1568      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1569      3333, 3333, 3803, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1570
1571      3333, 3333, 3333, 3333, 3804, 3333, 3333, 3333, 3333, 3333,
1572      3333, 3333, 3333, 3333, 3333, 3783, 3333, 3333, 3333, 3333,
1573      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1574      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1575      3796, 3809, 3797, 3811, 3810, 3812, 3797, 3333, 3333, 3333,
1576      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1577      3333, 3803, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1578      3333, 3333, 3333, 3804, 3333, 3333, 3333, 3333, 3783, 3333,
1579      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1580      3333, 3796, 3811, 3333, 3812, 3797, 3333, 3333, 3333, 3333,
1581
1582      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1583      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1584      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1585      3333, 3333, 3333, 3333, 3796, 3333, 3333, 3333, 3333, 3333,
1586      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1587      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1588      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1589      3333, 3333, 3333, 3333, 3333, 3796, 3333, 3333, 3333, 3333,
1590      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1591      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1592
1593      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3796, 3333, 3333,
1594      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1595      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1596      3333, 3333, 3333, 3333, 3796, 3333, 3333, 3333, 3333, 3333,
1597      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1598      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3796,
1599      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1600      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1601      3333, 3333, 3796, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1602      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3796,
1603
1604      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1605      3796, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1606      3333, 3796, 3796, 3333, 3333, 3333, 3333, 3333, 3333, 3796,
1607      3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796,
1608      3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796,
1609      3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796,
1610      3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796,
1611      3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796,
1612      3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796,
1613      3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796,
1614
1615      3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796,
1616      3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796,
1617      3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796,
1618      3796, 3333,    0, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1619      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1620      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1621      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1622      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1623      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1624      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1625
1626      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1627      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1628      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1629      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1630      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1631      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1632      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1633      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1634      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1635      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1636
1637      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1638      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1639      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1640      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1641      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1642      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1643      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1644      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1645      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1646      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1647
1648      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1649      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1650      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1651      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1652      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1653      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1654      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1655      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1656      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1657      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1658
1659      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1660      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1661      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1662      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1663      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1664      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1665      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1666      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1667      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1668      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1669
1670      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
1671      3333, 3333
1672     } ;
1673
1674 static yyconst flex_uint16_t yy_nxt[11977] =
1675     {   0,
1676      3333,  242,  243,  242,  242,  243,  242,  242,  243,  242,
1677       242,  243,  242,  247,  243,  247,  253,  244,  250,  253,
1678       244,  250,  694,  245, 3333,  251,  245, 3333,  251,  248,
1679       247,  243,  247,  623,  254,  256,  257,  254,  256,  257,
1680       258,  259,  641,  258,  259,  623,  248,  263,  264,  624,
1681       260,  256,  257,  260,  261,  626,  258,  256,  257, 1305,
1682       261,  625,  258,  263,  264, 1306,  260,  275,  243,  275,
1683       660,  625,  260,  275,  243,  275,  275,  243,  275,  275,
1684       243,  275,  707,  276,  243,  243,  243,  708, 1666,  276,
1685       699,  265,  277, 1667,  667,  277,  622,  622,  622, 1673,
1686
1687       278,  622,  622,  622,  622,  622,  622,  265,  266,  267,
1688       243,  267,  266,  266,  266,  266,  266,  266,  266,  268,
1689       266,  266,  266,  739,  266,  270,  266,  271,  266,  243,
1690       243,  243,  275,  243,  275,  275,  243,  275,  660,  275,
1691       243,  275,  275,  243,  275,  278,  626,  626,  276,  675,
1692       712,  276,  626,  266,  266,  279,  676,  757,  279,  622,
1693       622,  622,  625,  625,  272,  622,  622,  622,  625,  758,
1694       631,  713,  740,  273,  266,  267,  243,  267,  266,  266,
1695       266,  266,  266,  266,  266,  268,  266,  266,  266,  817,
1696       266,  270,  266,  271,  266,  243,  243,  243,  243,  243,
1697
1698       243,  275,  243,  275,  818,  275,  243,  275,  243,  243,
1699       243,  280,  632,  867,  280,  825,  868,  277,  633,  266,
1700       266,  277,  626,  634,  281,  243,  243,  243,  635,  682,
1701       272,  275,  243,  275,  275,  243,  275,  971,  625,  273,
1702       972,  281,  275,  243,  275, 1674,  626,  279, 1676,  626,
1703       279,  275,  243,  275,  622,  622,  622,  726,  282,  622,
1704       622,  622,  625,  660,  677,  625, 1677,  282,  283,  284,
1705       243,  284,  283,  283,  283,  283,  283,  283,  283,  285,
1706       283,  283,  283,  844,  283,  287,  283,  288,  283,  293,
1707       243,  293,  293,  243,  293,  243,  243,  243,  730,  243,
1708
1709       243,  243,  293,  243,  293,  294,  720,  892,  294,  667,
1710      1680,  295,  678,  283,  283,  295,  667,  626,  294,  289,
1711       721,  893,  290,  622,  622,  622,  622,  622,  622,  622,
1712       622,  622,  845,  625,  291,  283,  284,  243,  284,  283,
1713       283,  283,  283,  283,  283,  283,  285,  283,  283,  283,
1714       667,  283,  287,  283,  288,  283,  293,  243,  293,  293,
1715       243,  293,  293,  243,  293,  716,  305,  243,  305,  305,
1716       243,  305,  294,  717, 1681,  296,  880,  626,  296,  718,
1717       283,  283,  306,  737,  688,  306,  289,  738,  739,  290,
1718       622,  622,  622,  625,  622,  622,  622,  622,  622,  622,
1719
1720       881,  291,  297,  298,  243,  298,  297,  297,  297,  297,
1721       297,  297,  297,  299,  297,  297,  297,  861,  297,  301,
1722       297,  302,  297,  317,  243,  317,  317,  243,  317,  329,
1723       243,  329,  862,  329,  243,  329,  243,  243,  243,  318,
1724       667, 1684,  318, 1706,  898,  330,  898,  297,  297,  330,
1725       626,  626,  295,  243,  243,  243,  622,  622,  622,  622,
1726       622,  622,  622,  622,  622,  802,  625,  625,  899,  295,
1727       881,  303,  297,  298,  243,  298,  297,  297,  297,  297,
1728       297,  297,  297,  299,  297,  297,  297,  880,  297,  301,
1729       297,  302,  297,  329,  243,  329,  329,  243,  329,  329,
1730
1731       243,  329,  803,  329,  243,  329,  341,  243,  341,  330,
1732       782,  899,  330,  626,  783,  331, 1707,  297,  297,  331,
1733       709,  861,  342,  341,  243,  341,  622,  622,  622,  625,
1734       622,  622,  622,  622,  622,  622,  622,  622,  622,  342,
1735      1711,  303,  307,  308,  243,  308,  307,  307,  307,  307,
1736       307,  307,  307,  309,  307,  307,  307, 1084,  307,  311,
1737       307,  312,  307,  243,  243,  243,  243,  243,  243,  341,
1738       243,  341, 1714,  341,  243,  341,  341,  243,  341,  295,
1739       626,  626,  295,  823,  626,  342,  722,  307,  307,  342,
1740       824,  313,  343, 1716,  723, 1725,  625,  625,  314,  724,
1741
1742       625,  315,  307,  308,  243,  308,  307,  307,  307,  307,
1743       307,  307,  307,  309,  307,  307,  307, 1726,  307,  311,
1744       307,  312,  307,  341,  243,  341,  357,  243,  357,  357,
1745       243,  357,  892,  374,  243,  374,  374,  243,  374,  343,
1746       626,  626,  358,  626,  626,  358,  906,  307,  307,  375,
1747       746,  313,  375,  622,  622,  622,  625,  625,  314,  625,
1748       625,  315,  319,  320,  243,  320,  319,  319,  319,  319,
1749       319,  319,  319,  321,  319,  319,  319, 1727,  319,  323,
1750       319,  324,  319,  243,  243,  243,  243,  243,  243,  374,
1751       243,  374,  750,  374,  243,  374,  374,  243,  374,  278,
1752
1753       892, 1728,  278, 1730, 1738,  375, 1740,  319,  319,  375,
1754       626,  626,  376,  325,  910,  759,  326,  622,  622,  622,
1755       622,  622,  622,  622,  622,  622,  625,  625,  327,  319,
1756       320,  243,  320,  319,  319,  319,  319,  319,  319,  319,
1757       321,  319,  319,  319,  667,  319,  323,  319,  324,  319,
1758       374,  243,  374,  385,  243,  385,  385,  243,  385,  789,
1759       243,  243,  243,  243,  243,  243,  376,  667, 1440,  386,
1760      1743, 1744,  386, 1747,  319,  319,  278,  626,  626,  278,
1761       325, 1441,  789,  326,  622,  622,  622,  622,  622,  622,
1762       622,  622,  622,  625,  625,  327,  332,  333,  243,  333,
1763
1764       332,  332,  332,  332,  332,  332,  332,  334,  332,  332,
1765       332,  791,  332,  336,  332,  337,  332,  385,  243,  385,
1766       385,  243,  385,  385,  243,  385,  789,  385,  243,  385,
1767       400,  243,  400,  386,  794, 1749,  386,  785, 1750,  387,
1768      1752,  332,  332,  387,  626,  626,  401,  338,  622,  622,
1769       622,  622,  622,  622,  622,  622,  622,  622,  622,  622,
1770       625,  625,  339,  332,  333,  243,  333,  332,  332,  332,
1771       332,  332,  332,  332,  334,  332,  332,  332,  667,  332,
1772       336,  332,  337,  332,  400,  243,  400,  243,  243,  243,
1773       243,  243,  243,  802,  400,  243,  400,  400,  243,  400,
1774
1775       401, 1094,  626,  402,  626, 1417,  402, 1094,  332,  332,
1776       401,  764,  626,  401,  338,  622,  622,  622,  625,  769,
1777       625,  622,  622,  622,  622,  622,  622, 1619,  625,  339,
1778       344,  345,  243,  345,  344,  344,  344,  344,  344,  344,
1779       344,  346,  344,  344,  344,  667,  344,  348,  344,  349,
1780       344,  400,  243,  400,  400,  243,  400,  414,  243,  414,
1781       837,  414,  243,  414,  424,  243,  424,  403,  626,  626,
1782       403,  626,  626,  415, 1753,  344,  344,  415,  774,  350,
1783       425,  622,  622,  622,  625,  625,  351,  625,  625,  352,
1784       622,  622,  622,  353, 1754,  354,  355,  344,  345,  243,
1785
1786       345,  344,  344,  344,  344,  344,  344,  344,  346,  344,
1787       344,  344,  667,  344,  348,  344,  349,  344,  424,  243,
1788       424,  243,  243,  243,  243,  243,  243,  892,  424,  243,
1789       424,  424,  243,  424,  425,  626,  626,  426,  626,  626,
1790       426,  911,  344,  344,  425,  784,  350,  425,  622,  622,
1791       622,  625,  625,  351,  625,  625,  352,  622,  622,  622,
1792       353, 1755,  354,  355,  359,  360,  243,  360,  359,  359,
1793       359,  359,  359,  359,  359,  361,  359,  359,  359,  362,
1794       359,  363,  359,  364,  359,  362,  362,  362,  362,  362,
1795       362,  362,  362,  362,  362,  362,  362,  362,  362,  362,
1796
1797       362,  362,  362,  362,  362,  362,  362,  362,  362,  359,
1798       359,  362,  362,  365,  366,  362,  362,  362,  362,  362,
1799       367,  362,  362,  368,  362,  362,  362,  369,  362,  370,
1800       371,  372,  362,  362,  362,  362,  362,  362,  377,  378,
1801       243,  378,  377,  377,  377,  377,  377,  377,  377,  379,
1802       377,  377,  377, 1759,  377,  381,  377,  382,  377,  424,
1803       243,  424,  424,  243,  424,  439,  243,  439, 1760,  439,
1804       243,  439,  243,  243,  243,  427,  626, 1761,  427, 1763,
1805       889,  440,  844,  377,  377,  440, 1767,  890,  278,  622,
1806       622,  622,  625,  891,  383,  377,  378,  243,  378,  377,
1807
1808       377,  377,  377,  377,  377,  377,  379,  377,  377,  377,
1809      1771,  377,  381,  377,  382,  377,  243,  243,  243,  439,
1810       243,  439,  439,  243,  439, 1775,  439,  243,  439,  439,
1811       243,  439,  278,  793,  667,  440, 1777,  889,  440,  813,
1812       377,  377,  441,  814,  890,  441,  667,  815,  792, 3333,
1813       896,  383,  388,  389,  243,  389,  388,  388,  388,  388,
1814       388,  388,  388,  390,  388,  388,  388, 1779,  388,  392,
1815       388,  393,  388,  451,  243,  451,  451,  243,  451,  462,
1816       243,  462,  882,  462,  243,  462, 1781,  669, 1782,  452,
1817      1030, 1094,  452,  883, 1517,  463,  884,  388,  388,  463,
1818
1819       394,  654,  395,  670,  906,  664, 1518, 1096,  396,  622,
1820       622,  622,  622,  622,  622,  397,  789, 1124,  398,  388,
1821       389,  243,  389,  388,  388,  388,  388,  388,  388,  388,
1822       390,  388,  388,  388, 1125,  388,  392,  388,  393,  388,
1823       473,  243,  473,  473,  243,  473,  488,  243,  488,  900,
1824       488,  243,  488, 1783, 1785,  790,  474, 1124, 1792,  474,
1825       901, 1796,  489,  884,  388,  388,  489,  394,  791,  395,
1826       792,  622,  622,  622, 1254,  396,  622,  622,  622,  622,
1827       622,  622,  397, 1797, 1399,  398,  404,  405,  243,  405,
1828       404,  404,  404,  404,  404,  404,  404,  406,  404,  404,
1829
1830       404, 1125,  404,  408,  404,  409,  404,  243,  243,  243,
1831       243,  243,  243,  499,  243,  499, 1799,  499,  243,  499,
1832       499,  243,  499,  490, 1622, 1809,  490,  626,  626,  500,
1833      1810,  404,  404,  500,  808,  819,  501,  410,  622,  622,
1834       622, 1811,  411,  625,  625,  622,  622,  622,  622,  622,
1835       622,  622,  622,  622,  412,  404,  405,  243,  405,  404,
1836       404,  404,  404,  404,  404,  404,  406,  404,  404,  404,
1837      1812,  404,  408,  404,  409,  404,  499,  243,  499,  243,
1838       243,  243,  243,  243,  243, 1813,  499,  243,  499,  499,
1839       243,  499,  501, 1814, 1815,  502,  626,  905,  502, 1816,
1840
1841       404,  404,  500,  830,  890,  500,  410,  622,  622,  622,
1842       891,  411,  625,  622,  622,  622,  622,  622,  622,  622,
1843       622,  622, 1817,  412,  416,  417,  243,  417,  416,  416,
1844       416,  416,  416,  416,  416,  418,  416,  416,  416, 1818,
1845       416,  420,  416,  421,  416,  499,  243,  499,  499,  243,
1846       499,  243,  243,  243,  882,  243,  243,  243,  499,  243,
1847       499,  503,  900, 1819,  503,  883, 1820,  426, 1028,  416,
1848       416,  426, 1821,  901,  501, 1823, 1028,  422,  416,  417,
1849       243,  417,  416,  416,  416,  416,  416,  416,  416,  418,
1850       416,  416,  416, 1824,  416,  420,  416,  421,  416,  499,
1851
1852       243,  499,  243,  243,  243,  243,  243,  243, 1825,  499,
1853       243,  499,  499,  243,  499,  501, 1440, 1563,  504, 1828,
1854      1831,  504, 1094,  416,  416,  503, 1832, 1833,  503, 1446,
1855      1446,  422,  428,  429,  243,  429,  428,  428,  428,  428,
1856       428,  428,  428,  430,  428,  428,  428, 1806,  428,  432,
1857       428,  433,  428,  499,  243,  499,  499,  243,  499,  518,
1858       243,  518, 1834,  518,  243,  518,  243,  243,  243,  505,
1859      1835, 1836,  505,  851, 1837,  519, 1840,  428,  428,  519,
1860       852,  434,  520,  622,  622,  622, 1849, 1854,  435,  625,
1861      1855,  436,  622,  622,  622,  622,  622,  622,  437,  428,
1862
1863       429,  243,  429,  428,  428,  428,  428,  428,  428,  428,
1864       430,  428,  428,  428, 1894,  428,  432,  428,  433,  428,
1865       243,  243,  243,  518,  243,  518,  518,  243,  518, 1895,
1866       518,  243,  518,  518,  243,  518,  520, 1901, 1907,  519,
1867       626, 1908,  519, 1909,  428,  428,  521,  859,  434,  521,
1868       622,  622,  622, 1910, 1913,  435,  625, 1919,  436,  622,
1869       622,  622,  865,  865,  865,  437,  442,  443,  243,  443,
1870       442,  442,  442,  442,  442,  442,  442,  444,  442,  442,
1871       442, 1921,  442,  446,  442,  447,  442,  531,  243,  531,
1872       531,  243,  531,  545,  243,  545, 1927,  545,  243,  545,
1873
1874       556,  243,  556,  532, 1931, 1934,  532,  905, 1935,  546,
1875      1937,  442,  442,  546,  890, 1938,  557,  448, 1939, 1940,
1876       896,  866,  449,  442,  443,  243,  443,  442,  442,  442,
1877       442,  442,  442,  442,  444,  442,  442,  442, 1941,  442,
1878       446,  442,  447,  442,  556,  243,  556,  243,  243,  243,
1879       243,  243,  243, 1942,  556,  243,  556,  556,  243,  556,
1880       557, 1943, 1945,  295,  889,  905,  295, 1951,  442,  442,
1881       557,  890,  890,  557,  448, 1952, 1953, 1029, 1029,  449,
1882       453,  454,  243,  454,  453,  453,  453,  453,  453,  453,
1883       453,  455,  453,  453,  453, 1955,  453,  457,  453,  458,
1884
1885       453,  556,  243,  556,  556,  243,  556,  568,  243,  568,
1886      1957,  568,  243,  568,  581,  243,  581,  558, 1209, 1965,
1887       558, 1970, 1971,  569, 1972,  453,  453,  569, 1210, 1974,
1888       582,  581,  243,  581, 1992, 1211,  459,  865,  865,  865,
1889      1993, 1098, 1113, 1113, 1113, 1994, 1997,  582, 1094,  460,
1890       453,  454,  243,  454,  453,  453,  453,  453,  453,  453,
1891       453,  455,  453,  453,  453, 1987,  453,  457,  453,  458,
1892       453,  243,  243,  243,  243,  243,  243,  581,  243,  581,
1893      1622,  581,  243,  581,  581,  243,  581,  278, 1975, 1995,
1894       278, 1998, 2000,  582, 1976,  453,  453,  582, 1977, 2001,
1895
1896       583,  581,  243,  581, 1978, 1996,  459, 1105, 1105, 1105,
1897      2002, 1106, 2003, 1989, 1107, 2004, 1622,  583, 2005,  460,
1898       464,  465,  243,  465,  464,  464,  464,  464,  464,  464,
1899       464,  466,  464,  464,  464, 2008,  464,  468,  464,  469,
1900       464,  595,  243,  595,  595,  243,  595,  243,  243,  243,
1901      2009,  243,  243,  243,  595,  243,  595,  596, 1988, 2010,
1902       596, 2011, 2014,  597, 2015,  464,  464,  597, 2016, 2012,
1903       596, 1134, 1134, 1134, 1634, 1634, 1634, 2017, 1113, 1113,
1904      1113,  470, 1134, 1134, 1134, 2013,  471,  464,  465,  243,
1905       465,  464,  464,  464,  464,  464,  464,  464,  466,  464,
1906
1907       464,  464, 2019,  464,  468,  464,  469,  464,  595,  243,
1908       595,  595,  243,  595,  595,  243,  595, 1641, 1641, 1641,
1909      1635,  873,  873,  873,  596, 2020, 2027,  598, 2029, 2031,
1910       598, 2055,  464,  464,  256,  257,  256,  257,  874,  258,
1911       750,  258, 1114, 1134, 1134, 1134, 1135, 2056,  470,  608,
1912       751,  608, 2057,  471,  475,  476,  243,  476,  475,  475,
1913       475,  475,  475,  475,  475,  477,  475,  475,  475, 2063,
1914       475,  479,  475,  480,  475,  620,  243,  620,  609,  645,
1915       609,  620,  243,  620, 2064,  647, 2068, 2069,  923,  923,
1916       923,  621,  654, 1109, 1109, 1109,  653,  621,  641,  475,
1917
1918       475, 2072,  481,  482,  483,  924, 2073, 1114,  665, 2077,
1919       484, 1111, 2080,  485, 1113, 1113, 1113, 1644, 1644, 1644,
1920       486,  475,  476,  243,  476,  475,  475,  475,  475,  475,
1921       475,  475,  477,  475,  475,  475,  666,  475,  479,  475,
1922       480,  475,  937,  937,  937,  939,  939,  939, 2084, 2085,
1923       667, 2086,  668, 2089,  653,  949,  949,  949, 2092,  938,
1924      2096, 2097,  940, 1156, 1156, 1156,  475,  475, 2098,  481,
1925       482,  483,  950, 1649, 1649, 1649, 2103,  484, 1135, 2105,
1926       485, 1158, 1637, 1637, 1637, 2106, 2107,  486,  491,  492,
1927       243,  492,  491,  491,  491,  491,  491,  491,  491,  493,
1928
1929       491,  491,  491, 2108,  491,  495,  491,  496,  491,  952,
1930       952,  952,  966,  966,  966,  973,  973,  973,  982,  982,
1931       982,  984,  984,  984, 2110, 2111,  953, 2114, 1638,  967,
1932      2116, 2119,  974,  491,  491,  983, 2135, 2136,  985,  993,
1933       993,  993, 1167, 1167, 1167, 2137, 1168, 2142, 2143, 1169,
1934      2146, 1655, 1655, 1655, 2147, 2148,  994,  497,  491,  492,
1935       243,  492,  491,  491,  491,  491,  491,  491,  491,  493,
1936       491,  491,  491, 2151,  491,  495,  491,  496,  491, 1001,
1937      1001, 1001, 1005, 1005, 1005, 1017, 1017, 1017, 1039, 1039,
1938      1039, 1045, 1045, 1045, 1094, 2160, 1002, 1656, 2144, 1006,
1939
1940      2153, 2161, 1018,  491,  491, 1040, 2145, 2149, 1046, 1061,
1941      1061, 1061, 1193, 1193, 1193, 2150, 1194, 2162, 1622, 1195,
1942      2163, 1658, 1658, 1658, 2166, 2168, 1062,  497,  506,  507,
1943       243,  507,  506,  506,  506,  506,  506,  506,  506,  508,
1944       506,  506,  506, 2169,  506,  510,  506,  511,  506, 1067,
1945      1067, 1067, 1073, 1073, 1073, 1081, 1081, 1081,  873,  873,
1946       873, 1149, 1149, 1149, 2155, 2170, 1068, 1638, 2174, 1074,
1947      2176, 2177, 1082,  506,  506,  874, 2178, 2181, 1150, 1622,
1948      2185,  512, 2186,  513, 2188, 2190,  514, 1659, 1659, 1659,
1949       515, 1634, 1634, 1634,  516,  506,  507,  243,  507,  506,
1950
1951       506,  506,  506,  506,  506,  506,  508,  506,  506,  506,
1952      2154,  506,  510,  506,  511,  506, 2201, 1109, 1109, 1109,
1953      1153, 1153, 1153, 2202, 1162, 1162, 1162, 3333, 3333, 3333,
1954      3333, 3333, 3333, 1979, 2203, 1111, 2207, 1154, 2208, 1980,
1955       506,  506, 1164, 1981, 3333, 2209, 2215, 3333,  512, 1982,
1956       513, 2216, 2217,  514, 1112, 2220, 2224,  515, 1637, 1637,
1957      1637,  516,  522,  523,  243,  523,  522,  522,  522,  522,
1958       522,  522,  522,  524,  522,  522,  522, 1151,  522,  526,
1959       522,  527,  522, 1156, 1156, 1156,  923,  923,  923, 1155,
1960      2225, 2226, 1152, 1162, 1162, 1162, 1171, 1171, 1171, 2227,
1961
1962      2230, 1158, 2231,  924, 1175, 1175, 1175,  522,  522, 2232,
1963      2233, 1164, 2234, 2246, 1173, 1196, 1196, 1196,  528, 1197,
1964      1159, 1176, 1198, 1212, 1212, 1212, 2247, 1213, 2251, 2254,
1965      1214,  529,  522,  523,  243,  523,  522,  522,  522,  522,
1966       522,  522,  522,  524,  522,  522,  522, 2255,  522,  526,
1967       522,  527,  522, 1171, 1171, 1171, 2261, 1165, 1179, 1179,
1968      1179, 1181, 1181, 1181, 1181, 1181, 1181, 3333, 3333, 3333,
1969      2266, 1173, 1185, 1185, 1185, 1180, 2268,  522,  522, 1183,
1970      2269, 2270, 1183, 2274, 3333, 1822, 1822, 1822,  528, 1186,
1971      1216, 1216, 1216, 2275, 1217, 2276, 2277, 1218, 2278, 2279,
1972
1973      1174,  529,  533,  534,  243,  534,  533,  533,  533,  533,
1974       533,  533,  533,  535,  533,  533,  533, 1177,  533,  537,
1975       533,  538,  533, 1187, 1187, 1187, 1189, 1189, 1189,  937,
1976       937,  937, 1178, 2280, 2281, 1184, 1189, 1189, 1189, 2282,
1977      1188, 1205, 1205, 1205, 1191, 2283,  938,  533,  533,  939,
1978       939,  939, 2300, 2301, 1191, 1622,  539, 2302,  540, 1207,
1979      2304, 2306,  541, 1641, 1641, 1641,  940,  542,  543,  533,
1980       534,  243,  534,  533,  533,  533,  533,  533,  533,  533,
1981       535,  533,  533,  533, 2307,  533,  537,  533,  538,  533,
1982      2309, 1199, 1199, 1199, 2310,  949,  949,  949, 2286, 3333,
1983
1984      3333, 3333, 3333, 3333, 3333, 2311, 2312, 1192, 1200, 3333,
1985      3333, 3333,  950, 2313,  533,  533, 3333, 2314, 2326, 3333,
1986      1234, 1234, 1234,  539, 1235,  540, 3333, 1236, 1622,  541,
1987      1658, 1658, 1658, 2327,  542,  543,  547,  548,  243,  548,
1988       547,  547,  547,  547,  547,  547,  547,  549,  547,  547,
1989       547, 1201,  547,  551,  547,  552,  547, 1202, 2332, 2333,
1990      1203, 2339, 2340,  952,  952,  952, 3333, 3333, 3333, 1219,
1991      1219, 1219, 1230, 1230, 1230, 2287, 1669, 1205, 1205, 1205,
1992       953,  547,  547, 3333, 2341, 2357, 1220,  553, 2328, 2358,
1993      1232, 2359, 1244, 1244, 1244, 1207, 1245, 2375, 2329, 1246,
1994
1995      2376, 2377,  554,  547,  548,  243,  548,  547,  547,  547,
1996       547,  547,  547,  547,  549,  547,  547,  547, 1204,  547,
1997       551,  547,  552,  547, 1208, 2380, 2382, 1230, 1230, 1230,
1998       966,  966,  966, 1237, 1237, 1237, 2383, 1237, 1237, 1237,
1999       973,  973,  973, 2384, 2385, 1232, 2386,  967,  547,  547,
2000      2387, 1239, 2388, 2389,  553, 1239, 2390,  974, 1256, 1256,
2001      1256, 2391, 1257, 2392, 2393, 1258, 1644, 1644, 1644,  554,
2002       559,  560,  243,  560,  559,  559,  559,  559,  559,  559,
2003       559,  561,  559,  559,  559, 1233,  559,  563,  559,  564,
2004       559, 1250, 1250, 1250, 1250, 1250, 1250, 2398, 1240, 2399,
2005
2006       982,  982,  982, 2402,  984,  984,  984, 2288, 2289, 1252,
2007      2290, 2403, 1252, 2404, 2405,  559,  559,  983, 2291, 2408,
2008       565,  985, 1649, 1649, 1649, 2292,  566,  559,  560,  243,
2009       560,  559,  559,  559,  559,  559,  559,  559,  561,  559,
2010       559,  559, 1622,  559,  563,  559,  564,  559, 1622, 1259,
2011      1259, 1259, 2409, 1260, 2410, 1253, 1261, 1262, 1262, 1262,
2012      1262, 1262, 1262, 1267, 1267, 1267, 2411, 1272, 1272, 1272,
2013      2413, 1273,  559,  559, 1274, 1264, 2414,  565, 1264, 2397,
2014      2396, 1269, 2415,  566,  570,  571,  243,  571,  570,  570,
2015       570,  570,  570,  570,  570,  572,  570,  570,  570, 2416,
2016
2017       570,  574,  570,  575,  570, 2417, 2419, 1267, 1267, 1267,
2018       993,  993,  993, 1278, 1278, 1278, 2420, 2400, 1278, 1278,
2019      1278, 1265, 1001, 1001, 1001, 1269, 2401,  994, 2406,  570,
2020       570, 1280,  576, 2421,  577, 2431, 1280, 2407, 2432, 1002,
2021       578, 1283, 1283, 1283, 2433, 1284, 2434, 2438, 1285, 2439,
2022      2446,  579,  570,  571,  243,  571,  570,  570,  570,  570,
2023       570,  570,  570,  572,  570,  570,  570, 1270,  570,  574,
2024       570,  575,  570, 1281, 1286, 1286, 1286, 1005, 1005, 1005,
2025      2447, 1294, 1294, 1294, 2454, 2455, 1286, 1286, 1286, 1290,
2026      1290, 1290, 1288, 1291, 1006, 2456, 1292,  570,  570, 1296,
2027
2028       576, 2468,  577, 2469, 1288, 1308, 1308, 1308,  578, 1309,
2029      2485, 2486, 1310, 1829, 1829, 1829, 1655, 1655, 1655,  579,
2030       584,  585,  243,  585,  584,  584,  584,  584,  584,  584,
2031       584,  586,  584,  584,  584, 2487,  584,  588,  584,  589,
2032       584, 1289, 1300, 1300, 1300, 1017, 1017, 1017, 2488, 1294,
2033      1294, 1294, 2490, 1300, 1300, 1300, 1311, 1311, 1311, 1830,
2034      1302, 2491, 1018, 2492, 2493,  584,  584, 1296, 2494, 2495,
2035       590, 1302, 2496, 1312, 2497, 2498,  591, 1338, 1338, 1338,
2036       592, 1339, 2499, 2500, 1340, 2501,  593,  584,  585,  243,
2037       585,  584,  584,  584,  584,  584,  584,  584,  586,  584,
2038
2039       584,  584, 2506,  584,  588,  584,  589,  584, 2507, 1094,
2040      1297, 1315, 1315, 1315, 1303, 1658, 1658, 1658, 1315, 1315,
2041      1315, 1321, 1321, 1321, 1321, 1321, 1321, 2508, 2509, 1317,
2042      2510, 2511,  584,  584, 2512, 2513, 1317,  590, 1622, 1323,
2043      2514, 2515, 1323,  591, 1347, 1347, 1347,  592, 1348, 2503,
2044      2516, 1349, 2517,  593,  599,  600,  243,  600,  599,  599,
2045       599,  599,  599,  599,  599,  601,  599,  599,  599, 1318,
2046       599,  603,  599,  604,  599, 1333, 1333, 1333, 1333, 1333,
2047      1333, 2505, 1324, 2518, 1039, 1039, 1039, 1342, 1342, 1342,
2048      1342, 1342, 1342, 1335, 2519, 2521, 1335, 2522, 2523,  599,
2049
2050       599, 1040, 1372, 1372, 1372, 1344, 1373,  605, 1344, 1374,
2051       606, 2524, 1826, 1826, 1826, 2525, 2526,  607,  599,  600,
2052       243,  600,  599,  599,  599,  599,  599,  599,  599,  601,
2053       599,  599,  599, 2531,  599,  603,  599,  604,  599, 1045,
2054      1045, 1045, 1336, 1350, 1350, 1350, 2532, 2535, 1353, 1353,
2055      1353, 1358, 1358, 1358, 1345, 2536, 1046, 1358, 1358, 1358,
2056      1351, 2537, 2538,  599,  599, 1354, 1381, 1381, 1381, 1360,
2057      1382,  605, 2541, 1383,  606, 1360, 1827, 1659, 1659, 1659,
2058      2542,  607,  610,  611,  243,  611,  610,  610,  610,  610,
2059       610,  610,  610,  612,  610,  610,  610, 2545,  610,  614,
2060
2061       610,  615,  610, 2546, 1361, 1362, 1362, 1362, 1364, 1364,
2062      1364, 1622, 3333, 3333, 3333, 1367, 1367, 1367, 1367, 1367,
2063      1367, 2554, 1363, 2555, 2539, 1365, 2556,  610,  610, 3333,
2064      1061, 1061, 1061, 1369,  616, 2540, 1369, 1390, 1390, 1390,
2065       617, 1391, 2567, 2590, 1392, 2591, 2596, 1062, 2504,  618,
2066       610,  611,  243,  611,  610,  610,  610,  610,  610,  610,
2067       610,  612,  610,  610,  610, 2597,  610,  614,  610,  615,
2068       610, 1366, 1375, 1375, 1375, 1375, 1375, 1375, 2543, 1370,
2069      1067, 1067, 1067, 1385, 1385, 1385, 1385, 1385, 1385, 2544,
2070      1377, 2598, 2599, 1377, 2600,  610,  610, 1068, 1073, 1073,
2071
2072      1073, 1387,  616, 2601, 1387, 1395, 1395, 1395,  617, 1395,
2073      1395, 1395, 1081, 1081, 1081, 1074, 2602,  618,  626, 1841,
2074      1841, 1841, 2603, 1397, 2604,  641, 2605, 1397, 1094, 1082,
2075      1406, 1406, 1406, 2610,  625,  642, 1378, 1401, 1401, 1401,
2076      2611, 1402, 2612, 2613, 1403, 1904, 1904, 1904, 1408, 1406,
2077      1406, 1406, 1388, 1413, 1413, 1413, 2560, 2607, 1413, 1413,
2078      1413, 2614,  643,  644,  645, 1842, 2561, 1408, 1622,  646,
2079       647, 1415, 2562,  648,  649, 1398, 1415,  650, 2615,  651,
2080       652,  653,  626, 1105, 1105, 1105, 2616, 1106, 2617, 2618,
2081      1107, 1109, 1109, 1109, 1109, 1109, 1109, 2619,  625,  655,
2082
2083      1424, 1424, 1424, 1149, 1149, 1149, 1153, 1153, 1153, 1111,
2084      2608, 2579, 1111, 1409, 1156, 1156, 1156, 1622, 1425, 2620,
2085      1150, 2580, 1416, 1154, 2581, 2621,  643,  656,  657, 1999,
2086      1999, 1999, 1158,  658,  659, 2622, 2624,  660,  649, 2582,
2087      2625,  661, 2626,  662,  663,  664, 1461, 1461, 1461, 2583,
2088      1462, 2628, 2584, 1463, 1466, 1466, 1466, 2629, 1467, 2609,
2089      2635, 1468, 1156, 1156, 1156, 1156, 1156, 1156, 1162, 1162,
2090      1162, 1162, 1162, 1162, 1162, 1162, 1162, 1167, 1167, 1167,
2091      1158, 1168, 2643, 1158, 1169, 2644, 1164, 2645, 2646, 1164,
2092      2647, 2648, 1164, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
2093
2094      1171, 1171, 1175, 1175, 1175, 1477, 1477, 1477, 2440, 1478,
2095      2441, 1173, 1479, 2649, 1173, 2650, 2651, 1173, 2652, 1176,
2096      1179, 1179, 1179, 2442, 1482, 1482, 1482, 1473, 1483, 1470,
2097      2653, 1484, 1181, 1181, 1181, 2657, 2660, 1180, 1181, 1181,
2098      1181, 1181, 1181, 1181, 1185, 1185, 1185, 2661, 1476, 2662,
2099      1183, 1486, 1486, 1486, 2663, 1487, 1183, 2664, 1488, 1183,
2100      2665, 1186, 1187, 1187, 1187, 1489, 1489, 1489, 2666, 1490,
2101      2669, 2677, 1491, 1189, 1189, 1189, 1189, 1189, 1189, 1188,
2102      1189, 1189, 1189, 1193, 1193, 1193, 2443, 1194, 2444, 2678,
2103      1195, 1191, 2681, 2682, 1191, 1196, 1196, 1196, 1191, 1197,
2104
2105      2673, 2445, 1198, 1485, 1199, 1199, 1199, 1493, 1493, 1493,
2106      2700, 1494, 2701, 2674, 1495, 1205, 1205, 1205, 1205, 1205,
2107      1205, 1200, 1205, 1205, 1205, 1212, 1212, 1212, 2675, 1213,
2108      2702, 2703, 1214, 1207, 2704, 2679, 1207, 1504, 1504, 1504,
2109      1207, 2676, 1492, 1216, 1216, 1216, 2705, 1217, 2680, 2706,
2110      1218, 1219, 1219, 1219, 1505, 1506, 1506, 1506, 2707, 1507,
2111      1094, 2713, 1508, 1230, 1230, 1230, 2293, 2294, 1220, 2295,
2112      1500, 1230, 1230, 1230, 1230, 1230, 1230, 2296, 1234, 1234,
2113      1234, 1232, 1235, 2714, 2297, 1236, 1237, 1237, 1237, 1232,
2114      2683, 2715, 1232, 1237, 1237, 1237, 1237, 1237, 1237, 1523,
2115
2116      1523, 1523, 2716, 2684, 1239, 1244, 1244, 1244, 2709, 1245,
2117      2717, 1239, 1246, 1622, 1239, 2718, 1524, 1250, 1250, 1250,
2118      1250, 1250, 1250, 2563, 1250, 1250, 1250, 1530, 1530, 1530,
2119      1256, 1256, 1256, 2564, 1257, 1252, 2719, 1258, 1252, 2565,
2120      2720, 1519, 1252, 2721, 1531, 1259, 1259, 1259, 2710, 1260,
2121      2722, 2723, 1261, 1262, 1262, 1262, 1520, 1262, 1262, 1262,
2122      1262, 1262, 1262, 1533, 1533, 1533, 1267, 1267, 1267, 2724,
2123      2725, 1264, 1267, 1267, 1267, 1264, 2727, 2728, 1264, 2730,
2124      1534, 1267, 1267, 1267, 1269, 1278, 1278, 1278, 2738, 1528,
2125      1269, 1272, 1272, 1272, 2745, 1273, 2746, 2747, 1274, 1269,
2126
2127      1278, 1278, 1278, 1280, 1278, 1278, 1278, 1283, 1283, 1283,
2128      2748, 1284, 2749, 2731, 1285, 1286, 1286, 1286, 1280, 1286,
2129      1286, 1286, 1280, 2732, 2750, 1532, 1286, 1286, 1286, 2733,
2130      1535, 2751, 2752, 1288, 1290, 1290, 1290, 1288, 1291, 2734,
2131      2753, 1292, 2754, 2755, 1288, 1294, 1294, 1294, 1294, 1294,
2132      1294, 1294, 1294, 1294, 1545, 1545, 1545, 3333, 3333, 3333,
2133      1300, 1300, 1300, 1296, 1540, 2756, 1296, 2760, 2761, 1296,
2134      2762, 1546, 2763, 2764, 3333, 1300, 1300, 1300, 1302, 1300,
2135      1300, 1300, 2765, 1308, 1308, 1308, 1542, 1309, 2766, 2767,
2136      1310, 2768, 2769, 1302, 1311, 1311, 1311, 1302, 1553, 1553,
2137
2138      1553, 1544, 1554, 2770, 1547, 1555, 1315, 1315, 1315, 2771,
2139      2772, 1312, 1315, 1315, 1315, 1315, 1315, 1315, 1321, 1321,
2140      1321, 1321, 1321, 1321, 1317, 1321, 1321, 1321, 2773, 2774,
2141      1317, 2775, 2776, 1317, 2777, 2778, 1323, 2779, 2793, 1323,
2142      1566, 1566, 1566, 1323, 2794, 2795, 1548, 1333, 1333, 1333,
2143      1333, 1333, 1333, 1333, 1333, 1333, 2796, 1567, 2797, 2782,
2144      1338, 1338, 1338, 2798, 1339, 1335, 1558, 1340, 1335, 2783,
2145      2799, 1335, 1561, 1342, 1342, 1342, 1342, 1342, 1342, 1342,
2146      1342, 1342, 1347, 1347, 1347, 2784, 1348, 2800, 2808, 1349,
2147      2809, 1344, 2810, 2811, 1344, 2785, 2812, 1344, 1350, 1350,
2148
2149      1350, 1576, 1576, 1576, 2813, 1577, 2814, 2815, 1578, 1579,
2150      1579, 1579, 2820, 2821, 1571, 1351, 1353, 1353, 1353, 2822,
2151      1581, 1581, 1581, 1094, 1582, 2823, 1580, 1583, 1585, 1585,
2152      1585, 2825, 2828, 1354, 1358, 1358, 1358, 1358, 1358, 1358,
2153      1574, 1358, 1358, 1358, 2829, 1586, 1362, 1362, 1362, 1589,
2154      1589, 1589, 1360, 1590, 2830, 1360, 1591, 2802, 2831, 1360,
2155      1364, 1364, 1364, 1363, 1592, 1592, 1592, 2832, 1593, 2833,
2156      2834, 1594, 1367, 1367, 1367, 2835, 2836, 1365, 1367, 1367,
2157      1367, 1367, 1367, 1367, 1372, 1372, 1372, 2837, 1373, 2842,
2158      1369, 1374, 1375, 1375, 1375, 2843, 1369, 2844, 2845, 1369,
2159
2160      2846, 1588, 1375, 1375, 1375, 1375, 1375, 1375, 2847, 2848,
2161      1377, 1381, 1381, 1381, 2849, 1382, 2850, 2851, 1383, 2852,
2162      1377, 2853, 2854, 1377, 1385, 1385, 1385, 1385, 1385, 1385,
2163      2855, 1385, 1385, 1385, 1390, 1390, 1390, 2856, 1391, 2857,
2164      2858, 1392, 1387, 2862, 2863, 1387, 2864, 2865, 1596, 1387,
2165      1605, 1605, 1605, 1395, 1395, 1395, 1395, 1395, 1395, 1395,
2166      1395, 1395, 1609, 1609, 1609, 2868, 2869, 1606, 3333, 3333,
2167      3333, 1397, 1598, 2870, 1397, 2871, 2872, 1397, 2873, 1610,
2168      1401, 1401, 1401, 2881, 1402, 3333, 2882, 1403, 1406, 1406,
2169      1406, 2883, 1602, 1406, 1406, 1406, 1406, 1406, 1406, 1615,
2170
2171      1615, 1615, 2884, 1413, 1413, 1413, 1408, 1413, 1413, 1413,
2172      2885, 1408, 2886, 2887, 1408, 2888, 1616, 1413, 1413, 1413,
2173      1607, 1415, 1621, 1621, 1621, 1415, 1424, 1424, 1424, 1611,
2174      1461, 1461, 1461, 1094, 1462, 1415, 2889, 1463, 2890, 2893,
2175      1622, 1623, 2899, 1613, 1425, 1466, 1466, 1466, 2900, 1467,
2176      2901, 2902, 1468, 1156, 1156, 1156, 1670, 1670, 1670, 1162,
2177      1162, 1162, 2903, 2904, 1618, 1171, 1171, 1171, 1477, 1477,
2178      1477, 1158, 1478, 1671, 2905, 1479, 2875, 1164, 1482, 1482,
2179      1482, 2912, 1483, 1173, 2913, 1484, 1181, 1181, 1181, 1486,
2180      1486, 1486, 2914, 1487, 2915, 2916, 1488, 2917, 1489, 1489,
2181
2182      1489, 2918, 1490, 2919, 1183, 1491, 1189, 1189, 1189, 1493,
2183      1493, 1493, 2920, 1494, 1668, 2921, 1495, 1682, 1682, 1682,
2184      2922, 2923, 1675, 2924, 1191, 2925, 1672, 1205, 1205, 1205,
2185      1686, 1686, 1686, 1678, 1683, 3333, 3333, 3333, 3333, 3333,
2186      3333, 1504, 1504, 1504, 2926, 1207, 2927, 1687, 3333, 3333,
2187      3333, 2928, 3333, 1679, 2929, 3333, 2930, 2931, 1505, 1690,
2188      1690, 1690, 2932, 1691, 2933, 3333, 1692, 1506, 1506, 1506,
2189      2934, 1507, 2935, 2936, 1508, 3333, 3333, 3333, 3333, 3333,
2190      3333, 2937, 1685, 2938, 2952, 1689, 3333, 3333, 3333, 3333,
2191      3333, 3333, 3333, 1094, 2943, 3333, 3333, 3333, 3333, 1693,
2192
2193      2953, 1688, 2958, 3333, 2959, 2946, 3333, 1699, 1699, 1699,
2194      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
2195      2960, 2943, 1694, 2961, 1700, 2962, 2970, 3333, 1230, 1230,
2196      1230, 3333, 2971, 1696, 3333, 2944, 1237, 1237, 1237, 2941,
2197      1523, 1523, 1523, 1708, 1708, 1708, 1232, 1709, 1695, 2972,
2198      1710, 2973, 2974, 1697, 1239, 2979, 1698, 1524, 1712, 1712,
2199      1712, 1250, 1250, 1250, 1530, 1530, 1530, 1717, 1717, 1717,
2200      2980, 1718, 2981, 2982, 1719, 1713, 1702, 2963, 1703, 1252,
2201      1701, 1531, 1262, 1262, 1262, 1533, 1533, 1533, 1705, 2964,
2202      1721, 1721, 1721, 1704, 1722, 2983, 2984, 1723, 2985, 2986,
2203
2204      1264, 2987, 1534, 1267, 1267, 1267, 1278, 1278, 1278, 2988,
2205      1286, 1286, 1286, 1732, 1732, 1732, 2989, 1294, 1294, 1294,
2206      2990, 1269, 2991, 2994, 1280, 1622, 1623, 1715, 1288, 2965,
2207      1733, 2943, 1545, 1545, 1545, 1296, 1735, 1735, 1735, 2975,
2208      1736, 2966, 2946, 1737, 1300, 1300, 1300, 2977, 1720, 1546,
2209      1094, 2976, 1741, 1741, 1741, 2994, 1745, 1745, 1745, 2978,
2210      2997, 1724, 1302, 1729, 1315, 1315, 1315, 1731, 1734, 1742,
2211      1553, 1553, 1553, 1746, 1554, 2943, 2998, 1555, 1321, 1321,
2212      1321, 2999, 1317, 1566, 1566, 1566, 1756, 1756, 1756, 2944,
2213      1757, 2992, 3002, 1758, 3000, 3003, 1323, 1333, 1333, 1333,
2214
2215      1567, 1764, 1764, 1764, 1739, 1342, 1342, 1342, 3004, 1576,
2216      1576, 1576, 3001, 1577, 3011, 1335, 1578, 3014, 1765, 1579,
2217      1579, 1579, 3015, 1344, 3005, 1768, 1768, 1768, 1748, 1769,
2218      3016, 2948, 1770, 1581, 1581, 1581, 1580, 1582, 3017, 3006,
2219      1583, 1585, 1585, 1585, 1751, 3009, 1762, 1772, 1772, 1772,
2220      2949, 1773, 2950, 3018, 1774, 1358, 1358, 1358, 1586, 1589,
2221      1589, 1589, 3023, 1590, 3010, 2951, 1591, 1766, 1592, 1592,
2222      1592, 3026, 1593, 1360, 3012, 1594, 1367, 1367, 1367, 1375,
2223      1375, 1375, 1385, 1385, 1385, 1786, 1786, 1786, 3029, 1605,
2224      1605, 1605, 3030, 3013, 1369, 3031, 3032, 1377, 3033, 3034,
2225
2226      1387, 2994, 1787, 3036, 2994, 1776, 1606, 1788, 1788, 1788,
2227      3037, 1789, 3038, 3021, 1790, 1395, 1395, 1395, 1609, 1609,
2228      1609, 1793, 1793, 1793, 3024, 1794, 3039, 3040, 1795, 1406,
2229      1406, 1406, 3022, 1397, 3041, 1610, 1615, 1615, 1615, 1803,
2230      1803, 1803, 1778, 3025, 3042, 1780, 1784, 1408, 1800, 1800,
2231      1800, 3043, 1801, 1616, 3044, 1802, 1804, 1413, 1413, 1413,
2232      3048, 3049, 1621, 1621, 1621, 1838, 1838, 1838, 1826, 1826,
2233      1826, 1838, 1838, 1838, 3050, 1415, 3051, 3052, 1798, 1791,
2234      1622, 1843, 1843, 1843, 1845, 1845, 1845, 3333, 3333, 3333,
2235      1156, 1156, 1156, 1670, 1670, 1670, 3053, 3054, 1844, 3055,
2236
2237      3056, 1846, 3057, 3061, 3333, 3062, 1805, 3063, 1158, 3064,
2238      1671, 3065, 3066, 1807, 1850, 1850, 1850, 3070, 1851, 3071,
2239      3072, 1852, 1162, 1162, 1162, 1171, 1171, 1171, 3073, 1839,
2240      1808, 3074, 1839, 3075, 3077, 1827, 1857, 1857, 1857, 3078,
2241      1164, 3079, 3080, 1173, 1859, 1859, 1859, 1181, 1181, 1181,
2242      3081, 1847, 3082, 1858, 1189, 1189, 1189, 1848, 1863, 1863,
2243      1863, 1860, 3333, 3333, 3333, 1183, 1682, 1682, 1682, 1205,
2244      1205, 1205, 1191, 1856, 3083, 1864, 1869, 1869, 1869, 3333,
2245      3084, 1853, 3085, 1683, 1866, 1866, 1866, 1207, 1867, 3090,
2246      3086, 1868, 3091, 1870, 1686, 1686, 1686, 1872, 1872, 1872,
2247
2248      3092, 1873, 3087, 3093, 1874, 1875, 1875, 1875, 3333, 3333,
2249      3333, 1687, 1861, 3094, 1690, 1690, 1690, 3095, 1691, 1862,
2250      1865, 1692, 1876, 3096, 3097, 3333, 3333, 3333, 3333, 1871,
2251      3333, 3333, 3333, 1880, 1880, 1880, 3333, 3333, 3333, 3333,
2252      3333, 3333, 3088, 3333, 3333, 3333, 3333, 3333, 3098, 2954,
2253      1881, 3099, 3100, 3333, 3089, 3101, 3333, 1699, 1699, 1699,
2254      3102, 3333, 1885, 1885, 1885, 2955, 1886, 2956, 3103, 1887,
2255      3104, 3105, 1877, 3106, 1700, 1888, 1888, 1888, 3107, 1879,
2256      2957, 3333, 3333, 3333, 3109, 1883, 3333, 3333, 3333, 3110,
2257      1878, 1094, 1889, 3111, 1882, 3112, 3113, 1884, 3333, 1230,
2258
2259      1230, 1230, 3114, 3333, 1237, 1237, 1237, 1708, 1708, 1708,
2260      3115, 1709, 3116, 3117, 1710, 3118, 3108, 1232, 1896, 1896,
2261      1896, 3119, 1239, 1712, 1712, 1712, 3120, 3121, 1890, 1898,
2262      1898, 1898, 3122, 1899, 3123, 1897, 1900, 3124, 3125, 1891,
2263      1713, 3126, 1902, 1902, 1902, 1717, 1717, 1717, 3127, 1718,
2264      3128, 3129, 1719, 1262, 1262, 1262, 1267, 1267, 1267, 1893,
2265      1903, 3130, 1721, 1721, 1721, 1892, 1722, 3131, 3132, 1723,
2266      3133, 1264, 3134, 1094, 1269, 1911, 1911, 1911, 1286, 1286,
2267      1286, 1732, 1732, 1732, 1915, 1915, 1915, 3136, 1916, 3137,
2268      3138, 1917, 3135, 1912, 3139, 3140, 1288, 3141, 1733, 1905,
2269
2270      1294, 1294, 1294, 1735, 1735, 1735, 3142, 1736, 3143, 3144,
2271      1737, 1300, 1300, 1300, 1741, 1741, 1741, 3145, 1296, 1925,
2272      1925, 1925, 3146, 1906, 1914, 3147, 1922, 1922, 1922, 1302,
2273      1923, 1742, 3148, 1924, 3149, 3150, 1926, 1745, 1745, 1745,
2274      1928, 1928, 1928, 3151, 1929, 3152, 3153, 1930, 1932, 1932,
2275      1932, 1321, 1321, 1321, 1746, 1756, 1756, 1756, 1918, 1757,
2276      3154, 3155, 1758, 1333, 1333, 1333, 1933, 3156, 3157, 1323,
2277      1764, 1764, 1764, 1949, 1949, 1949, 3158, 1920, 1946, 1946,
2278      1946, 1335, 1947, 3159, 3161, 1948, 3162, 1765, 1768, 1768,
2279      1768, 1950, 1769, 3163, 3164, 1770, 3165, 1772, 1772, 1772,
2280
2281      3166, 1773, 1094, 1936, 1774, 1358, 1358, 1358, 1367, 1367,
2282      1367, 1375, 1375, 1375, 1944, 1959, 1959, 1959, 3333, 3333,
2283      3333, 3167, 3160, 1360, 3168, 3169, 1369, 3170, 3171, 1377,
2284      3172, 3173, 1960, 3174, 3175, 3333, 1962, 1962, 1962, 1385,
2285      1385, 1385, 3176, 1786, 1786, 1786, 3177, 1966, 1966, 1966,
2286      3178, 1967, 3179, 1963, 1968, 3180, 3181, 1387, 3182, 1956,
2287      1787, 3184, 1958, 1788, 1788, 1788, 1954, 1789, 3185, 3186,
2288      1790, 1395, 1395, 1395, 1793, 1793, 1793, 1094, 1794, 3187,
2289      3188, 1795, 3189, 3183, 1961, 3190, 1964, 3191, 3192, 1397,
2290      1406, 1406, 1406, 1800, 1800, 1800, 3193, 1801, 3194, 3195,
2291
2292      1802, 3196, 1803, 1803, 1803, 1983, 1983, 1983, 1408, 1984,
2293      3197, 3198, 1985, 1413, 1413, 1413, 3199, 3201, 1969, 1804,
2294      1990, 1990, 1990, 1822, 1822, 1822, 2006, 2006, 2006, 3202,
2295      3203, 1415, 1826, 1826, 1826, 3204, 3205, 1991, 2007, 2007,
2296      2007, 1973, 1829, 1829, 1829, 1838, 1838, 1838, 2018, 2018,
2297      2018, 1841, 1841, 1841, 1843, 1843, 1843, 3206, 2021, 2021,
2298      2021, 1094, 2022, 3207, 1986, 2023, 1845, 1845, 1845, 3208,
2299      3209, 1844, 2024, 2024, 2024, 3200, 2025, 3210, 3212, 2026,
2300      1156, 1156, 1156, 1846, 1850, 1850, 1850, 3213, 1851, 3214,
2301      3215, 1852, 1162, 1162, 1162, 2032, 2032, 2032, 1158, 1171,
2302
2303      1171, 1171, 1857, 1857, 1857, 3216, 3217, 2035, 2035, 2035,
2304      1164, 2036, 2033, 3218, 2037, 3219, 3220, 1173, 3221, 1858,
2305      1859, 1859, 1859, 2038, 2038, 2038, 3224, 2039, 3225, 3226,
2306      2040, 1181, 1181, 1181, 1189, 1189, 1189, 1860, 1863, 1863,
2307      1863, 3227, 3228, 2030, 3229, 3240, 2028, 1094, 1094, 1183,
2308      3238, 1665, 1191, 1094, 1094, 1864, 1094, 2043, 2043, 2043,
2309      2034, 2044, 1094, 1094, 2045, 2046, 2046, 2046, 1866, 1866,
2310      1866, 1664, 1867, 1094, 1663, 1868, 1869, 1869, 1869, 2048,
2311      2048, 2048, 2047, 2049, 3230, 1094, 2050, 1205, 1205, 1205,
2312      1872, 1872, 1872, 1870, 1873, 3232, 2041, 1874, 3231, 2042,
2313
2314      1875, 1875, 1875, 1094, 3233, 1207, 2052, 2052, 2052, 1094,
2315      2053, 3234, 1094, 2054, 1880, 1880, 1880, 1876, 2058, 2058,
2316      2058, 3235, 2059, 1094, 3330, 2060, 2061, 2061, 2061, 3236,
2317      1094, 1881, 1885, 1885, 1885, 1094, 1886, 1094, 2051, 1887,
2318      1888, 1888, 1888, 2062, 2065, 2065, 2065, 3237, 2066, 3246,
2319      1662, 2067, 1230, 1230, 1230, 1661, 3244, 1889, 1237, 1237,
2320      1237, 1896, 1896, 1896, 2074, 2074, 2074, 3247, 2075, 3252,
2321      1232, 2076, 3250, 1898, 1898, 1898, 1239, 1899, 1897, 1094,
2322      1900, 1902, 1902, 1902, 1904, 1904, 1904, 1262, 1262, 1262,
2323      1267, 1267, 1267, 2081, 2081, 2081, 1911, 1911, 1911, 1903,
2324
2325      1286, 1286, 1286, 2070, 3241, 1264, 1094, 1660, 1269, 3239,
2326      2082, 2071, 1094, 1094, 1912, 1915, 1915, 1915, 1288, 1916,
2327      3248, 1094, 1917, 1294, 1294, 1294, 2090, 2090, 2090, 1922,
2328      1922, 1922, 1094, 1923, 3242, 3243, 1924, 1094, 1657, 2083,
2329      2079, 1296, 1094, 1094, 2091, 2078, 1925, 1925, 1925, 2087,
2330      2093, 2093, 2093, 3245, 2094, 3262, 1094, 2095, 1928, 1928,
2331      1928, 1094, 1929, 1926, 3256, 1930, 1932, 1932, 1932, 2088,
2332      2099, 2099, 2099, 1321, 1321, 1321, 2102, 2102, 2102, 2104,
2333      2104, 2104, 1094, 3253, 1933, 1094, 1094, 2100, 1333, 1333,
2334      1333, 1323, 1946, 1946, 1946, 1094, 1947, 3249, 3254, 1948,
2335
2336      1949, 1949, 1949, 2112, 2112, 2112, 1335, 1358, 1358, 1358,
2337      2117, 2117, 2117, 1375, 1375, 1375, 1094, 3251, 1950, 3263,
2338      2113, 1959, 1959, 1959, 1094, 1360, 1094, 1094, 2118, 3264,
2339      1094, 1377, 3255, 1094, 2101, 2121, 2121, 2121, 1960, 2122,
2340      3258, 1654, 2123, 2124, 2124, 2124, 1962, 1962, 1962, 1094,
2341      2127, 2127, 2127, 2109, 2128, 3259, 3257, 2129, 1653, 3265,
2342      2125, 3260, 3261, 1963, 1094, 3268, 2115, 1385, 1385, 1385,
2343      2131, 2131, 2131, 1094, 1966, 1966, 1966, 2120, 1967, 3266,
2344      1094, 1968, 1395, 1395, 1395, 1387, 1652, 2132, 1094, 2126,
2345      2138, 2138, 2138, 2140, 2140, 2140, 1651, 1983, 1983, 1983,
2346
2347      1397, 1984, 3282, 1650, 1985, 1413, 1413, 1413, 2139, 1648,
2348      2141, 1990, 1990, 1990, 1647, 3269, 2133, 2156, 2156, 2156,
2349      2130, 2157, 3286, 1415, 2158, 2159, 2159, 2159, 1991, 2164,
2350      2164, 2164, 2165, 2165, 2165, 2134, 1999, 1999, 1999, 2167,
2351      2167, 2167, 2171, 2171, 2171, 2006, 2006, 2006, 2007, 2007,
2352      2007, 2152, 2172, 2172, 2172, 2175, 2175, 2175, 2179, 2179,
2353      2179, 2180, 2180, 2180, 2182, 2182, 2182, 2018, 2018, 2018,
2354      2183, 2183, 2183, 2021, 2021, 2021, 1094, 2022, 1094, 1094,
2355      2023, 2024, 2024, 2024, 1646, 2025, 1094, 1094, 2026, 1156,
2356      1156, 1156, 1162, 1162, 1162, 2032, 2032, 2032, 2173, 2191,
2357
2358      2191, 2191, 1094, 2192, 1094, 1094, 2193, 1158, 3283, 1094,
2359      1164, 3270, 2033, 1171, 1171, 1171, 2184, 2035, 2035, 2035,
2360      3271, 2036, 3267, 3274, 2037, 2038, 2038, 2038, 1094, 2039,
2361      3272, 1173, 2040, 1181, 1181, 1181, 1189, 1189, 1189, 1094,
2362      2187, 2043, 2043, 2043, 3276, 2044, 3273, 3277, 2045, 1094,
2363      3278, 1183, 2189, 2195, 1191, 1094, 3292, 2046, 2046, 2046,
2364      2197, 2197, 2197, 1645, 2198, 3275, 1094, 2199, 1205, 1205,
2365      1205, 1094, 2196, 2194, 2047, 2048, 2048, 2048, 1094, 2049,
2366      3284, 1094, 2050, 2052, 2052, 2052, 1207, 2053, 3285, 1094,
2367      2054, 2058, 2058, 2058, 1094, 2059, 3293, 1094, 2060, 2061,
2368
2369      2061, 2061, 2204, 2204, 2204, 3290, 2205, 3296, 3280, 2206,
2370      2065, 2065, 2065, 1094, 2066, 3281, 2062, 2067, 2210, 2210,
2371      2210, 1230, 1230, 1230, 2213, 2213, 2213, 3279, 3287, 2074,
2372      2074, 2074, 3291, 2075, 2200, 2211, 2076, 1094, 1643, 1232,
2373      1094, 1094, 2214, 1262, 1262, 1262, 1267, 1267, 1267, 2081,
2374      2081, 2081, 2221, 2221, 2221, 1094, 2222, 1642, 1640, 2223,
2375      1639, 1264, 1636, 1633, 1269, 1094, 2082, 1094, 1286, 1286,
2376      1286, 1294, 1294, 1294, 2090, 2090, 2090, 2093, 2093, 2093,
2377      1632, 2094, 3322, 3288, 2095, 2212, 1288, 3289, 1094, 1296,
2378      1094, 1094, 2091, 2099, 2099, 2099, 3297, 2219, 2218, 2235,
2379
2380      2235, 2235, 3294, 2236, 3295, 1094, 2237, 1321, 1321, 1321,
2381      2100, 2102, 2102, 2102, 2239, 2239, 2239, 2104, 2104, 2104,
2382      2240, 2240, 2240, 3298, 1094, 1323, 3333, 3333, 3333, 3333,
2383      3333, 3333, 1094, 2229, 2228, 1631, 3300, 2241, 3333, 3333,
2384      3333, 1094, 3302, 3333, 1094, 3306, 3333, 1333, 1333, 1333,
2385      2112, 2112, 2112, 1094, 1094, 3333, 2248, 2248, 2248, 3299,
2386      2249, 3330, 1630, 2250, 3304, 1335, 1094, 2113, 2252, 2252,
2387      2252, 2238, 2117, 2117, 2117, 1094, 3305, 2242, 2256, 2256,
2388      2256, 2121, 2121, 2121, 3307, 2122, 2253, 3301, 2123, 1094,
2389      2118, 3303, 1094, 2243, 1094, 1629, 2257, 2244, 2124, 2124,
2390
2391      2124, 2258, 2258, 2258, 1094, 2259, 1094, 3312, 2260, 2127,
2392      2127, 2127, 2245, 2128, 1628, 2125, 2129, 1385, 1385, 1385,
2393      2131, 2131, 2131, 2263, 2263, 2263, 1627, 2264, 1094, 3314,
2394      2265, 1395, 1395, 1395, 1094, 1387, 3308, 2132, 2138, 2138,
2395      2138, 2140, 2140, 2140, 2271, 2271, 2271, 3313, 2272, 1397,
2396      3316, 2273, 1413, 1413, 1413, 1626, 2139, 1625, 2141, 2285,
2397      2285, 2285, 2156, 2156, 2156, 3310, 2157, 1624, 2262, 2158,
2398      1415, 2159, 2159, 2159, 2298, 2298, 2298, 1094, 2299, 2299,
2399      2299, 3309, 2267, 2164, 2164, 2164, 2165, 2165, 2165, 2167,
2400      2167, 2167, 2303, 2303, 2303, 2305, 2305, 2305, 2171, 2171,
2401
2402      2171, 2284, 2172, 2172, 2172, 2175, 2175, 2175, 2308, 2308,
2403      2308, 2179, 2179, 2179, 2180, 2180, 2180, 2182, 2182, 2182,
2404      2183, 2183, 2183, 2315, 2315, 2315, 2317, 2317, 2317, 1162,
2405      1162, 1162, 2319, 2319, 2319, 2191, 2191, 2191, 1094, 2192,
2406      1094, 2316, 2193, 1171, 1171, 1171, 1094, 1164, 1094, 2320,
2407      1181, 1181, 1181, 1189, 1189, 1189, 2197, 2197, 2197, 1094,
2408      2198, 1173, 1617, 2199, 2324, 2324, 2324, 1614, 1183, 3323,
2409      1094, 1191, 2204, 2204, 2204, 3311, 2205, 1612, 1094, 2206,
2410      3320, 3315, 2325, 2330, 2330, 2330, 3317, 2322, 2210, 2210,
2411      2210, 2337, 2337, 2337, 2321, 2318, 3318, 2334, 2334, 2334,
2412
2413      2331, 2335, 3321, 1608, 2336, 2211, 2213, 2213, 2213, 2338,
2414      1262, 1262, 1262, 1094, 2323, 2343, 2343, 2343, 2345, 2345,
2415      2345, 3333, 3333, 3333, 2214, 2221, 2221, 2221, 1264, 2222,
2416      1094, 1094, 2223, 2344, 1604, 2346, 1094, 1094, 3333, 3333,
2417      3333, 3333, 3333, 3333, 3333, 2351, 2351, 2351, 1286, 1286,
2418      1286, 1294, 1294, 1294, 1094, 1603, 3333, 1601, 1600, 3333,
2419      1094, 3326, 2352, 3324, 2347, 1599, 1288, 3319, 3325, 1296,
2420      2342, 2355, 2355, 2355, 1597, 1595, 2348, 2360, 2360, 2360,
2421      2235, 2235, 2235, 1587, 2236, 3327, 3328, 2237, 2356, 1321,
2422      1321, 1321, 3329, 2350, 2239, 2239, 2239, 2240, 2240, 2240,
2423
2424      2349, 1584, 2362, 2362, 2362, 1575, 2363, 1323, 2353, 2364,
2425      2365, 2365, 2365, 1573, 2241, 2354, 3333, 3333, 3333, 3333,
2426      3333, 3333, 2369, 2369, 2369, 1572, 1570, 2366, 2371, 2371,
2427      2371, 1569, 1568, 3333, 1565, 1564, 3333, 2372, 2372, 2372,
2428      2370, 1562, 2248, 2248, 2248, 1560, 2249, 1559, 2361, 2250,
2429      1557, 3333, 3333, 3333, 2373, 2252, 2252, 2252, 2256, 2256,
2430      2256, 1556, 2258, 2258, 2258, 1552, 2259, 2367, 3333, 2260,
2431      2368, 1551, 1550, 2253, 1549, 1543, 2257, 2378, 2378, 2378,
2432      2263, 2263, 2263, 1541, 2264, 1539, 1538, 2265, 1395, 1395,
2433      1395, 1537, 2271, 2271, 2271, 2379, 2272, 1536, 1529, 2273,
2434
2435      1413, 1413, 1413, 2285, 2285, 2285, 1397, 2298, 2298, 2298,
2436      2299, 2299, 2299, 2412, 2412, 2412, 1527, 2374, 1415, 1526,
2437      1525, 1094, 2303, 2303, 2303, 2305, 2305, 2305, 2308, 2308,
2438      2308, 2418, 2418, 2418, 2381, 2315, 2315, 2315, 2317, 2317,
2439      2317, 2422, 2422, 2422, 1522, 2319, 2319, 2319, 2424, 2424,
2440      2424, 1521, 2425, 2316, 1516, 2426, 2427, 2427, 2427, 2423,
2441      1515, 2394, 2320, 1514, 1513, 2395, 1181, 1181, 1181, 1189,
2442      1189, 1189, 1512, 1511, 2428, 2324, 2324, 2324, 2330, 2330,
2443      2330, 2435, 2435, 2435, 1183, 2436, 1510, 1191, 2437, 1509,
2444      2334, 2334, 2334, 2325, 2335, 2331, 1503, 2336, 2337, 2337,
2445
2446      2337, 2448, 2448, 2448, 1262, 1262, 1262, 2343, 2343, 2343,
2447      2345, 2345, 2345, 2451, 2451, 2451, 2338, 2452, 2449, 1502,
2448      2453, 1501, 1264, 1499, 1498, 2344, 1497, 2346, 1496, 1481,
2449      2429, 2457, 2457, 2457, 1480, 1475, 2430, 2351, 2351, 2351,
2450      2459, 2459, 2459, 1474, 2460, 1472, 1471, 2461, 2458, 2462,
2451      2462, 2462, 1469, 1465, 2352, 1294, 1294, 1294, 2355, 2355,
2452      2355, 2450, 2465, 2465, 2465, 1464, 2466, 2463, 1460, 2467,
2453      2470, 2470, 2470, 1296, 1459, 2356, 2360, 2360, 2360, 2472,
2454      2472, 2472, 2362, 2362, 2362, 1458, 2363, 2471, 1457, 2364,
2455      2365, 2365, 2365, 1456, 2474, 2474, 2474, 2473, 2475, 1455,
2456
2457      1454, 2476, 2477, 2477, 2477, 1453, 1452, 2366, 2479, 2479,
2458      2479, 2369, 2369, 2369, 1451, 1450, 2464, 1449, 1448, 2478,
2459      2371, 2371, 2371, 1447, 1445, 2480, 2372, 2372, 2372, 2370,
2460      2481, 2481, 2481, 1444, 2482, 1443, 1442, 2483, 3333, 3333,
2461      3333, 1439, 1438, 2373, 2378, 2378, 2378, 1395, 1395, 1395,
2462      1413, 1413, 1413, 1437, 1436, 3333, 2412, 2412, 2412, 2520,
2463      2520, 2520, 2379, 1435, 1434, 1397, 1433, 1432, 1415, 2418,
2464      2418, 2418, 2527, 2527, 2527, 1431, 2422, 2422, 2422, 2424,
2465      2424, 2424, 1430, 2425, 1429, 1428, 2426, 1427, 1426, 2528,
2466      2427, 2427, 2427, 2484, 2423, 1423, 1181, 1181, 1181, 1189,
2467
2468      1189, 1189, 2533, 2533, 2533, 2435, 2435, 2435, 2428, 2436,
2469      2502, 1422, 2437, 2489, 1183, 1421, 1420, 1191, 1419, 2534,
2470      2547, 2547, 2547, 2448, 2448, 2448, 2549, 2549, 2549, 1418,
2471      2550, 1094, 1412, 2551, 2552, 2552, 2552, 2548, 1411, 1410,
2472      2449, 2451, 2451, 2451, 1405, 2452, 1404, 1400, 2453, 2457,
2473      2457, 2457, 2553, 1394, 2557, 2557, 2557, 2529, 2558, 1393,
2474      1389, 2559, 2462, 2462, 2462, 2530, 2458, 2459, 2459, 2459,
2475      1384, 2460, 1380, 1379, 2461, 1294, 1294, 1294, 1371, 1357,
2476      2463, 2465, 2465, 2465, 1356, 2466, 1355, 1352, 2467, 2568,
2477      2568, 2568, 1346, 1296, 2470, 2470, 2470, 2570, 2570, 2570,
2478
2479      1341, 2571, 1337, 1332, 2572, 1331, 2569, 2472, 2472, 2472,
2480      1330, 2471, 2474, 2474, 2474, 1329, 2475, 1328, 1327, 2476,
2481      1326, 2477, 2477, 2477, 1325, 2473, 2573, 2573, 2573, 1320,
2482      2574, 1319, 1314, 2575, 2479, 2479, 2479, 2566, 2478, 2576,
2483      2576, 2576, 1313, 2577, 1307, 1304, 2578, 1299, 2481, 2481,
2484      2481, 2480, 2482, 1298, 1293, 2483, 3333, 3333, 3333, 2586,
2485      2586, 2586, 2588, 2588, 2588, 1395, 1395, 1395, 2593, 2593,
2486      2593, 1282, 1277, 3333, 1276, 1275, 2587, 1271, 1266, 2589,
2487      2594, 2594, 2594, 1397, 1413, 1413, 1413, 2623, 2623, 2623,
2488      2520, 2520, 2520, 2627, 2627, 2627, 1255, 2595, 2527, 2527,
2489
2490      2527, 1249, 1415, 2630, 2630, 2630, 1248, 2631, 1247, 1243,
2491      2632, 1181, 1181, 1181, 1242, 2528, 1241, 2585, 1229, 1189,
2492      1189, 1189, 2636, 2636, 2636, 2533, 2533, 2533, 1228, 1183,
2493      1227, 2638, 2638, 2638, 1226, 2639, 2592, 1191, 2640, 2637,
2494      1225, 1224, 2534, 1223, 2606, 2641, 2641, 2641, 2547, 2547,
2495      2547, 2654, 2654, 2654, 1222, 2655, 1221, 1215, 2656, 2549,
2496      2549, 2549, 2642, 2550, 1170, 2548, 2551, 2552, 2552, 2552,
2497      2634, 2658, 2658, 2658, 1166, 2557, 2557, 2557, 2633, 2558,
2498      1161, 1160, 2559, 1148, 1147, 2553, 1146, 1145, 2659, 2667,
2499      2667, 2667, 2568, 2568, 2568, 2670, 2670, 2670, 1144, 2671,
2500
2501      1143, 1142, 2672, 1141, 2570, 2570, 2570, 2668, 2571, 2569,
2502      1140, 2572, 2573, 2573, 2573, 1139, 2574, 1138, 1137, 2575,
2503      2576, 2576, 2576, 1136, 2577, 1133, 1132, 2578, 3333, 3333,
2504      3333, 2586, 2586, 2586, 2686, 2686, 2686, 1131, 2687, 1130,
2505      1129, 2688, 2588, 2588, 2588, 3333, 1128, 1127, 2587, 2689,
2506      2689, 2689, 1126, 2690, 1123, 1122, 2691, 1121, 1120, 2589,
2507      2692, 2692, 2692, 2694, 2694, 2694, 1395, 1395, 1395, 2593,
2508      2593, 2593, 2594, 2594, 2594, 1119, 1118, 2693, 1117, 1116,
2509      2695, 1413, 1413, 1413, 1397, 2711, 2711, 2711, 2685, 2595,
2510      2697, 2697, 2697, 1115, 2698, 1108, 1104, 2699, 1103, 1415,
2511
2512      1102, 1101, 2712, 1622, 2623, 2623, 2623, 2726, 2726, 2726,
2513      2627, 2627, 2627, 2729, 2729, 2729, 2630, 2630, 2630, 1100,
2514      2631, 1097, 1095, 2632, 1181, 1181, 1181, 1094, 2696, 2736,
2515      2736, 2736, 2708, 2636, 2636, 2636, 2739, 2739, 2739, 1092,
2516      2740, 1090, 1183, 2741, 2638, 2638, 2638, 2737, 2639, 1089,
2517      2637, 2640, 2641, 2641, 2641, 2742, 2742, 2742, 1088, 2743,
2518      1087, 1086, 2744, 2654, 2654, 2654, 1083, 2655, 1080, 2642,
2519      2656, 2658, 2658, 2658, 2757, 2757, 2757, 1079, 2758, 1078,
2520      1076, 2759, 2667, 2667, 2667, 2670, 2670, 2670, 2659, 2671,
2521      2735, 1075, 2672, 2780, 2780, 2780, 1072, 2686, 2686, 2686,
2522
2523      2668, 2687, 1071, 1069, 2688, 2689, 2689, 2689, 1066, 2690,
2524      2781, 1065, 2691, 2692, 2692, 2692, 2786, 2786, 2786, 1064,
2525      2787, 1060, 1059, 2788, 2694, 2694, 2694, 2789, 2789, 2789,
2526      2693, 2790, 1057, 1056, 2791, 1395, 1395, 1395, 2697, 2697,
2527      2697, 2695, 2698, 1055, 1054, 2699, 1413, 1413, 1413, 2803,
2528      2803, 2803, 1052, 1397, 2711, 2711, 2711, 1051, 2805, 2805,
2529      2805, 1050, 2806, 1049, 1415, 2807, 2804, 1622, 2816, 2816,
2530      2816, 2712, 1622, 2726, 2726, 2726, 1622, 2817, 2817, 2817,
2531      2818, 2818, 2818, 2729, 2729, 2729, 2792, 2819, 2819, 2819,
2532      1181, 1181, 1181, 1048, 1047, 2801, 2736, 2736, 2736, 2739,
2533
2534      2739, 2739, 1044, 2740, 1043, 1041, 2741, 1038, 1183, 2742,
2535      2742, 2742, 1037, 2743, 2737, 1035, 2744, 2826, 2826, 2826,
2536      2838, 2838, 2838, 2757, 2757, 2757, 1034, 2758, 1033, 1032,
2537      2759, 2840, 2840, 2840, 2827, 1031, 1027, 2839, 2780, 2780,
2538      2780, 2824, 2859, 2859, 2859, 1025, 2860, 1024, 2841, 2861,
2539      2786, 2786, 2786, 1023, 2787, 2781, 1021, 2788, 2789, 2789,
2540      2789, 1020, 2790, 1019, 1016, 2791, 2866, 2866, 2866, 1413,
2541      1413, 1413, 2803, 2803, 2803, 2876, 2876, 2876, 1015, 2877,
2542      1014, 1013, 2878, 1011, 2867, 1010, 1009, 1415, 1007, 2804,
2543      1622, 1004, 1000, 1622, 2805, 2805, 2805,  999, 2806,  997,
2544
2545       996, 2807, 2816, 2816, 2816, 2817, 2817, 2817, 2818, 2818,
2546      2818,  995, 1622, 2819, 2819, 2819, 2891, 2891, 2891, 2894,
2547      2894, 2894,  992, 2895,  991,  990, 2896,  988, 2826, 2826,
2548      2826, 2897, 2897, 2897, 2892, 2874, 1620, 1620, 1620, 1620,
2549      1620, 1620, 1620, 1620, 1620, 2827,  987, 1620, 2898, 2838,
2550      2838, 2838, 1620, 1620, 1620, 1622, 1620, 2906, 2906, 2906,
2551       981, 2907,  980,  979, 2908,  977, 2839, 2909, 2909, 2909,
2552       976, 2910,  975,  970, 2911, 2840, 2840, 2840, 2866, 2866,
2553      2866, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620,
2554      1620, 1620, 2841,  969, 1620,  965, 2867,  963,  962, 1620,
2555
2556      1620, 1620, 1622, 1620, 2859, 2859, 2859,  961, 2860,  960,
2557       959, 2861, 2939, 2939, 2939, 2876, 2876, 2876,  958, 2877,
2558       957,  956, 2878,  955,  954, 2891, 2891, 2891, 1620, 1620,
2559      2940,  951,  948, 1622, 1620, 1620, 1620, 1620, 1620, 2947,
2560      1620, 1620, 1620, 2892,  947, 1620, 2897, 2897, 2897,  945,
2561      1620, 1620, 1620, 1622, 1620, 2894, 2894, 2894,  944, 2895,
2562       943,  942, 2896, 2898, 2967, 2967, 2967,  941, 2968,  936,
2563       934, 2969, 2939, 2939, 2939, 2996, 2996, 2996,  933, 1620,
2564      1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 2947,
2565      2940,  932, 1620, 1622, 1623,  930,  929, 1620, 1620, 1620,
2566
2567      1622, 1620, 2906, 2906, 2906,  928, 2907,  927,  925, 2908,
2568      2909, 2909, 2909,  922, 2910,  921,  919, 2911, 3007, 3007,
2569      3007, 2967, 2967, 2967,  918, 2968, 1620, 1620, 2969, 3019,
2570      3019, 3019, 3027, 3027, 3027, 3008, 3035, 3035, 3035, 2996,
2571      2996, 2996, 3007, 3007, 3007,  917, 3020,  915,  914, 3028,
2572       913, 3045, 3045, 3045, 1094, 3046,  912, 1622, 3047, 3008,
2573      3019, 3019, 3019, 3058, 3058, 3058,  909, 3059,  908,  907,
2574      3060, 3027, 3027, 3027, 3067, 3067, 3067, 3020, 3068,  904,
2575       903, 3069, 3035, 3035, 3035, 3045, 3045, 3045, 3028, 3046,
2576      1807,  902, 3047,  897, 3058, 3058, 3058,  895, 3059,  894,
2577
2578      1094, 3060, 3067, 3067, 3067,  888, 3068,  887,  886, 3069,
2579      3211, 3211, 3211, 3211, 3211, 3211,  885, 3222,  879, 3076,
2580      3223, 3331, 3331, 3331, 3331, 3331, 3331,  878, 1094,  877,
2581       875, 1094,  872,  871,  870,  869,  864,  861,  863, 3332,
2582       858,  857, 3332,  240,  240,  240,  240,  240,  240,  240,
2583       240,  240,  241,  241,  241,  241,  241,  241,  241,  241,
2584       241,  246,  246,  246,  246,  246,  246,  246,  246,  246,
2585       249,  249,  249,  249,  249,  249,  249,  249,  249,  252,
2586       252,  252,  252,  252,  252,  252,  252,  252,  255,  255,
2587       255,  255,  255,  255,  255,  255,  255,  262,  262,  262,
2588
2589       262,  262,  262,  262,  262,  262,  269,  269,  269,  269,
2590       269,  269,  269,  269,  269,  274,  274,  274,  274,  274,
2591       274,  274,  274,  274,  286,  286,  286,  286,  286,  286,
2592       286,  286,  286,  292,  292,  292,  292,  292,  292,  292,
2593       292,  292,  300,  300,  300,  300,  300,  300,  300,  300,
2594       300,  304,  304,  304,  304,  304,  304,  304,  304,  304,
2595       310,  310,  310,  310,  310,  310,  310,  310,  310,  316,
2596       316,  316,  316,  316,  316,  316,  316,  316,  322,  322,
2597       322,  322,  322,  322,  322,  322,  322,  328,  328,  328,
2598       328,  328,  328,  328,  328,  328,  335,  335,  335,  335,
2599
2600       335,  335,  335,  335,  335,  340,  340,  340,  340,  340,
2601       340,  340,  340,  340,  347,  347,  347,  347,  347,  347,
2602       347,  347,  347,  356,  356,  356,  356,  356,  356,  356,
2603       356,  356,  373,  373,  373,  373,  373,  373,  373,  373,
2604       373,  380,  380,  380,  380,  380,  380,  380,  380,  380,
2605       384,  384,  384,  384,  384,  384,  384,  384,  384,  391,
2606       391,  391,  391,  391,  391,  391,  391,  391,  399,  399,
2607       399,  399,  399,  399,  399,  399,  399,  407,  407,  407,
2608       407,  407,  407,  407,  407,  407,  413,  413,  413,  413,
2609       413,  413,  413,  413,  413,  419,  419,  419,  419,  419,
2610
2611       419,  419,  419,  419,  423,  423,  423,  423,  423,  423,
2612       423,  423,  423,  431,  431,  431,  431,  431,  431,  431,
2613       431,  431,  438,  438,  438,  438,  438,  438,  438,  438,
2614       438,  445,  445,  445,  445,  445,  445,  445,  445,  445,
2615       450,  450,  450,  450,  450,  450,  450,  450,  450,  456,
2616       456,  456,  456,  456,  456,  456,  456,  456,  461,  461,
2617       461,  461,  461,  461,  461,  461,  461,  467,  467,  467,
2618       467,  467,  467,  467,  467,  467,  472,  472,  472,  472,
2619       472,  472,  472,  472,  472,  478,  478,  478,  478,  478,
2620       478,  478,  478,  478,  487,  487,  487,  487,  487,  487,
2621
2622       487,  487,  487,  494,  494,  494,  494,  494,  494,  494,
2623       494,  494,  498,  498,  498,  498,  498,  498,  498,  498,
2624       498,  509,  509,  509,  509,  509,  509,  509,  509,  509,
2625       517,  517,  517,  517,  517,  517,  517,  517,  517,  525,
2626       525,  525,  525,  525,  525,  525,  525,  525,  530,  530,
2627       530,  530,  530,  530,  530,  530,  530,  536,  536,  536,
2628       536,  536,  536,  536,  536,  536,  544,  544,  544,  544,
2629       544,  544,  544,  544,  544,  550,  550,  550,  550,  550,
2630       550,  550,  550,  550,  555,  555,  555,  555,  555,  555,
2631       555,  555,  555,  562,  562,  562,  562,  562,  562,  562,
2632
2633       562,  562,  567,  567,  567,  567,  567,  567,  567,  567,
2634       567,  573,  573,  573,  573,  573,  573,  573,  573,  573,
2635       580,  580,  580,  580,  580,  580,  580,  580,  580,  587,
2636       587,  587,  587,  587,  587,  587,  587,  587,  594,  594,
2637       594,  594,  594,  594,  594,  594,  594,  602,  602,  602,
2638       602,  602,  602,  602,  602,  602,  255,  255,  255,  255,
2639       255,  255,  255,  255,  255,  613,  613,  613,  613,  613,
2640       613,  613,  613,  613,  619,  619,  619,  619,  619,  619,
2641       619,  619,  619,  638,  638,  638,  856,  854,  853,  638,
2642       672,  672,  672,  850,  849,  848,  672,  680,  680,  680,
2643
2644       846,  845,  843,  680,  684,  684,  684,  842,  841,  840,
2645       684,  690,  690,  690,  838,  837,  836,  690,  696,  696,
2646       696,  835,  834,  833,  696,  701,  701,  701,  831,  829,
2647       828,  701,  711,  711,  711,  826,  825,  822,  711,  728,
2648       728,  728,  820,  816,  812,  728,  732,  732,  732,  811,
2649       809,  807,  732,  742,  742,  742,  806,  804,  803,  742,
2650       748,  748,  748,  801,  800,  799,  748,  753,  753,  753,
2651       798,  797,  795,  753,  761,  761,  761,  794,  788,  786,
2652       761,  766,  766,  766,  781,  780,  779,  766,  771,  771,
2653       771,  778,  777,  775,  771,  776,  776,  776,  773,  772,
2654
2655       770,  776,  787,  787,  787,  768,  767,  765,  787,  796,
2656       796,  796,  763,  762,  760,  796,  805,  805,  805,  759,
2657       756,  755,  805,  810,  810,  810,  754,  752, 3333,  810,
2658       821,  821,  821,  749,  747,  745,  821,  827,  827,  827,
2659       744,  743,  741,  827,  832,  832,  832,  740,  736,  735,
2660       832,  839,  839,  839,  734,  733,  731,  839,  847,  847,
2661       847,  730,  729,  727,  847,  855,  855,  855,  726,  725,
2662       719,  855,  860,  860,  860,  860,  860,  860,  860,  715,
2663       860,  638,  638,  638,  714,  710,  706,  638,  876,  705,
2664       704,  703,  876,  672,  672,  672,  702,  700,  699,  672,
2665
2666       916,  698,  697,  695,  916,  680,  680,  680,  694,  693,
2667       692,  680,  920,  691,  689,  687,  920,  684,  684,  684,
2668       686,  685,  683,  684,  926,  681,  679,  660,  926,  690,
2669       690,  690, 3333,  674,  673,  690,  931,  671, 3333,  654,
2670       931,  696,  696,  696,  640,  639,  637,  696,  935,  636,
2671       630,  629,  935,  701,  701,  701,  630,  629,  628,  701,
2672       946,  627, 3333, 3333,  946,  711,  711,  711, 3333, 3333,
2673      3333,  711,  964, 3333, 3333, 3333,  964,  728,  728,  728,
2674      3333, 3333, 3333,  728,  968, 3333, 3333, 3333,  968,  732,
2675       732,  732, 3333, 3333, 3333,  732,  978, 3333, 3333, 3333,
2676
2677       978,  742,  742,  742, 3333, 3333, 3333,  742,  986, 3333,
2678      3333, 3333,  986,  748,  748,  748, 3333, 3333, 3333,  748,
2679       989, 3333, 3333, 3333,  989,  753,  753,  753, 3333, 3333,
2680      3333,  753,  998, 3333, 3333, 3333,  998,  761,  761,  761,
2681      3333, 3333, 3333,  761, 1003, 3333, 3333, 3333, 1003,  766,
2682       766,  766, 3333, 3333, 3333,  766, 1008, 3333, 3333, 3333,
2683      1008,  771,  771,  771, 3333, 3333, 3333,  771, 1012, 3333,
2684      3333, 3333, 1012,  776,  776,  776, 3333, 3333, 3333,  776,
2685      1022, 3333, 3333, 3333, 1022,  787,  787,  787, 3333, 3333,
2686      3333,  787, 1026, 3333, 3333, 3333, 1026,  796,  796,  796,
2687
2688      3333, 3333, 3333,  796, 1036, 3333, 3333, 3333, 1036,  805,
2689       805,  805, 3333, 3333, 3333,  805, 1042, 3333, 3333, 3333,
2690      1042,  810,  810,  810, 3333, 3333, 3333,  810, 1053, 3333,
2691      3333, 3333, 1053,  821,  821,  821, 3333, 3333, 3333,  821,
2692      1058, 3333, 3333, 3333, 1058,  827,  827,  827, 3333, 3333,
2693      3333,  827, 1063, 3333, 3333, 3333, 1063,  832,  832,  832,
2694      3333, 3333, 3333,  832, 1070, 3333, 3333, 3333, 1070,  839,
2695       839,  839, 3333, 3333, 3333,  839, 1077, 3333, 3333, 3333,
2696      1077,  847,  847,  847, 3333, 3333, 3333,  847, 1085, 3333,
2697      3333, 3333, 1085,  855,  855,  855, 3333, 3333, 3333,  855,
2698
2699      1091, 3333, 3333, 3333, 1091, 1093, 1093, 1093, 1093, 1093,
2700      1093, 1093, 1093, 1093, 1099, 3333, 3333, 3333, 3333, 1099,
2701       638,  638,  638, 3333, 3333, 3333,  638, 1110, 1110, 1110,
2702      1110, 3333, 3333, 1110, 1110,  672,  672,  672,  672, 3333,
2703       672, 3333,  672, 1157, 1157, 1157, 1157, 3333, 3333, 1157,
2704      1157,  680,  680,  680, 3333, 3333, 3333,  680, 1163, 1163,
2705      1163, 1163, 3333, 3333, 1163, 1163,  684,  684,  684, 3333,
2706      3333, 3333,  684, 1172, 1172, 1172, 1172, 3333, 3333, 1172,
2707      1172,  690,  690,  690,  690, 3333,  690, 3333,  690, 1182,
2708      1182, 1182, 1182, 3333, 3333, 1182, 1182,  696,  696,  696,
2709
2710       696, 3333,  696, 3333,  696, 1190, 1190, 1190, 1190, 3333,
2711      3333, 1190, 1190,  701,  701,  701,  701, 3333,  701, 3333,
2712       701, 1206, 1206, 1206, 1206, 3333, 3333, 1206, 1206,  711,
2713       711,  711, 3333, 3333, 3333,  711, 1231, 1231, 1231, 1231,
2714      3333, 3333, 1231, 1231, 1238, 1238, 1238, 1238, 3333, 3333,
2715      1238, 1238,  732,  732,  732, 3333, 3333, 3333,  732, 1251,
2716      1251, 1251, 1251, 3333, 3333, 1251, 1251,  742,  742,  742,
2717      3333, 3333, 3333,  742, 1263, 1263, 1263, 1263, 3333, 3333,
2718      1263, 1263,  748,  748,  748, 3333, 3333, 3333,  748, 1268,
2719      1268, 1268, 1268, 3333, 3333, 1268, 1268,  753,  753,  753,
2720
2721      3333, 3333, 3333,  753, 1279, 1279, 1279, 1279, 3333, 3333,
2722      1279, 1279,  761,  761,  761, 3333, 3333, 3333,  761, 1287,
2723      1287, 1287, 1287, 3333, 3333, 1287, 1287,  766,  766,  766,
2724      3333, 3333, 3333,  766, 1295, 1295, 1295, 1295, 3333, 3333,
2725      1295, 1295,  771,  771,  771, 3333, 3333, 3333,  771, 1301,
2726      1301, 1301, 1301, 3333, 3333, 1301, 1301,  776,  776,  776,
2727      3333, 3333, 3333,  776, 1316, 1316, 1316, 1316, 3333, 3333,
2728      1316, 1316,  787,  787,  787, 3333, 3333, 3333,  787, 1322,
2729      1322, 1322, 1322, 3333, 3333, 1322, 1322,  796,  796,  796,
2730      3333, 3333, 3333,  796, 1334, 1334, 1334, 1334, 3333, 3333,
2731
2732      1334, 1334,  805,  805,  805, 3333, 3333, 3333,  805, 1343,
2733      1343, 1343, 1343, 3333, 3333, 1343, 1343,  810,  810,  810,
2734      3333, 3333, 3333,  810, 1359, 1359, 1359, 1359, 3333, 3333,
2735      1359, 1359,  821,  821,  821,  821, 3333,  821, 3333,  821,
2736      1368, 1368, 1368, 1368, 3333, 3333, 1368, 1368,  827,  827,
2737       827, 3333, 3333, 3333,  827, 1376, 1376, 1376, 1376, 3333,
2738      3333, 1376, 1376,  832,  832,  832, 3333, 3333, 3333,  832,
2739      1386, 1386, 1386, 1386, 3333, 3333, 1386, 1386,  839,  839,
2740       839, 3333, 3333, 3333,  839, 1396, 1396, 1396, 1396, 3333,
2741      3333, 1396, 1396,  847,  847,  847, 3333, 3333, 3333,  847,
2742
2743      1407, 1407, 1407, 1407, 3333, 3333, 1407, 1407,  855,  855,
2744       855, 3333, 3333, 3333,  855, 1414, 1414, 1414, 1414, 3333,
2745      3333, 1414, 1414, 1093, 1093, 1093, 1093, 1093, 1093, 1093,
2746      1093, 1093, 1099, 3333, 1099, 3333, 3333, 1099,  638,  638,
2747       638, 3333, 3333, 3333,  638, 1110, 1110, 1110, 1110, 3333,
2748      3333, 1110, 1110,  672,  672,  672, 3333, 3333, 3333,  672,
2749      1157, 1157, 1157, 1157, 3333, 3333, 1157, 1157,  680,  680,
2750       680, 3333, 3333, 3333,  680, 1163, 1163, 1163, 1163, 3333,
2751      3333, 1163, 1163,  684,  684,  684, 3333, 3333, 3333,  684,
2752      1172, 1172, 1172, 1172, 3333, 3333, 1172, 1172,  690,  690,
2753
2754       690, 3333, 3333, 3333,  690, 1182, 1182, 1182, 1182, 3333,
2755      3333, 1182, 1182, 1190, 1190, 1190, 1190, 3333, 3333, 1190,
2756      1190,  701,  701,  701, 3333, 3333, 3333,  701, 1206, 1206,
2757      1206, 1206, 3333, 3333, 1206, 1206,  711,  711,  711, 3333,
2758      3333, 3333,  711, 1231, 1231, 1231, 1231, 3333, 3333, 1231,
2759      1231, 1238, 1238, 1238, 1238, 3333, 3333, 1238, 1238,  732,
2760       732,  732, 3333, 3333, 3333,  732, 1251, 1251, 1251, 1251,
2761      3333, 3333, 1251, 1251,  742,  742,  742,  742, 3333,  742,
2762      3333,  742, 1263, 1263, 1263, 1263, 3333, 3333, 1263, 1263,
2763       748,  748,  748,  748, 3333,  748, 3333,  748, 1268, 1268,
2764
2765      1268, 1268, 3333, 3333, 1268, 1268,  753,  753,  753, 3333,
2766      3333, 3333,  753, 1279, 1279, 1279, 1279, 3333, 3333, 1279,
2767      1279,  761,  761,  761, 3333, 3333, 3333,  761, 1287, 1287,
2768      1287, 1287, 3333, 3333, 1287, 1287,  766,  766,  766, 3333,
2769      3333, 3333,  766, 1295, 1295, 1295, 1295, 3333, 3333, 1295,
2770      1295,  771,  771,  771,  771, 3333,  771, 3333,  771, 1301,
2771      1301, 1301, 1301, 3333, 3333, 1301, 1301,  776,  776,  776,
2772      3333, 3333, 3333,  776, 1316, 1316, 1316, 1316, 3333, 3333,
2773      1316, 1316,  787,  787,  787, 3333, 3333, 3333,  787, 1322,
2774      1322, 1322, 1322, 3333, 3333, 1322, 1322,  796,  796,  796,
2775
2776      3333, 3333, 3333,  796, 1334, 1334, 1334, 1334, 3333, 3333,
2777      1334, 1334,  805,  805,  805, 3333, 3333, 3333,  805, 1343,
2778      1343, 1343, 1343, 3333, 3333, 1343, 1343,  810,  810,  810,
2779      3333, 3333, 3333,  810, 1359, 1359, 1359, 1359, 3333, 3333,
2780      1359, 1359,  821,  821,  821, 3333, 3333, 3333,  821, 1368,
2781      1368, 1368, 1368, 3333, 3333, 1368, 1368,  827,  827,  827,
2782      3333, 3333, 3333,  827, 1376, 1376, 1376, 1376, 3333, 3333,
2783      1376, 1376,  832,  832,  832, 3333, 3333, 3333,  832, 1386,
2784      1386, 1386, 1386, 3333, 3333, 1386, 1386,  839,  839,  839,
2785      3333, 3333, 3333,  839, 1396, 1396, 1396, 1396, 3333, 3333,
2786
2787      1396, 1396,  847,  847,  847,  847, 3333,  847, 3333,  847,
2788      1407, 1407, 1407, 1407, 3333, 3333, 1407, 1407,  855,  855,
2789       855, 3333, 3333, 3333,  855, 1414, 1414, 1414, 1414, 3333,
2790      3333, 1414, 1414, 1093, 1093, 1093, 1093, 1093, 1093, 1093,
2791      1093, 1093, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620,
2792      1620,  638,  638,  638, 3333, 3333, 3333,  638,  672,  672,
2793       672, 3333, 3333, 3333,  672, 1157, 1157, 1157, 1157, 3333,
2794      3333, 1157, 1157,  680,  680,  680,  680, 3333,  680, 3333,
2795       680, 1163, 1163, 1163, 1163, 3333, 3333, 1163, 1163,  684,
2796       684,  684, 3333, 3333, 3333,  684, 1172, 1172, 1172, 1172,
2797
2798      3333, 3333, 1172, 1172,  690,  690,  690, 3333, 3333, 3333,
2799       690, 1182, 1182, 1182, 1182, 3333, 3333, 1182, 1182, 1190,
2800      1190, 1190, 1190, 3333, 3333, 1190, 1190,  701,  701,  701,
2801      3333, 3333, 3333,  701, 1206, 1206, 1206, 1206, 3333, 3333,
2802      1206, 1206,  711,  711,  711,  711, 3333,  711, 3333,  711,
2803      1231, 1231, 1231, 1231, 3333, 3333, 1231, 1231, 1238, 1238,
2804      1238, 1238, 3333, 3333, 1238, 1238,  732,  732,  732, 3333,
2805      3333, 3333,  732, 1251, 1251, 1251, 1251, 3333, 3333, 1251,
2806      1251, 1263, 1263, 1263, 1263, 3333, 3333, 1263, 1263, 1268,
2807      1268, 1268, 1268, 3333, 3333, 1268, 1268,  753,  753,  753,
2808
2809      3333, 3333, 3333,  753, 1279, 1279, 1279, 1279, 3333, 3333,
2810      1279, 1279,  761,  761,  761, 3333, 3333, 3333,  761, 1287,
2811      1287, 1287, 1287, 3333, 3333, 1287, 1287,  766,  766,  766,
2812       766, 3333,  766, 3333,  766, 1295, 1295, 1295, 1295, 3333,
2813      3333, 1295, 1295,  771,  771,  771, 3333, 3333, 3333,  771,
2814      1301, 1301, 1301, 1301, 3333, 3333, 1301, 1301,  776,  776,
2815       776, 3333, 3333, 3333,  776, 1316, 1316, 1316, 1316, 3333,
2816      3333, 1316, 1316,  787,  787,  787, 3333, 3333, 3333,  787,
2817      1322, 1322, 1322, 1322, 3333, 3333, 1322, 1322,  796,  796,
2818       796, 3333, 3333, 3333,  796, 1334, 1334, 1334, 1334, 3333,
2819
2820      3333, 1334, 1334,  805,  805,  805,  805, 3333,  805, 3333,
2821       805, 1343, 1343, 1343, 1343, 3333, 3333, 1343, 1343,  810,
2822       810,  810, 3333, 3333, 3333,  810, 1359, 1359, 1359, 1359,
2823      3333, 3333, 1359, 1359,  821,  821,  821, 3333, 3333, 3333,
2824       821, 1368, 1368, 1368, 1368, 3333, 3333, 1368, 1368,  827,
2825       827,  827, 3333, 3333, 3333,  827, 1376, 1376, 1376, 1376,
2826      3333, 3333, 1376, 1376,  832,  832,  832, 3333, 3333, 3333,
2827       832, 1386, 1386, 1386, 1386, 3333, 3333, 1386, 1386,  839,
2828       839,  839, 3333, 3333, 3333,  839, 1396, 1396, 1396, 1396,
2829      3333, 3333, 1396, 1396,  847,  847,  847, 3333, 3333, 3333,
2830
2831       847, 1407, 1407, 1407, 1407, 3333, 3333, 1407, 1407,  855,
2832       855,  855, 3333, 3333, 3333,  855, 1414, 1414, 1414, 1414,
2833      3333, 3333, 1414, 1414, 1093, 1093, 1093, 1093, 1093, 1093,
2834      1093, 1093, 1093, 1620, 1620, 1620, 1620, 1620, 1620, 1620,
2835      1620, 1620,  638,  638,  638, 3333, 3333, 3333,  638,  672,
2836       672,  672,  672, 3333,  672, 3333,  672, 1157, 1157, 1157,
2837      1157, 3333, 3333, 1157, 1157, 1163, 1163, 1163, 1163, 3333,
2838      3333, 1163, 1163,  684,  684,  684, 3333, 3333, 3333,  684,
2839      1172, 1172, 1172, 1172, 3333, 3333, 1172, 1172,  690,  690,
2840       690,  690, 3333,  690, 3333,  690, 1182, 1182, 1182, 1182,
2841
2842      3333, 3333, 1182, 1182, 1190, 1190, 1190, 1190, 3333, 3333,
2843      1190, 1190,  701,  701,  701,  701, 3333,  701, 3333,  701,
2844      1206, 1206, 1206, 1206, 3333, 3333, 1206, 1206,  711,  711,
2845       711,  711, 3333,  711, 3333,  711, 1231, 1231, 1231, 1231,
2846      3333, 3333, 1231, 1231, 1238, 1238, 1238, 1238, 3333, 3333,
2847      1238, 1238,  732,  732,  732, 3333, 3333, 3333,  732, 1251,
2848      1251, 1251, 1251, 3333, 3333, 1251, 1251, 1263, 1263, 1263,
2849      1263, 3333, 3333, 1263, 1263, 1268, 1268, 1268, 1268, 3333,
2850      3333, 1268, 1268,  753,  753,  753, 3333, 3333, 3333,  753,
2851      1279, 1279, 1279, 1279, 3333, 3333, 1279, 1279,  761,  761,
2852
2853       761, 3333, 3333, 3333,  761, 1287, 1287, 1287, 1287, 3333,
2854      3333, 1287, 1287, 1295, 1295, 1295, 1295, 3333, 3333, 1295,
2855      1295,  771,  771,  771, 3333, 3333, 3333,  771, 1301, 1301,
2856      1301, 1301, 3333, 3333, 1301, 1301,  776,  776,  776, 3333,
2857      3333, 3333,  776, 1316, 1316, 1316, 1316, 3333, 3333, 1316,
2858      1316,  787,  787,  787, 3333, 3333, 3333,  787, 1322, 1322,
2859      1322, 1322, 3333, 3333, 1322, 1322,  796,  796,  796, 3333,
2860      3333, 3333,  796, 1334, 1334, 1334, 1334, 3333, 3333, 1334,
2861      1334, 1343, 1343, 1343, 1343, 3333, 3333, 1343, 1343,  810,
2862       810,  810, 3333, 3333, 3333,  810, 1359, 1359, 1359, 1359,
2863
2864      3333, 3333, 1359, 1359,  821,  821,  821, 3333, 3333, 3333,
2865       821, 1368, 1368, 1368, 1368, 3333, 3333, 1368, 1368,  827,
2866       827,  827, 3333, 3333, 3333,  827, 1376, 1376, 1376, 1376,
2867      3333, 3333, 1376, 1376,  832,  832,  832,  832, 3333,  832,
2868      3333,  832, 1386, 1386, 1386, 1386, 3333, 3333, 1386, 1386,
2869       839,  839,  839, 3333, 3333, 3333,  839, 1396, 1396, 1396,
2870      1396, 3333, 3333, 1396, 1396,  847,  847,  847, 3333, 3333,
2871      3333,  847, 1407, 1407, 1407, 1407, 3333, 3333, 1407, 1407,
2872       855,  855,  855, 3333, 3333, 3333,  855, 1414, 1414, 1414,
2873      1414, 3333, 3333, 1414, 1414, 1093, 1093, 1093, 1093, 1093,
2874
2875      1093, 1093, 1093, 1093, 1620, 1620, 1620, 1620, 1620, 1620,
2876      1620, 1620, 1620,  638,  638,  638,  638, 3333,  638, 3333,
2877       638,  672,  672,  672, 3333, 3333, 3333,  672, 1157, 1157,
2878      1157, 1157, 3333, 3333, 1157, 1157, 1163, 1163, 1163, 1163,
2879      3333, 3333, 1163, 1163,  684,  684,  684, 3333, 3333, 3333,
2880       684, 1172, 1172, 1172, 1172, 3333, 3333, 1172, 1172, 1182,
2881      1182, 1182, 1182, 3333, 3333, 1182, 1182, 1190, 1190, 1190,
2882      1190, 3333, 3333, 1190, 1190,  701,  701,  701,  701, 3333,
2883       701, 3333,  701, 1206, 1206, 1206, 1206, 3333, 3333, 1206,
2884      1206,  711,  711,  711, 3333, 3333, 3333,  711, 1231, 1231,
2885
2886      1231, 1231, 3333, 3333, 1231, 1231, 1238, 1238, 1238, 1238,
2887      3333, 3333, 1238, 1238,  732,  732,  732, 3333, 3333, 3333,
2888       732, 1263, 1263, 1263, 1263, 3333, 3333, 1263, 1263, 1268,
2889      1268, 1268, 1268, 3333, 3333, 1268, 1268,  753,  753,  753,
2890      3333, 3333, 3333,  753,  761,  761,  761, 3333, 3333, 3333,
2891       761, 1287, 1287, 1287, 1287, 3333, 3333, 1287, 1287, 1295,
2892      1295, 1295, 1295, 3333, 3333, 1295, 1295,  771,  771,  771,
2893      3333, 3333, 3333,  771, 1301, 1301, 1301, 1301, 3333, 3333,
2894      1301, 1301,  776,  776,  776, 3333, 3333, 3333,  776,  787,
2895       787,  787,  787, 3333,  787, 3333,  787, 1322, 1322, 1322,
2896
2897      1322, 3333, 3333, 1322, 1322,  796,  796,  796, 3333, 3333,
2898      3333,  796, 1334, 1334, 1334, 1334, 3333, 3333, 1334, 1334,
2899       810,  810,  810, 3333, 3333, 3333,  810, 1359, 1359, 1359,
2900      1359, 3333, 3333, 1359, 1359,  821,  821,  821, 3333, 3333,
2901      3333,  821, 1368, 1368, 1368, 1368, 3333, 3333, 1368, 1368,
2902       827,  827,  827, 3333, 3333, 3333,  827, 1376, 1376, 1376,
2903      1376, 3333, 3333, 1376, 1376,  832,  832,  832,  832, 3333,
2904       832, 3333,  832, 1386, 1386, 1386, 1386, 3333, 3333, 1386,
2905      1386,  839,  839,  839,  839, 3333,  839, 3333,  839, 1396,
2906      1396, 1396, 1396, 3333, 3333, 1396, 1396,  847,  847,  847,
2907
2908      3333, 3333, 3333,  847, 1407, 1407, 1407, 1407, 3333, 3333,
2909      1407, 1407,  855,  855,  855,  855, 3333,  855, 3333,  855,
2910      1414, 1414, 1414, 1414, 3333, 3333, 1414, 1414, 1093, 1093,
2911      1093, 1093, 1093, 1093, 1093, 1093, 1093, 1620, 1620, 1620,
2912      1620, 1620, 1620, 1620, 1620, 1620,  672,  672,  672, 3333,
2913      3333, 3333,  672, 1157, 1157, 1157, 1157, 3333, 3333, 1157,
2914      1157, 1163, 1163, 1163, 1163, 3333, 3333, 1163, 1163,  684,
2915       684,  684, 3333, 3333, 3333,  684, 1172, 1172, 1172, 1172,
2916      3333, 3333, 1172, 1172, 1182, 1182, 1182, 1182, 3333, 3333,
2917      1182, 1182, 1190, 1190, 1190, 1190, 3333, 3333, 1190, 1190,
2918
2919      1206, 1206, 1206, 1206, 3333, 3333, 1206, 1206,  711,  711,
2920       711, 3333, 3333, 3333,  711, 1231, 1231, 1231, 1231, 3333,
2921      3333, 1231, 1231, 1238, 1238, 1238, 1238, 3333, 3333, 1238,
2922      1238,  732,  732,  732, 3333, 3333, 3333,  732, 1263, 1263,
2923      1263, 1263, 3333, 3333, 1263, 1263, 1268, 1268, 1268, 1268,
2924      3333, 3333, 1268, 1268,  753,  753,  753, 3333, 3333, 3333,
2925       753,  761,  761,  761, 3333, 3333, 3333,  761, 1287, 1287,
2926      1287, 1287, 3333, 3333, 1287, 1287, 1295, 1295, 1295, 1295,
2927      3333, 3333, 1295, 1295,  771,  771,  771, 3333, 3333, 3333,
2928       771,  776,  776,  776, 3333, 3333, 3333,  776, 1322, 1322,
2929
2930      1322, 1322, 3333, 3333, 1322, 1322,  796,  796,  796,  796,
2931      3333,  796, 3333,  796, 1334, 1334, 1334, 1334, 3333, 3333,
2932      1334, 1334,  810,  810,  810, 3333, 3333, 3333,  810, 1359,
2933      1359, 1359, 1359, 3333, 3333, 1359, 1359,  821,  821,  821,
2934      3333, 3333, 3333,  821,  827,  827,  827, 3333, 3333, 3333,
2935       827, 1376, 1376, 1376, 1376, 3333, 3333, 1376, 1376,  832,
2936       832,  832, 3333, 3333, 3333,  832, 1386, 1386, 1386, 1386,
2937      3333, 3333, 1386, 1386,  839,  839,  839, 3333, 3333, 3333,
2938       839, 1396, 1396, 1396, 1396, 3333, 3333, 1396, 1396,  847,
2939       847,  847, 3333, 3333, 3333,  847, 1414, 1414, 1414, 1414,
2940
2941      3333, 3333, 1414, 1414, 1093, 1093, 1093, 1093, 1093, 1093,
2942      1093, 1093, 1093, 1620, 1620, 1620, 1620, 1620, 1620, 1620,
2943      1620, 1620,  672,  672,  672, 3333, 3333, 3333,  672, 1157,
2944      1157, 1157, 1157, 3333, 3333, 1157, 1157, 1163, 1163, 1163,
2945      1163, 3333, 3333, 1163, 1163,  684,  684,  684,  684, 3333,
2946       684, 3333,  684, 1172, 1172, 1172, 1172, 3333, 3333, 1172,
2947      1172, 1182, 1182, 1182, 1182, 3333, 3333, 1182, 1182, 1190,
2948      1190, 1190, 1190, 3333, 3333, 1190, 1190, 1206, 1206, 1206,
2949      1206, 3333, 3333, 1206, 1206,  711,  711,  711, 3333, 3333,
2950      3333,  711, 1231, 1231, 1231, 1231, 3333, 3333, 1231, 1231,
2951
2952       732,  732,  732, 3333, 3333, 3333,  732, 1263, 1263, 1263,
2953      1263, 3333, 3333, 1263, 1263, 1268, 1268, 1268, 1268, 3333,
2954      3333, 1268, 1268,  753,  753,  753,  753, 3333,  753, 3333,
2955       753,  761,  761,  761,  761, 3333,  761, 3333,  761, 1287,
2956      1287, 1287, 1287, 3333, 3333, 1287, 1287, 1295, 1295, 1295,
2957      1295, 3333, 3333, 1295, 1295,  771,  771,  771,  771, 3333,
2958       771, 3333,  771,  776,  776,  776, 3333, 3333, 3333,  776,
2959      1322, 1322, 1322, 1322, 3333, 3333, 1322, 1322,  796,  796,
2960       796,  796, 3333,  796, 3333,  796, 1334, 1334, 1334, 1334,
2961      3333, 3333, 1334, 1334,  810,  810,  810,  810, 3333,  810,
2962
2963      3333,  810,  821,  821,  821, 3333, 3333, 3333,  821,  827,
2964       827,  827, 3333, 3333, 3333,  827,  832,  832,  832, 3333,
2965      3333, 3333,  832, 1386, 1386, 1386, 1386, 3333, 3333, 1386,
2966      1386,  839,  839,  839, 3333, 3333, 3333,  839, 1396, 1396,
2967      1396, 1396, 3333, 3333, 1396, 1396,  847,  847,  847, 3333,
2968      3333, 3333,  847, 1414, 1414, 1414, 1414, 3333, 3333, 1414,
2969      1414, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093,
2970      1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620, 1620,  672,
2971       672,  672, 3333, 3333, 3333,  672, 1163, 1163, 1163, 1163,
2972      3333, 3333, 1163, 1163, 1172, 1172, 1172, 1172, 3333, 3333,
2973
2974      1172, 1172, 1182, 1182, 1182, 1182, 3333, 3333, 1182, 1182,
2975      1190, 1190, 1190, 1190, 3333, 3333, 1190, 1190,  711,  711,
2976       711, 3333, 3333, 3333,  711,  732,  732,  732, 3333, 3333,
2977      3333,  732, 1263, 1263, 1263, 1263, 3333, 3333, 1263, 1263,
2978       753,  753,  753, 3333, 3333, 3333,  753, 2879, 2879, 2879,
2979      2879, 2879, 2879, 2879, 2879, 2879, 2880, 2880, 2880, 2880,
2980      2880, 2880, 2880, 2880, 2880, 2942, 2942, 2942, 2942, 2942,
2981      2942, 2942, 2942, 2942, 2945, 2945, 2945, 2945, 2945, 2945,
2982      2945, 2945, 2945, 2993, 2993, 2993, 2993, 2993, 2993, 2993,
2983      2993, 2993, 2995, 2995, 2995, 2995, 2995, 2995, 2995, 2995,
2984
2985      2995,  239, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
2986      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
2987      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
2988      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
2989      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
2990      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
2991      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
2992      3333, 3333, 3333, 3333, 3333, 3333
2993     } ;
2994
2995 static yyconst flex_int16_t yy_chk[11977] =
2996     {   0,
2997         0,    3,    3,    3,    4,    4,    4,    5,    5,    5,
2998         6,    6,    6,    7,    7,    7,   11,    3,    9,   12,
2999         4,   10,  331,    5,    0,    9,    6,    0,   10,    7,
3000         8,    8,    8,  244,   11,   13,   13,   12,   14,   14,
3001        13,   13,  282,   14,   14,  245,    8,   17,   17,  244,
3002        13,   15,   15,   14,   15,  248,   15,   16,   16, 1015,
3003        16,  245,   16,   18,   18, 1015,   15,   21,   21,   21,
3004       331,  248,   16,   22,   22,   22,   23,   23,   23,   24,
3005        24,   24,  355,   21,   25,   25,   25,  355, 1465,   22,
3006       343,   17,   23, 1469,  282,   24,  242,  242,  242, 1474,
3007
3008        25,  243,  243,  243,  247,  247,  247,   18,   19,   19,
3009        19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
3010        19,   19,   19,  401,   19,   19,   19,   19,   19,   26,
3011        26,   26,   27,   27,   27,   28,   28,   28,  343,   29,
3012        29,   29,   30,   30,   30,   26,  270,  287,   27,  291,
3013       365,   28,  301,   19,   19,   29,  291,  437,   30,  267,
3014       267,  267,  270,  287,   19,  275,  275,  275,  301,  437,
3015       258,  365,  401,   19,   20,   20,   20,   20,   20,   20,
3016        20,   20,   20,   20,   20,   20,   20,   20,   20,  543,
3017        20,   20,   20,   20,   20,   31,   31,   31,   32,   32,
3018
3019        32,   33,   33,   33,  543,   34,   34,   34,   35,   35,
3020        35,   31,  258,  632,   32,  558,  632,   33,  258,   20,
3021        20,   34,  306,  258,   35,   36,   36,   36,  258,  306,
3022        20,   37,   37,   37,   38,   38,   38,  734,  306,   20,
3023       734,   36,   39,   39,   39, 1475,  311,   37, 1480,  323,
3024        38,   40,   40,   40,  284,  284,  284,  376,   39,  293,
3025       293,  293,  311,  558,  294,  323, 1481,   40,   41,   41,
3026        41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
3027        41,   41,   41,  596,   41,   41,   41,   41,   41,   43,
3028        43,   43,   44,   44,   44,   45,   45,   45,  387,   46,
3029
3030        46,   46,   47,   47,   47,   43,  370,  651,   44,  376,
3031      1496,   45,  294,   41,   41,   46,  294,  336,   47,   41,
3032       370,  651,   41,  298,  298,  298,  305,  305,  305,  308,
3033       308,  308,  596,  336,   41,   42,   42,   42,   42,   42,
3034        42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
3035       387,   42,   42,   42,   42,   42,   48,   48,   48,   49,
3036        49,   49,   50,   50,   50,  368,   53,   53,   53,   54,
3037        54,   54,   48,  368, 1497,   49,  644,  318,   50,  368,
3038        42,   42,   53,  398,  318,   54,   42,  398,  403,   42,
3039       317,  317,  317,  318,  320,  320,  320,  329,  329,  329,
3040
3041       644,   42,   51,   51,   51,   51,   51,   51,   51,   51,
3042        51,   51,   51,   51,   51,   51,   51,  623,   51,   51,
3043        51,   51,   51,   57,   57,   57,   58,   58,   58,   61,
3044        61,   61,  623,   62,   62,   62,   63,   63,   63,   57,
3045       403, 1499,   58, 1521,  656,   61,  666,   51,   51,   62,
3046       348,  363,   63,   64,   64,   64,  333,  333,  333,  341,
3047       341,  341,  345,  345,  345,  519,  348,  363,  656,   64,
3048       666,   51,   52,   52,   52,   52,   52,   52,   52,   52,
3049        52,   52,   52,   52,   52,   52,   52,  669,   52,   52,
3050        52,   52,   52,   65,   65,   65,   66,   66,   66,   67,
3051
3052        67,   67,  519,   68,   68,   68,   71,   71,   71,   65,
3053       486,  669,   66,  358,  486,   67, 1522,   52,   52,   68,
3054       358,  851,   71,   72,   72,   72,  357,  357,  357,  358,
3055       360,  360,  360,  374,  374,  374,  378,  378,  378,   72,
3056      1525,   52,   55,   55,   55,   55,   55,   55,   55,   55,
3057        55,   55,   55,   55,   55,   55,   55,  851,   55,   55,
3058        55,   55,   55,   73,   73,   73,   74,   74,   74,   75,
3059        75,   75, 1527,   76,   76,   76,   77,   77,   77,   73,
3060       381,  392,   74,  554,  408,   75,  371,   55,   55,   76,
3061       554,   55,   77, 1529,  371, 1536,  381,  392,   55,  371,
3062
3063       408,   55,   56,   56,   56,   56,   56,   56,   56,   56,
3064        56,   56,   56,   56,   56,   56,   56, 1537,   56,   56,
3065        56,   56,   56,   78,   78,   78,   81,   81,   81,   82,
3066        82,   82,  662,   85,   85,   85,   86,   86,   86,   78,
3067       420,  432,   81,  415,  446,   82,  662,   56,   56,   85,
3068       415,   56,   86,  385,  385,  385,  420,  432,   56,  415,
3069       446,   56,   59,   59,   59,   59,   59,   59,   59,   59,
3070        59,   59,   59,   59,   59,   59,   59, 1538,   59,   59,
3071        59,   59,   59,   87,   87,   87,   88,   88,   88,   89,
3072        89,   89,  427,   90,   90,   90,   91,   91,   91,   87,
3073
3074       668, 1539,   88, 1541, 1547,   89, 1549,   59,   59,   90,
3075       457,  468,   91,   59,  668,  441,   59,  389,  389,  389,
3076       400,  400,  400,  405,  405,  405,  457,  468,   59,   60,
3077        60,   60,   60,   60,   60,   60,   60,   60,   60,   60,
3078        60,   60,   60,   60,  427,   60,   60,   60,   60,   60,
3079        92,   92,   92,   95,   95,   95,   96,   96,   96,  501,
3080        97,   97,   97,   98,   98,   98,   92,  441, 1128,   95,
3081      1551, 1552,   96, 1557,   60,   60,   97,  479,  490,   98,
3082        60, 1128,  503,   60,  414,  414,  414,  417,  417,  417,
3083       424,  424,  424,  479,  490,   60,   69,   69,   69,   69,
3084
3085        69,   69,   69,   69,   69,   69,   69,   69,   69,   69,
3086        69,  501,   69,   69,   69,   69,   69,   99,   99,   99,
3087       100,  100,  100,  101,  101,  101,  505,  102,  102,  102,
3088       105,  105,  105,   99,  503, 1559,  100,  490, 1560,  101,
3089      1562,   69,   69,  102,  495,  510,  105,   69,  429,  429,
3090       429,  439,  439,  439,  443,  443,  443,  451,  451,  451,
3091       495,  510,   69,   70,   70,   70,   70,   70,   70,   70,
3092        70,   70,   70,   70,   70,   70,   70,   70,  505,   70,
3093        70,   70,   70,   70,  106,  106,  106,  107,  107,  107,
3094       108,  108,  108,  521,  109,  109,  109,  110,  110,  110,
3095
3096       106, 1096,  526,  107,  452, 1096,  108, 1417,   70,   70,
3097       109,  452,  463,  110,   70,  454,  454,  454,  526,  463,
3098       452,  462,  462,  462,  465,  465,  465, 1417,  463,   70,
3099        79,   79,   79,   79,   79,   79,   79,   79,   79,   79,
3100        79,   79,   79,   79,   79,  521,   79,   79,   79,   79,
3101        79,  111,  111,  111,  112,  112,  112,  115,  115,  115,
3102       583,  116,  116,  116,  119,  119,  119,  111,  537,  551,
3103       112,  474,  563,  115, 1563,   79,   79,  116,  474,   79,
3104       119,  473,  473,  473,  537,  551,   79,  474,  563,   79,
3105       476,  476,  476,   79, 1564,   79,   79,   80,   80,   80,
3106
3107        80,   80,   80,   80,   80,   80,   80,   80,   80,   80,
3108        80,   80,  583,   80,   80,   80,   80,   80,  120,  120,
3109       120,  121,  121,  121,  122,  122,  122,  670,  123,  123,
3110       123,  124,  124,  124,  120,  574,  588,  121,  489,  603,
3111       122,  670,   80,   80,  123,  489,   80,  124,  488,  488,
3112       488,  574,  588,   80,  489,  603,   80,  492,  492,  492,
3113        80, 1565,   80,   80,   83,   83,   83,   83,   83,   83,
3114        83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
3115        83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
3116        83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
3117
3118        83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
3119        83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
3120        83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
3121        83,   83,   83,   83,   83,   83,   83,   83,   93,   93,
3122        93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
3123        93,   93,   93, 1568,   93,   93,   93,   93,   93,  125,
3124       125,  125,  126,  126,  126,  129,  129,  129, 1569,  130,
3125       130,  130,  131,  131,  131,  125,  614, 1570,  126, 1572,
3126       650,  129,  598,   93,   93,  130, 1575,  650,  131,  499,
3127       499,  499,  614,  650,   93,   94,   94,   94,   94,   94,
3128
3129        94,   94,   94,   94,   94,   94,   94,   94,   94,   94,
3130      1584,   94,   94,   94,   94,   94,  132,  132,  132,  133,
3131       133,  133,  134,  134,  134, 1587,  135,  135,  135,  136,
3132       136,  136,  132,  502,  598,  133, 1595,  654,  134,  541,
3133        94,   94,  135,  541,  654,  136,  502,  541,  502,  280,
3134       654,   94,  103,  103,  103,  103,  103,  103,  103,  103,
3135       103,  103,  103,  103,  103,  103,  103, 1597,  103,  103,
3136       103,  103,  103,  139,  139,  139,  140,  140,  140,  143,
3137       143,  143,  645,  144,  144,  144, 1599,  280, 1600,  139,
3138       792,  862,  140,  645, 1229,  143,  645,  103,  103,  144,
3139
3140       103,  280,  103,  280,  792,  280, 1229,  862,  103,  507,
3141       507,  507,  518,  518,  518,  103,  500,  888,  103,  104,
3142       104,  104,  104,  104,  104,  104,  104,  104,  104,  104,
3143       104,  104,  104,  104,  888,  104,  104,  104,  104,  104,
3144       147,  147,  147,  148,  148,  148,  151,  151,  151,  657,
3145       152,  152,  152, 1601, 1603,  500,  147,  980, 1608,  148,
3146       657, 1611,  151,  657,  104,  104,  152,  104,  500,  104,
3147       500,  523,  523,  523,  980,  104,  531,  531,  531,  534,
3148       534,  534,  104, 1612, 1079,  104,  113,  113,  113,  113,
3149       113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
3150
3151       113, 1079,  113,  113,  113,  113,  113,  153,  153,  153,
3152       154,  154,  154,  157,  157,  157, 1614,  158,  158,  158,
3153       159,  159,  159,  153, 1620, 1623,  154,  532,  546,  157,
3154      1626,  113,  113,  158,  532,  546,  159,  113,  545,  545,
3155       545, 1627,  113,  532,  546,  548,  548,  548,  556,  556,
3156       556,  560,  560,  560,  113,  114,  114,  114,  114,  114,
3157       114,  114,  114,  114,  114,  114,  114,  114,  114,  114,
3158      1628,  114,  114,  114,  114,  114,  160,  160,  160,  161,
3159       161,  161,  162,  162,  162, 1629,  163,  163,  163,  164,
3160       164,  164,  160, 1630, 1631,  161,  569,  661,  162, 1632,
3161
3162       114,  114,  163,  569,  661,  164,  114,  568,  568,  568,
3163       661,  114,  569,  571,  571,  571,  581,  581,  581,  585,
3164       585,  585, 1633,  114,  117,  117,  117,  117,  117,  117,
3165       117,  117,  117,  117,  117,  117,  117,  117,  117, 1635,
3166       117,  117,  117,  117,  117,  165,  165,  165,  166,  166,
3167       166,  167,  167,  167,  790,  168,  168,  168,  169,  169,
3168       169,  165,  793, 1636,  166,  790, 1638,  167,  790,  117,
3169       117,  168, 1639,  793,  169, 1642,  793,  117,  118,  118,
3170       118,  118,  118,  118,  118,  118,  118,  118,  118,  118,
3171       118,  118,  118, 1643,  118,  118,  118,  118,  118,  170,
3172
3173       170,  170,  171,  171,  171,  172,  172,  172, 1645,  173,
3174       173,  173,  174,  174,  174,  170, 1133, 1326,  171, 1647,
3175      1650,  172, 1619,  118,  118,  173, 1651, 1652,  174, 1133,
3176      1326,  118,  127,  127,  127,  127,  127,  127,  127,  127,
3177       127,  127,  127,  127,  127,  127,  127, 1619,  127,  127,
3178       127,  127,  127,  175,  175,  175,  176,  176,  176,  179,
3179       179,  179, 1653,  180,  180,  180,  181,  181,  181,  175,
3180      1654, 1656,  176,  608, 1657,  179, 1661,  127,  127,  180,
3181       608,  127,  181,  595,  595,  595, 1669, 1673,  127,  608,
3182      1674,  127,  600,  600,  600,  611,  611,  611,  127,  128,
3183
3184       128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
3185       128,  128,  128,  128, 1706,  128,  128,  128,  128,  128,
3186       182,  182,  182,  183,  183,  183,  184,  184,  184, 1707,
3187       185,  185,  185,  186,  186,  186,  182, 1714, 1725,  183,
3188       621, 1726,  184, 1727,  128,  128,  185,  621,  128,  186,
3189       620,  620,  620, 1728, 1730,  128,  621, 1738,  128,  622,
3190       622,  622,  631,  631,  631,  128,  137,  137,  137,  137,
3191       137,  137,  137,  137,  137,  137,  137,  137,  137,  137,
3192       137, 1740,  137,  137,  137,  137,  137,  189,  189,  189,
3193       190,  190,  190,  193,  193,  193, 1744,  194,  194,  194,
3194
3195       197,  197,  197,  189, 1747, 1749,  190,  667, 1750,  193,
3196      1752,  137,  137,  194,  667, 1753,  197,  137, 1754, 1755,
3197       667,  631,  137,  138,  138,  138,  138,  138,  138,  138,
3198       138,  138,  138,  138,  138,  138,  138,  138, 1759,  138,
3199       138,  138,  138,  138,  198,  198,  198,  199,  199,  199,
3200       200,  200,  200, 1760,  201,  201,  201,  202,  202,  202,
3201       198, 1761, 1763,  199,  791,  794,  200, 1767,  138,  138,
3202       201,  791,  794,  202,  138, 1771, 1775,  791,  794,  138,
3203       141,  141,  141,  141,  141,  141,  141,  141,  141,  141,
3204       141,  141,  141,  141,  141, 1777,  141,  141,  141,  141,
3205
3206       141,  203,  203,  203,  204,  204,  204,  207,  207,  207,
3207      1779,  208,  208,  208,  211,  211,  211,  203,  948, 1785,
3208       204, 1792, 1796,  207, 1797,  141,  141,  208,  948, 1799,
3209       211,  212,  212,  212, 1811,  948,  141,  865,  865,  865,
3210      1812,  865, 1113, 1113, 1113, 1813, 1815,  212, 1806,  141,
3211       142,  142,  142,  142,  142,  142,  142,  142,  142,  142,
3212       142,  142,  142,  142,  142, 1806,  142,  142,  142,  142,
3213       142,  213,  213,  213,  214,  214,  214,  215,  215,  215,
3214      1808,  216,  216,  216,  217,  217,  217,  213, 1801, 1814,
3215       214, 1816, 1818,  215, 1801,  142,  142,  216, 1801, 1819,
3216
3217       217,  218,  218,  218, 1801, 1814,  142,  874,  874,  874,
3218      1820,  874, 1821, 1808,  874, 1823, 1807,  218, 1824,  142,
3219       145,  145,  145,  145,  145,  145,  145,  145,  145,  145,
3220       145,  145,  145,  145,  145, 1828,  145,  145,  145,  145,
3221       145,  221,  221,  221,  222,  222,  222,  223,  223,  223,
3222      1830,  224,  224,  224,  225,  225,  225,  221, 1807, 1831,
3223       222, 1832, 1834,  223, 1835,  145,  145,  224, 1836, 1833,
3224       225, 1134, 1134, 1134, 1433, 1433, 1433, 1837,  878,  878,
3225       878,  145,  897,  897,  897, 1833,  145,  146,  146,  146,
3226       146,  146,  146,  146,  146,  146,  146,  146,  146,  146,
3227
3228       146,  146, 1840,  146,  146,  146,  146,  146,  226,  226,
3229       226,  227,  227,  227,  228,  228,  228, 1438, 1438, 1438,
3230      1433,  639,  639,  639,  226, 1842, 1847,  227, 1849, 1854,
3231       228, 1877,  146,  146,  231,  231,  232,  232,  639,  231,
3232       425,  232,  878,  909,  909,  909,  897, 1878,  146,  231,
3233       425,  232, 1879,  146,  149,  149,  149,  149,  149,  149,
3234       149,  149,  149,  149,  149,  149,  149,  149,  149, 1883,
3235       149,  149,  149,  149,  149,  235,  235,  235,  231,  425,
3236       232,  236,  236,  236, 1884,  425, 1890, 1891,  686,  686,
3237       686,  235,  425,  876,  876,  876,  425,  236,  279,  149,
3238
3239       149, 1894,  149,  149,  149,  686, 1895,  909,  279, 1901,
3240       149,  876, 1907,  149,  991,  991,  991, 1441, 1441, 1441,
3241       149,  150,  150,  150,  150,  150,  150,  150,  150,  150,
3242       150,  150,  150,  150,  150,  150,  279,  150,  150,  150,
3243       150,  150,  702,  702,  702,  703,  703,  703, 1909, 1910,
3244       279, 1913,  279, 1919,  279,  713,  713,  713, 1921,  702,
3245      1927, 1931,  703,  916,  916,  916,  150,  150, 1934,  150,
3246       150,  150,  713, 1446, 1446, 1446, 1938,  150,  991, 1940,
3247       150,  916, 1435, 1435, 1435, 1941, 1942,  150,  155,  155,
3248       155,  155,  155,  155,  155,  155,  155,  155,  155,  155,
3249
3250       155,  155,  155, 1943,  155,  155,  155,  155,  155,  715,
3251       715,  715,  729,  729,  729,  735,  735,  735,  744,  744,
3252       744,  745,  745,  745, 1945, 1951,  715, 1953, 1435,  729,
3253      1955, 1957,  735,  155,  155,  744, 1970, 1971,  745,  755,
3254       755,  755,  924,  924,  924, 1972,  924, 1975, 1976,  924,
3255      1978, 1452, 1452, 1452, 1979, 1980,  755,  155,  156,  156,
3256       156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
3257       156,  156,  156, 1982,  156,  156,  156,  156,  156,  763,
3258       763,  763,  767,  767,  767,  780,  780,  780,  806,  806,
3259       806,  812,  812,  812, 1987, 1993,  763, 1452, 1977,  767,
3260
3261      1987, 1994,  780,  156,  156,  806, 1977, 1981,  812,  829,
3262       829,  829,  938,  938,  938, 1981,  938, 1995, 1989,  938,
3263      1996, 1454, 1454, 1454, 2000, 2002,  829,  156,  177,  177,
3264       177,  177,  177,  177,  177,  177,  177,  177,  177,  177,
3265       177,  177,  177, 2003,  177,  177,  177,  177,  177,  835,
3266       835,  835,  841,  841,  841,  849,  849,  849,  873,  873,
3267       873,  912,  912,  912, 1989, 2004,  835, 1454, 2009,  841,
3268      2011, 2012,  849,  177,  177,  873, 2013, 2016,  912, 1988,
3269      2020,  177, 2027,  177, 2029, 2031,  177, 1455, 1455, 1455,
3270       177, 1634, 1634, 1634,  177,  178,  178,  178,  178,  178,
3271
3272       178,  178,  178,  178,  178,  178,  178,  178,  178,  178,
3273      1988,  178,  178,  178,  178,  178, 2055,  877,  877,  877,
3274       914,  914,  914, 2056,  920,  920,  920,  913,  913,  913,
3275       915,  915,  915, 1802, 2057,  877, 2063,  914, 2064, 1802,
3276       178,  178,  920, 1802,  913, 2068, 2072,  915,  178, 1802,
3277       178, 2073, 2077,  178,  877, 2080, 2083,  178, 1637, 1637,
3278      1637,  178,  187,  187,  187,  187,  187,  187,  187,  187,
3279       187,  187,  187,  187,  187,  187,  187,  913,  187,  187,
3280       187,  187,  187,  917,  917,  917,  923,  923,  923,  915,
3281      2084, 2085,  913,  921,  921,  921,  926,  926,  926, 2086,
3282
3283      2089,  917, 2092,  923,  928,  928,  928,  187,  187, 2096,
3284      2097,  921, 2098, 2110,  926,  940,  940,  940,  187,  940,
3285       917,  928,  940,  950,  950,  950, 2111,  950, 2114, 2116,
3286       950,  187,  188,  188,  188,  188,  188,  188,  188,  188,
3287       188,  188,  188,  188,  188,  188,  188, 2119,  188,  188,
3288       188,  188,  188,  927,  927,  927, 2126,  921,  930,  930,
3289       930,  931,  931,  931,  932,  932,  932,  929,  929,  929,
3290      2133,  927,  933,  933,  933,  930, 2135,  188,  188,  931,
3291      2136, 2137,  932, 2142,  929, 1640, 1640, 1640,  188,  933,
3292       953,  953,  953, 2143,  953, 2144, 2145,  953, 2146, 2147,
3293
3294       927,  188,  191,  191,  191,  191,  191,  191,  191,  191,
3295       191,  191,  191,  191,  191,  191,  191,  929,  191,  191,
3296       191,  191,  191,  934,  934,  934,  935,  935,  935,  937,
3297       937,  937,  929, 2148, 2149,  932,  936,  936,  936, 2150,
3298       934,  946,  946,  946,  935, 2151,  937,  191,  191,  939,
3299       939,  939, 2162, 2163,  936, 2154,  191, 2166,  191,  946,
3300      2169, 2173,  191, 1641, 1641, 1641,  939,  191,  191,  192,
3301       192,  192,  192,  192,  192,  192,  192,  192,  192,  192,
3302       192,  192,  192,  192, 2174,  192,  192,  192,  192,  192,
3303      2177,  941,  941,  941, 2178,  949,  949,  949, 2154,  942,
3304
3305       942,  942,  943,  943,  943, 2181, 2184,  936,  941,  944,
3306       944,  944,  949, 2185,  192,  192,  942, 2186, 2201,  943,
3307       967,  967,  967,  192,  967,  192,  944,  967, 2155,  192,
3308      1471, 1471, 1471, 2202,  192,  192,  195,  195,  195,  195,
3309       195,  195,  195,  195,  195,  195,  195,  195,  195,  195,
3310       195,  942,  195,  195,  195,  195,  195,  943, 2208, 2209,
3311       944, 2215, 2216,  952,  952,  952,  945,  945,  945,  954,
3312       954,  954,  964,  964,  964, 2155, 1471,  947,  947,  947,
3313       952,  195,  195,  945, 2217, 2231,  954,  195, 2203, 2232,
3314       964, 2233,  974,  974,  974,  947,  974, 2254, 2203,  974,
3315
3316      2255, 2261,  195,  196,  196,  196,  196,  196,  196,  196,
3317       196,  196,  196,  196,  196,  196,  196,  196,  945,  196,
3318       196,  196,  196,  196,  947, 2266, 2268,  965,  965,  965,
3319       966,  966,  966,  968,  968,  968, 2269,  969,  969,  969,
3320       973,  973,  973, 2274, 2275,  965, 2276,  966,  196,  196,
3321      2277,  968, 2278, 2279,  196,  969, 2280,  973,  983,  983,
3322       983, 2281,  983, 2282, 2283,  983, 1644, 1644, 1644,  196,
3323       205,  205,  205,  205,  205,  205,  205,  205,  205,  205,
3324       205,  205,  205,  205,  205,  965,  205,  205,  205,  205,
3325       205,  978,  978,  978,  979,  979,  979, 2288,  969, 2289,
3326
3327       982,  982,  982, 2291,  984,  984,  984, 2157, 2157,  978,
3328      2157, 2292,  979, 2293, 2294,  205,  205,  982, 2157, 2296,
3329       205,  984, 1649, 1649, 1649, 2157,  205,  206,  206,  206,
3330       206,  206,  206,  206,  206,  206,  206,  206,  206,  206,
3331       206,  206, 2287,  206,  206,  206,  206,  206, 2286,  985,
3332       985,  985, 2297,  985, 2300,  979,  985,  986,  986,  986,
3333       987,  987,  987,  989,  989,  989, 2301,  994,  994,  994,
3334      2304,  994,  206,  206,  994,  986, 2306,  206,  987, 2287,
3335      2286,  989, 2307,  206,  209,  209,  209,  209,  209,  209,
3336       209,  209,  209,  209,  209,  209,  209,  209,  209, 2309,
3337
3338       209,  209,  209,  209,  209, 2310, 2312,  990,  990,  990,
3339       993,  993,  993,  998,  998,  998, 2313, 2290,  999,  999,
3340       999,  987, 1001, 1001, 1001,  990, 2290,  993, 2295,  209,
3341       209,  998,  209, 2314,  209, 2326,  999, 2295, 2327, 1001,
3342       209, 1002, 1002, 1002, 2328, 1002, 2329, 2332, 1002, 2333,
3343      2339,  209,  210,  210,  210,  210,  210,  210,  210,  210,
3344       210,  210,  210,  210,  210,  210,  210,  990,  210,  210,
3345       210,  210,  210,  999, 1003, 1003, 1003, 1005, 1005, 1005,
3346      2340, 1008, 1008, 1008, 2347, 2348, 1004, 1004, 1004, 1006,
3347      1006, 1006, 1003, 1006, 1005, 2349, 1006,  210,  210, 1008,
3348
3349       210, 2357,  210, 2358, 1004, 1018, 1018, 1018,  210, 1018,
3350      2375, 2376, 1018, 1648, 1648, 1648, 1655, 1655, 1655,  210,
3351       219,  219,  219,  219,  219,  219,  219,  219,  219,  219,
3352       219,  219,  219,  219,  219, 2377,  219,  219,  219,  219,
3353       219, 1004, 1012, 1012, 1012, 1017, 1017, 1017, 2380, 1009,
3354      1009, 1009, 2382, 1013, 1013, 1013, 1019, 1019, 1019, 1648,
3355      1012, 2383, 1017, 2384, 2385,  219,  219, 1009, 2386, 2387,
3356       219, 1013, 2388, 1019, 2389, 2390,  219, 1040, 1040, 1040,
3357       219, 1040, 2391, 2392, 1040, 2393,  219,  220,  220,  220,
3358       220,  220,  220,  220,  220,  220,  220,  220,  220,  220,
3359
3360       220,  220, 2398,  220,  220,  220,  220,  220, 2399, 2395,
3361      1009, 1022, 1022, 1022, 1013, 1658, 1658, 1658, 1023, 1023,
3362      1023, 1026, 1026, 1026, 1027, 1027, 1027, 2400, 2401, 1022,
3363      2402, 2403,  220,  220, 2404, 2405, 1023,  220, 2397, 1026,
3364      2406, 2407, 1027,  220, 1046, 1046, 1046,  220, 1046, 2395,
3365      2408, 1046, 2409,  220,  229,  229,  229,  229,  229,  229,
3366       229,  229,  229,  229,  229,  229,  229,  229,  229, 1023,
3367       229,  229,  229,  229,  229, 1036, 1036, 1036, 1037, 1037,
3368      1037, 2397, 1027, 2410, 1039, 1039, 1039, 1042, 1042, 1042,
3369      1043, 1043, 1043, 1036, 2411, 2414, 1037, 2415, 2416,  229,
3370
3371       229, 1039, 1062, 1062, 1062, 1042, 1062,  229, 1043, 1062,
3372       229, 2417, 1646, 1646, 1646, 2419, 2420,  229,  230,  230,
3373       230,  230,  230,  230,  230,  230,  230,  230,  230,  230,
3374       230,  230,  230, 2431,  230,  230,  230,  230,  230, 1045,
3375      1045, 1045, 1037, 1047, 1047, 1047, 2432, 2434, 1049, 1049,
3376      1049, 1053, 1053, 1053, 1043, 2438, 1045, 1054, 1054, 1054,
3377      1047, 2439, 2440,  230,  230, 1049, 1068, 1068, 1068, 1053,
3378      1068,  230, 2442, 1068,  230, 1054, 1646, 1659, 1659, 1659,
3379      2443,  230,  233,  233,  233,  233,  233,  233,  233,  233,
3380       233,  233,  233,  233,  233,  233,  233, 2445,  233,  233,
3381
3382       233,  233,  233, 2446, 1054, 1055, 1055, 1055, 1056, 1056,
3383      1056, 2396, 1057, 1057, 1057, 1058, 1058, 1058, 1059, 1059,
3384      1059, 2454, 1055, 2455, 2441, 1056, 2456,  233,  233, 1057,
3385      1061, 1061, 1061, 1058,  233, 2441, 1059, 1074, 1074, 1074,
3386       233, 1074, 2468, 2487, 1074, 2488, 2492, 1061, 2396,  233,
3387       234,  234,  234,  234,  234,  234,  234,  234,  234,  234,
3388       234,  234,  234,  234,  234, 2493,  234,  234,  234,  234,
3389       234, 1057, 1063, 1063, 1063, 1064, 1064, 1064, 2444, 1059,
3390      1067, 1067, 1067, 1070, 1070, 1070, 1071, 1071, 1071, 2444,
3391      1063, 2494, 2495, 1064, 2496,  234,  234, 1067, 1073, 1073,
3392
3393      1073, 1070,  234, 2497, 1071, 1077, 1077, 1077,  234, 1078,
3394      1078, 1078, 1081, 1081, 1081, 1073, 2498,  234,  276, 1662,
3395      1662, 1662, 2499, 1077, 2500,  276, 2501, 1078, 2503, 1081,
3396      1085, 1085, 1085, 2506,  276,  276, 1064, 1082, 1082, 1082,
3397      2507, 1082, 2508, 2509, 1082, 1716, 1716, 1716, 1085, 1086,
3398      1086, 1086, 1071, 1091, 1091, 1091, 2460, 2503, 1092, 1092,
3399      1092, 2510,  276,  276,  276, 1662, 2460, 1086, 2504,  276,
3400       276, 1091, 2460,  276,  276, 1078, 1092,  276, 2511,  276,
3401       276,  276,  278, 1105, 1105, 1105, 2512, 1105, 2513, 2514,
3402      1105, 1109, 1109, 1109, 1110, 1110, 1110, 2515,  278,  278,
3403
3404      1112, 1112, 1112, 1149, 1149, 1149, 1153, 1153, 1153, 1109,
3405      2504, 2482, 1110, 1086, 1156, 1156, 1156, 2505, 1112, 2516,
3406      1149, 2482, 1092, 1153, 2482, 2517,  278,  278,  278, 1817,
3407      1817, 1817, 1156,  278,  278, 2518, 2521,  278,  278, 2483,
3408      2522,  278, 2523,  278,  278,  278, 1150, 1150, 1150, 2483,
3409      1150, 2525, 2483, 1150, 1154, 1154, 1154, 2526, 1154, 2505,
3410      2531, 1154, 1157, 1157, 1157, 1159, 1159, 1159, 1162, 1162,
3411      1162, 1163, 1163, 1163, 1165, 1165, 1165, 1167, 1167, 1167,
3412      1157, 1167, 2536, 1159, 1167, 2537, 1162, 2538, 2539, 1163,
3413      2540, 2541, 1165, 1171, 1171, 1171, 1172, 1172, 1172, 1174,
3414
3415      1174, 1174, 1175, 1175, 1175, 1176, 1176, 1176, 2335, 1176,
3416      2335, 1171, 1176, 2542, 1172, 2543, 2544, 1174, 2545, 1175,
3417      1179, 1179, 1179, 2335, 1180, 1180, 1180, 1165, 1180, 1159,
3418      2546, 1180, 1181, 1181, 1181, 2554, 2556, 1179, 1182, 1182,
3419      1182, 1184, 1184, 1184, 1185, 1185, 1185, 2560, 1174, 2561,
3420      1181, 1186, 1186, 1186, 2562, 1186, 1182, 2563, 1186, 1184,
3421      2564, 1185, 1187, 1187, 1187, 1188, 1188, 1188, 2565, 1188,
3422      2567, 2579, 1188, 1189, 1189, 1189, 1190, 1190, 1190, 1187,
3423      1192, 1192, 1192, 1193, 1193, 1193, 2336, 1193, 2336, 2580,
3424      1193, 1189, 2582, 2583, 1190, 1196, 1196, 1196, 1192, 1196,
3425
3426      2574, 2336, 1196, 1184, 1199, 1199, 1199, 1200, 1200, 1200,
3427      2596, 1200, 2597, 2574, 1200, 1205, 1205, 1205, 1206, 1206,
3428      1206, 1199, 1208, 1208, 1208, 1212, 1212, 1212, 2575, 1212,
3429      2598, 2599, 1212, 1205, 2601, 2581, 1206, 1215, 1215, 1215,
3430      1208, 2575, 1192, 1216, 1216, 1216, 2602, 1216, 2581, 2603,
3431      1216, 1219, 1219, 1219, 1215, 1220, 1220, 1220, 2604, 1220,
3432      2607, 2610, 1220, 1230, 1230, 1230, 2158, 2158, 1219, 2158,
3433      1208, 1231, 1231, 1231, 1233, 1233, 1233, 2158, 1234, 1234,
3434      1234, 1230, 1234, 2611, 2158, 1234, 1237, 1237, 1237, 1231,
3435      2584, 2612, 1233, 1238, 1238, 1238, 1240, 1240, 1240, 1243,
3436
3437      1243, 1243, 2613, 2584, 1237, 1244, 1244, 1244, 2607, 1244,
3438      2614, 1238, 1244, 2608, 1240, 2615, 1243, 1250, 1250, 1250,
3439      1251, 1251, 1251, 2461, 1253, 1253, 1253, 1255, 1255, 1255,
3440      1256, 1256, 1256, 2461, 1256, 1250, 2616, 1256, 1251, 2461,
3441      2617, 1233, 1253, 2618, 1255, 1259, 1259, 1259, 2608, 1259,
3442      2619, 2620, 1259, 1262, 1262, 1262, 1240, 1263, 1263, 1263,
3443      1265, 1265, 1265, 1266, 1266, 1266, 1267, 1267, 1267, 2621,
3444      2622, 1262, 1268, 1268, 1268, 1263, 2625, 2626, 1265, 2629,
3445      1266, 1270, 1270, 1270, 1267, 1278, 1278, 1278, 2635, 1253,
3446      1268, 1272, 1272, 1272, 2643, 1272, 2644, 2645, 1272, 1270,
3447
3448      1279, 1279, 1279, 1278, 1281, 1281, 1281, 1283, 1283, 1283,
3449      2646, 1283, 2647, 2631, 1283, 1286, 1286, 1286, 1279, 1287,
3450      1287, 1287, 1281, 2631, 2648, 1265, 1289, 1289, 1289, 2632,
3451      1270, 2649, 2650, 1286, 1290, 1290, 1290, 1287, 1290, 2632,
3452      2651, 1290, 2652, 2653, 1289, 1294, 1294, 1294, 1295, 1295,
3453      1295, 1297, 1297, 1297, 1298, 1298, 1298, 1299, 1299, 1299,
3454      1300, 1300, 1300, 1294, 1281, 2657, 1295, 2660, 2661, 1297,
3455      2662, 1298, 2663, 2664, 1299, 1301, 1301, 1301, 1300, 1303,
3456      1303, 1303, 2665, 1308, 1308, 1308, 1289, 1308, 2666, 2669,
3457      1308, 2673, 2674, 1301, 1311, 1311, 1311, 1303, 1312, 1312,
3458
3459      1312, 1297, 1312, 2675, 1299, 1312, 1315, 1315, 1315, 2676,
3460      2677, 1311, 1316, 1316, 1316, 1318, 1318, 1318, 1321, 1321,
3461      1321, 1322, 1322, 1322, 1315, 1324, 1324, 1324, 2678, 2679,
3462      1316, 2680, 2681, 1318, 2682, 2683, 1321, 2684, 2700, 1322,
3463      1329, 1329, 1329, 1324, 2701, 2702, 1303, 1333, 1333, 1333,
3464      1334, 1334, 1334, 1336, 1336, 1336, 2703, 1329, 2704, 2687,
3465      1338, 1338, 1338, 2705, 1338, 1333, 1318, 1338, 1334, 2687,
3466      2706, 1336, 1324, 1342, 1342, 1342, 1343, 1343, 1343, 1345,
3467      1345, 1345, 1347, 1347, 1347, 2688, 1347, 2707, 2713, 1347,
3468      2714, 1342, 2715, 2718, 1343, 2688, 2719, 1345, 1350, 1350,
3469
3470      1350, 1351, 1351, 1351, 2720, 1351, 2721, 2724, 1351, 1352,
3471      1352, 1352, 2731, 2732, 1336, 1350, 1353, 1353, 1353, 2733,
3472      1354, 1354, 1354, 2709, 1354, 2734, 1352, 1354, 1356, 1356,
3473      1356, 2738, 2746, 1353, 1358, 1358, 1358, 1359, 1359, 1359,
3474      1345, 1361, 1361, 1361, 2747, 1356, 1362, 1362, 1362, 1363,
3475      1363, 1363, 1358, 1363, 2748, 1359, 1363, 2709, 2749, 1361,
3476      1364, 1364, 1364, 1362, 1365, 1365, 1365, 2750, 1365, 2751,
3477      2752, 1365, 1367, 1367, 1367, 2753, 2754, 1364, 1368, 1368,
3478      1368, 1370, 1370, 1370, 1372, 1372, 1372, 2755, 1372, 2761,
3479      1367, 1372, 1375, 1375, 1375, 2762, 1368, 2764, 2765, 1370,
3480
3481      2767, 1361, 1376, 1376, 1376, 1378, 1378, 1378, 2768, 2769,
3482      1375, 1381, 1381, 1381, 2770, 1381, 2771, 2772, 1381, 2773,
3483      1376, 2774, 2775, 1378, 1385, 1385, 1385, 1386, 1386, 1386,
3484      2776, 1388, 1388, 1388, 1390, 1390, 1390, 2777, 1390, 2778,
3485      2779, 1390, 1385, 2782, 2783, 1386, 2784, 2785, 1370, 1388,
3486      1394, 1394, 1394, 1395, 1395, 1395, 1396, 1396, 1396, 1398,
3487      1398, 1398, 1400, 1400, 1400, 2793, 2794, 1394, 1404, 1404,
3488      1404, 1395, 1378, 2796, 1396, 2797, 2798, 1398, 2800, 1400,
3489      1401, 1401, 1401, 2808, 1401, 1404, 2809, 1401, 1406, 1406,
3490      1406, 2811, 1388, 1407, 1407, 1407, 1409, 1409, 1409, 1411,
3491
3492      1411, 1411, 2812, 1413, 1413, 1413, 1406, 1414, 1414, 1414,
3493      2813, 1407, 2815, 2820, 1409, 2821, 1411, 1416, 1416, 1416,
3494      1398, 1413, 1418, 1418, 1418, 1414, 1424, 1424, 1424, 1404,
3495      1461, 1461, 1461, 2802, 1461, 1416, 2822, 1461, 2823, 2825,
3496      1418, 1418, 2829, 1409, 1424, 1466, 1466, 1466, 2830, 1466,
3497      2832, 2833, 1466, 1470, 1470, 1470, 1472, 1472, 1472, 1473,
3498      1473, 1473, 2834, 2836, 1416, 1476, 1476, 1476, 1477, 1477,
3499      1477, 1470, 1477, 1472, 2837, 1477, 2802, 1473, 1482, 1482,
3500      1482, 2842, 1482, 1476, 2843, 1482, 1485, 1485, 1485, 1486,
3501      1486, 1486, 2844, 1486, 2845, 2846, 1486, 2847, 1489, 1489,
3502
3503      1489, 2848, 1489, 2849, 1485, 1489, 1492, 1492, 1492, 1493,
3504      1493, 1493, 2850, 1493, 1470, 2851, 1493, 1498, 1498, 1498,
3505      2852, 2853, 1476, 2854, 1492, 2855, 1473, 1500, 1500, 1500,
3506      1501, 1501, 1501, 1485, 1498, 1502, 1502, 1502, 1503, 1503,
3507      1503, 1504, 1504, 1504, 2856, 1500, 2857, 1501, 1509, 1509,
3508      1509, 2858, 1502, 1492, 2862, 1503, 2863, 2864, 1504, 1505,
3509      1505, 1505, 2865, 1505, 2868, 1509, 1505, 1506, 1506, 1506,
3510      2869, 1506, 2870, 2871, 1506, 1510, 1510, 1510, 1511, 1511,
3511      1511, 2872, 1500, 2873, 2882, 1503, 1512, 1512, 1512, 1513,
3512      1513, 1513, 1510, 2875, 2878, 1511, 1514, 1514, 1514, 1509,
3513
3514      2883, 1502, 2885, 1512, 2886, 2878, 1513, 1515, 1515, 1515,
3515      1516, 1516, 1516, 1514, 1517, 1517, 1517, 1518, 1518, 1518,
3516      2888, 2877, 1510, 2890, 1515, 2893, 2899, 1516, 1519, 1519,
3517      1519, 1517, 2900, 1512, 1518, 2877, 1520, 1520, 1520, 2875,
3518      1523, 1523, 1523, 1524, 1524, 1524, 1519, 1524, 1511, 2902,
3519      1524, 2903, 2905, 1513, 1520, 2916, 1514, 1523, 1526, 1526,
3520      1526, 1528, 1528, 1528, 1530, 1530, 1530, 1531, 1531, 1531,
3521      2918, 1531, 2920, 2921, 1531, 1526, 1517, 2895, 1518, 1528,
3522      1516, 1530, 1532, 1532, 1532, 1533, 1533, 1533, 1520, 2895,
3523      1534, 1534, 1534, 1519, 1534, 2924, 2925, 1534, 2928, 2930,
3524
3525      1532, 2932, 1533, 1535, 1535, 1535, 1540, 1540, 1540, 2934,
3526      1542, 1542, 1542, 1543, 1543, 1543, 2935, 1544, 1544, 1544,
3527      2937, 1535, 2938, 2944, 1540, 2943, 2943, 1528, 1542, 2896,
3528      1543, 2945, 1545, 1545, 1545, 1544, 1546, 1546, 1546, 2910,
3529      1546, 2896, 2945, 1546, 1548, 1548, 1548, 2911, 1532, 1545,
3530      2941, 2910, 1550, 1550, 1550, 2946, 1556, 1556, 1556, 2911,
3531      2949, 1535, 1548, 1540, 1558, 1558, 1558, 1542, 1544, 1550,
3532      1553, 1553, 1553, 1556, 1553, 2942, 2950, 1553, 1561, 1561,
3533      1561, 2951, 1558, 1566, 1566, 1566, 1567, 1567, 1567, 2942,
3534      1567, 2941, 2955, 1567, 2952, 2956, 1561, 1571, 1571, 1571,
3535
3536      1566, 1573, 1573, 1573, 1548, 1574, 1574, 1574, 2957, 1576,
3537      1576, 1576, 2952, 1576, 2964, 1571, 1576, 2966, 1573, 1579,
3538      1579, 1579, 2970, 1574, 2958, 1580, 1580, 1580, 1558, 1580,
3539      2971, 2881, 1580, 1581, 1581, 1581, 1579, 1581, 2972, 2958,
3540      1581, 1585, 1585, 1585, 1561, 2963, 1571, 1586, 1586, 1586,
3541      2881, 1586, 2881, 2973, 1586, 1588, 1588, 1588, 1585, 1589,
3542      1589, 1589, 2976, 1589, 2963, 2881, 1589, 1574, 1592, 1592,
3543      1592, 2978, 1592, 1588, 2965, 1592, 1596, 1596, 1596, 1598,
3544      1598, 1598, 1602, 1602, 1602, 1604, 1604, 1604, 2980, 1605,
3545      1605, 1605, 2981, 2965, 1596, 2982, 2983, 1598, 2984, 2985,
3546
3547      1602, 2993, 1604, 2994, 2995, 1588, 1605, 1606, 1606, 1606,
3548      2997, 1606, 2998, 2975, 1606, 1607, 1607, 1607, 1609, 1609,
3549      1609, 1610, 1610, 1610, 2977, 1610, 2999, 3001, 1610, 1613,
3550      1613, 1613, 2975, 1607, 3002, 1609, 1615, 1615, 1615, 1617,
3551      1617, 1617, 1596, 2977, 3003, 1598, 1602, 1613, 1616, 1616,
3552      1616, 3004, 1616, 1615, 3006, 1616, 1617, 1618, 1618, 1618,
3553      3009, 3010, 1621, 1621, 1621, 1660, 1660, 1660, 1663, 1663,
3554      1663, 1664, 1664, 1664, 3011, 1618, 3012, 3013, 1613, 1607,
3555      1621, 1665, 1665, 1665, 1666, 1666, 1666, 1667, 1667, 1667,
3556      1668, 1668, 1668, 1670, 1670, 1670, 3014, 3015, 1665, 3016,
3557
3558      3017, 1666, 3018, 3021, 1667, 3022, 1618, 3023, 1668, 3024,
3559      1670, 3025, 3026, 1621, 1671, 1671, 1671, 3029, 1671, 3030,
3560      3031, 1671, 1672, 1672, 1672, 1675, 1675, 1675, 3032, 1660,
3561      1621, 3033, 1663, 3034, 3036, 1664, 1676, 1676, 1676, 3037,
3562      1672, 3038, 3039, 1675, 1677, 1677, 1677, 1678, 1678, 1678,
3563      3040, 1667, 3041, 1676, 1679, 1679, 1679, 1668, 1680, 1680,
3564      1680, 1677, 1681, 1681, 1681, 1678, 1682, 1682, 1682, 1685,
3565      1685, 1685, 1679, 1675, 3042, 1680, 1684, 1684, 1684, 1681,
3566      3043, 1672, 3044, 1682, 1683, 1683, 1683, 1685, 1683, 3048,
3567      3046, 1683, 3049, 1684, 1686, 1686, 1686, 1687, 1687, 1687,
3568
3569      3050, 1687, 3046, 3051, 1687, 1688, 1688, 1688, 1689, 1689,
3570      1689, 1686, 1678, 3052, 1690, 1690, 1690, 3053, 1690, 1679,
3571      1681, 1690, 1688, 3054, 3056, 1689, 1693, 1693, 1693, 1685,
3572      1694, 1694, 1694, 1695, 1695, 1695, 1696, 1696, 1696, 1697,
3573      1697, 1697, 3047, 1693, 1698, 1698, 1698, 1694, 3061, 2884,
3574      1695, 3062, 3063, 1696, 3047, 3064, 1697, 1699, 1699, 1699,
3575      3065, 1698, 1700, 1700, 1700, 2884, 1700, 2884, 3066, 1700,
3576      3070, 3071, 1689, 3073, 1699, 1701, 1701, 1701, 3075, 1694,
3577      2884, 1702, 1702, 1702, 3078, 1697, 1703, 1703, 1703, 3079,
3578      1693, 3076, 1701, 3080, 1696, 3081, 3082, 1698, 1702, 1704,
3579
3580      1704, 1704, 3083, 1703, 1705, 1705, 1705, 1708, 1708, 1708,
3581      3084, 1708, 3085, 3086, 1708, 3087, 3076, 1704, 1711, 1711,
3582      1711, 3088, 1705, 1712, 1712, 1712, 3089, 3090, 1702, 1713,
3583      1713, 1713, 3091, 1713, 3092, 1711, 1713, 3093, 3094, 1703,
3584      1712, 3095, 1715, 1715, 1715, 1717, 1717, 1717, 3098, 1717,
3585      3099, 3100, 1717, 1720, 1720, 1720, 1724, 1724, 1724, 1705,
3586      1715, 3101, 1721, 1721, 1721, 1704, 1721, 3102, 3103, 1721,
3587      3106, 1720, 3107, 3108, 1724, 1729, 1729, 1729, 1731, 1731,
3588      1731, 1732, 1732, 1732, 1733, 1733, 1733, 3109, 1733, 3110,
3589      3111, 1733, 3108, 1729, 3112, 3113, 1731, 3114, 1732, 1720,
3590
3591      1734, 1734, 1734, 1735, 1735, 1735, 3115, 1735, 3116, 3117,
3592      1735, 1739, 1739, 1739, 1741, 1741, 1741, 3118, 1734, 1743,
3593      1743, 1743, 3119, 1724, 1731, 3120, 1742, 1742, 1742, 1739,
3594      1742, 1741, 3121, 1742, 3122, 3123, 1743, 1745, 1745, 1745,
3595      1746, 1746, 1746, 3124, 1746, 3125, 3126, 1746, 1748, 1748,
3596      1748, 1751, 1751, 1751, 1745, 1756, 1756, 1756, 1734, 1756,
3597      3127, 3128, 1756, 1762, 1762, 1762, 1748, 3129, 3130, 1751,
3598      1764, 1764, 1764, 1766, 1766, 1766, 3131, 1739, 1765, 1765,
3599      1765, 1762, 1765, 3132, 3136, 1765, 3137, 1764, 1768, 1768,
3600      1768, 1766, 1768, 3139, 3140, 1768, 3141, 1772, 1772, 1772,
3601
3602      3143, 1772, 3135, 1751, 1772, 1776, 1776, 1776, 1778, 1778,
3603      1778, 1780, 1780, 1780, 1762, 1781, 1781, 1781, 1782, 1782,
3604      1782, 3144, 3135, 1776, 3145, 3146, 1778, 3147, 3148, 1780,
3605      3149, 3150, 1781, 3151, 3152, 1782, 1783, 1783, 1783, 1784,
3606      1784, 1784, 3153, 1786, 1786, 1786, 3154, 1787, 1787, 1787,
3607      3155, 1787, 3156, 1783, 1787, 3157, 3158, 1784, 3159, 1778,
3608      1786, 3161, 1780, 1788, 1788, 1788, 1776, 1788, 3162, 3164,
3609      1788, 1791, 1791, 1791, 1793, 1793, 1793, 3160, 1793, 3165,
3610      3167, 1793, 3168, 3160, 1782, 3169, 1784, 3170, 3171, 1791,
3611      1798, 1798, 1798, 1800, 1800, 1800, 3172, 1800, 3174, 3175,
3612
3613      1800, 3177, 1803, 1803, 1803, 1804, 1804, 1804, 1798, 1804,
3614      3178, 3180, 1804, 1805, 1805, 1805, 3181, 3184, 1791, 1803,
3615      1810, 1810, 1810, 1822, 1822, 1822, 1825, 1825, 1825, 3186,
3616      3188, 1805, 1826, 1826, 1826, 3189, 3190, 1810, 1827, 1827,
3617      1827, 1798, 1829, 1829, 1829, 1838, 1838, 1838, 1839, 1839,
3618      1839, 1841, 1841, 1841, 1843, 1843, 1843, 3191, 1844, 1844,
3619      1844, 3183, 1844, 3193, 1805, 1844, 1845, 1845, 1845, 3195,
3620      3197, 1843, 1846, 1846, 1846, 3183, 1846, 3199, 3201, 1846,
3621      1848, 1848, 1848, 1845, 1850, 1850, 1850, 3202, 1850, 3203,
3622      3204, 1850, 1853, 1853, 1853, 1855, 1855, 1855, 1848, 1856,
3623
3624      1856, 1856, 1857, 1857, 1857, 3205, 3206, 1858, 1858, 1858,
3625      1853, 1858, 1855, 3207, 1858, 3208, 3209, 1856, 3210, 1857,
3626      1859, 1859, 1859, 1860, 1860, 1860, 3214, 1860, 3216, 3218,
3627      1860, 1861, 1861, 1861, 1862, 1862, 1862, 1859, 1863, 1863,
3628      1863, 3219, 3220, 1853, 3221, 3238, 1848, 3230, 3222, 1861,
3629      3236, 1464, 1862, 3238, 3236, 1863, 3231, 1864, 1864, 1864,
3630      1856, 1864, 3223, 3232, 1864, 1865, 1865, 1865, 1866, 1866,
3631      1866, 1460, 1866, 3233, 1459, 1866, 1869, 1869, 1869, 1870,
3632      1870, 1870, 1865, 1870, 3222, 3234, 1870, 1871, 1871, 1871,
3633      1872, 1872, 1872, 1869, 1872, 3230, 1861, 1872, 3223, 1862,
3634
3635      1875, 1875, 1875, 3235, 3231, 1871, 1876, 1876, 1876, 3242,
3636      1876, 3232, 3244, 1876, 1880, 1880, 1880, 1875, 1881, 1881,
3637      1881, 3233, 1881, 3250, 3329, 1881, 1882, 1882, 1882, 3234,
3638      3245, 1880, 1885, 1885, 1885, 3329, 1885, 3248, 1871, 1885,
3639      1888, 1888, 1888, 1882, 1889, 1889, 1889, 3235, 1889, 3244,
3640      1458, 1889, 1892, 1892, 1892, 1457, 3242, 1888, 1893, 1893,
3641      1893, 1896, 1896, 1896, 1897, 1897, 1897, 3245, 1897, 3250,
3642      1892, 1897, 3248, 1898, 1898, 1898, 1893, 1898, 1896, 3246,
3643      1898, 1902, 1902, 1902, 1904, 1904, 1904, 1905, 1905, 1905,
3644      1906, 1906, 1906, 1908, 1908, 1908, 1911, 1911, 1911, 1902,
3645
3646      1914, 1914, 1914, 1892, 3239, 1905, 3243, 1456, 1906, 3237,
3647      1908, 1893, 3239, 3237, 1911, 1915, 1915, 1915, 1914, 1915,
3648      3246, 3260, 1915, 1918, 1918, 1918, 1920, 1920, 1920, 1922,
3649      1922, 1922, 3254, 1922, 3240, 3241, 1922, 3251, 1453, 1908,
3650      1906, 1918, 3240, 3241, 1920, 1905, 1925, 1925, 1925, 1914,
3651      1926, 1926, 1926, 3243, 1926, 3260, 3247, 1926, 1928, 1928,
3652      1928, 3252, 1928, 1925, 3254, 1928, 1932, 1932, 1932, 1918,
3653      1935, 1935, 1935, 1936, 1936, 1936, 1937, 1937, 1937, 1939,
3654      1939, 1939, 3249, 3251, 1932, 3261, 3262, 1935, 1944, 1944,
3655      1944, 1936, 1946, 1946, 1946, 3253, 1946, 3247, 3252, 1946,
3656
3657      1949, 1949, 1949, 1952, 1952, 1952, 1944, 1954, 1954, 1954,
3658      1956, 1956, 1956, 1958, 1958, 1958, 3263, 3249, 1949, 3261,
3659      1952, 1959, 1959, 1959, 3255, 1954, 3258, 3259, 1956, 3262,
3660      3266, 1958, 3253, 3264, 1936, 1960, 1960, 1960, 1959, 1960,
3661      3256, 1451, 1960, 1961, 1961, 1961, 1962, 1962, 1962, 3256,
3662      1963, 1963, 1963, 1944, 1963, 3257, 3255, 1963, 1450, 3263,
3663      1961, 3258, 3259, 1962, 3257, 3266, 1954, 1964, 1964, 1964,
3664      1965, 1965, 1965, 3280, 1966, 1966, 1966, 1958, 1966, 3264,
3665      3267, 1966, 1969, 1969, 1969, 1964, 1449, 1965, 3284, 1961,
3666      1973, 1973, 1973, 1974, 1974, 1974, 1448, 1983, 1983, 1983,
3667
3668      1969, 1983, 3280, 1447, 1983, 1986, 1986, 1986, 1973, 1445,
3669      1974, 1990, 1990, 1990, 1444, 3267, 1965, 1991, 1991, 1991,
3670      1964, 1991, 3284, 1986, 1991, 1992, 1992, 1992, 1990, 1997,
3671      1997, 1997, 1998, 1998, 1998, 1969, 1999, 1999, 1999, 2001,
3672      2001, 2001, 2005, 2005, 2005, 2006, 2006, 2006, 2007, 2007,
3673      2007, 1986, 2008, 2008, 2008, 2010, 2010, 2010, 2014, 2014,
3674      2014, 2015, 2015, 2015, 2017, 2017, 2017, 2018, 2018, 2018,
3675      2019, 2019, 2019, 2021, 2021, 2021, 3265, 2021, 3268, 3281,
3676      2021, 2024, 2024, 2024, 1443, 2024, 3272, 3269, 2024, 2028,
3677      2028, 2028, 2030, 2030, 2030, 2032, 2032, 2032, 2008, 2033,
3678
3679      2033, 2033, 3274, 2033, 3276, 3275, 2033, 2028, 3281, 3290,
3680      2030, 3268, 2032, 2034, 2034, 2034, 2019, 2035, 2035, 2035,
3681      3269, 2035, 3265, 3272, 2035, 2038, 2038, 2038, 3273, 2038,
3682      3270, 2034, 2038, 2041, 2041, 2041, 2042, 2042, 2042, 3270,
3683      2028, 2043, 2043, 2043, 3274, 2043, 3271, 3275, 2043, 3291,
3684      3276, 2041, 2030, 2041, 2042, 3271, 3290, 2046, 2046, 2046,
3685      2047, 2047, 2047, 1442, 2047, 3273, 3294, 2047, 2051, 2051,
3686      2051, 3278, 2042, 2034, 2046, 2048, 2048, 2048, 3279, 2048,
3687      3282, 3277, 2048, 2052, 2052, 2052, 2051, 2052, 3283, 3282,
3688      2052, 2058, 2058, 2058, 3285, 2058, 3291, 3283, 2058, 2061,
3689
3690      2061, 2061, 2062, 2062, 2062, 3288, 2062, 3294, 3278, 2062,
3691      2065, 2065, 2065, 3288, 2065, 3279, 2061, 2065, 2069, 2069,
3692      2069, 2070, 2070, 2070, 2071, 2071, 2071, 3277, 3285, 2074,
3693      2074, 2074, 3289, 2074, 2051, 2069, 2074, 3286, 1440, 2070,
3694      3289, 3287, 2071, 2078, 2078, 2078, 2079, 2079, 2079, 2081,
3695      2081, 2081, 2082, 2082, 2082, 3295, 2082, 1439, 1437, 2082,
3696      1436, 2078, 1434, 1432, 2079, 3292, 2081, 3293, 2087, 2087,
3697      2087, 2088, 2088, 2088, 2090, 2090, 2090, 2093, 2093, 2093,
3698      1431, 2093, 3320, 3286, 2093, 2070, 2087, 3287, 3296, 2088,
3699      3298, 3320, 2090, 2099, 2099, 2099, 3295, 2079, 2078, 2100,
3700
3701      2100, 2100, 3292, 2100, 3293, 3300, 2100, 2101, 2101, 2101,
3702      2099, 2102, 2102, 2102, 2103, 2103, 2103, 2104, 2104, 2104,
3703      2105, 2105, 2105, 3296, 3297, 2101, 2106, 2106, 2106, 2107,
3704      2107, 2107, 3302, 2088, 2087, 1430, 3298, 2105, 2108, 2108,
3705      2108, 3299, 3300, 2106, 3303, 3304, 2107, 2109, 2109, 2109,
3706      2112, 2112, 2112, 3304, 3301, 2108, 2113, 2113, 2113, 3297,
3707      2113, 3328, 1429, 2113, 3302, 2109, 3310, 2112, 2115, 2115,
3708      2115, 2101, 2117, 2117, 2117, 3328, 3303, 2106, 2120, 2120,
3709      2120, 2121, 2121, 2121, 3305, 2121, 2115, 3299, 2121, 3306,
3710      2117, 3301, 3305, 2107, 3312, 1428, 2120, 2108, 2124, 2124,
3711
3712      2124, 2125, 2125, 2125, 3314, 2125, 3311, 3310, 2125, 2127,
3713      2127, 2127, 2109, 2127, 1427, 2124, 2127, 2130, 2130, 2130,
3714      2131, 2131, 2131, 2132, 2132, 2132, 1426, 2132, 3308, 3312,
3715      2132, 2134, 2134, 2134, 3307, 2130, 3306, 2131, 2138, 2138,
3716      2138, 2140, 2140, 2140, 2141, 2141, 2141, 3311, 2141, 2134,
3717      3314, 2141, 2152, 2152, 2152, 1423, 2138, 1422, 2140, 2153,
3718      2153, 2153, 2156, 2156, 2156, 3308, 2156, 1421, 2130, 2156,
3719      2152, 2159, 2159, 2159, 2160, 2160, 2160, 2153, 2161, 2161,
3720      2161, 3307, 2134, 2164, 2164, 2164, 2165, 2165, 2165, 2167,
3721      2167, 2167, 2168, 2168, 2168, 2170, 2170, 2170, 2171, 2171,
3722
3723      2171, 2152, 2172, 2172, 2172, 2175, 2175, 2175, 2176, 2176,
3724      2176, 2179, 2179, 2179, 2180, 2180, 2180, 2182, 2182, 2182,
3725      2183, 2183, 2183, 2187, 2187, 2187, 2188, 2188, 2188, 2189,
3726      2189, 2189, 2190, 2190, 2190, 2191, 2191, 2191, 3309, 2191,
3727      3315, 2187, 2191, 2194, 2194, 2194, 3313, 2189, 3318, 2190,
3728      2195, 2195, 2195, 2196, 2196, 2196, 2197, 2197, 2197, 3316,
3729      2197, 2194, 1412, 2197, 2200, 2200, 2200, 1410, 2195, 3321,
3730      3319, 2196, 2204, 2204, 2204, 3309, 2204, 1405, 3321, 2204,
3731      3318, 3313, 2200, 2207, 2207, 2207, 3315, 2195, 2210, 2210,
3732      2210, 2212, 2212, 2212, 2194, 2189, 3316, 2211, 2211, 2211,
3733
3734      2207, 2211, 3319, 1399, 2211, 2210, 2213, 2213, 2213, 2212,
3735      2218, 2218, 2218, 3324, 2196, 2219, 2219, 2219, 2220, 2220,
3736      2220, 2224, 2224, 2224, 2213, 2221, 2221, 2221, 2218, 2221,
3737      3317, 3322, 2221, 2219, 1393, 2220, 3323, 3325, 2224, 2225,
3738      2225, 2225, 2226, 2226, 2226, 2227, 2227, 2227, 2228, 2228,
3739      2228, 2229, 2229, 2229, 3326, 1389, 2225, 1384, 1380, 2226,
3740      3327, 3324, 2227, 3322, 2220, 1379, 2228, 3317, 3323, 2229,
3741      2218, 2230, 2230, 2230, 1371, 1366, 2224, 2234, 2234, 2234,
3742      2235, 2235, 2235, 1357, 2235, 3325, 3326, 2235, 2230, 2238,
3743      2238, 2238, 3327, 2226, 2239, 2239, 2239, 2240, 2240, 2240,
3744
3745      2225, 1355, 2241, 2241, 2241, 1346, 2241, 2238, 2228, 2241,
3746      2242, 2242, 2242, 1341, 2240, 2229, 2243, 2243, 2243, 2244,
3747      2244, 2244, 2245, 2245, 2245, 1337, 1332, 2242, 2246, 2246,
3748      2246, 1331, 1330, 2243, 1328, 1327, 2244, 2247, 2247, 2247,
3749      2245, 1325, 2248, 2248, 2248, 1320, 2248, 1319, 2238, 2248,
3750      1314, 2251, 2251, 2251, 2247, 2252, 2252, 2252, 2256, 2256,
3751      2256, 1313, 2258, 2258, 2258, 1307, 2258, 2243, 2251, 2258,
3752      2244, 1306, 1305, 2252, 1304, 1293, 2256, 2262, 2262, 2262,
3753      2263, 2263, 2263, 1282, 2263, 1277, 1276, 2263, 2267, 2267,
3754      2267, 1275, 2271, 2271, 2271, 2262, 2271, 1271, 1254, 2271,
3755
3756      2284, 2284, 2284, 2285, 2285, 2285, 2267, 2298, 2298, 2298,
3757      2299, 2299, 2299, 2302, 2302, 2302, 1249, 2251, 2284, 1248,
3758      1247, 2285, 2303, 2303, 2303, 2305, 2305, 2305, 2308, 2308,
3759      2308, 2311, 2311, 2311, 2267, 2315, 2315, 2315, 2317, 2317,
3760      2317, 2318, 2318, 2318, 1242, 2319, 2319, 2319, 2320, 2320,
3761      2320, 1241, 2320, 2315, 1228, 2320, 2321, 2321, 2321, 2318,
3762      1227, 2284, 2319, 1226, 1225, 2285, 2322, 2322, 2322, 2323,
3763      2323, 2323, 1224, 1223, 2321, 2324, 2324, 2324, 2330, 2330,
3764      2330, 2331, 2331, 2331, 2322, 2331, 1222, 2323, 2331, 1221,
3765      2334, 2334, 2334, 2324, 2334, 2330, 1211, 2334, 2337, 2337,
3766
3767      2337, 2341, 2341, 2341, 2342, 2342, 2342, 2343, 2343, 2343,
3768      2345, 2345, 2345, 2346, 2346, 2346, 2337, 2346, 2341, 1210,
3769      2346, 1209, 2342, 1204, 1203, 2343, 1202, 2345, 1201, 1178,
3770      2322, 2350, 2350, 2350, 1177, 1170, 2323, 2351, 2351, 2351,
3771      2352, 2352, 2352, 1166, 2352, 1161, 1160, 2352, 2350, 2353,
3772      2353, 2353, 1155, 1152, 2351, 2354, 2354, 2354, 2355, 2355,
3773      2355, 2342, 2356, 2356, 2356, 1151, 2356, 2353, 1148, 2356,
3774      2359, 2359, 2359, 2354, 1147, 2355, 2360, 2360, 2360, 2361,
3775      2361, 2361, 2362, 2362, 2362, 1146, 2362, 2359, 1145, 2362,
3776      2365, 2365, 2365, 1144, 2366, 2366, 2366, 2361, 2366, 1143,
3777
3778      1142, 2366, 2367, 2367, 2367, 1141, 1140, 2365, 2368, 2368,
3779      2368, 2369, 2369, 2369, 1139, 1138, 2354, 1137, 1136, 2367,
3780      2371, 2371, 2371, 1135, 1132, 2368, 2372, 2372, 2372, 2369,
3781      2373, 2373, 2373, 1131, 2373, 1130, 1129, 2373, 2374, 2374,
3782      2374, 1127, 1126, 2372, 2378, 2378, 2378, 2381, 2381, 2381,
3783      2394, 2394, 2394, 1125, 1124, 2374, 2412, 2412, 2412, 2413,
3784      2413, 2413, 2378, 1123, 1122, 2381, 1121, 1120, 2394, 2418,
3785      2418, 2418, 2421, 2421, 2421, 1119, 2422, 2422, 2422, 2424,
3786      2424, 2424, 1118, 2424, 1117, 1116, 2424, 1115, 1114, 2421,
3787      2427, 2427, 2427, 2374, 2422, 1108, 2429, 2429, 2429, 2430,
3788
3789      2430, 2430, 2433, 2433, 2433, 2435, 2435, 2435, 2427, 2435,
3790      2394, 1104, 2435, 2381, 2429, 1101, 1100, 2430, 1099, 2433,
3791      2447, 2447, 2447, 2448, 2448, 2448, 2449, 2449, 2449, 1097,
3792      2449, 1093, 1090, 2449, 2450, 2450, 2450, 2447, 1089, 1088,
3793      2448, 2451, 2451, 2451, 1084, 2451, 1083, 1080, 2451, 2457,
3794      2457, 2457, 2450, 1076, 2458, 2458, 2458, 2429, 2458, 1075,
3795      1072, 2458, 2462, 2462, 2462, 2430, 2457, 2459, 2459, 2459,
3796      1069, 2459, 1066, 1065, 2459, 2464, 2464, 2464, 1060, 1052,
3797      2462, 2465, 2465, 2465, 1051, 2465, 1050, 1048, 2465, 2469,
3798      2469, 2469, 1044, 2464, 2470, 2470, 2470, 2471, 2471, 2471,
3799
3800      1041, 2471, 1038, 1035, 2471, 1034, 2469, 2472, 2472, 2472,
3801      1033, 2470, 2474, 2474, 2474, 1032, 2474, 1031, 1030, 2474,
3802      1029, 2477, 2477, 2477, 1028, 2472, 2478, 2478, 2478, 1025,
3803      2478, 1024, 1021, 2478, 2479, 2479, 2479, 2464, 2477, 2480,
3804      2480, 2480, 1020, 2480, 1016, 1014, 2480, 1011, 2481, 2481,
3805      2481, 2479, 2481, 1010, 1007, 2481, 2484, 2484, 2484, 2485,
3806      2485, 2485, 2486, 2486, 2486, 2489, 2489, 2489, 2490, 2490,
3807      2490, 1000,  997, 2484,  996,  995, 2485,  992,  988, 2486,
3808      2491, 2491, 2491, 2489, 2502, 2502, 2502, 2519, 2519, 2519,
3809      2520, 2520, 2520, 2524, 2524, 2524,  981, 2491, 2527, 2527,
3810
3811      2527,  977, 2502, 2528, 2528, 2528,  976, 2528,  975,  972,
3812      2528, 2529, 2529, 2529,  971, 2527,  970, 2484,  963, 2530,
3813      2530, 2530, 2532, 2532, 2532, 2533, 2533, 2533,  962, 2529,
3814       961, 2534, 2534, 2534,  960, 2534, 2489, 2530, 2534, 2532,
3815       959,  958, 2533,  957, 2502, 2535, 2535, 2535, 2547, 2547,
3816      2547, 2548, 2548, 2548,  956, 2548,  955,  951, 2548, 2549,
3817      2549, 2549, 2535, 2549,  925, 2547, 2549, 2552, 2552, 2552,
3818      2530, 2555, 2555, 2555,  922, 2557, 2557, 2557, 2529, 2557,
3819       919,  918, 2557,  911,  910, 2552,  908,  907, 2555, 2566,
3820      2566, 2566, 2568, 2568, 2568, 2569, 2569, 2569,  906, 2569,
3821
3822       905,  904, 2569,  903, 2570, 2570, 2570, 2566, 2570, 2568,
3823       902, 2570, 2573, 2573, 2573,  901, 2573,  900,  899, 2573,
3824      2576, 2576, 2576,  898, 2576,  896,  895, 2576, 2585, 2585,
3825      2585, 2586, 2586, 2586, 2587, 2587, 2587,  894, 2587,  893,
3826       892, 2587, 2588, 2588, 2588, 2585,  891,  890, 2586, 2589,
3827      2589, 2589,  889, 2589,  887,  886, 2589,  885,  884, 2588,
3828      2590, 2590, 2590, 2591, 2591, 2591, 2592, 2592, 2592, 2593,
3829      2593, 2593, 2594, 2594, 2594,  883,  882, 2590,  881,  880,
3830      2591, 2606, 2606, 2606, 2592, 2609, 2609, 2609, 2585, 2594,
3831      2595, 2595, 2595,  879, 2595,  875,  871, 2595,  870, 2606,
3832
3833       869,  868, 2609, 2609, 2623, 2623, 2623, 2624, 2624, 2624,
3834      2627, 2627, 2627, 2628, 2628, 2628, 2630, 2630, 2630,  867,
3835      2630,  863,  861, 2630, 2633, 2633, 2633,  860, 2592, 2634,
3836      2634, 2634, 2606, 2636, 2636, 2636, 2637, 2637, 2637,  859,
3837      2637,  858, 2633, 2637, 2638, 2638, 2638, 2634, 2638,  857,
3838      2636, 2638, 2641, 2641, 2641, 2642, 2642, 2642,  856, 2642,
3839       853,  852, 2642, 2654, 2654, 2654,  850, 2654,  848, 2641,
3840      2654, 2658, 2658, 2658, 2659, 2659, 2659,  845, 2659,  844,
3841       843, 2659, 2667, 2667, 2667, 2670, 2670, 2670, 2658, 2670,
3842      2633,  842, 2670, 2685, 2685, 2685,  840, 2686, 2686, 2686,
3843
3844      2667, 2686,  837,  836, 2686, 2689, 2689, 2689,  834, 2689,
3845      2685,  833, 2689, 2692, 2692, 2692, 2693, 2693, 2693,  830,
3846      2693,  828,  825, 2693, 2694, 2694, 2694, 2695, 2695, 2695,
3847      2692, 2695,  824,  823, 2695, 2696, 2696, 2696, 2697, 2697,
3848      2697, 2694, 2697,  822,  819, 2697, 2708, 2708, 2708, 2710,
3849      2710, 2710,  818, 2696, 2711, 2711, 2711,  817, 2712, 2712,
3850      2712,  816, 2712,  815, 2708, 2712, 2710, 2710, 2725, 2725,
3851      2725, 2711, 2711, 2726, 2726, 2726, 2712, 2727, 2727, 2727,
3852      2728, 2728, 2728, 2729, 2729, 2729, 2696, 2730, 2730, 2730,
3853      2735, 2735, 2735,  814,  813, 2708, 2736, 2736, 2736, 2739,
3854
3855      2739, 2739,  811, 2739,  808,  807, 2739,  803, 2735, 2742,
3856      2742, 2742,  802, 2742, 2736,  801, 2742, 2745, 2745, 2745,
3857      2756, 2756, 2756, 2757, 2757, 2757,  800, 2757,  799,  798,
3858      2757, 2760, 2760, 2760, 2745,  797,  789, 2756, 2780, 2780,
3859      2780, 2735, 2781, 2781, 2781,  788, 2781,  785, 2760, 2781,
3860      2786, 2786, 2786,  784, 2786, 2780,  783, 2786, 2789, 2789,
3861      2789,  782, 2789,  781,  779, 2789, 2792, 2792, 2792, 2801,
3862      2801, 2801, 2803, 2803, 2803, 2804, 2804, 2804,  778, 2804,
3863       777,  774, 2804,  773, 2792,  772,  769, 2801,  768, 2803,
3864      2803,  764,  762, 2804, 2805, 2805, 2805,  759, 2805,  758,
3865
3866       757, 2805, 2816, 2816, 2816, 2817, 2817, 2817, 2818, 2818,
3867      2818,  756, 2805, 2819, 2819, 2819, 2824, 2824, 2824, 2827,
3868      2827, 2827,  754, 2827,  751,  750, 2827,  749, 2826, 2826,
3869      2826, 2828, 2828, 2828, 2824, 2801, 2806, 2806, 2806, 2806,
3870      2806, 2806, 2806, 2806, 2806, 2826,  746, 2806, 2828, 2838,
3871      2838, 2838, 2806, 2806, 2806, 2806, 2806, 2839, 2839, 2839,
3872       743, 2839,  740,  739, 2839,  738, 2838, 2841, 2841, 2841,
3873       737, 2841,  736,  733, 2841, 2840, 2840, 2840, 2866, 2866,
3874      2866, 2806, 2806, 2807, 2807, 2807, 2807, 2807, 2807, 2807,
3875      2807, 2807, 2840,  730, 2807,  726, 2866,  725,  724, 2807,
3876
3877      2807, 2807, 2807, 2807, 2859, 2859, 2859,  723, 2859,  722,
3878       721, 2859, 2874, 2874, 2874, 2876, 2876, 2876,  720, 2876,
3879       719,  718, 2876,  717,  716, 2891, 2891, 2891, 2807, 2807,
3880      2874,  714,  712, 2876, 2879, 2879, 2879, 2879, 2879, 2879,
3881      2879, 2879, 2879, 2891,  709, 2879, 2897, 2897, 2897,  708,
3882      2879, 2879, 2879, 2879, 2879, 2894, 2894, 2894,  707, 2894,
3883       706,  705, 2894, 2897, 2898, 2898, 2898,  704, 2898,  699,
3884       698, 2898, 2939, 2939, 2939, 2947, 2947, 2947,  697, 2879,
3885      2879, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880, 2880,
3886      2939,  694, 2880, 2947, 2947,  693,  692, 2880, 2880, 2880,
3887
3888      2880, 2880, 2906, 2906, 2906,  691, 2906,  688,  687, 2906,
3889      2909, 2909, 2909,  685, 2909,  682,  681, 2909, 2962, 2962,
3890      2962, 2967, 2967, 2967,  678, 2967, 2880, 2880, 2967, 2974,
3891      2974, 2974, 2979, 2979, 2979, 2962, 2992, 2992, 2992, 2996,
3892      2996, 2996, 3007, 3007, 3007,  677, 2974,  676,  675, 2979,
3893       674, 3008, 3008, 3008, 2992, 3008,  673, 2996, 3008, 3007,
3894      3019, 3019, 3019, 3020, 3020, 3020,  665, 3020,  664,  663,
3895      3020, 3027, 3027, 3027, 3028, 3028, 3028, 3019, 3028,  660,
3896       659, 3028, 3035, 3035, 3035, 3045, 3045, 3045, 3027, 3045,
3897      2996,  658, 3045,  655, 3058, 3058, 3058,  653, 3058,  652,
3898
3899      3035, 3058, 3067, 3067, 3067,  649, 3067,  648,  647, 3067,
3900      3200, 3200, 3200, 3211, 3211, 3211,  646, 3211,  643, 3035,
3901      3211, 3330, 3330, 3330, 3331, 3331, 3331,  642, 3200,  641,
3902       640, 3211,  636,  635,  634,  633,  627,  626,  624, 3330,
3903       618,  617, 3331, 3334, 3334, 3334, 3334, 3334, 3334, 3334,
3904      3334, 3334, 3335, 3335, 3335, 3335, 3335, 3335, 3335, 3335,
3905      3335, 3336, 3336, 3336, 3336, 3336, 3336, 3336, 3336, 3336,
3906      3337, 3337, 3337, 3337, 3337, 3337, 3337, 3337, 3337, 3338,
3907      3338, 3338, 3338, 3338, 3338, 3338, 3338, 3338, 3339, 3339,
3908      3339, 3339, 3339, 3339, 3339, 3339, 3339, 3340, 3340, 3340,
3909
3910      3340, 3340, 3340, 3340, 3340, 3340, 3341, 3341, 3341, 3341,
3911      3341, 3341, 3341, 3341, 3341, 3342, 3342, 3342, 3342, 3342,
3912      3342, 3342, 3342, 3342, 3343, 3343, 3343, 3343, 3343, 3343,
3913      3343, 3343, 3343, 3344, 3344, 3344, 3344, 3344, 3344, 3344,
3914      3344, 3344, 3345, 3345, 3345, 3345, 3345, 3345, 3345, 3345,
3915      3345, 3346, 3346, 3346, 3346, 3346, 3346, 3346, 3346, 3346,
3916      3347, 3347, 3347, 3347, 3347, 3347, 3347, 3347, 3347, 3348,
3917      3348, 3348, 3348, 3348, 3348, 3348, 3348, 3348, 3349, 3349,
3918      3349, 3349, 3349, 3349, 3349, 3349, 3349, 3350, 3350, 3350,
3919      3350, 3350, 3350, 3350, 3350, 3350, 3351, 3351, 3351, 3351,
3920
3921      3351, 3351, 3351, 3351, 3351, 3352, 3352, 3352, 3352, 3352,
3922      3352, 3352, 3352, 3352, 3353, 3353, 3353, 3353, 3353, 3353,
3923      3353, 3353, 3353, 3354, 3354, 3354, 3354, 3354, 3354, 3354,
3924      3354, 3354, 3355, 3355, 3355, 3355, 3355, 3355, 3355, 3355,
3925      3355, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356, 3356,
3926      3357, 3357, 3357, 3357, 3357, 3357, 3357, 3357, 3357, 3358,
3927      3358, 3358, 3358, 3358, 3358, 3358, 3358, 3358, 3359, 3359,
3928      3359, 3359, 3359, 3359, 3359, 3359, 3359, 3360, 3360, 3360,
3929      3360, 3360, 3360, 3360, 3360, 3360, 3361, 3361, 3361, 3361,
3930      3361, 3361, 3361, 3361, 3361, 3362, 3362, 3362, 3362, 3362,
3931
3932      3362, 3362, 3362, 3362, 3363, 3363, 3363, 3363, 3363, 3363,
3933      3363, 3363, 3363, 3364, 3364, 3364, 3364, 3364, 3364, 3364,
3934      3364, 3364, 3365, 3365, 3365, 3365, 3365, 3365, 3365, 3365,
3935      3365, 3366, 3366, 3366, 3366, 3366, 3366, 3366, 3366, 3366,
3936      3367, 3367, 3367, 3367, 3367, 3367, 3367, 3367, 3367, 3368,
3937      3368, 3368, 3368, 3368, 3368, 3368, 3368, 3368, 3369, 3369,
3938      3369, 3369, 3369, 3369, 3369, 3369, 3369, 3370, 3370, 3370,
3939      3370, 3370, 3370, 3370, 3370, 3370, 3371, 3371, 3371, 3371,
3940      3371, 3371, 3371, 3371, 3371, 3372, 3372, 3372, 3372, 3372,
3941      3372, 3372, 3372, 3372, 3373, 3373, 3373, 3373, 3373, 3373,
3942
3943      3373, 3373, 3373, 3374, 3374, 3374, 3374, 3374, 3374, 3374,
3944      3374, 3374, 3375, 3375, 3375, 3375, 3375, 3375, 3375, 3375,
3945      3375, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376,
3946      3377, 3377, 3377, 3377, 3377, 3377, 3377, 3377, 3377, 3378,
3947      3378, 3378, 3378, 3378, 3378, 3378, 3378, 3378, 3379, 3379,
3948      3379, 3379, 3379, 3379, 3379, 3379, 3379, 3380, 3380, 3380,
3949      3380, 3380, 3380, 3380, 3380, 3380, 3381, 3381, 3381, 3381,
3950      3381, 3381, 3381, 3381, 3381, 3382, 3382, 3382, 3382, 3382,
3951      3382, 3382, 3382, 3382, 3383, 3383, 3383, 3383, 3383, 3383,
3952      3383, 3383, 3383, 3384, 3384, 3384, 3384, 3384, 3384, 3384,
3953
3954      3384, 3384, 3385, 3385, 3385, 3385, 3385, 3385, 3385, 3385,
3955      3385, 3386, 3386, 3386, 3386, 3386, 3386, 3386, 3386, 3386,
3956      3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3387, 3388,
3957      3388, 3388, 3388, 3388, 3388, 3388, 3388, 3388, 3389, 3389,
3958      3389, 3389, 3389, 3389, 3389, 3389, 3389, 3390, 3390, 3390,
3959      3390, 3390, 3390, 3390, 3390, 3390, 3391, 3391, 3391, 3391,
3960      3391, 3391, 3391, 3391, 3391, 3392, 3392, 3392, 3392, 3392,
3961      3392, 3392, 3392, 3392, 3393, 3393, 3393, 3393, 3393, 3393,
3962      3393, 3393, 3393, 3394, 3394, 3394,  616,  612,  609, 3394,
3963      3395, 3395, 3395,  607,  606,  605, 3395, 3396, 3396, 3396,
3964
3965       601,  597,  593, 3396, 3397, 3397, 3397,  592,  591,  590,
3966      3397, 3398, 3398, 3398,  586,  582,  579, 3398, 3399, 3399,
3967      3399,  578,  577,  576, 3399, 3400, 3400, 3400,  572,  566,
3968       565, 3400, 3401, 3401, 3401,  561,  557,  553, 3401, 3402,
3969      3402, 3402,  549,  542,  540, 3402, 3403, 3403, 3403,  539,
3970       535,  529, 3403, 3404, 3404, 3404,  528,  524,  520, 3404,
3971      3405, 3405, 3405,  516,  515,  514, 3405, 3406, 3406, 3406,
3972       513,  512,  508, 3406, 3407, 3407, 3407,  504,  497,  493,
3973      3407, 3408, 3408, 3408,  485,  484,  483, 3408, 3409, 3409,
3974      3409,  482,  481,  477, 3409, 3410, 3410, 3410,  471,  470,
3975
3976       466, 3410, 3411, 3411, 3411,  460,  459,  455, 3411, 3412,
3977      3412, 3412,  449,  448,  444, 3412, 3413, 3413, 3413,  440,
3978       436,  435, 3413, 3414, 3414, 3414,  434,  430,  426, 3414,
3979      3415, 3415, 3415,  422,  418,  412, 3415, 3416, 3416, 3416,
3980       411,  410,  406, 3416, 3417, 3417, 3417,  402,  397,  396,
3981      3417, 3418, 3418, 3418,  395,  394,  390, 3418, 3419, 3419,
3982      3419,  386,  383,  379, 3419, 3420, 3420, 3420,  375,  372,
3983       369, 3420, 3421, 3421, 3421, 3421, 3421, 3421, 3421,  367,
3984      3421, 3422, 3422, 3422,  366,  361,  354, 3422, 3423,  353,
3985       352,  351, 3423, 3424, 3424, 3424,  350,  346,  342, 3424,
3986
3987      3425,  339,  338,  334, 3425, 3426, 3426, 3426,  330,  327,
3988       326, 3426, 3427,  325,  321,  315, 3427, 3428, 3428, 3428,
3989       314,  313,  309, 3428, 3429,  303,  299,  296, 3429, 3430,
3990      3430, 3430,  295,  290,  289, 3430, 3431,  285,  281,  277,
3991      3431, 3432, 3432, 3432,  273,  272,  268, 3432, 3433,  265,
3992       264,  263, 3433, 3434, 3434, 3434,  257,  256,  254, 3434,
3993      3435,  251,  239,    0, 3435, 3436, 3436, 3436,    0,    0,
3994         0, 3436, 3437,    0,    0,    0, 3437, 3438, 3438, 3438,
3995         0,    0,    0, 3438, 3439,    0,    0,    0, 3439, 3440,
3996      3440, 3440,    0,    0,    0, 3440, 3441,    0,    0,    0,
3997
3998      3441, 3442, 3442, 3442,    0,    0,    0, 3442, 3443,    0,
3999         0,    0, 3443, 3444, 3444, 3444,    0,    0,    0, 3444,
4000      3445,    0,    0,    0, 3445, 3446, 3446, 3446,    0,    0,
4001         0, 3446, 3447,    0,    0,    0, 3447, 3448, 3448, 3448,
4002         0,    0,    0, 3448, 3449,    0,    0,    0, 3449, 3450,
4003      3450, 3450,    0,    0,    0, 3450, 3451,    0,    0,    0,
4004      3451, 3452, 3452, 3452,    0,    0,    0, 3452, 3453,    0,
4005         0,    0, 3453, 3454, 3454, 3454,    0,    0,    0, 3454,
4006      3455,    0,    0,    0, 3455, 3456, 3456, 3456,    0,    0,
4007         0, 3456, 3457,    0,    0,    0, 3457, 3458, 3458, 3458,
4008
4009         0,    0,    0, 3458, 3459,    0,    0,    0, 3459, 3460,
4010      3460, 3460,    0,    0,    0, 3460, 3461,    0,    0,    0,
4011      3461, 3462, 3462, 3462,    0,    0,    0, 3462, 3463,    0,
4012         0,    0, 3463, 3464, 3464, 3464,    0,    0,    0, 3464,
4013      3465,    0,    0,    0, 3465, 3466, 3466, 3466,    0,    0,
4014         0, 3466, 3467,    0,    0,    0, 3467, 3468, 3468, 3468,
4015         0,    0,    0, 3468, 3469,    0,    0,    0, 3469, 3470,
4016      3470, 3470,    0,    0,    0, 3470, 3471,    0,    0,    0,
4017      3471, 3472, 3472, 3472,    0,    0,    0, 3472, 3473,    0,
4018         0,    0, 3473, 3474, 3474, 3474,    0,    0,    0, 3474,
4019
4020      3475,    0,    0,    0, 3475, 3476, 3476, 3476, 3476, 3476,
4021      3476, 3476, 3476, 3476, 3477,    0,    0,    0,    0, 3477,
4022      3478, 3478, 3478,    0,    0,    0, 3478, 3479, 3479, 3479,
4023      3479,    0,    0, 3479, 3479, 3480, 3480, 3480, 3480,    0,
4024      3480,    0, 3480, 3481, 3481, 3481, 3481,    0,    0, 3481,
4025      3481, 3482, 3482, 3482,    0,    0,    0, 3482, 3483, 3483,
4026      3483, 3483,    0,    0, 3483, 3483, 3484, 3484, 3484,    0,
4027         0,    0, 3484, 3485, 3485, 3485, 3485,    0,    0, 3485,
4028      3485, 3486, 3486, 3486, 3486,    0, 3486,    0, 3486, 3487,
4029      3487, 3487, 3487,    0,    0, 3487, 3487, 3488, 3488, 3488,
4030
4031      3488,    0, 3488,    0, 3488, 3489, 3489, 3489, 3489,    0,
4032         0, 3489, 3489, 3490, 3490, 3490, 3490,    0, 3490,    0,
4033      3490, 3491, 3491, 3491, 3491,    0,    0, 3491, 3491, 3492,
4034      3492, 3492,    0,    0,    0, 3492, 3493, 3493, 3493, 3493,
4035         0,    0, 3493, 3493, 3494, 3494, 3494, 3494,    0,    0,
4036      3494, 3494, 3495, 3495, 3495,    0,    0,    0, 3495, 3496,
4037      3496, 3496, 3496,    0,    0, 3496, 3496, 3497, 3497, 3497,
4038         0,    0,    0, 3497, 3498, 3498, 3498, 3498,    0,    0,
4039      3498, 3498, 3499, 3499, 3499,    0,    0,    0, 3499, 3500,
4040      3500, 3500, 3500,    0,    0, 3500, 3500, 3501, 3501, 3501,
4041
4042         0,    0,    0, 3501, 3502, 3502, 3502, 3502,    0,    0,
4043      3502, 3502, 3503, 3503, 3503,    0,    0,    0, 3503, 3504,
4044      3504, 3504, 3504,    0,    0, 3504, 3504, 3505, 3505, 3505,
4045         0,    0,    0, 3505, 3506, 3506, 3506, 3506,    0,    0,
4046      3506, 3506, 3507, 3507, 3507,    0,    0,    0, 3507, 3508,
4047      3508, 3508, 3508,    0,    0, 3508, 3508, 3509, 3509, 3509,
4048         0,    0,    0, 3509, 3510, 3510, 3510, 3510,    0,    0,
4049      3510, 3510, 3511, 3511, 3511,    0,    0,    0, 3511, 3512,
4050      3512, 3512, 3512,    0,    0, 3512, 3512, 3513, 3513, 3513,
4051         0,    0,    0, 3513, 3514, 3514, 3514, 3514,    0,    0,
4052
4053      3514, 3514, 3515, 3515, 3515,    0,    0,    0, 3515, 3516,
4054      3516, 3516, 3516,    0,    0, 3516, 3516, 3517, 3517, 3517,
4055         0,    0,    0, 3517, 3518, 3518, 3518, 3518,    0,    0,
4056      3518, 3518, 3519, 3519, 3519, 3519,    0, 3519,    0, 3519,
4057      3520, 3520, 3520, 3520,    0,    0, 3520, 3520, 3521, 3521,
4058      3521,    0,    0,    0, 3521, 3522, 3522, 3522, 3522,    0,
4059         0, 3522, 3522, 3523, 3523, 3523,    0,    0,    0, 3523,
4060      3524, 3524, 3524, 3524,    0,    0, 3524, 3524, 3525, 3525,
4061      3525,    0,    0,    0, 3525, 3526, 3526, 3526, 3526,    0,
4062         0, 3526, 3526, 3527, 3527, 3527,    0,    0,    0, 3527,
4063
4064      3528, 3528, 3528, 3528,    0,    0, 3528, 3528, 3529, 3529,
4065      3529,    0,    0,    0, 3529, 3530, 3530, 3530, 3530,    0,
4066         0, 3530, 3530, 3531, 3531, 3531, 3531, 3531, 3531, 3531,
4067      3531, 3531, 3532,    0, 3532,    0,    0, 3532, 3533, 3533,
4068      3533,    0,    0,    0, 3533, 3534, 3534, 3534, 3534,    0,
4069         0, 3534, 3534, 3535, 3535, 3535,    0,    0,    0, 3535,
4070      3536, 3536, 3536, 3536,    0,    0, 3536, 3536, 3537, 3537,
4071      3537,    0,    0,    0, 3537, 3538, 3538, 3538, 3538,    0,
4072         0, 3538, 3538, 3539, 3539, 3539,    0,    0,    0, 3539,
4073      3540, 3540, 3540, 3540,    0,    0, 3540, 3540, 3541, 3541,
4074
4075      3541,    0,    0,    0, 3541, 3542, 3542, 3542, 3542,    0,
4076         0, 3542, 3542, 3543, 3543, 3543, 3543,    0,    0, 3543,
4077      3543, 3544, 3544, 3544,    0,    0,    0, 3544, 3545, 3545,
4078      3545, 3545,    0,    0, 3545, 3545, 3546, 3546, 3546,    0,
4079         0,    0, 3546, 3547, 3547, 3547, 3547,    0,    0, 3547,
4080      3547, 3548, 3548, 3548, 3548,    0,    0, 3548, 3548, 3549,
4081      3549, 3549,    0,    0,    0, 3549, 3550, 3550, 3550, 3550,
4082         0,    0, 3550, 3550, 3551, 3551, 3551, 3551,    0, 3551,
4083         0, 3551, 3552, 3552, 3552, 3552,    0,    0, 3552, 3552,
4084      3553, 3553, 3553, 3553,    0, 3553,    0, 3553, 3554, 3554,
4085
4086      3554, 3554,    0,    0, 3554, 3554, 3555, 3555, 3555,    0,
4087         0,    0, 3555, 3556, 3556, 3556, 3556,    0,    0, 3556,
4088      3556, 3557, 3557, 3557,    0,    0,    0, 3557, 3558, 3558,
4089      3558, 3558,    0,    0, 3558, 3558, 3559, 3559, 3559,    0,
4090         0,    0, 3559, 3560, 3560, 3560, 3560,    0,    0, 3560,
4091      3560, 3561, 3561, 3561, 3561,    0, 3561,    0, 3561, 3562,
4092      3562, 3562, 3562,    0,    0, 3562, 3562, 3563, 3563, 3563,
4093         0,    0,    0, 3563, 3564, 3564, 3564, 3564,    0,    0,
4094      3564, 3564, 3565, 3565, 3565,    0,    0,    0, 3565, 3566,
4095      3566, 3566, 3566,    0,    0, 3566, 3566, 3567, 3567, 3567,
4096
4097         0,    0,    0, 3567, 3568, 3568, 3568, 3568,    0,    0,
4098      3568, 3568, 3569, 3569, 3569,    0,    0,    0, 3569, 3570,
4099      3570, 3570, 3570,    0,    0, 3570, 3570, 3571, 3571, 3571,
4100         0,    0,    0, 3571, 3572, 3572, 3572, 3572,    0,    0,
4101      3572, 3572, 3573, 3573, 3573,    0,    0,    0, 3573, 3574,
4102      3574, 3574, 3574,    0,    0, 3574, 3574, 3575, 3575, 3575,
4103         0,    0,    0, 3575, 3576, 3576, 3576, 3576,    0,    0,
4104      3576, 3576, 3577, 3577, 3577,    0,    0,    0, 3577, 3578,
4105      3578, 3578, 3578,    0,    0, 3578, 3578, 3579, 3579, 3579,
4106         0,    0,    0, 3579, 3580, 3580, 3580, 3580,    0,    0,
4107
4108      3580, 3580, 3581, 3581, 3581, 3581,    0, 3581,    0, 3581,
4109      3582, 3582, 3582, 3582,    0,    0, 3582, 3582, 3583, 3583,
4110      3583,    0,    0,    0, 3583, 3584, 3584, 3584, 3584,    0,
4111         0, 3584, 3584, 3585, 3585, 3585, 3585, 3585, 3585, 3585,
4112      3585, 3585, 3586, 3586, 3586, 3586, 3586, 3586, 3586, 3586,
4113      3586, 3587, 3587, 3587,    0,    0,    0, 3587, 3588, 3588,
4114      3588,    0,    0,    0, 3588, 3589, 3589, 3589, 3589,    0,
4115         0, 3589, 3589, 3590, 3590, 3590, 3590,    0, 3590,    0,
4116      3590, 3591, 3591, 3591, 3591,    0,    0, 3591, 3591, 3592,
4117      3592, 3592,    0,    0,    0, 3592, 3593, 3593, 3593, 3593,
4118
4119         0,    0, 3593, 3593, 3594, 3594, 3594,    0,    0,    0,
4120      3594, 3595, 3595, 3595, 3595,    0,    0, 3595, 3595, 3596,
4121      3596, 3596, 3596,    0,    0, 3596, 3596, 3597, 3597, 3597,
4122         0,    0,    0, 3597, 3598, 3598, 3598, 3598,    0,    0,
4123      3598, 3598, 3599, 3599, 3599, 3599,    0, 3599,    0, 3599,
4124      3600, 3600, 3600, 3600,    0,    0, 3600, 3600, 3601, 3601,
4125      3601, 3601,    0,    0, 3601, 3601, 3602, 3602, 3602,    0,
4126         0,    0, 3602, 3603, 3603, 3603, 3603,    0,    0, 3603,
4127      3603, 3604, 3604, 3604, 3604,    0,    0, 3604, 3604, 3605,
4128      3605, 3605, 3605,    0,    0, 3605, 3605, 3606, 3606, 3606,
4129
4130         0,    0,    0, 3606, 3607, 3607, 3607, 3607,    0,    0,
4131      3607, 3607, 3608, 3608, 3608,    0,    0,    0, 3608, 3609,
4132      3609, 3609, 3609,    0,    0, 3609, 3609, 3610, 3610, 3610,
4133      3610,    0, 3610,    0, 3610, 3611, 3611, 3611, 3611,    0,
4134         0, 3611, 3611, 3612, 3612, 3612,    0,    0,    0, 3612,
4135      3613, 3613, 3613, 3613,    0,    0, 3613, 3613, 3614, 3614,
4136      3614,    0,    0,    0, 3614, 3615, 3615, 3615, 3615,    0,
4137         0, 3615, 3615, 3616, 3616, 3616,    0,    0,    0, 3616,
4138      3617, 3617, 3617, 3617,    0,    0, 3617, 3617, 3618, 3618,
4139      3618,    0,    0,    0, 3618, 3619, 3619, 3619, 3619,    0,
4140
4141         0, 3619, 3619, 3620, 3620, 3620, 3620,    0, 3620,    0,
4142      3620, 3621, 3621, 3621, 3621,    0,    0, 3621, 3621, 3622,
4143      3622, 3622,    0,    0,    0, 3622, 3623, 3623, 3623, 3623,
4144         0,    0, 3623, 3623, 3624, 3624, 3624,    0,    0,    0,
4145      3624, 3625, 3625, 3625, 3625,    0,    0, 3625, 3625, 3626,
4146      3626, 3626,    0,    0,    0, 3626, 3627, 3627, 3627, 3627,
4147         0,    0, 3627, 3627, 3628, 3628, 3628,    0,    0,    0,
4148      3628, 3629, 3629, 3629, 3629,    0,    0, 3629, 3629, 3630,
4149      3630, 3630,    0,    0,    0, 3630, 3631, 3631, 3631, 3631,
4150         0,    0, 3631, 3631, 3632, 3632, 3632,    0,    0,    0,
4151
4152      3632, 3633, 3633, 3633, 3633,    0,    0, 3633, 3633, 3634,
4153      3634, 3634,    0,    0,    0, 3634, 3635, 3635, 3635, 3635,
4154         0,    0, 3635, 3635, 3636, 3636, 3636, 3636, 3636, 3636,
4155      3636, 3636, 3636, 3637, 3637, 3637, 3637, 3637, 3637, 3637,
4156      3637, 3637, 3638, 3638, 3638,    0,    0,    0, 3638, 3639,
4157      3639, 3639, 3639,    0, 3639,    0, 3639, 3640, 3640, 3640,
4158      3640,    0,    0, 3640, 3640, 3641, 3641, 3641, 3641,    0,
4159         0, 3641, 3641, 3642, 3642, 3642,    0,    0,    0, 3642,
4160      3643, 3643, 3643, 3643,    0,    0, 3643, 3643, 3644, 3644,
4161      3644, 3644,    0, 3644,    0, 3644, 3645, 3645, 3645, 3645,
4162
4163         0,    0, 3645, 3645, 3646, 3646, 3646, 3646,    0,    0,
4164      3646, 3646, 3647, 3647, 3647, 3647,    0, 3647,    0, 3647,
4165      3648, 3648, 3648, 3648,    0,    0, 3648, 3648, 3649, 3649,
4166      3649, 3649,    0, 3649,    0, 3649, 3650, 3650, 3650, 3650,
4167         0,    0, 3650, 3650, 3651, 3651, 3651, 3651,    0,    0,
4168      3651, 3651, 3652, 3652, 3652,    0,    0,    0, 3652, 3653,
4169      3653, 3653, 3653,    0,    0, 3653, 3653, 3654, 3654, 3654,
4170      3654,    0,    0, 3654, 3654, 3655, 3655, 3655, 3655,    0,
4171         0, 3655, 3655, 3656, 3656, 3656,    0,    0,    0, 3656,
4172      3657, 3657, 3657, 3657,    0,    0, 3657, 3657, 3658, 3658,
4173
4174      3658,    0,    0,    0, 3658, 3659, 3659, 3659, 3659,    0,
4175         0, 3659, 3659, 3660, 3660, 3660, 3660,    0,    0, 3660,
4176      3660, 3661, 3661, 3661,    0,    0,    0, 3661, 3662, 3662,
4177      3662, 3662,    0,    0, 3662, 3662, 3663, 3663, 3663,    0,
4178         0,    0, 3663, 3664, 3664, 3664, 3664,    0,    0, 3664,
4179      3664, 3665, 3665, 3665,    0,    0,    0, 3665, 3666, 3666,
4180      3666, 3666,    0,    0, 3666, 3666, 3667, 3667, 3667,    0,
4181         0,    0, 3667, 3668, 3668, 3668, 3668,    0,    0, 3668,
4182      3668, 3669, 3669, 3669, 3669,    0,    0, 3669, 3669, 3670,
4183      3670, 3670,    0,    0,    0, 3670, 3671, 3671, 3671, 3671,
4184
4185         0,    0, 3671, 3671, 3672, 3672, 3672,    0,    0,    0,
4186      3672, 3673, 3673, 3673, 3673,    0,    0, 3673, 3673, 3674,
4187      3674, 3674,    0,    0,    0, 3674, 3675, 3675, 3675, 3675,
4188         0,    0, 3675, 3675, 3676, 3676, 3676, 3676,    0, 3676,
4189         0, 3676, 3677, 3677, 3677, 3677,    0,    0, 3677, 3677,
4190      3678, 3678, 3678,    0,    0,    0, 3678, 3679, 3679, 3679,
4191      3679,    0,    0, 3679, 3679, 3680, 3680, 3680,    0,    0,
4192         0, 3680, 3681, 3681, 3681, 3681,    0,    0, 3681, 3681,
4193      3682, 3682, 3682,    0,    0,    0, 3682, 3683, 3683, 3683,
4194      3683,    0,    0, 3683, 3683, 3684, 3684, 3684, 3684, 3684,
4195
4196      3684, 3684, 3684, 3684, 3685, 3685, 3685, 3685, 3685, 3685,
4197      3685, 3685, 3685, 3686, 3686, 3686, 3686,    0, 3686,    0,
4198      3686, 3687, 3687, 3687,    0,    0,    0, 3687, 3688, 3688,
4199      3688, 3688,    0,    0, 3688, 3688, 3689, 3689, 3689, 3689,
4200         0,    0, 3689, 3689, 3690, 3690, 3690,    0,    0,    0,
4201      3690, 3691, 3691, 3691, 3691,    0,    0, 3691, 3691, 3692,
4202      3692, 3692, 3692,    0,    0, 3692, 3692, 3693, 3693, 3693,
4203      3693,    0,    0, 3693, 3693, 3694, 3694, 3694, 3694,    0,
4204      3694,    0, 3694, 3695, 3695, 3695, 3695,    0,    0, 3695,
4205      3695, 3696, 3696, 3696,    0,    0,    0, 3696, 3697, 3697,
4206
4207      3697, 3697,    0,    0, 3697, 3697, 3698, 3698, 3698, 3698,
4208         0,    0, 3698, 3698, 3699, 3699, 3699,    0,    0,    0,
4209      3699, 3700, 3700, 3700, 3700,    0,    0, 3700, 3700, 3701,
4210      3701, 3701, 3701,    0,    0, 3701, 3701, 3702, 3702, 3702,
4211         0,    0,    0, 3702, 3703, 3703, 3703,    0,    0,    0,
4212      3703, 3704, 3704, 3704, 3704,    0,    0, 3704, 3704, 3705,
4213      3705, 3705, 3705,    0,    0, 3705, 3705, 3706, 3706, 3706,
4214         0,    0,    0, 3706, 3707, 3707, 3707, 3707,    0,    0,
4215      3707, 3707, 3708, 3708, 3708,    0,    0,    0, 3708, 3709,
4216      3709, 3709, 3709,    0, 3709,    0, 3709, 3710, 3710, 3710,
4217
4218      3710,    0,    0, 3710, 3710, 3711, 3711, 3711,    0,    0,
4219         0, 3711, 3712, 3712, 3712, 3712,    0,    0, 3712, 3712,
4220      3713, 3713, 3713,    0,    0,    0, 3713, 3714, 3714, 3714,
4221      3714,    0,    0, 3714, 3714, 3715, 3715, 3715,    0,    0,
4222         0, 3715, 3716, 3716, 3716, 3716,    0,    0, 3716, 3716,
4223      3717, 3717, 3717,    0,    0,    0, 3717, 3718, 3718, 3718,
4224      3718,    0,    0, 3718, 3718, 3719, 3719, 3719, 3719,    0,
4225      3719,    0, 3719, 3720, 3720, 3720, 3720,    0,    0, 3720,
4226      3720, 3721, 3721, 3721, 3721,    0, 3721,    0, 3721, 3722,
4227      3722, 3722, 3722,    0,    0, 3722, 3722, 3723, 3723, 3723,
4228
4229         0,    0,    0, 3723, 3724, 3724, 3724, 3724,    0,    0,
4230      3724, 3724, 3725, 3725, 3725, 3725,    0, 3725,    0, 3725,
4231      3726, 3726, 3726, 3726,    0,    0, 3726, 3726, 3727, 3727,
4232      3727, 3727, 3727, 3727, 3727, 3727, 3727, 3728, 3728, 3728,
4233      3728, 3728, 3728, 3728, 3728, 3728, 3729, 3729, 3729,    0,
4234         0,    0, 3729, 3730, 3730, 3730, 3730,    0,    0, 3730,
4235      3730, 3731, 3731, 3731, 3731,    0,    0, 3731, 3731, 3732,
4236      3732, 3732,    0,    0,    0, 3732, 3733, 3733, 3733, 3733,
4237         0,    0, 3733, 3733, 3734, 3734, 3734, 3734,    0,    0,
4238      3734, 3734, 3735, 3735, 3735, 3735,    0,    0, 3735, 3735,
4239
4240      3736, 3736, 3736, 3736,    0,    0, 3736, 3736, 3737, 3737,
4241      3737,    0,    0,    0, 3737, 3738, 3738, 3738, 3738,    0,
4242         0, 3738, 3738, 3739, 3739, 3739, 3739,    0,    0, 3739,
4243      3739, 3740, 3740, 3740,    0,    0,    0, 3740, 3741, 3741,
4244      3741, 3741,    0,    0, 3741, 3741, 3742, 3742, 3742, 3742,
4245         0,    0, 3742, 3742, 3743, 3743, 3743,    0,    0,    0,
4246      3743, 3744, 3744, 3744,    0,    0,    0, 3744, 3745, 3745,
4247      3745, 3745,    0,    0, 3745, 3745, 3746, 3746, 3746, 3746,
4248         0,    0, 3746, 3746, 3747, 3747, 3747,    0,    0,    0,
4249      3747, 3748, 3748, 3748,    0,    0,    0, 3748, 3749, 3749,
4250
4251      3749, 3749,    0,    0, 3749, 3749, 3750, 3750, 3750, 3750,
4252         0, 3750,    0, 3750, 3751, 3751, 3751, 3751,    0,    0,
4253      3751, 3751, 3752, 3752, 3752,    0,    0,    0, 3752, 3753,
4254      3753, 3753, 3753,    0,    0, 3753, 3753, 3754, 3754, 3754,
4255         0,    0,    0, 3754, 3755, 3755, 3755,    0,    0,    0,
4256      3755, 3756, 3756, 3756, 3756,    0,    0, 3756, 3756, 3757,
4257      3757, 3757,    0,    0,    0, 3757, 3758, 3758, 3758, 3758,
4258         0,    0, 3758, 3758, 3759, 3759, 3759,    0,    0,    0,
4259      3759, 3760, 3760, 3760, 3760,    0,    0, 3760, 3760, 3761,
4260      3761, 3761,    0,    0,    0, 3761, 3762, 3762, 3762, 3762,
4261
4262         0,    0, 3762, 3762, 3763, 3763, 3763, 3763, 3763, 3763,
4263      3763, 3763, 3763, 3764, 3764, 3764, 3764, 3764, 3764, 3764,
4264      3764, 3764, 3765, 3765, 3765,    0,    0,    0, 3765, 3766,
4265      3766, 3766, 3766,    0,    0, 3766, 3766, 3767, 3767, 3767,
4266      3767,    0,    0, 3767, 3767, 3768, 3768, 3768, 3768,    0,
4267      3768,    0, 3768, 3769, 3769, 3769, 3769,    0,    0, 3769,
4268      3769, 3770, 3770, 3770, 3770,    0,    0, 3770, 3770, 3771,
4269      3771, 3771, 3771,    0,    0, 3771, 3771, 3772, 3772, 3772,
4270      3772,    0,    0, 3772, 3772, 3773, 3773, 3773,    0,    0,
4271         0, 3773, 3774, 3774, 3774, 3774,    0,    0, 3774, 3774,
4272
4273      3775, 3775, 3775,    0,    0,    0, 3775, 3776, 3776, 3776,
4274      3776,    0,    0, 3776, 3776, 3777, 3777, 3777, 3777,    0,
4275         0, 3777, 3777, 3778, 3778, 3778, 3778,    0, 3778,    0,
4276      3778, 3779, 3779, 3779, 3779,    0, 3779,    0, 3779, 3780,
4277      3780, 3780, 3780,    0,    0, 3780, 3780, 3781, 3781, 3781,
4278      3781,    0,    0, 3781, 3781, 3782, 3782, 3782, 3782,    0,
4279      3782,    0, 3782, 3783, 3783, 3783,    0,    0,    0, 3783,
4280      3784, 3784, 3784, 3784,    0,    0, 3784, 3784, 3785, 3785,
4281      3785, 3785,    0, 3785,    0, 3785, 3786, 3786, 3786, 3786,
4282         0,    0, 3786, 3786, 3787, 3787, 3787, 3787,    0, 3787,
4283
4284         0, 3787, 3788, 3788, 3788,    0,    0,    0, 3788, 3789,
4285      3789, 3789,    0,    0,    0, 3789, 3790, 3790, 3790,    0,
4286         0,    0, 3790, 3791, 3791, 3791, 3791,    0,    0, 3791,
4287      3791, 3792, 3792, 3792,    0,    0,    0, 3792, 3793, 3793,
4288      3793, 3793,    0,    0, 3793, 3793, 3794, 3794, 3794,    0,
4289         0,    0, 3794, 3795, 3795, 3795, 3795,    0,    0, 3795,
4290      3795, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796, 3796,
4291      3797, 3797, 3797, 3797, 3797, 3797, 3797, 3797, 3797, 3798,
4292      3798, 3798,    0,    0,    0, 3798, 3799, 3799, 3799, 3799,
4293         0,    0, 3799, 3799, 3800, 3800, 3800, 3800,    0,    0,
4294
4295      3800, 3800, 3801, 3801, 3801, 3801,    0,    0, 3801, 3801,
4296      3802, 3802, 3802, 3802,    0,    0, 3802, 3802, 3803, 3803,
4297      3803,    0,    0,    0, 3803, 3804, 3804, 3804,    0,    0,
4298         0, 3804, 3805, 3805, 3805, 3805,    0,    0, 3805, 3805,
4299      3806, 3806, 3806,    0,    0,    0, 3806, 3807, 3807, 3807,
4300      3807, 3807, 3807, 3807, 3807, 3807, 3808, 3808, 3808, 3808,
4301      3808, 3808, 3808, 3808, 3808, 3809, 3809, 3809, 3809, 3809,
4302      3809, 3809, 3809, 3809, 3810, 3810, 3810, 3810, 3810, 3810,
4303      3810, 3810, 3810, 3811, 3811, 3811, 3811, 3811, 3811, 3811,
4304      3811, 3811, 3812, 3812, 3812, 3812, 3812, 3812, 3812, 3812,
4305
4306      3812, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
4307      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
4308      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
4309      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
4310      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
4311      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
4312      3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333, 3333,
4313      3333, 3333, 3333, 3333, 3333, 3333
4314     } ;
4315
4316 /* Table of booleans, true if rule could match eol. */
4317 static yyconst flex_int32_t yy_rule_can_match_eol[562] =
4318     {   0,
4319 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 
4320     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
4321     0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
4322     1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 
4323     1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 
4324     1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 
4325     0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
4326     0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
4327     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
4328     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 
4329     0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 
4330     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 
4331     1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 
4332     0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
4333     1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
4334     1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 
4335     0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 
4336     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 
4337     1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
4338     1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 
4339     0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
4340     1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 
4341     1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 
4342     0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 
4343     0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 
4344     1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 
4345     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 
4346     0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 
4347     1, 0,     };
4348
4349 static yy_state_type yy_last_accepting_state;
4350 static char *yy_last_accepting_cpos;
4351
4352 extern int surf_parse__flex_debug;
4353 int surf_parse__flex_debug = 0;
4354
4355 /* The intent behind this definition is that it'll catch
4356  * any uses of REJECT which flex missed.
4357  */
4358 #define REJECT reject_used_but_not_detected
4359 #define yymore() yymore_used_but_not_detected
4360 #define YY_MORE_ADJ 0
4361 #define YY_RESTORE_YY_MORE_OFFSET
4362 char *surf_parse_text;
4363 /* Validating XML processor for src/surf/xml/simgrid.dtd.
4364  *
4365  * This program was generated with the FleXML XML processor generator.
4366  * FleXML is Copyright (C) 1999-2005 Kristoffer Rose.  All rights reserved.
4367  * FleXML is Copyright (C) 2003-2013 Martin Quinson.  All rights reserved.
4368  * (1.9.6).
4369  * 
4370  * There are two, intertwined parts to this program, part A and part B.
4371  *
4372  * Part A
4373  * ------
4374  * 
4375  * Some parts, here collectively called "Part A", are found in the 
4376  * FleXML package.  They are Copyright (C) 1999-2005 Kristoffer Rose
4377  * and Copyright (C) 2003-2013 Martin Quinson. All rights reserved.
4378  *
4379  * You can redistribute, use, perform, display and/or modify "Part A"
4380  * provided the following two conditions hold:
4381  *
4382  * 1. The program is distributed WITHOUT ANY WARRANTY from the author of
4383  *    FleXML; without even the implied warranty of MERCHANTABILITY or
4384  *    FITNESS FOR A PARTICULAR PURPOSE.
4385  *
4386  * 2. The program distribution conditions do not in any way affect the
4387  *    distribution conditions of the FleXML system used to generate this
4388  *    file or any version of FleXML derived from that system.
4389  *
4390  * Notice that these are explicit rights granted to you for files
4391  * generated by the FleXML system.  For your rights in connection with
4392  * the FleXML system itself please consult the GNU General Public License.
4393  * 
4394  * Part B
4395  * ------
4396  * 
4397  * The other parts, here collectively called "Part B", and which came 
4398  * from the DTD used by FleXML to generate this program, can be 
4399  * distributed (or not, as the case may be) under the terms of whoever
4400  * wrote them, provided these terms respect and obey the two conditions 
4401  * above under the heading "Part A".
4402  *
4403  * The author of and contributors to FleXML specifically disclaim
4404  * any copyright interest in "Part B", unless "Part B" was written 
4405  * by the author of or contributors to FleXML.
4406  * 
4407  */
4408
4409 /* Version strings. */
4410 const char surfxml_flexml_version[] = "1.9.6";
4411
4412 /* ANSI headers. */
4413 #include <stdlib.h> /* for realloc() -- needed here when using flex 2.5.4 */
4414 #include <stdio.h>
4415 #include <string.h>
4416 #include <assert.h>
4417 #include <stdarg.h>
4418 #include <ctype.h>
4419      
4420 #if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(__TOS_WIN__)
4421 # ifndef __STRICT_ANSI__
4422 #  include <io.h>
4423 #  include <process.h>
4424 # endif
4425 #else
4426 # include <unistd.h>
4427 #endif
4428      
4429 #ifndef FLEXML_INDEXSTACKSIZE
4430 #define FLEXML_INDEXSTACKSIZE 1000
4431 #endif
4432
4433 /* Generated definitions. */
4434 #define FLEXML_yylineno
4435 #ifndef FLEXML_BUFFERSTACKSIZE
4436 #define FLEXML_BUFFERSTACKSIZE 1000000
4437 #endif
4438 #define FLEXML_NEED_BUFFERLIT
4439
4440 /* XML processor api. */
4441 /* FleXML-provided data. */
4442 int surfxml_pcdata_ix;
4443 extern char *surfxml_bufferstack;
4444 #define surfxml_pcdata (surfxml_bufferstack + surfxml_pcdata_ix)
4445 AT_surfxml_AS_id AX_surfxml_AS_id;
4446 #define A_surfxml_AS_id (surfxml_bufferstack + AX_surfxml_AS_id)
4447 short int surfxml_AS_id_isset;
4448 AT_surfxml_AS_routing AX_surfxml_AS_routing;
4449 #define A_surfxml_AS_routing AX_surfxml_AS_routing
4450 short int surfxml_AS_routing_isset;
4451 AT_surfxml_ASroute_dst AX_surfxml_ASroute_dst;
4452 #define A_surfxml_ASroute_dst (surfxml_bufferstack + AX_surfxml_ASroute_dst)
4453 short int surfxml_ASroute_dst_isset;
4454 AT_surfxml_ASroute_gw___dst AX_surfxml_ASroute_gw___dst;
4455 #define A_surfxml_ASroute_gw___dst (surfxml_bufferstack + AX_surfxml_ASroute_gw___dst)
4456 short int surfxml_ASroute_gw___dst_isset;
4457 AT_surfxml_ASroute_gw___src AX_surfxml_ASroute_gw___src;
4458 #define A_surfxml_ASroute_gw___src (surfxml_bufferstack + AX_surfxml_ASroute_gw___src)
4459 short int surfxml_ASroute_gw___src_isset;
4460 AT_surfxml_ASroute_src AX_surfxml_ASroute_src;
4461 #define A_surfxml_ASroute_src (surfxml_bufferstack + AX_surfxml_ASroute_src)
4462 short int surfxml_ASroute_src_isset;
4463 AT_surfxml_ASroute_symmetrical AX_surfxml_ASroute_symmetrical;
4464 #define A_surfxml_ASroute_symmetrical AX_surfxml_ASroute_symmetrical
4465 short int surfxml_ASroute_symmetrical_isset;
4466 AT_surfxml_argument_value AX_surfxml_argument_value;
4467 #define A_surfxml_argument_value (surfxml_bufferstack + AX_surfxml_argument_value)
4468 short int surfxml_argument_value_isset;
4469 AT_surfxml_backbone_bandwidth AX_surfxml_backbone_bandwidth;
4470 #define A_surfxml_backbone_bandwidth (surfxml_bufferstack + AX_surfxml_backbone_bandwidth)
4471 short int surfxml_backbone_bandwidth_isset;
4472 AT_surfxml_backbone_id AX_surfxml_backbone_id;
4473 #define A_surfxml_backbone_id (surfxml_bufferstack + AX_surfxml_backbone_id)
4474 short int surfxml_backbone_id_isset;
4475 AT_surfxml_backbone_latency AX_surfxml_backbone_latency;
4476 #define A_surfxml_backbone_latency (surfxml_bufferstack + AX_surfxml_backbone_latency)
4477 short int surfxml_backbone_latency_isset;
4478 AT_surfxml_bypassASroute_dst AX_surfxml_bypassASroute_dst;
4479 #define A_surfxml_bypassASroute_dst (surfxml_bufferstack + AX_surfxml_bypassASroute_dst)
4480 short int surfxml_bypassASroute_dst_isset;
4481 AT_surfxml_bypassASroute_gw___dst AX_surfxml_bypassASroute_gw___dst;
4482 #define A_surfxml_bypassASroute_gw___dst (surfxml_bufferstack + AX_surfxml_bypassASroute_gw___dst)
4483 short int surfxml_bypassASroute_gw___dst_isset;
4484 AT_surfxml_bypassASroute_gw___src AX_surfxml_bypassASroute_gw___src;
4485 #define A_surfxml_bypassASroute_gw___src (surfxml_bufferstack + AX_surfxml_bypassASroute_gw___src)
4486 short int surfxml_bypassASroute_gw___src_isset;
4487 AT_surfxml_bypassASroute_src AX_surfxml_bypassASroute_src;
4488 #define A_surfxml_bypassASroute_src (surfxml_bufferstack + AX_surfxml_bypassASroute_src)
4489 short int surfxml_bypassASroute_src_isset;
4490 AT_surfxml_bypassRoute_dst AX_surfxml_bypassRoute_dst;
4491 #define A_surfxml_bypassRoute_dst (surfxml_bufferstack + AX_surfxml_bypassRoute_dst)
4492 short int surfxml_bypassRoute_dst_isset;
4493 AT_surfxml_bypassRoute_src AX_surfxml_bypassRoute_src;
4494 #define A_surfxml_bypassRoute_src (surfxml_bufferstack + AX_surfxml_bypassRoute_src)
4495 short int surfxml_bypassRoute_src_isset;
4496 AT_surfxml_cabinet_bw AX_surfxml_cabinet_bw;
4497 #define A_surfxml_cabinet_bw (surfxml_bufferstack + AX_surfxml_cabinet_bw)
4498 short int surfxml_cabinet_bw_isset;
4499 AT_surfxml_cabinet_id AX_surfxml_cabinet_id;
4500 #define A_surfxml_cabinet_id (surfxml_bufferstack + AX_surfxml_cabinet_id)
4501 short int surfxml_cabinet_id_isset;
4502 AT_surfxml_cabinet_lat AX_surfxml_cabinet_lat;
4503 #define A_surfxml_cabinet_lat (surfxml_bufferstack + AX_surfxml_cabinet_lat)
4504 short int surfxml_cabinet_lat_isset;
4505 AT_surfxml_cabinet_prefix AX_surfxml_cabinet_prefix;
4506 #define A_surfxml_cabinet_prefix (surfxml_bufferstack + AX_surfxml_cabinet_prefix)
4507 short int surfxml_cabinet_prefix_isset;
4508 AT_surfxml_cabinet_radical AX_surfxml_cabinet_radical;
4509 #define A_surfxml_cabinet_radical (surfxml_bufferstack + AX_surfxml_cabinet_radical)
4510 short int surfxml_cabinet_radical_isset;
4511 AT_surfxml_cabinet_speed AX_surfxml_cabinet_speed;
4512 #define A_surfxml_cabinet_speed (surfxml_bufferstack + AX_surfxml_cabinet_speed)
4513 short int surfxml_cabinet_speed_isset;
4514 AT_surfxml_cabinet_suffix AX_surfxml_cabinet_suffix;
4515 #define A_surfxml_cabinet_suffix (surfxml_bufferstack + AX_surfxml_cabinet_suffix)
4516 short int surfxml_cabinet_suffix_isset;
4517 AT_surfxml_cluster_bb___bw AX_surfxml_cluster_bb___bw;
4518 #define A_surfxml_cluster_bb___bw (surfxml_bufferstack + AX_surfxml_cluster_bb___bw)
4519 short int surfxml_cluster_bb___bw_isset;
4520 AT_surfxml_cluster_bb___lat AX_surfxml_cluster_bb___lat;
4521 #define A_surfxml_cluster_bb___lat (surfxml_bufferstack + AX_surfxml_cluster_bb___lat)
4522 short int surfxml_cluster_bb___lat_isset;
4523 AT_surfxml_cluster_bb___sharing___policy AX_surfxml_cluster_bb___sharing___policy;
4524 #define A_surfxml_cluster_bb___sharing___policy AX_surfxml_cluster_bb___sharing___policy
4525 short int surfxml_cluster_bb___sharing___policy_isset;
4526 AT_surfxml_cluster_bw AX_surfxml_cluster_bw;
4527 #define A_surfxml_cluster_bw (surfxml_bufferstack + AX_surfxml_cluster_bw)
4528 short int surfxml_cluster_bw_isset;
4529 AT_surfxml_cluster_core AX_surfxml_cluster_core;
4530 #define A_surfxml_cluster_core (surfxml_bufferstack + AX_surfxml_cluster_core)
4531 short int surfxml_cluster_core_isset;
4532 AT_surfxml_cluster_id AX_surfxml_cluster_id;
4533 #define A_surfxml_cluster_id (surfxml_bufferstack + AX_surfxml_cluster_id)
4534 short int surfxml_cluster_id_isset;
4535 AT_surfxml_cluster_lat AX_surfxml_cluster_lat;
4536 #define A_surfxml_cluster_lat (surfxml_bufferstack + AX_surfxml_cluster_lat)
4537 short int surfxml_cluster_lat_isset;
4538 AT_surfxml_cluster_limiter___link AX_surfxml_cluster_limiter___link;
4539 #define A_surfxml_cluster_limiter___link (surfxml_bufferstack + AX_surfxml_cluster_limiter___link)
4540 short int surfxml_cluster_limiter___link_isset;
4541 AT_surfxml_cluster_loopback___bw AX_surfxml_cluster_loopback___bw;
4542 #define A_surfxml_cluster_loopback___bw (surfxml_bufferstack + AX_surfxml_cluster_loopback___bw)
4543 short int surfxml_cluster_loopback___bw_isset;
4544 AT_surfxml_cluster_loopback___lat AX_surfxml_cluster_loopback___lat;
4545 #define A_surfxml_cluster_loopback___lat (surfxml_bufferstack + AX_surfxml_cluster_loopback___lat)
4546 short int surfxml_cluster_loopback___lat_isset;
4547 AT_surfxml_cluster_prefix AX_surfxml_cluster_prefix;
4548 #define A_surfxml_cluster_prefix (surfxml_bufferstack + AX_surfxml_cluster_prefix)
4549 short int surfxml_cluster_prefix_isset;
4550 AT_surfxml_cluster_radical AX_surfxml_cluster_radical;
4551 #define A_surfxml_cluster_radical (surfxml_bufferstack + AX_surfxml_cluster_radical)
4552 short int surfxml_cluster_radical_isset;
4553 AT_surfxml_cluster_router___id AX_surfxml_cluster_router___id;
4554 #define A_surfxml_cluster_router___id (surfxml_bufferstack + AX_surfxml_cluster_router___id)
4555 short int surfxml_cluster_router___id_isset;
4556 AT_surfxml_cluster_sharing___policy AX_surfxml_cluster_sharing___policy;
4557 #define A_surfxml_cluster_sharing___policy AX_surfxml_cluster_sharing___policy
4558 short int surfxml_cluster_sharing___policy_isset;
4559 AT_surfxml_cluster_speed AX_surfxml_cluster_speed;
4560 #define A_surfxml_cluster_speed (surfxml_bufferstack + AX_surfxml_cluster_speed)
4561 short int surfxml_cluster_speed_isset;
4562 AT_surfxml_cluster_suffix AX_surfxml_cluster_suffix;
4563 #define A_surfxml_cluster_suffix (surfxml_bufferstack + AX_surfxml_cluster_suffix)
4564 short int surfxml_cluster_suffix_isset;
4565 AT_surfxml_cluster_topo___parameters AX_surfxml_cluster_topo___parameters;
4566 #define A_surfxml_cluster_topo___parameters (surfxml_bufferstack + AX_surfxml_cluster_topo___parameters)
4567 short int surfxml_cluster_topo___parameters_isset;
4568 AT_surfxml_cluster_topology AX_surfxml_cluster_topology;
4569 #define A_surfxml_cluster_topology AX_surfxml_cluster_topology
4570 short int surfxml_cluster_topology_isset;
4571 AT_surfxml_config_id AX_surfxml_config_id;
4572 #define A_surfxml_config_id (surfxml_bufferstack + AX_surfxml_config_id)
4573 short int surfxml_config_id_isset;
4574 AT_surfxml_host_availability___file AX_surfxml_host_availability___file;
4575 #define A_surfxml_host_availability___file (surfxml_bufferstack + AX_surfxml_host_availability___file)
4576 short int surfxml_host_availability___file_isset;
4577 AT_surfxml_host_coordinates AX_surfxml_host_coordinates;
4578 #define A_surfxml_host_coordinates (surfxml_bufferstack + AX_surfxml_host_coordinates)
4579 short int surfxml_host_coordinates_isset;
4580 AT_surfxml_host_core AX_surfxml_host_core;
4581 #define A_surfxml_host_core (surfxml_bufferstack + AX_surfxml_host_core)
4582 short int surfxml_host_core_isset;
4583 AT_surfxml_host_id AX_surfxml_host_id;
4584 #define A_surfxml_host_id (surfxml_bufferstack + AX_surfxml_host_id)
4585 short int surfxml_host_id_isset;
4586 AT_surfxml_host_pstate AX_surfxml_host_pstate;
4587 #define A_surfxml_host_pstate (surfxml_bufferstack + AX_surfxml_host_pstate)
4588 short int surfxml_host_pstate_isset;
4589 AT_surfxml_host_speed AX_surfxml_host_speed;
4590 #define A_surfxml_host_speed (surfxml_bufferstack + AX_surfxml_host_speed)
4591 short int surfxml_host_speed_isset;
4592 AT_surfxml_host_state___file AX_surfxml_host_state___file;
4593 #define A_surfxml_host_state___file (surfxml_bufferstack + AX_surfxml_host_state___file)
4594 short int surfxml_host_state___file_isset;
4595 AT_surfxml_host___link_down AX_surfxml_host___link_down;
4596 #define A_surfxml_host___link_down (surfxml_bufferstack + AX_surfxml_host___link_down)
4597 short int surfxml_host___link_down_isset;
4598 AT_surfxml_host___link_id AX_surfxml_host___link_id;
4599 #define A_surfxml_host___link_id (surfxml_bufferstack + AX_surfxml_host___link_id)
4600 short int surfxml_host___link_id_isset;
4601 AT_surfxml_host___link_up AX_surfxml_host___link_up;
4602 #define A_surfxml_host___link_up (surfxml_bufferstack + AX_surfxml_host___link_up)
4603 short int surfxml_host___link_up_isset;
4604 AT_surfxml_include_file AX_surfxml_include_file;
4605 #define A_surfxml_include_file (surfxml_bufferstack + AX_surfxml_include_file)
4606 short int surfxml_include_file_isset;
4607 AT_surfxml_link_bandwidth AX_surfxml_link_bandwidth;
4608 #define A_surfxml_link_bandwidth (surfxml_bufferstack + AX_surfxml_link_bandwidth)
4609 short int surfxml_link_bandwidth_isset;
4610 AT_surfxml_link_bandwidth___file AX_surfxml_link_bandwidth___file;
4611 #define A_surfxml_link_bandwidth___file (surfxml_bufferstack + AX_surfxml_link_bandwidth___file)
4612 short int surfxml_link_bandwidth___file_isset;
4613 AT_surfxml_link_id AX_surfxml_link_id;
4614 #define A_surfxml_link_id (surfxml_bufferstack + AX_surfxml_link_id)
4615 short int surfxml_link_id_isset;
4616 AT_surfxml_link_latency AX_surfxml_link_latency;
4617 #define A_surfxml_link_latency (surfxml_bufferstack + AX_surfxml_link_latency)
4618 short int surfxml_link_latency_isset;
4619 AT_surfxml_link_latency___file AX_surfxml_link_latency___file;
4620 #define A_surfxml_link_latency___file (surfxml_bufferstack + AX_surfxml_link_latency___file)
4621 short int surfxml_link_latency___file_isset;
4622 AT_surfxml_link_sharing___policy AX_surfxml_link_sharing___policy;
4623 #define A_surfxml_link_sharing___policy AX_surfxml_link_sharing___policy
4624 short int surfxml_link_sharing___policy_isset;
4625 AT_surfxml_link_state___file AX_surfxml_link_state___file;
4626 #define A_surfxml_link_state___file (surfxml_bufferstack + AX_surfxml_link_state___file)
4627 short int surfxml_link_state___file_isset;
4628 AT_surfxml_link___ctn_direction AX_surfxml_link___ctn_direction;
4629 #define A_surfxml_link___ctn_direction AX_surfxml_link___ctn_direction
4630 short int surfxml_link___ctn_direction_isset;
4631 AT_surfxml_link___ctn_id AX_surfxml_link___ctn_id;
4632 #define A_surfxml_link___ctn_id (surfxml_bufferstack + AX_surfxml_link___ctn_id)
4633 short int surfxml_link___ctn_id_isset;
4634 AT_surfxml_model___prop_id AX_surfxml_model___prop_id;
4635 #define A_surfxml_model___prop_id (surfxml_bufferstack + AX_surfxml_model___prop_id)
4636 short int surfxml_model___prop_id_isset;
4637 AT_surfxml_model___prop_value AX_surfxml_model___prop_value;
4638 #define A_surfxml_model___prop_value (surfxml_bufferstack + AX_surfxml_model___prop_value)
4639 short int surfxml_model___prop_value_isset;
4640 AT_surfxml_mount_name AX_surfxml_mount_name;
4641 #define A_surfxml_mount_name (surfxml_bufferstack + AX_surfxml_mount_name)
4642 short int surfxml_mount_name_isset;
4643 AT_surfxml_mount_storageId AX_surfxml_mount_storageId;
4644 #define A_surfxml_mount_storageId (surfxml_bufferstack + AX_surfxml_mount_storageId)
4645 short int surfxml_mount_storageId_isset;
4646 AT_surfxml_peer_availability___file AX_surfxml_peer_availability___file;
4647 #define A_surfxml_peer_availability___file (surfxml_bufferstack + AX_surfxml_peer_availability___file)
4648 short int surfxml_peer_availability___file_isset;
4649 AT_surfxml_peer_bw___in AX_surfxml_peer_bw___in;
4650 #define A_surfxml_peer_bw___in (surfxml_bufferstack + AX_surfxml_peer_bw___in)
4651 short int surfxml_peer_bw___in_isset;
4652 AT_surfxml_peer_bw___out AX_surfxml_peer_bw___out;
4653 #define A_surfxml_peer_bw___out (surfxml_bufferstack + AX_surfxml_peer_bw___out)
4654 short int surfxml_peer_bw___out_isset;
4655 AT_surfxml_peer_coordinates AX_surfxml_peer_coordinates;
4656 #define A_surfxml_peer_coordinates (surfxml_bufferstack + AX_surfxml_peer_coordinates)
4657 short int surfxml_peer_coordinates_isset;
4658 AT_surfxml_peer_id AX_surfxml_peer_id;
4659 #define A_surfxml_peer_id (surfxml_bufferstack + AX_surfxml_peer_id)
4660 short int surfxml_peer_id_isset;
4661 AT_surfxml_peer_lat AX_surfxml_peer_lat;
4662 #define A_surfxml_peer_lat (surfxml_bufferstack + AX_surfxml_peer_lat)
4663 short int surfxml_peer_lat_isset;
4664 AT_surfxml_peer_speed AX_surfxml_peer_speed;
4665 #define A_surfxml_peer_speed (surfxml_bufferstack + AX_surfxml_peer_speed)
4666 short int surfxml_peer_speed_isset;
4667 AT_surfxml_peer_state___file AX_surfxml_peer_state___file;
4668 #define A_surfxml_peer_state___file (surfxml_bufferstack + AX_surfxml_peer_state___file)
4669 short int surfxml_peer_state___file_isset;
4670 AT_surfxml_platform_version AX_surfxml_platform_version;
4671 #define A_surfxml_platform_version (surfxml_bufferstack + AX_surfxml_platform_version)
4672 short int surfxml_platform_version_isset;
4673 AT_surfxml_process_function AX_surfxml_process_function;
4674 #define A_surfxml_process_function (surfxml_bufferstack + AX_surfxml_process_function)
4675 short int surfxml_process_function_isset;
4676 AT_surfxml_process_host AX_surfxml_process_host;
4677 #define A_surfxml_process_host (surfxml_bufferstack + AX_surfxml_process_host)
4678 short int surfxml_process_host_isset;
4679 AT_surfxml_process_kill___time AX_surfxml_process_kill___time;
4680 #define A_surfxml_process_kill___time (surfxml_bufferstack + AX_surfxml_process_kill___time)
4681 short int surfxml_process_kill___time_isset;
4682 AT_surfxml_process_on___failure AX_surfxml_process_on___failure;
4683 #define A_surfxml_process_on___failure AX_surfxml_process_on___failure
4684 short int surfxml_process_on___failure_isset;
4685 AT_surfxml_process_start___time AX_surfxml_process_start___time;
4686 #define A_surfxml_process_start___time (surfxml_bufferstack + AX_surfxml_process_start___time)
4687 short int surfxml_process_start___time_isset;
4688 AT_surfxml_prop_id AX_surfxml_prop_id;
4689 #define A_surfxml_prop_id (surfxml_bufferstack + AX_surfxml_prop_id)
4690 short int surfxml_prop_id_isset;
4691 AT_surfxml_prop_value AX_surfxml_prop_value;
4692 #define A_surfxml_prop_value (surfxml_bufferstack + AX_surfxml_prop_value)
4693 short int surfxml_prop_value_isset;
4694 AT_surfxml_random_generator AX_surfxml_random_generator;
4695 #define A_surfxml_random_generator AX_surfxml_random_generator
4696 short int surfxml_random_generator_isset;
4697 AT_surfxml_random_id AX_surfxml_random_id;
4698 #define A_surfxml_random_id (surfxml_bufferstack + AX_surfxml_random_id)
4699 short int surfxml_random_id_isset;
4700 AT_surfxml_random_max AX_surfxml_random_max;
4701 #define A_surfxml_random_max (surfxml_bufferstack + AX_surfxml_random_max)
4702 short int surfxml_random_max_isset;
4703 AT_surfxml_random_mean AX_surfxml_random_mean;
4704 #define A_surfxml_random_mean (surfxml_bufferstack + AX_surfxml_random_mean)
4705 short int surfxml_random_mean_isset;
4706 AT_surfxml_random_min AX_surfxml_random_min;
4707 #define A_surfxml_random_min (surfxml_bufferstack + AX_surfxml_random_min)
4708 short int surfxml_random_min_isset;
4709 AT_surfxml_random_radical AX_surfxml_random_radical;
4710 #define A_surfxml_random_radical (surfxml_bufferstack + AX_surfxml_random_radical)
4711 short int surfxml_random_radical_isset;
4712 AT_surfxml_random_seed AX_surfxml_random_seed;
4713 #define A_surfxml_random_seed (surfxml_bufferstack + AX_surfxml_random_seed)
4714 short int surfxml_random_seed_isset;
4715 AT_surfxml_random_std___deviation AX_surfxml_random_std___deviation;
4716 #define A_surfxml_random_std___deviation (surfxml_bufferstack + AX_surfxml_random_std___deviation)
4717 short int surfxml_random_std___deviation_isset;
4718 AT_surfxml_route_dst AX_surfxml_route_dst;
4719 #define A_surfxml_route_dst (surfxml_bufferstack + AX_surfxml_route_dst)
4720 short int surfxml_route_dst_isset;
4721 AT_surfxml_route_src AX_surfxml_route_src;
4722 #define A_surfxml_route_src (surfxml_bufferstack + AX_surfxml_route_src)
4723 short int surfxml_route_src_isset;
4724 AT_surfxml_route_symmetrical AX_surfxml_route_symmetrical;
4725 #define A_surfxml_route_symmetrical AX_surfxml_route_symmetrical
4726 short int surfxml_route_symmetrical_isset;
4727 AT_surfxml_router_coordinates AX_surfxml_router_coordinates;
4728 #define A_surfxml_router_coordinates (surfxml_bufferstack + AX_surfxml_router_coordinates)
4729 short int surfxml_router_coordinates_isset;
4730 AT_surfxml_router_id AX_surfxml_router_id;
4731 #define A_surfxml_router_id (surfxml_bufferstack + AX_surfxml_router_id)
4732 short int surfxml_router_id_isset;
4733 AT_surfxml_storage_attach AX_surfxml_storage_attach;
4734 #define A_surfxml_storage_attach (surfxml_bufferstack + AX_surfxml_storage_attach)
4735 short int surfxml_storage_attach_isset;
4736 AT_surfxml_storage_content AX_surfxml_storage_content;
4737 #define A_surfxml_storage_content (surfxml_bufferstack + AX_surfxml_storage_content)
4738 short int surfxml_storage_content_isset;
4739 AT_surfxml_storage_content___type AX_surfxml_storage_content___type;
4740 #define A_surfxml_storage_content___type (surfxml_bufferstack + AX_surfxml_storage_content___type)
4741 short int surfxml_storage_content___type_isset;
4742 AT_surfxml_storage_id AX_surfxml_storage_id;
4743 #define A_surfxml_storage_id (surfxml_bufferstack + AX_surfxml_storage_id)
4744 short int surfxml_storage_id_isset;
4745 AT_surfxml_storage_typeId AX_surfxml_storage_typeId;
4746 #define A_surfxml_storage_typeId (surfxml_bufferstack + AX_surfxml_storage_typeId)
4747 short int surfxml_storage_typeId_isset;
4748 AT_surfxml_storage___type_content AX_surfxml_storage___type_content;
4749 #define A_surfxml_storage___type_content (surfxml_bufferstack + AX_surfxml_storage___type_content)
4750 short int surfxml_storage___type_content_isset;
4751 AT_surfxml_storage___type_content___type AX_surfxml_storage___type_content___type;
4752 #define A_surfxml_storage___type_content___type (surfxml_bufferstack + AX_surfxml_storage___type_content___type)
4753 short int surfxml_storage___type_content___type_isset;
4754 AT_surfxml_storage___type_id AX_surfxml_storage___type_id;
4755 #define A_surfxml_storage___type_id (surfxml_bufferstack + AX_surfxml_storage___type_id)
4756 short int surfxml_storage___type_id_isset;
4757 AT_surfxml_storage___type_model AX_surfxml_storage___type_model;
4758 #define A_surfxml_storage___type_model (surfxml_bufferstack + AX_surfxml_storage___type_model)
4759 short int surfxml_storage___type_model_isset;
4760 AT_surfxml_storage___type_size AX_surfxml_storage___type_size;
4761 #define A_surfxml_storage___type_size (surfxml_bufferstack + AX_surfxml_storage___type_size)
4762 short int surfxml_storage___type_size_isset;
4763 AT_surfxml_trace_file AX_surfxml_trace_file;
4764 #define A_surfxml_trace_file (surfxml_bufferstack + AX_surfxml_trace_file)
4765 short int surfxml_trace_file_isset;
4766 AT_surfxml_trace_id AX_surfxml_trace_id;
4767 #define A_surfxml_trace_id (surfxml_bufferstack + AX_surfxml_trace_id)
4768 short int surfxml_trace_id_isset;
4769 AT_surfxml_trace_periodicity AX_surfxml_trace_periodicity;
4770 #define A_surfxml_trace_periodicity (surfxml_bufferstack + AX_surfxml_trace_periodicity)
4771 short int surfxml_trace_periodicity_isset;
4772 AT_surfxml_trace___connect_element AX_surfxml_trace___connect_element;
4773 #define A_surfxml_trace___connect_element (surfxml_bufferstack + AX_surfxml_trace___connect_element)
4774 short int surfxml_trace___connect_element_isset;
4775 AT_surfxml_trace___connect_kind AX_surfxml_trace___connect_kind;
4776 #define A_surfxml_trace___connect_kind AX_surfxml_trace___connect_kind
4777 short int surfxml_trace___connect_kind_isset;
4778 AT_surfxml_trace___connect_trace AX_surfxml_trace___connect_trace;
4779 #define A_surfxml_trace___connect_trace (surfxml_bufferstack + AX_surfxml_trace___connect_trace)
4780 short int surfxml_trace___connect_trace_isset;
4781
4782 /* XML state. */
4783 #ifdef FLEX_DEBUG
4784 # define ENTER(state)   debug_enter(state,#state)
4785 # define LEAVE          debug_leave()
4786 # define SET(state)     debug_set(state,#state)
4787   static void debug_enter(int, const char*);
4788   static void debug_leave(void);
4789   static void debug_set(int, const char*);
4790 #else
4791 # define ENTER(state)   (yy_push_state(state))
4792 # define LEAVE          (yy_pop_state())
4793 # define SET(state)     BEGIN(state)
4794 #endif
4795
4796 /* Generic actions. */
4797 #define SKIP    /*skip*/
4798 #define SUCCEED        CLEANUP; return 0
4799
4800 #define FAIL    return fail
4801 static int fail(const char*, ...);
4802
4803 enum {flexml_max_err_msg_size = 512};
4804 static char flexml_err_msg[flexml_max_err_msg_size];
4805 const char * surfxml_parse_err_msg()
4806 {
4807     return flexml_err_msg;
4808 }
4809 static void reset_surfxml_parse_err_msg()
4810 {
4811     flexml_err_msg[0] = '\0';
4812 }
4813
4814 /* Cleanup */
4815 static void cleanup(void);
4816 #define CLEANUP  cleanup()
4817
4818 /* Text buffer stack handling. */
4819 char *surfxml_bufferstack = NULL;
4820 static int blimit = FLEXML_BUFFERSTACKSIZE;
4821 static int bnext = 1;
4822
4823 static int *indexstack = NULL;
4824 static int ilimit = FLEXML_INDEXSTACKSIZE;
4825 static int inext = 1;
4826
4827 #define BUFFERSET(P)  (P = bnext)
4828 #define BUFFERPUTC(C) (ck_blimit(), surfxml_bufferstack[bnext++] = (C))
4829 #define BUFFERDONE    (BUFFERPUTC('\0'))
4830
4831 #define BUFFERLITERAL(C, P) surfxml_bufferliteral(C, &(P), surf_parse_text)
4832
4833 /* after this is called, there are at least 2 slots left in the stack */
4834 static int ck_blimit()
4835 {
4836      if (bnext >= blimit) {
4837          blimit += FLEXML_BUFFERSTACKSIZE + 2;
4838          {
4839              char *temp = (char *) realloc(surfxml_bufferstack, blimit);
4840              assert(temp);
4841              surfxml_bufferstack = temp;
4842          }
4843      }
4844      return 0;
4845 }
4846
4847 /* after this is called, there are at least 2 slots left in the stack */
4848 static int ck_ilimit()
4849 {
4850      if (inext >= ilimit) {
4851          ilimit += FLEXML_INDEXSTACKSIZE + 2;
4852          {
4853              int *temp = (int *) realloc(indexstack, ilimit);
4854              assert(temp);
4855              indexstack = temp;
4856          }
4857      }
4858      return 0;
4859 }
4860
4861 #ifdef FLEXML_NEED_BUFFERLIT
4862 static void surfxml_bufferliteral(char c, int* pp, const char* text)
4863 {
4864    BUFFERSET(*pp);
4865    if (c) {
4866       const char *s = strchr(text, c), *e = strrchr(text, c);
4867       assert(s && e && s <= e);
4868       ++s;
4869       while (s < e) {
4870          if (isspace(*s)) {
4871             BUFFERPUTC(' ');
4872             do ++s; while (s < e && isspace(*s));
4873          } else
4874            BUFFERPUTC(*s++);
4875       }
4876    } else {
4877       const char *s = text;
4878       while (*s)
4879         BUFFERPUTC(*s++);
4880    }
4881    BUFFERDONE;
4882 }
4883 #endif
4884
4885 static void pushbuffer(int p)
4886 {
4887     ck_ilimit();
4888     indexstack[inext++] = p;
4889     indexstack[inext++] = bnext;    
4890 }
4891
4892 static int popbuffer(void)
4893 {
4894     assert(inext >= 2);
4895     bnext = indexstack[--inext];
4896     return indexstack[--inext];
4897 }
4898
4899 /* General internal entities are `unput' back onto the input stream... */
4900 #define ENTITYTEXT(T) \
4901   { char *s = (T), *e = s+strlen(s);\
4902     while (--e >= s) { unput(*e); }}
4903
4904 /* Flex standard options. */
4905 #define YY_NO_INPUT 1
4906 /* Flex user-requested options. */
4907 /* XML character classes (currently restricted to ASCII). */
4908 /* "Common syntactic structures." */
4909 /* "Names and Tokens." */
4910 /* Miscellaneous. */
4911 /* Parser states (flex `exclusive start conditions'):
4912  *
4913  * PROLOG       the XML prolog of the document before <?xml...>
4914  * DOCTYPE      the XML prolog of the document after <?xml...>
4915  * EPILOG       after the root element
4916  * INCOMMENT    inside an XML comment <!--....-->
4917  * INPI         inside an XML PI <?...?>
4918  * VALUE1       inside a '...'-delimited literal
4919  * VALUE2       inside a "..."-delimited literal
4920  * CDATA        inside a <![CDATA[...] ]> section.
4921  * ROOT_<tag>   expect root element <tag>
4922  * AL_<tag>     inside the attribute list for <tag>
4923  * IN_<tag>     inside a <tag> with element contents (ready for end tag)
4924  * IMPOSSIBLE   dummy to permit disabling rules; must be last
4925  */
4926
4927 /* State names. */
4928 const char* *surfxml_statenames=NULL;
4929
4930 #define INITIAL 0
4931 #define PROLOG 1
4932 #define DOCTYPE 2
4933 #define EPILOG 3
4934 #define INCOMMENT 4
4935 #define INPI 5
4936 #define VALUE1 6
4937 #define VALUE2 7
4938 #define CDATA 8
4939 #define AL_surfxml_AS 9
4940 #define S_surfxml_AS 10
4941 #define S_surfxml_AS_1 11
4942 #define S_surfxml_AS_2 12
4943 #define S_surfxml_AS_3 13
4944 #define S_surfxml_AS_4 14
4945 #define S_surfxml_AS_5 15
4946 #define S_surfxml_AS_6 16
4947 #define S_surfxml_AS_7 17
4948 #define S_surfxml_AS_8 18
4949 #define E_surfxml_AS 19
4950 #define AL_surfxml_ASroute 20
4951 #define S_surfxml_ASroute 21
4952 #define S_surfxml_ASroute_1 22
4953 #define S_surfxml_ASroute_2 23
4954 #define E_surfxml_ASroute 24
4955 #define AL_surfxml_argument 25
4956 #define E_surfxml_argument 26
4957 #define AL_surfxml_backbone 27
4958 #define E_surfxml_backbone 28
4959 #define AL_surfxml_bypassASroute 29
4960 #define S_surfxml_bypassASroute 30
4961 #define S_surfxml_bypassASroute_1 31
4962 #define S_surfxml_bypassASroute_2 32
4963 #define E_surfxml_bypassASroute 33
4964 #define AL_surfxml_bypassRoute 34
4965 #define S_surfxml_bypassRoute 35
4966 #define S_surfxml_bypassRoute_1 36
4967 #define S_surfxml_bypassRoute_2 37
4968 #define E_surfxml_bypassRoute 38
4969 #define AL_surfxml_cabinet 39
4970 #define E_surfxml_cabinet 40
4971 #define AL_surfxml_cluster 41
4972 #define S_surfxml_cluster 42
4973 #define S_surfxml_cluster_1 43
4974 #define S_surfxml_cluster_2 44
4975 #define E_surfxml_cluster 45
4976 #define AL_surfxml_config 46
4977 #define S_surfxml_config 47
4978 #define S_surfxml_config_1 48
4979 #define S_surfxml_config_2 49
4980 #define E_surfxml_config 50
4981 #define AL_surfxml_host 51
4982 #define S_surfxml_host 52
4983 #define S_surfxml_host_1 53
4984 #define S_surfxml_host_2 54
4985 #define E_surfxml_host 55
4986 #define AL_surfxml_host___link 56
4987 #define E_surfxml_host___link 57
4988 #define AL_surfxml_include 58
4989 #define S_surfxml_include 59
4990 #define S_surfxml_include_1 60
4991 #define S_surfxml_include_2 61
4992 #define E_surfxml_include 62
4993 #define AL_surfxml_link 63
4994 #define S_surfxml_link 64
4995 #define S_surfxml_link_1 65
4996 #define S_surfxml_link_2 66
4997 #define E_surfxml_link 67
4998 #define AL_surfxml_link___ctn 68
4999 #define E_surfxml_link___ctn 69
5000 #define AL_surfxml_model___prop 70
5001 #define E_surfxml_model___prop 71
5002 #define AL_surfxml_mount 72
5003 #define E_surfxml_mount 73
5004 #define AL_surfxml_peer 74
5005 #define E_surfxml_peer 75
5006 #define ROOT_surfxml_platform 76
5007 #define AL_surfxml_platform 77
5008 #define S_surfxml_platform 78
5009 #define S_surfxml_platform_1 79
5010 #define S_surfxml_platform_2 80
5011 #define S_surfxml_platform_3 81
5012 #define S_surfxml_platform_4 82
5013 #define S_surfxml_platform_5 83
5014 #define S_surfxml_platform_6 84
5015 #define S_surfxml_platform_7 85
5016 #define S_surfxml_platform_8 86
5017 #define E_surfxml_platform 87
5018 #define AL_surfxml_process 88
5019 #define S_surfxml_process 89
5020 #define S_surfxml_process_1 90
5021 #define S_surfxml_process_2 91
5022 #define E_surfxml_process 92
5023 #define AL_surfxml_prop 93
5024 #define E_surfxml_prop 94
5025 #define AL_surfxml_random 95
5026 #define E_surfxml_random 96
5027 #define AL_surfxml_route 97
5028 #define S_surfxml_route 98
5029 #define S_surfxml_route_1 99
5030 #define S_surfxml_route_2 100
5031 #define E_surfxml_route 101
5032 #define AL_surfxml_router 102
5033 #define E_surfxml_router 103
5034 #define AL_surfxml_storage 104
5035 #define S_surfxml_storage 105
5036 #define S_surfxml_storage_1 106
5037 #define S_surfxml_storage_2 107
5038 #define E_surfxml_storage 108
5039 #define AL_surfxml_storage___type 109
5040 #define S_surfxml_storage___type 110
5041 #define S_surfxml_storage___type_1 111
5042 #define S_surfxml_storage___type_2 112
5043 #define E_surfxml_storage___type 113
5044 #define AL_surfxml_trace 114
5045 #define IN_trace 115
5046 #define AL_surfxml_trace___connect 116
5047 #define E_surfxml_trace___connect 117
5048 #define IMPOSSIBLE 118
5049
5050 #ifndef YY_NO_UNISTD_H
5051 /* Special case for "unistd.h", since it is non-ANSI. We include it way
5052  * down here because we want the user's section 1 to have been scanned first.
5053  * The user has a chance to override it with an option.
5054  */
5055 #if defined(_WIN32)
5056 #  ifndef __STRICT_ANSI__
5057 #    include <io.h>
5058 #    include <process.h>
5059 #  endif
5060 #else
5061 #  include <unistd.h>
5062 #endif
5063 #endif
5064
5065 #ifndef YY_EXTRA_TYPE
5066 #define YY_EXTRA_TYPE void *
5067 #endif
5068
5069 static int yy_init_globals (void );
5070
5071 /* Accessor methods to globals.
5072    These are made visible to non-reentrant scanners for convenience. */
5073
5074 int surf_parse_lex_destroy (void );
5075
5076 int surf_parse_get_debug (void );
5077
5078 void surf_parse_set_debug (int debug_flag  );
5079
5080 YY_EXTRA_TYPE surf_parse_get_extra (void );
5081
5082 void surf_parse_set_extra (YY_EXTRA_TYPE user_defined  );
5083
5084 FILE *surf_parse_get_in (void );
5085
5086 void surf_parse_set_in  (FILE * _in_str  );
5087
5088 FILE *surf_parse_get_out (void );
5089
5090 void surf_parse_set_out  (FILE * _out_str  );
5091
5092                         int surf_parse_get_leng (void );
5093
5094 char *surf_parse_get_text (void );
5095
5096 int surf_parse_get_lineno (void );
5097
5098 void surf_parse_set_lineno (int _line_number  );
5099
5100 /* Macros after this point can all be overridden by user definitions in
5101  * section 1.
5102  */
5103
5104 #ifndef YY_SKIP_YYWRAP
5105 #ifdef __cplusplus
5106 extern "C" int surf_parse_wrap (void );
5107 #else
5108 extern int surf_parse_wrap (void );
5109 #endif
5110 #endif
5111
5112 #ifndef YY_NO_UNPUT
5113     
5114 #endif
5115
5116 #ifndef yytext_ptr
5117 static void yy_flex_strncpy (char *,yyconst char *,int );
5118 #endif
5119
5120 #ifdef YY_NEED_STRLEN
5121 static int yy_flex_strlen (yyconst char * );
5122 #endif
5123
5124 #ifndef YY_NO_INPUT
5125
5126 #ifdef __cplusplus
5127 static int yyinput (void );
5128 #else
5129 static int input (void );
5130 #endif
5131
5132 #endif
5133
5134         static int yy_start_stack_ptr = 0;
5135         static int yy_start_stack_depth = 0;
5136         static int *yy_start_stack = NULL;
5137     
5138     static void yy_push_state (int _new_state );
5139     
5140     static void yy_pop_state (void );
5141     
5142 /* Amount of stuff to slurp up with each read. */
5143 #ifndef YY_READ_BUF_SIZE
5144 #ifdef __ia64__
5145 /* On IA-64, the buffer size is 16k, not 8k */
5146 #define YY_READ_BUF_SIZE 16384
5147 #else
5148 #define YY_READ_BUF_SIZE 8192
5149 #endif /* __ia64__ */
5150 #endif
5151
5152 /* Copy whatever the last rule matched to the standard output. */
5153 #ifndef ECHO
5154 /* This used to be an fputs(), but since the string might contain NUL's,
5155  * we now use fwrite().
5156  */
5157 #define ECHO do { if (fwrite( surf_parse_text, (size_t) surf_parse_leng, 1, surf_parse_out )) {} } while (0)
5158 #endif
5159
5160 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
5161  * is returned in "result".
5162  */
5163 #ifndef YY_INPUT
5164 #define YY_INPUT(buf,result,max_size) \
5165         if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
5166                 { \
5167                 int c = '*'; \
5168                 size_t n; \
5169                 for ( n = 0; n < (size_t) max_size && \
5170                              (c = getc( surf_parse_in )) != EOF && c != '\n'; ++n ) \
5171                         buf[n] = (char) c; \
5172                 if ( c == '\n' ) \
5173                         buf[n++] = (char) c; \
5174                 if ( c == EOF && ferror( surf_parse_in ) ) \
5175                         YY_FATAL_ERROR( "input in flex scanner failed" ); \
5176                 result = n; \
5177                 } \
5178         else \
5179                 { \
5180                 errno=0; \
5181                 while ( (result = (int) fread(buf, 1, max_size, surf_parse_in))==0 && ferror(surf_parse_in)) \
5182                         { \
5183                         if( errno != EINTR) \
5184                                 { \
5185                                 YY_FATAL_ERROR( "input in flex scanner failed" ); \
5186                                 break; \
5187                                 } \
5188                         errno=0; \
5189                         clearerr(surf_parse_in); \
5190                         } \
5191                 }\
5192 \
5193
5194 #endif
5195
5196 /* No semi-colon after return; correct usage is to write "yyterminate();" -
5197  * we don't want an extra ';' after the "return" because that will cause
5198  * some compilers to complain about unreachable statements.
5199  */
5200 #ifndef yyterminate
5201 #define yyterminate() return YY_NULL
5202 #endif
5203
5204 /* Number of entries by which start-condition stack grows. */
5205 #ifndef YY_START_STACK_INCR
5206 #define YY_START_STACK_INCR 25
5207 #endif
5208
5209 /* Report a fatal error. */
5210 #ifndef YY_FATAL_ERROR
5211 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
5212 #endif
5213
5214 /* end tables serialization structures and prototypes */
5215
5216 /* Default declaration of generated scanner - a define so the user can
5217  * easily add parameters.
5218  */
5219 #ifndef YY_DECL
5220 #define YY_DECL_IS_OURS 1
5221
5222 extern int surf_parse_lex (void);
5223
5224 #define YY_DECL int surf_parse_lex (void)
5225 #endif /* !YY_DECL */
5226
5227 /* Code executed at the beginning of each rule, after surf_parse_text and surf_parse_leng
5228  * have been set up.
5229  */
5230 #ifndef YY_USER_ACTION
5231 #define YY_USER_ACTION
5232 #endif
5233
5234 /* Code executed at the end of each rule. */
5235 #ifndef YY_BREAK
5236 #define YY_BREAK /*LINTED*/break;
5237 #endif
5238
5239 #define YY_RULE_SETUP \
5240         YY_USER_ACTION
5241
5242 /** The main scanner function which does all the work.
5243  */
5244 YY_DECL
5245 {
5246         yy_state_type yy_current_state;
5247         char *yy_cp, *yy_bp;
5248         int yy_act;
5249     
5250         if ( !(yy_init) )
5251                 {
5252                 (yy_init) = 1;
5253
5254 #ifdef YY_USER_INIT
5255                 YY_USER_INIT;
5256 #endif
5257
5258                 if ( ! (yy_start) )
5259                         (yy_start) = 1; /* first start state */
5260
5261                 if ( ! surf_parse_in )
5262                         surf_parse_in = stdin;
5263
5264                 if ( ! surf_parse_out )
5265                         surf_parse_out = stdout;
5266
5267                 if ( ! YY_CURRENT_BUFFER ) {
5268                         surf_parse_ensure_buffer_stack ();
5269                         YY_CURRENT_BUFFER_LVALUE =
5270                                 surf_parse__create_buffer(surf_parse_in,YY_BUF_SIZE );
5271                 }
5272
5273                 surf_parse__load_buffer_state( );
5274                 }
5275
5276         {
5277
5278  /* Bypass Flex's default INITIAL state and begin by parsing the XML prolog. */
5279  SET(PROLOG);
5280  reset_surfxml_parse_err_msg();
5281  surfxml_bufferstack = (char *) malloc(FLEXML_BUFFERSTACKSIZE);
5282  assert(surfxml_bufferstack);
5283  #ifdef FLEX_DEBUG
5284  {
5285      int i;
5286      for (i = 0; i < blimit; i++) {
5287          surfxml_bufferstack[i] = '\377';
5288      }
5289  }
5290  #endif
5291  surfxml_bufferstack[0] = '\0';
5292  indexstack = (int *) malloc(FLEXML_INDEXSTACKSIZE * sizeof(int));
5293  assert(indexstack);
5294  indexstack[0] = 0;
5295
5296   /* FleXML_init */
5297   bnext = inext = 1;
5298   surfxml_bufferliteral('\0', &bnext, "0.0");
5299   surfxml_bufferliteral('\0', &bnext, "2147483647");
5300   surfxml_bufferliteral('\0', &bnext, "txt_unix");
5301   surfxml_bufferliteral('\0', &bnext, "1");
5302   surfxml_bufferliteral('\0', &bnext, "0.0");
5303   surfxml_bufferliteral('\0', &bnext, "txt_unix");
5304   surfxml_bufferliteral('\0', &bnext, "1");
5305   surfxml_bufferliteral('\0', &bnext, "0s");
5306   surfxml_bufferliteral('\0', &bnext, "-1.0");
5307   surfxml_bufferliteral('\0', &bnext, "-1.0");
5308   if(!surfxml_statenames) {surfxml_statenames= (const char **)calloc(IMPOSSIBLE,sizeof(char*));
5309   surfxml_statenames[PROLOG] = NULL;
5310   surfxml_statenames[DOCTYPE] = NULL;
5311   surfxml_statenames[EPILOG] = NULL;
5312   surfxml_statenames[INCOMMENT] = NULL;
5313   surfxml_statenames[INPI] = NULL;
5314   surfxml_statenames[VALUE1] = NULL;
5315   surfxml_statenames[VALUE2] = NULL;
5316   surfxml_statenames[CDATA] = NULL;
5317   surfxml_statenames[AL_surfxml_AS] = NULL;
5318   surfxml_statenames[S_surfxml_AS] = "AS";
5319   surfxml_statenames[S_surfxml_AS_1] = "AS";
5320   surfxml_statenames[S_surfxml_AS_2] = "AS";
5321   surfxml_statenames[S_surfxml_AS_3] = "AS";
5322   surfxml_statenames[S_surfxml_AS_4] = "AS";
5323   surfxml_statenames[S_surfxml_AS_5] = "AS";
5324   surfxml_statenames[S_surfxml_AS_6] = "AS";
5325   surfxml_statenames[S_surfxml_AS_7] = "AS";
5326   surfxml_statenames[S_surfxml_AS_8] = "AS";
5327   surfxml_statenames[E_surfxml_AS] = "AS";
5328   surfxml_statenames[AL_surfxml_ASroute] = NULL;
5329   surfxml_statenames[S_surfxml_ASroute] = "ASroute";
5330   surfxml_statenames[S_surfxml_ASroute_1] = "ASroute";
5331   surfxml_statenames[S_surfxml_ASroute_2] = "ASroute";
5332   surfxml_statenames[E_surfxml_ASroute] = "ASroute";
5333   surfxml_statenames[AL_surfxml_argument] = NULL;
5334   surfxml_statenames[E_surfxml_argument] = "argument";
5335   surfxml_statenames[AL_surfxml_backbone] = NULL;
5336   surfxml_statenames[E_surfxml_backbone] = "backbone";
5337   surfxml_statenames[AL_surfxml_bypassASroute] = NULL;
5338   surfxml_statenames[S_surfxml_bypassASroute] = "bypassASroute";
5339   surfxml_statenames[S_surfxml_bypassASroute_1] = "bypassASroute";
5340   surfxml_statenames[S_surfxml_bypassASroute_2] = "bypassASroute";
5341   surfxml_statenames[E_surfxml_bypassASroute] = "bypassASroute";
5342   surfxml_statenames[AL_surfxml_bypassRoute] = NULL;
5343   surfxml_statenames[S_surfxml_bypassRoute] = "bypassRoute";
5344   surfxml_statenames[S_surfxml_bypassRoute_1] = "bypassRoute";
5345   surfxml_statenames[S_surfxml_bypassRoute_2] = "bypassRoute";
5346   surfxml_statenames[E_surfxml_bypassRoute] = "bypassRoute";
5347   surfxml_statenames[AL_surfxml_cabinet] = NULL;
5348   surfxml_statenames[E_surfxml_cabinet] = "cabinet";
5349   surfxml_statenames[AL_surfxml_cluster] = NULL;
5350   surfxml_statenames[S_surfxml_cluster] = "cluster";
5351   surfxml_statenames[S_surfxml_cluster_1] = "cluster";
5352   surfxml_statenames[S_surfxml_cluster_2] = "cluster";
5353   surfxml_statenames[E_surfxml_cluster] = "cluster";
5354   surfxml_statenames[AL_surfxml_config] = NULL;
5355   surfxml_statenames[S_surfxml_config] = "config";
5356   surfxml_statenames[S_surfxml_config_1] = "config";
5357   surfxml_statenames[S_surfxml_config_2] = "config";
5358   surfxml_statenames[E_surfxml_config] = "config";
5359   surfxml_statenames[AL_surfxml_host] = NULL;
5360   surfxml_statenames[S_surfxml_host] = "host";
5361   surfxml_statenames[S_surfxml_host_1] = "host";
5362   surfxml_statenames[S_surfxml_host_2] = "host";
5363   surfxml_statenames[E_surfxml_host] = "host";
5364   surfxml_statenames[AL_surfxml_host___link] = NULL;
5365   surfxml_statenames[E_surfxml_host___link] = "host_link";
5366   surfxml_statenames[AL_surfxml_include] = NULL;
5367   surfxml_statenames[S_surfxml_include] = "include";
5368   surfxml_statenames[S_surfxml_include_1] = "include";
5369   surfxml_statenames[S_surfxml_include_2] = "include";
5370   surfxml_statenames[E_surfxml_include] = "include";
5371   surfxml_statenames[AL_surfxml_link] = NULL;
5372   surfxml_statenames[S_surfxml_link] = "link";
5373   surfxml_statenames[S_surfxml_link_1] = "link";
5374   surfxml_statenames[S_surfxml_link_2] = "link";
5375   surfxml_statenames[E_surfxml_link] = "link";
5376   surfxml_statenames[AL_surfxml_link___ctn] = NULL;
5377   surfxml_statenames[E_surfxml_link___ctn] = "link_ctn";
5378   surfxml_statenames[AL_surfxml_model___prop] = NULL;
5379   surfxml_statenames[E_surfxml_model___prop] = "model_prop";
5380   surfxml_statenames[AL_surfxml_mount] = NULL;
5381   surfxml_statenames[E_surfxml_mount] = "mount";
5382   surfxml_statenames[AL_surfxml_peer] = NULL;
5383   surfxml_statenames[E_surfxml_peer] = "peer";
5384   surfxml_statenames[ROOT_surfxml_platform] = NULL;
5385   surfxml_statenames[AL_surfxml_platform] = NULL;
5386   surfxml_statenames[S_surfxml_platform] = "platform";
5387   surfxml_statenames[S_surfxml_platform_1] = "platform";
5388   surfxml_statenames[S_surfxml_platform_2] = "platform";
5389   surfxml_statenames[S_surfxml_platform_3] = "platform";
5390   surfxml_statenames[S_surfxml_platform_4] = "platform";
5391   surfxml_statenames[S_surfxml_platform_5] = "platform";
5392   surfxml_statenames[S_surfxml_platform_6] = "platform";
5393   surfxml_statenames[S_surfxml_platform_7] = "platform";
5394   surfxml_statenames[S_surfxml_platform_8] = "platform";
5395   surfxml_statenames[E_surfxml_platform] = "platform";
5396   surfxml_statenames[AL_surfxml_process] = NULL;
5397   surfxml_statenames[S_surfxml_process] = "process";
5398   surfxml_statenames[S_surfxml_process_1] = "process";
5399   surfxml_statenames[S_surfxml_process_2] = "process";
5400   surfxml_statenames[E_surfxml_process] = "process";
5401   surfxml_statenames[AL_surfxml_prop] = NULL;
5402   surfxml_statenames[E_surfxml_prop] = "prop";
5403   surfxml_statenames[AL_surfxml_random] = NULL;
5404   surfxml_statenames[E_surfxml_random] = "random";
5405   surfxml_statenames[AL_surfxml_route] = NULL;
5406   surfxml_statenames[S_surfxml_route] = "route";
5407   surfxml_statenames[S_surfxml_route_1] = "route";
5408   surfxml_statenames[S_surfxml_route_2] = "route";
5409   surfxml_statenames[E_surfxml_route] = "route";
5410   surfxml_statenames[AL_surfxml_router] = NULL;
5411   surfxml_statenames[E_surfxml_router] = "router";
5412   surfxml_statenames[AL_surfxml_storage] = NULL;
5413   surfxml_statenames[S_surfxml_storage] = "storage";
5414   surfxml_statenames[S_surfxml_storage_1] = "storage";
5415   surfxml_statenames[S_surfxml_storage_2] = "storage";
5416   surfxml_statenames[E_surfxml_storage] = "storage";
5417   surfxml_statenames[AL_surfxml_storage___type] = NULL;
5418   surfxml_statenames[S_surfxml_storage___type] = "storage_type";
5419   surfxml_statenames[S_surfxml_storage___type_1] = "storage_type";
5420   surfxml_statenames[S_surfxml_storage___type_2] = "storage_type";
5421   surfxml_statenames[E_surfxml_storage___type] = "storage_type";
5422   surfxml_statenames[AL_surfxml_trace] = NULL;
5423   surfxml_statenames[IN_trace] = "trace";
5424   surfxml_statenames[AL_surfxml_trace___connect] = NULL;
5425   surfxml_statenames[E_surfxml_trace___connect] = "trace_connect";
5426   }
5427
5428  /* COMMENTS and PIs: handled uniformly for efficiency. */
5429
5430         while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
5431                 {
5432                 yy_cp = (yy_c_buf_p);
5433
5434                 /* Support of surf_parse_text. */
5435                 *yy_cp = (yy_hold_char);
5436
5437                 /* yy_bp points to the position in yy_ch_buf of the start of
5438                  * the current run.
5439                  */
5440                 yy_bp = yy_cp;
5441
5442                 yy_current_state = (yy_start);
5443 yy_match:
5444                 do
5445                         {
5446                         YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ;
5447                         if ( yy_accept[yy_current_state] )
5448                                 {
5449                                 (yy_last_accepting_state) = yy_current_state;
5450                                 (yy_last_accepting_cpos) = yy_cp;
5451                                 }
5452                         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
5453                                 {
5454                                 yy_current_state = (int) yy_def[yy_current_state];
5455                                 if ( yy_current_state >= 3334 )
5456                                         yy_c = yy_meta[(unsigned int) yy_c];
5457                                 }
5458                         yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
5459                         ++yy_cp;
5460                         }
5461                 while ( yy_base[yy_current_state] != 11902 );
5462
5463 yy_find_action:
5464                 yy_act = yy_accept[yy_current_state];
5465                 if ( yy_act == 0 )
5466                         { /* have to back up */
5467                         yy_cp = (yy_last_accepting_cpos);
5468                         yy_current_state = (yy_last_accepting_state);
5469                         yy_act = yy_accept[yy_current_state];
5470                         }
5471
5472                 YY_DO_BEFORE_ACTION;
5473
5474                 if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] )
5475                         {
5476                         int yyl;
5477                         for ( yyl = 0; yyl < surf_parse_leng; ++yyl )
5478                                 if ( surf_parse_text[yyl] == '\n' )
5479                                         
5480     surf_parse_lineno++;
5481 ;
5482                         }
5483
5484 do_action:      /* This label is used only to access EOF actions. */
5485
5486                 switch ( yy_act )
5487         { /* beginning of action switch */
5488                         case 0: /* must back up */
5489                         /* undo the effects of YY_DO_BEFORE_ACTION */
5490                         *yy_cp = (yy_hold_char);
5491                         yy_cp = (yy_last_accepting_cpos);
5492                         yy_current_state = (yy_last_accepting_state);
5493                         goto yy_find_action;
5494
5495 case 1:
5496 YY_RULE_SETUP
5497 ENTER(INCOMMENT);
5498         YY_BREAK
5499 case 2:
5500 YY_RULE_SETUP
5501 ENTER(INPI);
5502         YY_BREAK
5503
5504 case 3:
5505 YY_RULE_SETUP
5506 LEAVE;
5507         YY_BREAK
5508 case 4:
5509 case 5:
5510 case 6:
5511 /* rule 6 can match eol */
5512 YY_RULE_SETUP
5513 SKIP;
5514         YY_BREAK
5515 case YY_STATE_EOF(INCOMMENT):
5516 FAIL("EOF in comment.");
5517         YY_BREAK
5518
5519 case 7:
5520 YY_RULE_SETUP
5521 LEAVE;
5522         YY_BREAK
5523 case 8:
5524 case 9:
5525 /* rule 9 can match eol */
5526 YY_RULE_SETUP
5527 SKIP;
5528         YY_BREAK
5529 case YY_STATE_EOF(INPI):
5530 FAIL("EOF in PI (processing instruction).");
5531         YY_BREAK
5532
5533 /* SPACES: skipped uniformly */
5534 case 10:
5535 /* rule 10 can match eol */
5536 YY_RULE_SETUP
5537 SKIP;
5538         YY_BREAK
5539 /* PROLOG: determine root element and process it. */
5540
5541 case 11:
5542 /* rule 11 can match eol */
5543 YY_RULE_SETUP
5544 SET(DOCTYPE); 
5545         YY_BREAK
5546 case 12:
5547 /* rule 12 can match eol */
5548 YY_RULE_SETUP
5549 FAIL("Bad declaration %s.\nIf your are using a XML v3 file (check the version attribute in <platform>), please update it with tools/simgrid_update_xml.pl",surf_parse_text);
5550         YY_BREAK
5551
5552 case 13:
5553 /* rule 13 can match eol */
5554 YY_RULE_SETUP
5555 SET(ROOT_surfxml_platform);
5556         YY_BREAK
5557 case 14:
5558 /* rule 14 can match eol */
5559 YY_RULE_SETUP
5560 FAIL("Bad declaration %s.\nIf your are using a XML v3 file (check the version attribute in <platform>), please update it with tools/simgrid_update_xml.pl",surf_parse_text);
5561         YY_BREAK
5562 case 15:
5563 YY_RULE_SETUP
5564 FAIL("Unexpected character `%c' in prolog.", surf_parse_text[0]);
5565         YY_BREAK
5566 case YY_STATE_EOF(PROLOG):
5567 case YY_STATE_EOF(DOCTYPE):
5568 FAIL("EOF in prolog.");
5569         YY_BREAK
5570
5571 /* RULES DERIVED FROM DTD. */
5572 case 16:
5573 /* rule 16 can match eol */
5574 YY_RULE_SETUP
5575 FAIL("Starting tag <AS> is not allowed here.");
5576         YY_BREAK
5577 case 17:
5578 /* rule 17 can match eol */
5579 YY_RULE_SETUP
5580 {
5581   AX_surfxml_AS_id = 0;
5582   surfxml_AS_id_isset = 0;
5583   AX_surfxml_AS_routing = AU_surfxml_AS_routing;
5584   surfxml_AS_routing_isset = 0;
5585   ENTER(AL_surfxml_AS); pushbuffer(0);
5586   }
5587         YY_BREAK
5588
5589 case 18:
5590 /* rule 18 can match eol */
5591 YY_RULE_SETUP
5592 if (surfxml_AS_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_AS>");} surfxml_AS_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_AS_id);
5593         YY_BREAK
5594 case 19:
5595 /* rule 19 can match eol */
5596 YY_RULE_SETUP
5597 if (surfxml_AS_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_AS>");}  surfxml_AS_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_AS_id);
5598         YY_BREAK
5599 case 20:
5600 /* rule 20 can match eol */
5601 case 21:
5602 /* rule 21 can match eol */
5603 YY_RULE_SETUP
5604 A_surfxml_AS_routing = A_surfxml_AS_routing_Full;
5605         YY_BREAK
5606 case 22:
5607 /* rule 22 can match eol */
5608 case 23:
5609 /* rule 23 can match eol */
5610 YY_RULE_SETUP
5611 A_surfxml_AS_routing = A_surfxml_AS_routing_Floyd;
5612         YY_BREAK
5613 case 24:
5614 /* rule 24 can match eol */
5615 case 25:
5616 /* rule 25 can match eol */
5617 YY_RULE_SETUP
5618 A_surfxml_AS_routing = A_surfxml_AS_routing_Dijkstra;
5619         YY_BREAK
5620 case 26:
5621 /* rule 26 can match eol */
5622 case 27:
5623 /* rule 27 can match eol */
5624 YY_RULE_SETUP
5625 A_surfxml_AS_routing = A_surfxml_AS_routing_DijkstraCache;
5626         YY_BREAK
5627 case 28:
5628 /* rule 28 can match eol */
5629 case 29:
5630 /* rule 29 can match eol */
5631 YY_RULE_SETUP
5632 A_surfxml_AS_routing = A_surfxml_AS_routing_None;
5633         YY_BREAK
5634 case 30:
5635 /* rule 30 can match eol */
5636 case 31:
5637 /* rule 31 can match eol */
5638 YY_RULE_SETUP
5639 A_surfxml_AS_routing = A_surfxml_AS_routing_Vivaldi;
5640         YY_BREAK
5641 case 32:
5642 /* rule 32 can match eol */
5643 case 33:
5644 /* rule 33 can match eol */
5645 YY_RULE_SETUP
5646 A_surfxml_AS_routing = A_surfxml_AS_routing_Cluster;
5647         YY_BREAK
5648 case 34:
5649 /* rule 34 can match eol */
5650 case 35:
5651 /* rule 35 can match eol */
5652 YY_RULE_SETUP
5653 A_surfxml_AS_routing = A_surfxml_AS_routing_ClusterTorus;
5654         YY_BREAK
5655 case 36:
5656 /* rule 36 can match eol */
5657 case 37:
5658 /* rule 37 can match eol */
5659 YY_RULE_SETUP
5660 A_surfxml_AS_routing = A_surfxml_AS_routing_ClusterFatTree;
5661         YY_BREAK
5662 case 38:
5663 /* rule 38 can match eol */
5664 case 39:
5665 /* rule 39 can match eol */
5666 YY_RULE_SETUP
5667 A_surfxml_AS_routing = A_surfxml_AS_routing_ClusterDragonfly;
5668         YY_BREAK
5669 case 40:
5670 YY_RULE_SETUP
5671 {
5672   if (!AX_surfxml_AS_id) FAIL("Required attribute `id' not set for `AS' element.");
5673   if (!AX_surfxml_AS_routing) FAIL("Required attribute `routing' not set for `AS' element.");
5674   LEAVE; STag_surfxml_AS();surfxml_pcdata_ix = 0; ENTER(S_surfxml_AS);
5675  }
5676         YY_BREAK
5677 case 41:
5678 YY_RULE_SETUP
5679 {
5680   if (!AX_surfxml_AS_id) FAIL("Required attribute `id' not set for `AS' element.");
5681   if (!AX_surfxml_AS_routing) FAIL("Required attribute `routing' not set for `AS' element.");
5682   LEAVE; STag_surfxml_AS(); surfxml_pcdata_ix = 0; ETag_surfxml_AS(); popbuffer(); /* attribute */
5683   switch (YY_START) {
5684    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
5685    case S_surfxml_include: case S_surfxml_include_1: case S_surfxml_include_2: SET(S_surfxml_include_2); break;
5686    case S_surfxml_platform: case S_surfxml_platform_1: case S_surfxml_platform_3: case S_surfxml_platform_5: case S_surfxml_platform_6: SET(S_surfxml_platform_6); break;
5687   }
5688  }
5689         YY_BREAK
5690 case 42:
5691 YY_RULE_SETUP
5692 FAIL("Unexpected character `%c' in attribute list of AS element.", surf_parse_text[0]);
5693         YY_BREAK
5694 case 43:
5695 YY_RULE_SETUP
5696 FAIL("Bad attribute `%s' in `AS' element start tag.",surf_parse_text);
5697         YY_BREAK
5698 case YY_STATE_EOF(AL_surfxml_AS):
5699 FAIL("EOF in attribute list of `AS' element.");
5700         YY_BREAK
5701
5702 case 44:
5703 /* rule 44 can match eol */
5704 YY_RULE_SETUP
5705 {
5706   LEAVE;
5707   ETag_surfxml_AS();
5708   popbuffer(); /* attribute */
5709   switch (YY_START) {
5710    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
5711    case S_surfxml_include: case S_surfxml_include_1: case S_surfxml_include_2: SET(S_surfxml_include_2); break;
5712    case S_surfxml_platform: case S_surfxml_platform_1: case S_surfxml_platform_3: case S_surfxml_platform_5: case S_surfxml_platform_6: SET(S_surfxml_platform_6); break;
5713   }
5714  }
5715         YY_BREAK
5716 case 45:
5717 /* rule 45 can match eol */
5718 YY_RULE_SETUP
5719 FAIL("Unexpected end-tag `%s': `</AS>' expected.",surf_parse_text);
5720         YY_BREAK
5721 case 46:
5722 YY_RULE_SETUP
5723 FAIL("Unexpected character `%c': `</AS>' expected.",surf_parse_text[0]);
5724         YY_BREAK
5725 case YY_STATE_EOF(E_surfxml_AS):
5726 case YY_STATE_EOF(S_surfxml_AS):
5727 case YY_STATE_EOF(S_surfxml_AS_1):
5728 case YY_STATE_EOF(S_surfxml_AS_3):
5729 case YY_STATE_EOF(S_surfxml_AS_4):
5730 case YY_STATE_EOF(S_surfxml_AS_6):
5731 case YY_STATE_EOF(S_surfxml_AS_8):
5732 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</AS>' expected.");
5733         YY_BREAK
5734
5735 case 47:
5736 /* rule 47 can match eol */
5737 YY_RULE_SETUP
5738 FAIL("Starting tag <ASroute> is not allowed here.");
5739         YY_BREAK
5740 case 48:
5741 /* rule 48 can match eol */
5742 YY_RULE_SETUP
5743 {
5744   AX_surfxml_ASroute_dst = 0;
5745   surfxml_ASroute_dst_isset = 0;
5746   AX_surfxml_ASroute_gw___dst = 0;
5747   surfxml_ASroute_gw___dst_isset = 0;
5748   AX_surfxml_ASroute_gw___src = 0;
5749   surfxml_ASroute_gw___src_isset = 0;
5750   AX_surfxml_ASroute_src = 0;
5751   surfxml_ASroute_src_isset = 0;
5752   AX_surfxml_ASroute_symmetrical = A_surfxml_ASroute_symmetrical_YES;
5753   surfxml_ASroute_symmetrical_isset = 0;
5754   ENTER(AL_surfxml_ASroute); pushbuffer(0);
5755   }
5756         YY_BREAK
5757
5758 case 49:
5759 /* rule 49 can match eol */
5760 YY_RULE_SETUP
5761 if (surfxml_ASroute_dst_isset != 0) {FAIL("Multiple definition of attribute dst in <surfxml_ASroute>");} surfxml_ASroute_dst_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_ASroute_dst);
5762         YY_BREAK
5763 case 50:
5764 /* rule 50 can match eol */
5765 YY_RULE_SETUP
5766 if (surfxml_ASroute_dst_isset != 0) {FAIL("Multiple definition of attribute dst in <surfxml_ASroute>");}  surfxml_ASroute_dst_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_ASroute_dst);
5767         YY_BREAK
5768 case 51:
5769 /* rule 51 can match eol */
5770 YY_RULE_SETUP
5771 if (surfxml_ASroute_gw___dst_isset != 0) {FAIL("Multiple definition of attribute gw_dst in <surfxml_ASroute>");} surfxml_ASroute_gw___dst_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_ASroute_gw___dst);
5772         YY_BREAK
5773 case 52:
5774 /* rule 52 can match eol */
5775 YY_RULE_SETUP
5776 if (surfxml_ASroute_gw___dst_isset != 0) {FAIL("Multiple definition of attribute gw_dst in <surfxml_ASroute>");}  surfxml_ASroute_gw___dst_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_ASroute_gw___dst);
5777         YY_BREAK
5778 case 53:
5779 /* rule 53 can match eol */
5780 YY_RULE_SETUP
5781 if (surfxml_ASroute_gw___src_isset != 0) {FAIL("Multiple definition of attribute gw_src in <surfxml_ASroute>");} surfxml_ASroute_gw___src_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_ASroute_gw___src);
5782         YY_BREAK
5783 case 54:
5784 /* rule 54 can match eol */
5785 YY_RULE_SETUP
5786 if (surfxml_ASroute_gw___src_isset != 0) {FAIL("Multiple definition of attribute gw_src in <surfxml_ASroute>");}  surfxml_ASroute_gw___src_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_ASroute_gw___src);
5787         YY_BREAK
5788 case 55:
5789 /* rule 55 can match eol */
5790 YY_RULE_SETUP
5791 if (surfxml_ASroute_src_isset != 0) {FAIL("Multiple definition of attribute src in <surfxml_ASroute>");} surfxml_ASroute_src_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_ASroute_src);
5792         YY_BREAK
5793 case 56:
5794 /* rule 56 can match eol */
5795 YY_RULE_SETUP
5796 if (surfxml_ASroute_src_isset != 0) {FAIL("Multiple definition of attribute src in <surfxml_ASroute>");}  surfxml_ASroute_src_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_ASroute_src);
5797         YY_BREAK
5798 case 57:
5799 /* rule 57 can match eol */
5800 case 58:
5801 /* rule 58 can match eol */
5802 YY_RULE_SETUP
5803 A_surfxml_ASroute_symmetrical = A_surfxml_ASroute_symmetrical_YES;
5804         YY_BREAK
5805 case 59:
5806 /* rule 59 can match eol */
5807 case 60:
5808 /* rule 60 can match eol */
5809 YY_RULE_SETUP
5810 A_surfxml_ASroute_symmetrical = A_surfxml_ASroute_symmetrical_NO;
5811         YY_BREAK
5812 case 61:
5813 YY_RULE_SETUP
5814 {
5815   if (!AX_surfxml_ASroute_dst) FAIL("Required attribute `dst' not set for `ASroute' element.");
5816   if (!AX_surfxml_ASroute_gw___dst) FAIL("Required attribute `gw_dst' not set for `ASroute' element.");
5817   if (!AX_surfxml_ASroute_gw___src) FAIL("Required attribute `gw_src' not set for `ASroute' element.");
5818   if (!AX_surfxml_ASroute_src) FAIL("Required attribute `src' not set for `ASroute' element.");
5819   LEAVE; STag_surfxml_ASroute();surfxml_pcdata_ix = 0; ENTER(S_surfxml_ASroute);
5820  }
5821         YY_BREAK
5822 case 62:
5823 YY_RULE_SETUP
5824 {
5825   if (!AX_surfxml_ASroute_dst) FAIL("Required attribute `dst' not set for `ASroute' element.");
5826   if (!AX_surfxml_ASroute_gw___dst) FAIL("Required attribute `gw_dst' not set for `ASroute' element.");
5827   if (!AX_surfxml_ASroute_gw___src) FAIL("Required attribute `gw_src' not set for `ASroute' element.");
5828   if (!AX_surfxml_ASroute_src) FAIL("Required attribute `src' not set for `ASroute' element.");
5829   LEAVE; STag_surfxml_ASroute(); surfxml_pcdata_ix = 0; ETag_surfxml_ASroute(); popbuffer(); /* attribute */
5830   switch (YY_START) {
5831    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: SET(S_surfxml_AS_6); break;
5832    case S_surfxml_AS_4: case S_surfxml_AS_6: case S_surfxml_AS_7: case S_surfxml_AS_8: SET(S_surfxml_AS_8); break;
5833   }
5834  }
5835         YY_BREAK
5836 case 63:
5837 YY_RULE_SETUP
5838 FAIL("Unexpected character `%c' in attribute list of ASroute element.", surf_parse_text[0]);
5839         YY_BREAK
5840 case 64:
5841 YY_RULE_SETUP
5842 FAIL("Bad attribute `%s' in `ASroute' element start tag.",surf_parse_text);
5843         YY_BREAK
5844 case YY_STATE_EOF(AL_surfxml_ASroute):
5845 FAIL("EOF in attribute list of `ASroute' element.");
5846         YY_BREAK
5847
5848 case 65:
5849 /* rule 65 can match eol */
5850 YY_RULE_SETUP
5851 {
5852   LEAVE;
5853   ETag_surfxml_ASroute();
5854   popbuffer(); /* attribute */
5855   switch (YY_START) {
5856    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: SET(S_surfxml_AS_6); break;
5857    case S_surfxml_AS_4: case S_surfxml_AS_6: case S_surfxml_AS_7: case S_surfxml_AS_8: SET(S_surfxml_AS_8); break;
5858   }
5859  }
5860         YY_BREAK
5861 case 66:
5862 /* rule 66 can match eol */
5863 YY_RULE_SETUP
5864 FAIL("Unexpected end-tag `%s': `</ASroute>' expected.",surf_parse_text);
5865         YY_BREAK
5866 case 67:
5867 YY_RULE_SETUP
5868 FAIL("Unexpected character `%c': `</ASroute>' expected.",surf_parse_text[0]);
5869         YY_BREAK
5870 case YY_STATE_EOF(E_surfxml_ASroute):
5871 case YY_STATE_EOF(S_surfxml_ASroute):
5872 case YY_STATE_EOF(S_surfxml_ASroute_2):
5873 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</ASroute>' expected.");
5874         YY_BREAK
5875
5876 case 68:
5877 /* rule 68 can match eol */
5878 YY_RULE_SETUP
5879 FAIL("Starting tag <argument> is not allowed here.");
5880         YY_BREAK
5881 case 69:
5882 /* rule 69 can match eol */
5883 YY_RULE_SETUP
5884 {
5885   AX_surfxml_argument_value = 0;
5886   surfxml_argument_value_isset = 0;
5887   ENTER(AL_surfxml_argument); pushbuffer(0);
5888   }
5889         YY_BREAK
5890
5891 case 70:
5892 /* rule 70 can match eol */
5893 YY_RULE_SETUP
5894 if (surfxml_argument_value_isset != 0) {FAIL("Multiple definition of attribute value in <surfxml_argument>");} surfxml_argument_value_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_argument_value);
5895         YY_BREAK
5896 case 71:
5897 /* rule 71 can match eol */
5898 YY_RULE_SETUP
5899 if (surfxml_argument_value_isset != 0) {FAIL("Multiple definition of attribute value in <surfxml_argument>");}  surfxml_argument_value_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_argument_value);
5900         YY_BREAK
5901 case 72:
5902 YY_RULE_SETUP
5903 {
5904   if (!AX_surfxml_argument_value) FAIL("Required attribute `value' not set for `argument' element.");
5905   LEAVE; STag_surfxml_argument();surfxml_pcdata_ix = 0; ENTER(E_surfxml_argument);
5906  }
5907         YY_BREAK
5908 case 73:
5909 YY_RULE_SETUP
5910 {
5911   if (!AX_surfxml_argument_value) FAIL("Required attribute `value' not set for `argument' element.");
5912   LEAVE; STag_surfxml_argument(); surfxml_pcdata_ix = 0; ETag_surfxml_argument(); popbuffer(); /* attribute */
5913   switch (YY_START) {
5914    case S_surfxml_process: case S_surfxml_process_1: case S_surfxml_process_2: SET(S_surfxml_process_2); break;
5915   }
5916  }
5917         YY_BREAK
5918 case 74:
5919 YY_RULE_SETUP
5920 FAIL("Unexpected character `%c' in attribute list of argument element.", surf_parse_text[0]);
5921         YY_BREAK
5922 case 75:
5923 YY_RULE_SETUP
5924 FAIL("Bad attribute `%s' in `argument' element start tag.",surf_parse_text);
5925         YY_BREAK
5926 case YY_STATE_EOF(AL_surfxml_argument):
5927 FAIL("EOF in attribute list of `argument' element.");
5928         YY_BREAK
5929
5930 case 76:
5931 /* rule 76 can match eol */
5932 YY_RULE_SETUP
5933 {
5934   LEAVE;
5935   ETag_surfxml_argument();
5936   popbuffer(); /* attribute */
5937   switch (YY_START) {
5938    case S_surfxml_process: case S_surfxml_process_1: case S_surfxml_process_2: SET(S_surfxml_process_2); break;
5939   }
5940  }
5941         YY_BREAK
5942 case 77:
5943 /* rule 77 can match eol */
5944 YY_RULE_SETUP
5945 FAIL("Unexpected end-tag `%s': `</argument>' expected.",surf_parse_text);
5946         YY_BREAK
5947 case 78:
5948 YY_RULE_SETUP
5949 FAIL("Unexpected character `%c': `</argument>' expected.",surf_parse_text[0]);
5950         YY_BREAK
5951 case YY_STATE_EOF(E_surfxml_argument):
5952 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</argument>' expected.");
5953         YY_BREAK
5954
5955 case 79:
5956 /* rule 79 can match eol */
5957 YY_RULE_SETUP
5958 FAIL("Starting tag <backbone> is not allowed here.");
5959         YY_BREAK
5960 case 80:
5961 /* rule 80 can match eol */
5962 YY_RULE_SETUP
5963 {
5964   AX_surfxml_backbone_bandwidth = 0;
5965   surfxml_backbone_bandwidth_isset = 0;
5966   AX_surfxml_backbone_id = 0;
5967   surfxml_backbone_id_isset = 0;
5968   AX_surfxml_backbone_latency = 0;
5969   surfxml_backbone_latency_isset = 0;
5970   ENTER(AL_surfxml_backbone); pushbuffer(0);
5971   }
5972         YY_BREAK
5973
5974 case 81:
5975 /* rule 81 can match eol */
5976 YY_RULE_SETUP
5977 if (surfxml_backbone_bandwidth_isset != 0) {FAIL("Multiple definition of attribute bandwidth in <surfxml_backbone>");} surfxml_backbone_bandwidth_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_backbone_bandwidth);
5978         YY_BREAK
5979 case 82:
5980 /* rule 82 can match eol */
5981 YY_RULE_SETUP
5982 if (surfxml_backbone_bandwidth_isset != 0) {FAIL("Multiple definition of attribute bandwidth in <surfxml_backbone>");}  surfxml_backbone_bandwidth_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_backbone_bandwidth);
5983         YY_BREAK
5984 case 83:
5985 /* rule 83 can match eol */
5986 YY_RULE_SETUP
5987 if (surfxml_backbone_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_backbone>");} surfxml_backbone_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_backbone_id);
5988         YY_BREAK
5989 case 84:
5990 /* rule 84 can match eol */
5991 YY_RULE_SETUP
5992 if (surfxml_backbone_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_backbone>");}  surfxml_backbone_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_backbone_id);
5993         YY_BREAK
5994 case 85:
5995 /* rule 85 can match eol */
5996 YY_RULE_SETUP
5997 if (surfxml_backbone_latency_isset != 0) {FAIL("Multiple definition of attribute latency in <surfxml_backbone>");} surfxml_backbone_latency_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_backbone_latency);
5998         YY_BREAK
5999 case 86:
6000 /* rule 86 can match eol */
6001 YY_RULE_SETUP
6002 if (surfxml_backbone_latency_isset != 0) {FAIL("Multiple definition of attribute latency in <surfxml_backbone>");}  surfxml_backbone_latency_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_backbone_latency);
6003         YY_BREAK
6004 case 87:
6005 YY_RULE_SETUP
6006 {
6007   if (!AX_surfxml_backbone_bandwidth) FAIL("Required attribute `bandwidth' not set for `backbone' element.");
6008   if (!AX_surfxml_backbone_id) FAIL("Required attribute `id' not set for `backbone' element.");
6009   if (!AX_surfxml_backbone_latency) FAIL("Required attribute `latency' not set for `backbone' element.");
6010   LEAVE; STag_surfxml_backbone();surfxml_pcdata_ix = 0; ENTER(E_surfxml_backbone);
6011  }
6012         YY_BREAK
6013 case 88:
6014 YY_RULE_SETUP
6015 {
6016   if (!AX_surfxml_backbone_bandwidth) FAIL("Required attribute `bandwidth' not set for `backbone' element.");
6017   if (!AX_surfxml_backbone_id) FAIL("Required attribute `id' not set for `backbone' element.");
6018   if (!AX_surfxml_backbone_latency) FAIL("Required attribute `latency' not set for `backbone' element.");
6019   LEAVE; STag_surfxml_backbone(); surfxml_pcdata_ix = 0; ETag_surfxml_backbone(); popbuffer(); /* attribute */
6020   switch (YY_START) {
6021    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
6022   }
6023  }
6024         YY_BREAK
6025 case 89:
6026 YY_RULE_SETUP
6027 FAIL("Unexpected character `%c' in attribute list of backbone element.", surf_parse_text[0]);
6028         YY_BREAK
6029 case 90:
6030 YY_RULE_SETUP
6031 FAIL("Bad attribute `%s' in `backbone' element start tag.",surf_parse_text);
6032         YY_BREAK
6033 case YY_STATE_EOF(AL_surfxml_backbone):
6034 FAIL("EOF in attribute list of `backbone' element.");
6035         YY_BREAK
6036
6037 case 91:
6038 /* rule 91 can match eol */
6039 YY_RULE_SETUP
6040 {
6041   LEAVE;
6042   ETag_surfxml_backbone();
6043   popbuffer(); /* attribute */
6044   switch (YY_START) {
6045    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
6046   }
6047  }
6048         YY_BREAK
6049 case 92:
6050 /* rule 92 can match eol */
6051 YY_RULE_SETUP
6052 FAIL("Unexpected end-tag `%s': `</backbone>' expected.",surf_parse_text);
6053         YY_BREAK
6054 case 93:
6055 YY_RULE_SETUP
6056 FAIL("Unexpected character `%c': `</backbone>' expected.",surf_parse_text[0]);
6057         YY_BREAK
6058 case YY_STATE_EOF(E_surfxml_backbone):
6059 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</backbone>' expected.");
6060         YY_BREAK
6061
6062 case 94:
6063 /* rule 94 can match eol */
6064 YY_RULE_SETUP
6065 FAIL("Starting tag <bypassASroute> is not allowed here.");
6066         YY_BREAK
6067 case 95:
6068 /* rule 95 can match eol */
6069 YY_RULE_SETUP
6070 {
6071   AX_surfxml_bypassASroute_dst = 0;
6072   surfxml_bypassASroute_dst_isset = 0;
6073   AX_surfxml_bypassASroute_gw___dst = 0;
6074   surfxml_bypassASroute_gw___dst_isset = 0;
6075   AX_surfxml_bypassASroute_gw___src = 0;
6076   surfxml_bypassASroute_gw___src_isset = 0;
6077   AX_surfxml_bypassASroute_src = 0;
6078   surfxml_bypassASroute_src_isset = 0;
6079   ENTER(AL_surfxml_bypassASroute); pushbuffer(0);
6080   }
6081         YY_BREAK
6082
6083 case 96:
6084 /* rule 96 can match eol */
6085 YY_RULE_SETUP
6086 if (surfxml_bypassASroute_dst_isset != 0) {FAIL("Multiple definition of attribute dst in <surfxml_bypassASroute>");} surfxml_bypassASroute_dst_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_bypassASroute_dst);
6087         YY_BREAK
6088 case 97:
6089 /* rule 97 can match eol */
6090 YY_RULE_SETUP
6091 if (surfxml_bypassASroute_dst_isset != 0) {FAIL("Multiple definition of attribute dst in <surfxml_bypassASroute>");}  surfxml_bypassASroute_dst_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_bypassASroute_dst);
6092         YY_BREAK
6093 case 98:
6094 /* rule 98 can match eol */
6095 YY_RULE_SETUP
6096 if (surfxml_bypassASroute_gw___dst_isset != 0) {FAIL("Multiple definition of attribute gw_dst in <surfxml_bypassASroute>");} surfxml_bypassASroute_gw___dst_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_bypassASroute_gw___dst);
6097         YY_BREAK
6098 case 99:
6099 /* rule 99 can match eol */
6100 YY_RULE_SETUP
6101 if (surfxml_bypassASroute_gw___dst_isset != 0) {FAIL("Multiple definition of attribute gw_dst in <surfxml_bypassASroute>");}  surfxml_bypassASroute_gw___dst_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_bypassASroute_gw___dst);
6102         YY_BREAK
6103 case 100:
6104 /* rule 100 can match eol */
6105 YY_RULE_SETUP
6106 if (surfxml_bypassASroute_gw___src_isset != 0) {FAIL("Multiple definition of attribute gw_src in <surfxml_bypassASroute>");} surfxml_bypassASroute_gw___src_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_bypassASroute_gw___src);
6107         YY_BREAK
6108 case 101:
6109 /* rule 101 can match eol */
6110 YY_RULE_SETUP
6111 if (surfxml_bypassASroute_gw___src_isset != 0) {FAIL("Multiple definition of attribute gw_src in <surfxml_bypassASroute>");}  surfxml_bypassASroute_gw___src_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_bypassASroute_gw___src);
6112         YY_BREAK
6113 case 102:
6114 /* rule 102 can match eol */
6115 YY_RULE_SETUP
6116 if (surfxml_bypassASroute_src_isset != 0) {FAIL("Multiple definition of attribute src in <surfxml_bypassASroute>");} surfxml_bypassASroute_src_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_bypassASroute_src);
6117         YY_BREAK
6118 case 103:
6119 /* rule 103 can match eol */
6120 YY_RULE_SETUP
6121 if (surfxml_bypassASroute_src_isset != 0) {FAIL("Multiple definition of attribute src in <surfxml_bypassASroute>");}  surfxml_bypassASroute_src_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_bypassASroute_src);
6122         YY_BREAK
6123 case 104:
6124 YY_RULE_SETUP
6125 {
6126   if (!AX_surfxml_bypassASroute_dst) FAIL("Required attribute `dst' not set for `bypassASroute' element.");
6127   if (!AX_surfxml_bypassASroute_gw___dst) FAIL("Required attribute `gw_dst' not set for `bypassASroute' element.");
6128   if (!AX_surfxml_bypassASroute_gw___src) FAIL("Required attribute `gw_src' not set for `bypassASroute' element.");
6129   if (!AX_surfxml_bypassASroute_src) FAIL("Required attribute `src' not set for `bypassASroute' element.");
6130   LEAVE; STag_surfxml_bypassASroute();surfxml_pcdata_ix = 0; ENTER(S_surfxml_bypassASroute);
6131  }
6132         YY_BREAK
6133 case 105:
6134 YY_RULE_SETUP
6135 {
6136   if (!AX_surfxml_bypassASroute_dst) FAIL("Required attribute `dst' not set for `bypassASroute' element.");
6137   if (!AX_surfxml_bypassASroute_gw___dst) FAIL("Required attribute `gw_dst' not set for `bypassASroute' element.");
6138   if (!AX_surfxml_bypassASroute_gw___src) FAIL("Required attribute `gw_src' not set for `bypassASroute' element.");
6139   if (!AX_surfxml_bypassASroute_src) FAIL("Required attribute `src' not set for `bypassASroute' element.");
6140   LEAVE; STag_surfxml_bypassASroute(); surfxml_pcdata_ix = 0; ETag_surfxml_bypassASroute(); popbuffer(); /* attribute */
6141   switch (YY_START) {
6142    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_4: case S_surfxml_AS_6: case S_surfxml_AS_7: case S_surfxml_AS_8: SET(S_surfxml_AS_8); break;
6143   }
6144  }
6145         YY_BREAK
6146 case 106:
6147 YY_RULE_SETUP
6148 FAIL("Unexpected character `%c' in attribute list of bypassASroute element.", surf_parse_text[0]);
6149         YY_BREAK
6150 case 107:
6151 YY_RULE_SETUP
6152 FAIL("Bad attribute `%s' in `bypassASroute' element start tag.",surf_parse_text);
6153         YY_BREAK
6154 case YY_STATE_EOF(AL_surfxml_bypassASroute):
6155 FAIL("EOF in attribute list of `bypassASroute' element.");
6156         YY_BREAK
6157
6158 case 108:
6159 /* rule 108 can match eol */
6160 YY_RULE_SETUP
6161 {
6162   LEAVE;
6163   ETag_surfxml_bypassASroute();
6164   popbuffer(); /* attribute */
6165   switch (YY_START) {
6166    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_4: case S_surfxml_AS_6: case S_surfxml_AS_7: case S_surfxml_AS_8: SET(S_surfxml_AS_8); break;
6167   }
6168  }
6169         YY_BREAK
6170 case 109:
6171 /* rule 109 can match eol */
6172 YY_RULE_SETUP
6173 FAIL("Unexpected end-tag `%s': `</bypassASroute>' expected.",surf_parse_text);
6174         YY_BREAK
6175 case 110:
6176 YY_RULE_SETUP
6177 FAIL("Unexpected character `%c': `</bypassASroute>' expected.",surf_parse_text[0]);
6178         YY_BREAK
6179 case YY_STATE_EOF(E_surfxml_bypassASroute):
6180 case YY_STATE_EOF(S_surfxml_bypassASroute):
6181 case YY_STATE_EOF(S_surfxml_bypassASroute_2):
6182 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</bypassASroute>' expected.");
6183         YY_BREAK
6184
6185 case 111:
6186 /* rule 111 can match eol */
6187 YY_RULE_SETUP
6188 FAIL("Starting tag <bypassRoute> is not allowed here.");
6189         YY_BREAK
6190 case 112:
6191 /* rule 112 can match eol */
6192 YY_RULE_SETUP
6193 {
6194   AX_surfxml_bypassRoute_dst = 0;
6195   surfxml_bypassRoute_dst_isset = 0;
6196   AX_surfxml_bypassRoute_src = 0;
6197   surfxml_bypassRoute_src_isset = 0;
6198   ENTER(AL_surfxml_bypassRoute); pushbuffer(0);
6199   }
6200         YY_BREAK
6201
6202 case 113:
6203 /* rule 113 can match eol */
6204 YY_RULE_SETUP
6205 if (surfxml_bypassRoute_dst_isset != 0) {FAIL("Multiple definition of attribute dst in <surfxml_bypassRoute>");} surfxml_bypassRoute_dst_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_bypassRoute_dst);
6206         YY_BREAK
6207 case 114:
6208 /* rule 114 can match eol */
6209 YY_RULE_SETUP
6210 if (surfxml_bypassRoute_dst_isset != 0) {FAIL("Multiple definition of attribute dst in <surfxml_bypassRoute>");}  surfxml_bypassRoute_dst_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_bypassRoute_dst);
6211         YY_BREAK
6212 case 115:
6213 /* rule 115 can match eol */
6214 YY_RULE_SETUP
6215 if (surfxml_bypassRoute_src_isset != 0) {FAIL("Multiple definition of attribute src in <surfxml_bypassRoute>");} surfxml_bypassRoute_src_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_bypassRoute_src);
6216         YY_BREAK
6217 case 116:
6218 /* rule 116 can match eol */
6219 YY_RULE_SETUP
6220 if (surfxml_bypassRoute_src_isset != 0) {FAIL("Multiple definition of attribute src in <surfxml_bypassRoute>");}  surfxml_bypassRoute_src_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_bypassRoute_src);
6221         YY_BREAK
6222 case 117:
6223 YY_RULE_SETUP
6224 {
6225   if (!AX_surfxml_bypassRoute_dst) FAIL("Required attribute `dst' not set for `bypassRoute' element.");
6226   if (!AX_surfxml_bypassRoute_src) FAIL("Required attribute `src' not set for `bypassRoute' element.");
6227   LEAVE; STag_surfxml_bypassRoute();surfxml_pcdata_ix = 0; ENTER(S_surfxml_bypassRoute);
6228  }
6229         YY_BREAK
6230 case 118:
6231 YY_RULE_SETUP
6232 {
6233   if (!AX_surfxml_bypassRoute_dst) FAIL("Required attribute `dst' not set for `bypassRoute' element.");
6234   if (!AX_surfxml_bypassRoute_src) FAIL("Required attribute `src' not set for `bypassRoute' element.");
6235   LEAVE; STag_surfxml_bypassRoute(); surfxml_pcdata_ix = 0; ETag_surfxml_bypassRoute(); popbuffer(); /* attribute */
6236   switch (YY_START) {
6237    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_4: case S_surfxml_AS_6: case S_surfxml_AS_7: case S_surfxml_AS_8: SET(S_surfxml_AS_8); break;
6238   }
6239  }
6240         YY_BREAK
6241 case 119:
6242 YY_RULE_SETUP
6243 FAIL("Unexpected character `%c' in attribute list of bypassRoute element.", surf_parse_text[0]);
6244         YY_BREAK
6245 case 120:
6246 YY_RULE_SETUP
6247 FAIL("Bad attribute `%s' in `bypassRoute' element start tag.",surf_parse_text);
6248         YY_BREAK
6249 case YY_STATE_EOF(AL_surfxml_bypassRoute):
6250 FAIL("EOF in attribute list of `bypassRoute' element.");
6251         YY_BREAK
6252
6253 case 121:
6254 /* rule 121 can match eol */
6255 YY_RULE_SETUP
6256 {
6257   LEAVE;
6258   ETag_surfxml_bypassRoute();
6259   popbuffer(); /* attribute */
6260   switch (YY_START) {
6261    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_4: case S_surfxml_AS_6: case S_surfxml_AS_7: case S_surfxml_AS_8: SET(S_surfxml_AS_8); break;
6262   }
6263  }
6264         YY_BREAK
6265 case 122:
6266 /* rule 122 can match eol */
6267 YY_RULE_SETUP
6268 FAIL("Unexpected end-tag `%s': `</bypassRoute>' expected.",surf_parse_text);
6269         YY_BREAK
6270 case 123:
6271 YY_RULE_SETUP
6272 FAIL("Unexpected character `%c': `</bypassRoute>' expected.",surf_parse_text[0]);
6273         YY_BREAK
6274 case YY_STATE_EOF(E_surfxml_bypassRoute):
6275 case YY_STATE_EOF(S_surfxml_bypassRoute):
6276 case YY_STATE_EOF(S_surfxml_bypassRoute_2):
6277 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</bypassRoute>' expected.");
6278         YY_BREAK
6279
6280 case 124:
6281 /* rule 124 can match eol */
6282 YY_RULE_SETUP
6283 FAIL("Starting tag <cabinet> is not allowed here.");
6284         YY_BREAK
6285 case 125:
6286 /* rule 125 can match eol */
6287 YY_RULE_SETUP
6288 {
6289   AX_surfxml_cabinet_bw = 0;
6290   surfxml_cabinet_bw_isset = 0;
6291   AX_surfxml_cabinet_id = 0;
6292   surfxml_cabinet_id_isset = 0;
6293   AX_surfxml_cabinet_lat = 0;
6294   surfxml_cabinet_lat_isset = 0;
6295   AX_surfxml_cabinet_prefix = 0;
6296   surfxml_cabinet_prefix_isset = 0;
6297   AX_surfxml_cabinet_radical = 0;
6298   surfxml_cabinet_radical_isset = 0;
6299   AX_surfxml_cabinet_speed = 0;
6300   surfxml_cabinet_speed_isset = 0;
6301   AX_surfxml_cabinet_suffix = 0;
6302   surfxml_cabinet_suffix_isset = 0;
6303   ENTER(AL_surfxml_cabinet); pushbuffer(0);
6304   }
6305         YY_BREAK
6306
6307 case 126:
6308 /* rule 126 can match eol */
6309 YY_RULE_SETUP
6310 if (surfxml_cabinet_bw_isset != 0) {FAIL("Multiple definition of attribute bw in <surfxml_cabinet>");} surfxml_cabinet_bw_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cabinet_bw);
6311         YY_BREAK
6312 case 127:
6313 /* rule 127 can match eol */
6314 YY_RULE_SETUP
6315 if (surfxml_cabinet_bw_isset != 0) {FAIL("Multiple definition of attribute bw in <surfxml_cabinet>");}  surfxml_cabinet_bw_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cabinet_bw);
6316         YY_BREAK
6317 case 128:
6318 /* rule 128 can match eol */
6319 YY_RULE_SETUP
6320 if (surfxml_cabinet_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_cabinet>");} surfxml_cabinet_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cabinet_id);
6321         YY_BREAK
6322 case 129:
6323 /* rule 129 can match eol */
6324 YY_RULE_SETUP
6325 if (surfxml_cabinet_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_cabinet>");}  surfxml_cabinet_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cabinet_id);
6326         YY_BREAK
6327 case 130:
6328 /* rule 130 can match eol */
6329 YY_RULE_SETUP
6330 if (surfxml_cabinet_lat_isset != 0) {FAIL("Multiple definition of attribute lat in <surfxml_cabinet>");} surfxml_cabinet_lat_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cabinet_lat);
6331         YY_BREAK
6332 case 131:
6333 /* rule 131 can match eol */
6334 YY_RULE_SETUP
6335 if (surfxml_cabinet_lat_isset != 0) {FAIL("Multiple definition of attribute lat in <surfxml_cabinet>");}  surfxml_cabinet_lat_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cabinet_lat);
6336         YY_BREAK
6337 case 132:
6338 /* rule 132 can match eol */
6339 YY_RULE_SETUP
6340 if (surfxml_cabinet_prefix_isset != 0) {FAIL("Multiple definition of attribute prefix in <surfxml_cabinet>");} surfxml_cabinet_prefix_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cabinet_prefix);
6341         YY_BREAK
6342 case 133:
6343 /* rule 133 can match eol */
6344 YY_RULE_SETUP
6345 if (surfxml_cabinet_prefix_isset != 0) {FAIL("Multiple definition of attribute prefix in <surfxml_cabinet>");}  surfxml_cabinet_prefix_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cabinet_prefix);
6346         YY_BREAK
6347 case 134:
6348 /* rule 134 can match eol */
6349 YY_RULE_SETUP
6350 if (surfxml_cabinet_radical_isset != 0) {FAIL("Multiple definition of attribute radical in <surfxml_cabinet>");} surfxml_cabinet_radical_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cabinet_radical);
6351         YY_BREAK
6352 case 135:
6353 /* rule 135 can match eol */
6354 YY_RULE_SETUP
6355 if (surfxml_cabinet_radical_isset != 0) {FAIL("Multiple definition of attribute radical in <surfxml_cabinet>");}  surfxml_cabinet_radical_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cabinet_radical);
6356         YY_BREAK
6357 case 136:
6358 /* rule 136 can match eol */
6359 YY_RULE_SETUP
6360 if (surfxml_cabinet_speed_isset != 0) {FAIL("Multiple definition of attribute speed in <surfxml_cabinet>");} surfxml_cabinet_speed_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cabinet_speed);
6361         YY_BREAK
6362 case 137:
6363 /* rule 137 can match eol */
6364 YY_RULE_SETUP
6365 if (surfxml_cabinet_speed_isset != 0) {FAIL("Multiple definition of attribute speed in <surfxml_cabinet>");}  surfxml_cabinet_speed_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cabinet_speed);
6366         YY_BREAK
6367 case 138:
6368 /* rule 138 can match eol */
6369 YY_RULE_SETUP
6370 if (surfxml_cabinet_suffix_isset != 0) {FAIL("Multiple definition of attribute suffix in <surfxml_cabinet>");} surfxml_cabinet_suffix_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cabinet_suffix);
6371         YY_BREAK
6372 case 139:
6373 /* rule 139 can match eol */
6374 YY_RULE_SETUP
6375 if (surfxml_cabinet_suffix_isset != 0) {FAIL("Multiple definition of attribute suffix in <surfxml_cabinet>");}  surfxml_cabinet_suffix_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cabinet_suffix);
6376         YY_BREAK
6377 case 140:
6378 YY_RULE_SETUP
6379 {
6380   if (!AX_surfxml_cabinet_bw) FAIL("Required attribute `bw' not set for `cabinet' element.");
6381   if (!AX_surfxml_cabinet_id) FAIL("Required attribute `id' not set for `cabinet' element.");
6382   if (!AX_surfxml_cabinet_lat) FAIL("Required attribute `lat' not set for `cabinet' element.");
6383   if (!AX_surfxml_cabinet_prefix) FAIL("Required attribute `prefix' not set for `cabinet' element.");
6384   if (!AX_surfxml_cabinet_radical) FAIL("Required attribute `radical' not set for `cabinet' element.");
6385   if (!AX_surfxml_cabinet_speed) FAIL("Required attribute `speed' not set for `cabinet' element.");
6386   if (!AX_surfxml_cabinet_suffix) FAIL("Required attribute `suffix' not set for `cabinet' element.");
6387   LEAVE; STag_surfxml_cabinet();surfxml_pcdata_ix = 0; ENTER(E_surfxml_cabinet);
6388  }
6389         YY_BREAK
6390 case 141:
6391 YY_RULE_SETUP
6392 {
6393   if (!AX_surfxml_cabinet_bw) FAIL("Required attribute `bw' not set for `cabinet' element.");
6394   if (!AX_surfxml_cabinet_id) FAIL("Required attribute `id' not set for `cabinet' element.");
6395   if (!AX_surfxml_cabinet_lat) FAIL("Required attribute `lat' not set for `cabinet' element.");
6396   if (!AX_surfxml_cabinet_prefix) FAIL("Required attribute `prefix' not set for `cabinet' element.");
6397   if (!AX_surfxml_cabinet_radical) FAIL("Required attribute `radical' not set for `cabinet' element.");
6398   if (!AX_surfxml_cabinet_speed) FAIL("Required attribute `speed' not set for `cabinet' element.");
6399   if (!AX_surfxml_cabinet_suffix) FAIL("Required attribute `suffix' not set for `cabinet' element.");
6400   LEAVE; STag_surfxml_cabinet(); surfxml_pcdata_ix = 0; ETag_surfxml_cabinet(); popbuffer(); /* attribute */
6401   switch (YY_START) {
6402    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
6403    case S_surfxml_include: case S_surfxml_include_1: case S_surfxml_include_2: SET(S_surfxml_include_2); break;
6404    case S_surfxml_platform: case S_surfxml_platform_1: case S_surfxml_platform_3: case S_surfxml_platform_5: case S_surfxml_platform_6: SET(S_surfxml_platform_6); break;
6405   }
6406  }
6407         YY_BREAK
6408 case 142:
6409 YY_RULE_SETUP
6410 FAIL("Unexpected character `%c' in attribute list of cabinet element.", surf_parse_text[0]);
6411         YY_BREAK
6412 case 143:
6413 YY_RULE_SETUP
6414 FAIL("Bad attribute `%s' in `cabinet' element start tag.",surf_parse_text);
6415         YY_BREAK
6416 case YY_STATE_EOF(AL_surfxml_cabinet):
6417 FAIL("EOF in attribute list of `cabinet' element.");
6418         YY_BREAK
6419
6420 case 144:
6421 /* rule 144 can match eol */
6422 YY_RULE_SETUP
6423 {
6424   LEAVE;
6425   ETag_surfxml_cabinet();
6426   popbuffer(); /* attribute */
6427   switch (YY_START) {
6428    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
6429    case S_surfxml_include: case S_surfxml_include_1: case S_surfxml_include_2: SET(S_surfxml_include_2); break;
6430    case S_surfxml_platform: case S_surfxml_platform_1: case S_surfxml_platform_3: case S_surfxml_platform_5: case S_surfxml_platform_6: SET(S_surfxml_platform_6); break;
6431   }
6432  }
6433         YY_BREAK
6434 case 145:
6435 /* rule 145 can match eol */
6436 YY_RULE_SETUP
6437 FAIL("Unexpected end-tag `%s': `</cabinet>' expected.",surf_parse_text);
6438         YY_BREAK
6439 case 146:
6440 YY_RULE_SETUP
6441 FAIL("Unexpected character `%c': `</cabinet>' expected.",surf_parse_text[0]);
6442         YY_BREAK
6443 case YY_STATE_EOF(E_surfxml_cabinet):
6444 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</cabinet>' expected.");
6445         YY_BREAK
6446
6447 case 147:
6448 /* rule 147 can match eol */
6449 YY_RULE_SETUP
6450 FAIL("Starting tag <cluster> is not allowed here.");
6451         YY_BREAK
6452 case 148:
6453 /* rule 148 can match eol */
6454 YY_RULE_SETUP
6455 {
6456   AX_surfxml_cluster_bb___bw = 0;
6457   surfxml_cluster_bb___bw_isset = 0;
6458   AX_surfxml_cluster_bb___lat = 42;
6459   surfxml_cluster_bb___lat_isset = 0;
6460   AX_surfxml_cluster_bb___sharing___policy = A_surfxml_cluster_bb___sharing___policy_SHARED;
6461   surfxml_cluster_bb___sharing___policy_isset = 0;
6462   AX_surfxml_cluster_bw = 0;
6463   surfxml_cluster_bw_isset = 0;
6464   AX_surfxml_cluster_core = 40;
6465   surfxml_cluster_core_isset = 0;
6466   AX_surfxml_cluster_id = 0;
6467   surfxml_cluster_id_isset = 0;
6468   AX_surfxml_cluster_lat = 0;
6469   surfxml_cluster_lat_isset = 0;
6470   AX_surfxml_cluster_limiter___link = 0;
6471   surfxml_cluster_limiter___link_isset = 0;
6472   AX_surfxml_cluster_loopback___bw = 0;
6473   surfxml_cluster_loopback___bw_isset = 0;
6474   AX_surfxml_cluster_loopback___lat = 0;
6475   surfxml_cluster_loopback___lat_isset = 0;
6476   AX_surfxml_cluster_prefix = 0;
6477   surfxml_cluster_prefix_isset = 0;
6478   AX_surfxml_cluster_radical = 0;
6479   surfxml_cluster_radical_isset = 0;
6480   AX_surfxml_cluster_router___id = 0;
6481   surfxml_cluster_router___id_isset = 0;
6482   AX_surfxml_cluster_sharing___policy = A_surfxml_cluster_sharing___policy_FULLDUPLEX;
6483   surfxml_cluster_sharing___policy_isset = 0;
6484   AX_surfxml_cluster_speed = 0;
6485   surfxml_cluster_speed_isset = 0;
6486   AX_surfxml_cluster_suffix = 0;
6487   surfxml_cluster_suffix_isset = 0;
6488   AX_surfxml_cluster_topo___parameters = 0;
6489   surfxml_cluster_topo___parameters_isset = 0;
6490   AX_surfxml_cluster_topology = A_surfxml_cluster_topology_FLAT;
6491   surfxml_cluster_topology_isset = 0;
6492   ENTER(AL_surfxml_cluster); pushbuffer(0);
6493   }
6494         YY_BREAK
6495
6496 case 149:
6497 /* rule 149 can match eol */
6498 YY_RULE_SETUP
6499 if (surfxml_cluster_bb___bw_isset != 0) {FAIL("Multiple definition of attribute bb_bw in <surfxml_cluster>");} surfxml_cluster_bb___bw_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_bb___bw);
6500         YY_BREAK
6501 case 150:
6502 /* rule 150 can match eol */
6503 YY_RULE_SETUP
6504 if (surfxml_cluster_bb___bw_isset != 0) {FAIL("Multiple definition of attribute bb_bw in <surfxml_cluster>");}  surfxml_cluster_bb___bw_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_bb___bw);
6505         YY_BREAK
6506 case 151:
6507 /* rule 151 can match eol */
6508 YY_RULE_SETUP
6509 if (surfxml_cluster_bb___lat_isset != 0) {FAIL("Multiple definition of attribute bb_lat in <surfxml_cluster>");} surfxml_cluster_bb___lat_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_bb___lat);
6510         YY_BREAK
6511 case 152:
6512 /* rule 152 can match eol */
6513 YY_RULE_SETUP
6514 if (surfxml_cluster_bb___lat_isset != 0) {FAIL("Multiple definition of attribute bb_lat in <surfxml_cluster>");}  surfxml_cluster_bb___lat_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_bb___lat);
6515         YY_BREAK
6516 case 153:
6517 /* rule 153 can match eol */
6518 case 154:
6519 /* rule 154 can match eol */
6520 YY_RULE_SETUP
6521 A_surfxml_cluster_bb___sharing___policy = A_surfxml_cluster_bb___sharing___policy_SHARED;
6522         YY_BREAK
6523 case 155:
6524 /* rule 155 can match eol */
6525 case 156:
6526 /* rule 156 can match eol */
6527 YY_RULE_SETUP
6528 A_surfxml_cluster_bb___sharing___policy = A_surfxml_cluster_bb___sharing___policy_FATPIPE;
6529         YY_BREAK
6530 case 157:
6531 /* rule 157 can match eol */
6532 YY_RULE_SETUP
6533 if (surfxml_cluster_bw_isset != 0) {FAIL("Multiple definition of attribute bw in <surfxml_cluster>");} surfxml_cluster_bw_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_bw);
6534         YY_BREAK
6535 case 158:
6536 /* rule 158 can match eol */
6537 YY_RULE_SETUP
6538 if (surfxml_cluster_bw_isset != 0) {FAIL("Multiple definition of attribute bw in <surfxml_cluster>");}  surfxml_cluster_bw_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_bw);
6539         YY_BREAK
6540 case 159:
6541 /* rule 159 can match eol */
6542 YY_RULE_SETUP
6543 if (surfxml_cluster_core_isset != 0) {FAIL("Multiple definition of attribute core in <surfxml_cluster>");} surfxml_cluster_core_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_core);
6544         YY_BREAK
6545 case 160:
6546 /* rule 160 can match eol */
6547 YY_RULE_SETUP
6548 if (surfxml_cluster_core_isset != 0) {FAIL("Multiple definition of attribute core in <surfxml_cluster>");}  surfxml_cluster_core_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_core);
6549         YY_BREAK
6550 case 161:
6551 /* rule 161 can match eol */
6552 YY_RULE_SETUP
6553 if (surfxml_cluster_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_cluster>");} surfxml_cluster_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_id);
6554         YY_BREAK
6555 case 162:
6556 /* rule 162 can match eol */
6557 YY_RULE_SETUP
6558 if (surfxml_cluster_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_cluster>");}  surfxml_cluster_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_id);
6559         YY_BREAK
6560 case 163:
6561 /* rule 163 can match eol */
6562 YY_RULE_SETUP
6563 if (surfxml_cluster_lat_isset != 0) {FAIL("Multiple definition of attribute lat in <surfxml_cluster>");} surfxml_cluster_lat_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_lat);
6564         YY_BREAK
6565 case 164:
6566 /* rule 164 can match eol */
6567 YY_RULE_SETUP
6568 if (surfxml_cluster_lat_isset != 0) {FAIL("Multiple definition of attribute lat in <surfxml_cluster>");}  surfxml_cluster_lat_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_lat);
6569         YY_BREAK
6570 case 165:
6571 /* rule 165 can match eol */
6572 YY_RULE_SETUP
6573 if (surfxml_cluster_limiter___link_isset != 0) {FAIL("Multiple definition of attribute limiter_link in <surfxml_cluster>");} surfxml_cluster_limiter___link_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_limiter___link);
6574         YY_BREAK
6575 case 166:
6576 /* rule 166 can match eol */
6577 YY_RULE_SETUP
6578 if (surfxml_cluster_limiter___link_isset != 0) {FAIL("Multiple definition of attribute limiter_link in <surfxml_cluster>");}  surfxml_cluster_limiter___link_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_limiter___link);
6579         YY_BREAK
6580 case 167:
6581 /* rule 167 can match eol */
6582 YY_RULE_SETUP
6583 if (surfxml_cluster_loopback___bw_isset != 0) {FAIL("Multiple definition of attribute loopback_bw in <surfxml_cluster>");} surfxml_cluster_loopback___bw_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_loopback___bw);
6584         YY_BREAK
6585 case 168:
6586 /* rule 168 can match eol */
6587 YY_RULE_SETUP
6588 if (surfxml_cluster_loopback___bw_isset != 0) {FAIL("Multiple definition of attribute loopback_bw in <surfxml_cluster>");}  surfxml_cluster_loopback___bw_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_loopback___bw);
6589         YY_BREAK
6590 case 169:
6591 /* rule 169 can match eol */
6592 YY_RULE_SETUP
6593 if (surfxml_cluster_loopback___lat_isset != 0) {FAIL("Multiple definition of attribute loopback_lat in <surfxml_cluster>");} surfxml_cluster_loopback___lat_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_loopback___lat);
6594         YY_BREAK
6595 case 170:
6596 /* rule 170 can match eol */
6597 YY_RULE_SETUP
6598 if (surfxml_cluster_loopback___lat_isset != 0) {FAIL("Multiple definition of attribute loopback_lat in <surfxml_cluster>");}  surfxml_cluster_loopback___lat_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_loopback___lat);
6599         YY_BREAK
6600 case 171:
6601 /* rule 171 can match eol */
6602 YY_RULE_SETUP
6603 if (surfxml_cluster_prefix_isset != 0) {FAIL("Multiple definition of attribute prefix in <surfxml_cluster>");} surfxml_cluster_prefix_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_prefix);
6604         YY_BREAK
6605 case 172:
6606 /* rule 172 can match eol */
6607 YY_RULE_SETUP
6608 if (surfxml_cluster_prefix_isset != 0) {FAIL("Multiple definition of attribute prefix in <surfxml_cluster>");}  surfxml_cluster_prefix_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_prefix);
6609         YY_BREAK
6610 case 173:
6611 /* rule 173 can match eol */
6612 YY_RULE_SETUP
6613 if (surfxml_cluster_radical_isset != 0) {FAIL("Multiple definition of attribute radical in <surfxml_cluster>");} surfxml_cluster_radical_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_radical);
6614         YY_BREAK
6615 case 174:
6616 /* rule 174 can match eol */
6617 YY_RULE_SETUP
6618 if (surfxml_cluster_radical_isset != 0) {FAIL("Multiple definition of attribute radical in <surfxml_cluster>");}  surfxml_cluster_radical_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_radical);
6619         YY_BREAK
6620 case 175:
6621 /* rule 175 can match eol */
6622 YY_RULE_SETUP
6623 if (surfxml_cluster_router___id_isset != 0) {FAIL("Multiple definition of attribute router_id in <surfxml_cluster>");} surfxml_cluster_router___id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_router___id);
6624         YY_BREAK
6625 case 176:
6626 /* rule 176 can match eol */
6627 YY_RULE_SETUP
6628 if (surfxml_cluster_router___id_isset != 0) {FAIL("Multiple definition of attribute router_id in <surfxml_cluster>");}  surfxml_cluster_router___id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_router___id);
6629         YY_BREAK
6630 case 177:
6631 /* rule 177 can match eol */
6632 case 178:
6633 /* rule 178 can match eol */
6634 YY_RULE_SETUP
6635 A_surfxml_cluster_sharing___policy = A_surfxml_cluster_sharing___policy_SHARED;
6636         YY_BREAK
6637 case 179:
6638 /* rule 179 can match eol */
6639 case 180:
6640 /* rule 180 can match eol */
6641 YY_RULE_SETUP
6642 A_surfxml_cluster_sharing___policy = A_surfxml_cluster_sharing___policy_FULLDUPLEX;
6643         YY_BREAK
6644 case 181:
6645 /* rule 181 can match eol */
6646 case 182:
6647 /* rule 182 can match eol */
6648 YY_RULE_SETUP
6649 A_surfxml_cluster_sharing___policy = A_surfxml_cluster_sharing___policy_FATPIPE;
6650         YY_BREAK
6651 case 183:
6652 /* rule 183 can match eol */
6653 YY_RULE_SETUP
6654 if (surfxml_cluster_speed_isset != 0) {FAIL("Multiple definition of attribute speed in <surfxml_cluster>");} surfxml_cluster_speed_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_speed);
6655         YY_BREAK
6656 case 184:
6657 /* rule 184 can match eol */
6658 YY_RULE_SETUP
6659 if (surfxml_cluster_speed_isset != 0) {FAIL("Multiple definition of attribute speed in <surfxml_cluster>");}  surfxml_cluster_speed_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_speed);
6660         YY_BREAK
6661 case 185:
6662 /* rule 185 can match eol */
6663 YY_RULE_SETUP
6664 if (surfxml_cluster_suffix_isset != 0) {FAIL("Multiple definition of attribute suffix in <surfxml_cluster>");} surfxml_cluster_suffix_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_suffix);
6665         YY_BREAK
6666 case 186:
6667 /* rule 186 can match eol */
6668 YY_RULE_SETUP
6669 if (surfxml_cluster_suffix_isset != 0) {FAIL("Multiple definition of attribute suffix in <surfxml_cluster>");}  surfxml_cluster_suffix_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_suffix);
6670         YY_BREAK
6671 case 187:
6672 /* rule 187 can match eol */
6673 YY_RULE_SETUP
6674 if (surfxml_cluster_topo___parameters_isset != 0) {FAIL("Multiple definition of attribute topo_parameters in <surfxml_cluster>");} surfxml_cluster_topo___parameters_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_cluster_topo___parameters);
6675         YY_BREAK
6676 case 188:
6677 /* rule 188 can match eol */
6678 YY_RULE_SETUP
6679 if (surfxml_cluster_topo___parameters_isset != 0) {FAIL("Multiple definition of attribute topo_parameters in <surfxml_cluster>");}  surfxml_cluster_topo___parameters_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_cluster_topo___parameters);
6680         YY_BREAK
6681 case 189:
6682 /* rule 189 can match eol */
6683 case 190:
6684 /* rule 190 can match eol */
6685 YY_RULE_SETUP
6686 A_surfxml_cluster_topology = A_surfxml_cluster_topology_FLAT;
6687         YY_BREAK
6688 case 191:
6689 /* rule 191 can match eol */
6690 case 192:
6691 /* rule 192 can match eol */
6692 YY_RULE_SETUP
6693 A_surfxml_cluster_topology = A_surfxml_cluster_topology_TORUS;
6694         YY_BREAK
6695 case 193:
6696 /* rule 193 can match eol */
6697 case 194:
6698 /* rule 194 can match eol */
6699 YY_RULE_SETUP
6700 A_surfxml_cluster_topology = A_surfxml_cluster_topology_FAT___TREE;
6701         YY_BREAK
6702 case 195:
6703 /* rule 195 can match eol */
6704 case 196:
6705 /* rule 196 can match eol */
6706 YY_RULE_SETUP
6707 A_surfxml_cluster_topology = A_surfxml_cluster_topology_DRAGONFLY;
6708         YY_BREAK
6709 case 197:
6710 YY_RULE_SETUP
6711 {
6712   if (!AX_surfxml_cluster_bw) FAIL("Required attribute `bw' not set for `cluster' element.");
6713   if (!AX_surfxml_cluster_id) FAIL("Required attribute `id' not set for `cluster' element.");
6714   if (!AX_surfxml_cluster_lat) FAIL("Required attribute `lat' not set for `cluster' element.");
6715   if (!AX_surfxml_cluster_prefix) FAIL("Required attribute `prefix' not set for `cluster' element.");
6716   if (!AX_surfxml_cluster_radical) FAIL("Required attribute `radical' not set for `cluster' element.");
6717   if (!AX_surfxml_cluster_speed) FAIL("Required attribute `speed' not set for `cluster' element.");
6718   if (!AX_surfxml_cluster_suffix) FAIL("Required attribute `suffix' not set for `cluster' element.");
6719   LEAVE; STag_surfxml_cluster();surfxml_pcdata_ix = 0; ENTER(S_surfxml_cluster);
6720  }
6721         YY_BREAK
6722 case 198:
6723 YY_RULE_SETUP
6724 {
6725   if (!AX_surfxml_cluster_bw) FAIL("Required attribute `bw' not set for `cluster' element.");
6726   if (!AX_surfxml_cluster_id) FAIL("Required attribute `id' not set for `cluster' element.");
6727   if (!AX_surfxml_cluster_lat) FAIL("Required attribute `lat' not set for `cluster' element.");
6728   if (!AX_surfxml_cluster_prefix) FAIL("Required attribute `prefix' not set for `cluster' element.");
6729   if (!AX_surfxml_cluster_radical) FAIL("Required attribute `radical' not set for `cluster' element.");
6730   if (!AX_surfxml_cluster_speed) FAIL("Required attribute `speed' not set for `cluster' element.");
6731   if (!AX_surfxml_cluster_suffix) FAIL("Required attribute `suffix' not set for `cluster' element.");
6732   LEAVE; STag_surfxml_cluster(); surfxml_pcdata_ix = 0; ETag_surfxml_cluster(); popbuffer(); /* attribute */
6733   switch (YY_START) {
6734    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
6735    case S_surfxml_include: case S_surfxml_include_1: case S_surfxml_include_2: SET(S_surfxml_include_2); break;
6736    case S_surfxml_platform: case S_surfxml_platform_1: case S_surfxml_platform_3: case S_surfxml_platform_5: case S_surfxml_platform_6: SET(S_surfxml_platform_6); break;
6737   }
6738  }
6739         YY_BREAK
6740 case 199:
6741 YY_RULE_SETUP
6742 FAIL("Unexpected character `%c' in attribute list of cluster element.", surf_parse_text[0]);
6743         YY_BREAK
6744 case 200:
6745 YY_RULE_SETUP
6746 FAIL("Bad attribute `%s' in `cluster' element start tag.",surf_parse_text);
6747         YY_BREAK
6748 case YY_STATE_EOF(AL_surfxml_cluster):
6749 FAIL("EOF in attribute list of `cluster' element.");
6750         YY_BREAK
6751
6752 case 201:
6753 /* rule 201 can match eol */
6754 YY_RULE_SETUP
6755 {
6756   LEAVE;
6757   ETag_surfxml_cluster();
6758   popbuffer(); /* attribute */
6759   switch (YY_START) {
6760    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
6761    case S_surfxml_include: case S_surfxml_include_1: case S_surfxml_include_2: SET(S_surfxml_include_2); break;
6762    case S_surfxml_platform: case S_surfxml_platform_1: case S_surfxml_platform_3: case S_surfxml_platform_5: case S_surfxml_platform_6: SET(S_surfxml_platform_6); break;
6763   }
6764  }
6765         YY_BREAK
6766 case 202:
6767 /* rule 202 can match eol */
6768 YY_RULE_SETUP
6769 FAIL("Unexpected end-tag `%s': `</cluster>' expected.",surf_parse_text);
6770         YY_BREAK
6771 case 203:
6772 YY_RULE_SETUP
6773 FAIL("Unexpected character `%c': `</cluster>' expected.",surf_parse_text[0]);
6774         YY_BREAK
6775 case YY_STATE_EOF(E_surfxml_cluster):
6776 case YY_STATE_EOF(S_surfxml_cluster):
6777 case YY_STATE_EOF(S_surfxml_cluster_2):
6778 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</cluster>' expected.");
6779         YY_BREAK
6780
6781 case 204:
6782 /* rule 204 can match eol */
6783 YY_RULE_SETUP
6784 FAIL("Starting tag <config> is not allowed here.");
6785         YY_BREAK
6786 case 205:
6787 /* rule 205 can match eol */
6788 YY_RULE_SETUP
6789 {
6790   AX_surfxml_config_id = 0;
6791   surfxml_config_id_isset = 0;
6792   ENTER(AL_surfxml_config); pushbuffer(0);
6793   }
6794         YY_BREAK
6795
6796 case 206:
6797 /* rule 206 can match eol */
6798 YY_RULE_SETUP
6799 if (surfxml_config_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_config>");} surfxml_config_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_config_id);
6800         YY_BREAK
6801 case 207:
6802 /* rule 207 can match eol */
6803 YY_RULE_SETUP
6804 if (surfxml_config_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_config>");}  surfxml_config_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_config_id);
6805         YY_BREAK
6806 case 208:
6807 YY_RULE_SETUP
6808 {
6809   LEAVE; STag_surfxml_config();surfxml_pcdata_ix = 0; ENTER(S_surfxml_config);
6810  }
6811         YY_BREAK
6812 case 209:
6813 YY_RULE_SETUP
6814 {
6815   LEAVE; STag_surfxml_config(); surfxml_pcdata_ix = 0; ETag_surfxml_config(); popbuffer(); /* attribute */
6816   switch (YY_START) {
6817    case S_surfxml_platform: case S_surfxml_platform_2: case S_surfxml_platform_3: SET(S_surfxml_platform_3); break;
6818   }
6819  }
6820         YY_BREAK
6821 case 210:
6822 YY_RULE_SETUP
6823 FAIL("Unexpected character `%c' in attribute list of config element.", surf_parse_text[0]);
6824         YY_BREAK
6825 case 211:
6826 YY_RULE_SETUP
6827 FAIL("Bad attribute `%s' in `config' element start tag.",surf_parse_text);
6828         YY_BREAK
6829 case YY_STATE_EOF(AL_surfxml_config):
6830 FAIL("EOF in attribute list of `config' element.");
6831         YY_BREAK
6832
6833 case 212:
6834 /* rule 212 can match eol */
6835 YY_RULE_SETUP
6836 {
6837   LEAVE;
6838   ETag_surfxml_config();
6839   popbuffer(); /* attribute */
6840   switch (YY_START) {
6841    case S_surfxml_platform: case S_surfxml_platform_2: case S_surfxml_platform_3: SET(S_surfxml_platform_3); break;
6842   }
6843  }
6844         YY_BREAK
6845 case 213:
6846 /* rule 213 can match eol */
6847 YY_RULE_SETUP
6848 FAIL("Unexpected end-tag `%s': `</config>' expected.",surf_parse_text);
6849         YY_BREAK
6850 case 214:
6851 YY_RULE_SETUP
6852 FAIL("Unexpected character `%c': `</config>' expected.",surf_parse_text[0]);
6853         YY_BREAK
6854 case YY_STATE_EOF(E_surfxml_config):
6855 case YY_STATE_EOF(S_surfxml_config):
6856 case YY_STATE_EOF(S_surfxml_config_2):
6857 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</config>' expected.");
6858         YY_BREAK
6859
6860 case 215:
6861 /* rule 215 can match eol */
6862 YY_RULE_SETUP
6863 FAIL("Starting tag <host> is not allowed here.");
6864         YY_BREAK
6865 case 216:
6866 /* rule 216 can match eol */
6867 YY_RULE_SETUP
6868 {
6869   AX_surfxml_host_availability___file = 0;
6870   surfxml_host_availability___file_isset = 0;
6871   AX_surfxml_host_coordinates = 0;
6872   surfxml_host_coordinates_isset = 0;
6873   AX_surfxml_host_core = 25;
6874   surfxml_host_core_isset = 0;
6875   AX_surfxml_host_id = 0;
6876   surfxml_host_id_isset = 0;
6877   AX_surfxml_host_pstate = 27;
6878   surfxml_host_pstate_isset = 0;
6879   AX_surfxml_host_speed = 0;
6880   surfxml_host_speed_isset = 0;
6881   AX_surfxml_host_state___file = 0;
6882   surfxml_host_state___file_isset = 0;
6883   ENTER(AL_surfxml_host); pushbuffer(0);
6884   }
6885         YY_BREAK
6886
6887 case 217:
6888 /* rule 217 can match eol */
6889 YY_RULE_SETUP
6890 if (surfxml_host_availability___file_isset != 0) {FAIL("Multiple definition of attribute availability_file in <surfxml_host>");} surfxml_host_availability___file_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_host_availability___file);
6891         YY_BREAK
6892 case 218:
6893 /* rule 218 can match eol */
6894 YY_RULE_SETUP
6895 if (surfxml_host_availability___file_isset != 0) {FAIL("Multiple definition of attribute availability_file in <surfxml_host>");}  surfxml_host_availability___file_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_host_availability___file);
6896         YY_BREAK
6897 case 219:
6898 /* rule 219 can match eol */
6899 YY_RULE_SETUP
6900 if (surfxml_host_coordinates_isset != 0) {FAIL("Multiple definition of attribute coordinates in <surfxml_host>");} surfxml_host_coordinates_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_host_coordinates);
6901         YY_BREAK
6902 case 220:
6903 /* rule 220 can match eol */
6904 YY_RULE_SETUP
6905 if (surfxml_host_coordinates_isset != 0) {FAIL("Multiple definition of attribute coordinates in <surfxml_host>");}  surfxml_host_coordinates_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_host_coordinates);
6906         YY_BREAK
6907 case 221:
6908 /* rule 221 can match eol */
6909 YY_RULE_SETUP
6910 if (surfxml_host_core_isset != 0) {FAIL("Multiple definition of attribute core in <surfxml_host>");} surfxml_host_core_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_host_core);
6911         YY_BREAK
6912 case 222:
6913 /* rule 222 can match eol */
6914 YY_RULE_SETUP
6915 if (surfxml_host_core_isset != 0) {FAIL("Multiple definition of attribute core in <surfxml_host>");}  surfxml_host_core_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_host_core);
6916         YY_BREAK
6917 case 223:
6918 /* rule 223 can match eol */
6919 YY_RULE_SETUP
6920 if (surfxml_host_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_host>");} surfxml_host_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_host_id);
6921         YY_BREAK
6922 case 224:
6923 /* rule 224 can match eol */
6924 YY_RULE_SETUP
6925 if (surfxml_host_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_host>");}  surfxml_host_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_host_id);
6926         YY_BREAK
6927 case 225:
6928 /* rule 225 can match eol */
6929 YY_RULE_SETUP
6930 if (surfxml_host_pstate_isset != 0) {FAIL("Multiple definition of attribute pstate in <surfxml_host>");} surfxml_host_pstate_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_host_pstate);
6931         YY_BREAK
6932 case 226:
6933 /* rule 226 can match eol */
6934 YY_RULE_SETUP
6935 if (surfxml_host_pstate_isset != 0) {FAIL("Multiple definition of attribute pstate in <surfxml_host>");}  surfxml_host_pstate_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_host_pstate);
6936         YY_BREAK
6937 case 227:
6938 /* rule 227 can match eol */
6939 YY_RULE_SETUP
6940 if (surfxml_host_speed_isset != 0) {FAIL("Multiple definition of attribute speed in <surfxml_host>");} surfxml_host_speed_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_host_speed);
6941         YY_BREAK
6942 case 228:
6943 /* rule 228 can match eol */
6944 YY_RULE_SETUP
6945 if (surfxml_host_speed_isset != 0) {FAIL("Multiple definition of attribute speed in <surfxml_host>");}  surfxml_host_speed_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_host_speed);
6946         YY_BREAK
6947 case 229:
6948 /* rule 229 can match eol */
6949 YY_RULE_SETUP
6950 if (surfxml_host_state___file_isset != 0) {FAIL("Multiple definition of attribute state_file in <surfxml_host>");} surfxml_host_state___file_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_host_state___file);
6951         YY_BREAK
6952 case 230:
6953 /* rule 230 can match eol */
6954 YY_RULE_SETUP
6955 if (surfxml_host_state___file_isset != 0) {FAIL("Multiple definition of attribute state_file in <surfxml_host>");}  surfxml_host_state___file_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_host_state___file);
6956         YY_BREAK
6957 case 231:
6958 YY_RULE_SETUP
6959 {
6960   if (!AX_surfxml_host_id) FAIL("Required attribute `id' not set for `host' element.");
6961   if (!AX_surfxml_host_speed) FAIL("Required attribute `speed' not set for `host' element.");
6962   LEAVE; STag_surfxml_host();surfxml_pcdata_ix = 0; ENTER(S_surfxml_host);
6963  }
6964         YY_BREAK
6965 case 232:
6966 YY_RULE_SETUP
6967 {
6968   if (!AX_surfxml_host_id) FAIL("Required attribute `id' not set for `host' element.");
6969   if (!AX_surfxml_host_speed) FAIL("Required attribute `speed' not set for `host' element.");
6970   LEAVE; STag_surfxml_host(); surfxml_pcdata_ix = 0; ETag_surfxml_host(); popbuffer(); /* attribute */
6971   switch (YY_START) {
6972    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
6973   }
6974  }
6975         YY_BREAK
6976 case 233:
6977 YY_RULE_SETUP
6978 FAIL("Unexpected character `%c' in attribute list of host element.", surf_parse_text[0]);
6979         YY_BREAK
6980 case 234:
6981 YY_RULE_SETUP
6982 FAIL("Bad attribute `%s' in `host' element start tag.",surf_parse_text);
6983         YY_BREAK
6984 case YY_STATE_EOF(AL_surfxml_host):
6985 FAIL("EOF in attribute list of `host' element.");
6986         YY_BREAK
6987
6988 case 235:
6989 /* rule 235 can match eol */
6990 YY_RULE_SETUP
6991 {
6992   LEAVE;
6993   ETag_surfxml_host();
6994   popbuffer(); /* attribute */
6995   switch (YY_START) {
6996    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
6997   }
6998  }
6999         YY_BREAK
7000 case 236:
7001 /* rule 236 can match eol */
7002 YY_RULE_SETUP
7003 FAIL("Unexpected end-tag `%s': `</host>' expected.",surf_parse_text);
7004         YY_BREAK
7005 case 237:
7006 YY_RULE_SETUP
7007 FAIL("Unexpected character `%c': `</host>' expected.",surf_parse_text[0]);
7008         YY_BREAK
7009 case YY_STATE_EOF(E_surfxml_host):
7010 case YY_STATE_EOF(S_surfxml_host):
7011 case YY_STATE_EOF(S_surfxml_host_2):
7012 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</host>' expected.");
7013         YY_BREAK
7014
7015 case 238:
7016 /* rule 238 can match eol */
7017 YY_RULE_SETUP
7018 FAIL("Starting tag <host_link> is not allowed here.");
7019         YY_BREAK
7020 case 239:
7021 /* rule 239 can match eol */
7022 YY_RULE_SETUP
7023 {
7024   AX_surfxml_host___link_down = 0;
7025   surfxml_host___link_down_isset = 0;
7026   AX_surfxml_host___link_id = 0;
7027   surfxml_host___link_id_isset = 0;
7028   AX_surfxml_host___link_up = 0;
7029   surfxml_host___link_up_isset = 0;
7030   ENTER(AL_surfxml_host___link); pushbuffer(0);
7031   }
7032         YY_BREAK
7033
7034 case 240:
7035 /* rule 240 can match eol */
7036 YY_RULE_SETUP
7037 if (surfxml_host___link_down_isset != 0) {FAIL("Multiple definition of attribute down in <surfxml_host___link>");} surfxml_host___link_down_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_host___link_down);
7038         YY_BREAK
7039 case 241:
7040 /* rule 241 can match eol */
7041 YY_RULE_SETUP
7042 if (surfxml_host___link_down_isset != 0) {FAIL("Multiple definition of attribute down in <surfxml_host___link>");}  surfxml_host___link_down_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_host___link_down);
7043         YY_BREAK
7044 case 242:
7045 /* rule 242 can match eol */
7046 YY_RULE_SETUP
7047 if (surfxml_host___link_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_host___link>");} surfxml_host___link_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_host___link_id);
7048         YY_BREAK
7049 case 243:
7050 /* rule 243 can match eol */
7051 YY_RULE_SETUP
7052 if (surfxml_host___link_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_host___link>");}  surfxml_host___link_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_host___link_id);
7053         YY_BREAK
7054 case 244:
7055 /* rule 244 can match eol */
7056 YY_RULE_SETUP
7057 if (surfxml_host___link_up_isset != 0) {FAIL("Multiple definition of attribute up in <surfxml_host___link>");} surfxml_host___link_up_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_host___link_up);
7058         YY_BREAK
7059 case 245:
7060 /* rule 245 can match eol */
7061 YY_RULE_SETUP
7062 if (surfxml_host___link_up_isset != 0) {FAIL("Multiple definition of attribute up in <surfxml_host___link>");}  surfxml_host___link_up_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_host___link_up);
7063         YY_BREAK
7064 case 246:
7065 YY_RULE_SETUP
7066 {
7067   if (!AX_surfxml_host___link_down) FAIL("Required attribute `down' not set for `host_link' element.");
7068   if (!AX_surfxml_host___link_id) FAIL("Required attribute `id' not set for `host_link' element.");
7069   if (!AX_surfxml_host___link_up) FAIL("Required attribute `up' not set for `host_link' element.");
7070   LEAVE; STag_surfxml_host___link();surfxml_pcdata_ix = 0; ENTER(E_surfxml_host___link);
7071  }
7072         YY_BREAK
7073 case 247:
7074 YY_RULE_SETUP
7075 {
7076   if (!AX_surfxml_host___link_down) FAIL("Required attribute `down' not set for `host_link' element.");
7077   if (!AX_surfxml_host___link_id) FAIL("Required attribute `id' not set for `host_link' element.");
7078   if (!AX_surfxml_host___link_up) FAIL("Required attribute `up' not set for `host_link' element.");
7079   LEAVE; STag_surfxml_host___link(); surfxml_pcdata_ix = 0; ETag_surfxml_host___link(); popbuffer(); /* attribute */
7080   switch (YY_START) {
7081    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
7082   }
7083  }
7084         YY_BREAK
7085 case 248:
7086 YY_RULE_SETUP
7087 FAIL("Unexpected character `%c' in attribute list of host_link element.", surf_parse_text[0]);
7088         YY_BREAK
7089 case 249:
7090 YY_RULE_SETUP
7091 FAIL("Bad attribute `%s' in `host_link' element start tag.",surf_parse_text);
7092         YY_BREAK
7093 case YY_STATE_EOF(AL_surfxml_host___link):
7094 FAIL("EOF in attribute list of `host_link' element.");
7095         YY_BREAK
7096
7097 case 250:
7098 /* rule 250 can match eol */
7099 YY_RULE_SETUP
7100 {
7101   LEAVE;
7102   ETag_surfxml_host___link();
7103   popbuffer(); /* attribute */
7104   switch (YY_START) {
7105    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
7106   }
7107  }
7108         YY_BREAK
7109 case 251:
7110 /* rule 251 can match eol */
7111 YY_RULE_SETUP
7112 FAIL("Unexpected end-tag `%s': `</host_link>' expected.",surf_parse_text);
7113         YY_BREAK
7114 case 252:
7115 YY_RULE_SETUP
7116 FAIL("Unexpected character `%c': `</host_link>' expected.",surf_parse_text[0]);
7117         YY_BREAK
7118 case YY_STATE_EOF(E_surfxml_host___link):
7119 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</host_link>' expected.");
7120         YY_BREAK
7121
7122 case 253:
7123 /* rule 253 can match eol */
7124 YY_RULE_SETUP
7125 FAIL("Starting tag <include> is not allowed here.");
7126         YY_BREAK
7127 case 254:
7128 /* rule 254 can match eol */
7129 YY_RULE_SETUP
7130 {
7131   AX_surfxml_include_file = 0;
7132   surfxml_include_file_isset = 0;
7133   ENTER(AL_surfxml_include); pushbuffer(0);
7134   }
7135         YY_BREAK
7136
7137 case 255:
7138 /* rule 255 can match eol */
7139 YY_RULE_SETUP
7140 if (surfxml_include_file_isset != 0) {FAIL("Multiple definition of attribute file in <surfxml_include>");} surfxml_include_file_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_include_file);
7141         YY_BREAK
7142 case 256:
7143 /* rule 256 can match eol */
7144 YY_RULE_SETUP
7145 if (surfxml_include_file_isset != 0) {FAIL("Multiple definition of attribute file in <surfxml_include>");}  surfxml_include_file_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_include_file);
7146         YY_BREAK
7147 case 257:
7148 YY_RULE_SETUP
7149 {
7150   if (!AX_surfxml_include_file) FAIL("Required attribute `file' not set for `include' element.");
7151   LEAVE; STag_surfxml_include();surfxml_pcdata_ix = 0; ENTER(S_surfxml_include);
7152  }
7153         YY_BREAK
7154 case 258:
7155 YY_RULE_SETUP
7156 {
7157   if (!AX_surfxml_include_file) FAIL("Required attribute `file' not set for `include' element.");
7158   LEAVE; STag_surfxml_include(); surfxml_pcdata_ix = 0; ETag_surfxml_include(); popbuffer(); /* attribute */
7159   switch (YY_START) {
7160    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
7161    case S_surfxml_include: case S_surfxml_include_1: case S_surfxml_include_2: SET(S_surfxml_include_2); break;
7162    case S_surfxml_platform: case S_surfxml_platform_1: case S_surfxml_platform_3: case S_surfxml_platform_5: case S_surfxml_platform_6: SET(S_surfxml_platform_6); break;
7163   }
7164  }
7165         YY_BREAK
7166 case 259:
7167 YY_RULE_SETUP
7168 FAIL("Unexpected character `%c' in attribute list of include element.", surf_parse_text[0]);
7169         YY_BREAK
7170 case 260:
7171 YY_RULE_SETUP
7172 FAIL("Bad attribute `%s' in `include' element start tag.",surf_parse_text);
7173         YY_BREAK
7174 case YY_STATE_EOF(AL_surfxml_include):
7175 FAIL("EOF in attribute list of `include' element.");
7176         YY_BREAK
7177
7178 case 261:
7179 /* rule 261 can match eol */
7180 YY_RULE_SETUP
7181 {
7182   LEAVE;
7183   ETag_surfxml_include();
7184   popbuffer(); /* attribute */
7185   switch (YY_START) {
7186    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
7187    case S_surfxml_include: case S_surfxml_include_1: case S_surfxml_include_2: SET(S_surfxml_include_2); break;
7188    case S_surfxml_platform: case S_surfxml_platform_1: case S_surfxml_platform_3: case S_surfxml_platform_5: case S_surfxml_platform_6: SET(S_surfxml_platform_6); break;
7189   }
7190  }
7191         YY_BREAK
7192 case 262:
7193 /* rule 262 can match eol */
7194 YY_RULE_SETUP
7195 FAIL("Unexpected end-tag `%s': `</include>' expected.",surf_parse_text);
7196         YY_BREAK
7197 case 263:
7198 YY_RULE_SETUP
7199 FAIL("Unexpected character `%c': `</include>' expected.",surf_parse_text[0]);
7200         YY_BREAK
7201 case YY_STATE_EOF(E_surfxml_include):
7202 case YY_STATE_EOF(S_surfxml_include):
7203 case YY_STATE_EOF(S_surfxml_include_2):
7204 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</include>' expected.");
7205         YY_BREAK
7206
7207 case 264:
7208 /* rule 264 can match eol */
7209 YY_RULE_SETUP
7210 FAIL("Starting tag <link> is not allowed here.");
7211         YY_BREAK
7212 case 265:
7213 /* rule 265 can match eol */
7214 YY_RULE_SETUP
7215 {
7216   AX_surfxml_link_bandwidth = 0;
7217   surfxml_link_bandwidth_isset = 0;
7218   AX_surfxml_link_bandwidth___file = 0;
7219   surfxml_link_bandwidth___file_isset = 0;
7220   AX_surfxml_link_id = 0;
7221   surfxml_link_id_isset = 0;
7222   AX_surfxml_link_latency = 0;
7223   surfxml_link_latency_isset = 0;
7224   AX_surfxml_link_latency___file = 0;
7225   surfxml_link_latency___file_isset = 0;
7226   AX_surfxml_link_sharing___policy = A_surfxml_link_sharing___policy_SHARED;
7227   surfxml_link_sharing___policy_isset = 0;
7228   AX_surfxml_link_state___file = 0;
7229   surfxml_link_state___file_isset = 0;
7230   ENTER(AL_surfxml_link); pushbuffer(0);
7231   }
7232         YY_BREAK
7233
7234 case 266:
7235 /* rule 266 can match eol */
7236 YY_RULE_SETUP
7237 if (surfxml_link_bandwidth_isset != 0) {FAIL("Multiple definition of attribute bandwidth in <surfxml_link>");} surfxml_link_bandwidth_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_link_bandwidth);
7238         YY_BREAK
7239 case 267:
7240 /* rule 267 can match eol */
7241 YY_RULE_SETUP
7242 if (surfxml_link_bandwidth_isset != 0) {FAIL("Multiple definition of attribute bandwidth in <surfxml_link>");}  surfxml_link_bandwidth_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_link_bandwidth);
7243         YY_BREAK
7244 case 268:
7245 /* rule 268 can match eol */
7246 YY_RULE_SETUP
7247 if (surfxml_link_bandwidth___file_isset != 0) {FAIL("Multiple definition of attribute bandwidth_file in <surfxml_link>");} surfxml_link_bandwidth___file_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_link_bandwidth___file);
7248         YY_BREAK
7249 case 269:
7250 /* rule 269 can match eol */
7251 YY_RULE_SETUP
7252 if (surfxml_link_bandwidth___file_isset != 0) {FAIL("Multiple definition of attribute bandwidth_file in <surfxml_link>");}  surfxml_link_bandwidth___file_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_link_bandwidth___file);
7253         YY_BREAK
7254 case 270:
7255 /* rule 270 can match eol */
7256 YY_RULE_SETUP
7257 if (surfxml_link_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_link>");} surfxml_link_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_link_id);
7258         YY_BREAK
7259 case 271:
7260 /* rule 271 can match eol */
7261 YY_RULE_SETUP
7262 if (surfxml_link_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_link>");}  surfxml_link_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_link_id);
7263         YY_BREAK
7264 case 272:
7265 /* rule 272 can match eol */
7266 YY_RULE_SETUP
7267 if (surfxml_link_latency_isset != 0) {FAIL("Multiple definition of attribute latency in <surfxml_link>");} surfxml_link_latency_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_link_latency);
7268         YY_BREAK
7269 case 273:
7270 /* rule 273 can match eol */
7271 YY_RULE_SETUP
7272 if (surfxml_link_latency_isset != 0) {FAIL("Multiple definition of attribute latency in <surfxml_link>");}  surfxml_link_latency_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_link_latency);
7273         YY_BREAK
7274 case 274:
7275 /* rule 274 can match eol */
7276 YY_RULE_SETUP
7277 if (surfxml_link_latency___file_isset != 0) {FAIL("Multiple definition of attribute latency_file in <surfxml_link>");} surfxml_link_latency___file_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_link_latency___file);
7278         YY_BREAK
7279 case 275:
7280 /* rule 275 can match eol */
7281 YY_RULE_SETUP
7282 if (surfxml_link_latency___file_isset != 0) {FAIL("Multiple definition of attribute latency_file in <surfxml_link>");}  surfxml_link_latency___file_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_link_latency___file);
7283         YY_BREAK
7284 case 276:
7285 /* rule 276 can match eol */
7286 case 277:
7287 /* rule 277 can match eol */
7288 YY_RULE_SETUP
7289 A_surfxml_link_sharing___policy = A_surfxml_link_sharing___policy_SHARED;
7290         YY_BREAK
7291 case 278:
7292 /* rule 278 can match eol */
7293 case 279:
7294 /* rule 279 can match eol */
7295 YY_RULE_SETUP
7296 A_surfxml_link_sharing___policy = A_surfxml_link_sharing___policy_FATPIPE;
7297         YY_BREAK
7298 case 280:
7299 /* rule 280 can match eol */
7300 case 281:
7301 /* rule 281 can match eol */
7302 YY_RULE_SETUP
7303 A_surfxml_link_sharing___policy = A_surfxml_link_sharing___policy_FULLDUPLEX;
7304         YY_BREAK
7305 case 282:
7306 /* rule 282 can match eol */
7307 YY_RULE_SETUP
7308 if (surfxml_link_state___file_isset != 0) {FAIL("Multiple definition of attribute state_file in <surfxml_link>");} surfxml_link_state___file_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_link_state___file);
7309         YY_BREAK
7310 case 283:
7311 /* rule 283 can match eol */
7312 YY_RULE_SETUP
7313 if (surfxml_link_state___file_isset != 0) {FAIL("Multiple definition of attribute state_file in <surfxml_link>");}  surfxml_link_state___file_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_link_state___file);
7314         YY_BREAK
7315 case 284:
7316 YY_RULE_SETUP
7317 {
7318   if (!AX_surfxml_link_bandwidth) FAIL("Required attribute `bandwidth' not set for `link' element.");
7319   if (!AX_surfxml_link_id) FAIL("Required attribute `id' not set for `link' element.");
7320   LEAVE; STag_surfxml_link();surfxml_pcdata_ix = 0; ENTER(S_surfxml_link);
7321  }
7322         YY_BREAK
7323 case 285:
7324 YY_RULE_SETUP
7325 {
7326   if (!AX_surfxml_link_bandwidth) FAIL("Required attribute `bandwidth' not set for `link' element.");
7327   if (!AX_surfxml_link_id) FAIL("Required attribute `id' not set for `link' element.");
7328   LEAVE; STag_surfxml_link(); surfxml_pcdata_ix = 0; ETag_surfxml_link(); popbuffer(); /* attribute */
7329   switch (YY_START) {
7330    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
7331   }
7332  }
7333         YY_BREAK
7334 case 286:
7335 YY_RULE_SETUP
7336 FAIL("Unexpected character `%c' in attribute list of link element.", surf_parse_text[0]);
7337         YY_BREAK
7338 case 287:
7339 YY_RULE_SETUP
7340 FAIL("Bad attribute `%s' in `link' element start tag.",surf_parse_text);
7341         YY_BREAK
7342 case YY_STATE_EOF(AL_surfxml_link):
7343 FAIL("EOF in attribute list of `link' element.");
7344         YY_BREAK
7345
7346 case 288:
7347 /* rule 288 can match eol */
7348 YY_RULE_SETUP
7349 {
7350   LEAVE;
7351   ETag_surfxml_link();
7352   popbuffer(); /* attribute */
7353   switch (YY_START) {
7354    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
7355   }
7356  }
7357         YY_BREAK
7358 case 289:
7359 /* rule 289 can match eol */
7360 YY_RULE_SETUP
7361 FAIL("Unexpected end-tag `%s': `</link>' expected.",surf_parse_text);
7362         YY_BREAK
7363 case 290:
7364 YY_RULE_SETUP
7365 FAIL("Unexpected character `%c': `</link>' expected.",surf_parse_text[0]);
7366         YY_BREAK
7367 case YY_STATE_EOF(E_surfxml_link):
7368 case YY_STATE_EOF(S_surfxml_link):
7369 case YY_STATE_EOF(S_surfxml_link_2):
7370 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</link>' expected.");
7371         YY_BREAK
7372
7373 case 291:
7374 /* rule 291 can match eol */
7375 YY_RULE_SETUP
7376 FAIL("Starting tag <link_ctn> is not allowed here.");
7377         YY_BREAK
7378 case 292:
7379 /* rule 292 can match eol */
7380 YY_RULE_SETUP
7381 {
7382   AX_surfxml_link___ctn_direction = A_surfxml_link___ctn_direction_NONE;
7383   surfxml_link___ctn_direction_isset = 0;
7384   AX_surfxml_link___ctn_id = 0;
7385   surfxml_link___ctn_id_isset = 0;
7386   ENTER(AL_surfxml_link___ctn); pushbuffer(0);
7387   }
7388         YY_BREAK
7389
7390 case 293:
7391 /* rule 293 can match eol */
7392 case 294:
7393 /* rule 294 can match eol */
7394 YY_RULE_SETUP
7395 A_surfxml_link___ctn_direction = A_surfxml_link___ctn_direction_UP;
7396         YY_BREAK
7397 case 295:
7398 /* rule 295 can match eol */
7399 case 296:
7400 /* rule 296 can match eol */
7401 YY_RULE_SETUP
7402 A_surfxml_link___ctn_direction = A_surfxml_link___ctn_direction_DOWN;
7403         YY_BREAK
7404 case 297:
7405 /* rule 297 can match eol */
7406 case 298:
7407 /* rule 298 can match eol */
7408 YY_RULE_SETUP
7409 A_surfxml_link___ctn_direction = A_surfxml_link___ctn_direction_NONE;
7410         YY_BREAK
7411 case 299:
7412 /* rule 299 can match eol */
7413 YY_RULE_SETUP
7414 if (surfxml_link___ctn_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_link___ctn>");} surfxml_link___ctn_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_link___ctn_id);
7415         YY_BREAK
7416 case 300:
7417 /* rule 300 can match eol */
7418 YY_RULE_SETUP
7419 if (surfxml_link___ctn_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_link___ctn>");}  surfxml_link___ctn_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_link___ctn_id);
7420         YY_BREAK
7421 case 301:
7422 YY_RULE_SETUP
7423 {
7424   if (!AX_surfxml_link___ctn_id) FAIL("Required attribute `id' not set for `link_ctn' element.");
7425   LEAVE; STag_surfxml_link___ctn();surfxml_pcdata_ix = 0; ENTER(E_surfxml_link___ctn);
7426  }
7427         YY_BREAK
7428 case 302:
7429 YY_RULE_SETUP
7430 {
7431   if (!AX_surfxml_link___ctn_id) FAIL("Required attribute `id' not set for `link_ctn' element.");
7432   LEAVE; STag_surfxml_link___ctn(); surfxml_pcdata_ix = 0; ETag_surfxml_link___ctn(); popbuffer(); /* attribute */
7433   switch (YY_START) {
7434    case S_surfxml_ASroute: case S_surfxml_ASroute_1: case S_surfxml_ASroute_2: SET(S_surfxml_ASroute_2); break;
7435    case S_surfxml_bypassASroute: case S_surfxml_bypassASroute_1: case S_surfxml_bypassASroute_2: SET(S_surfxml_bypassASroute_2); break;
7436    case S_surfxml_bypassRoute: case S_surfxml_bypassRoute_1: case S_surfxml_bypassRoute_2: SET(S_surfxml_bypassRoute_2); break;
7437    case S_surfxml_route: case S_surfxml_route_1: case S_surfxml_route_2: SET(S_surfxml_route_2); break;
7438   }
7439  }
7440         YY_BREAK
7441 case 303:
7442 YY_RULE_SETUP
7443 FAIL("Unexpected character `%c' in attribute list of link_ctn element.", surf_parse_text[0]);
7444         YY_BREAK
7445 case 304:
7446 YY_RULE_SETUP
7447 FAIL("Bad attribute `%s' in `link_ctn' element start tag.",surf_parse_text);
7448         YY_BREAK
7449 case YY_STATE_EOF(AL_surfxml_link___ctn):
7450 FAIL("EOF in attribute list of `link_ctn' element.");
7451         YY_BREAK
7452
7453 case 305:
7454 /* rule 305 can match eol */
7455 YY_RULE_SETUP
7456 {
7457   LEAVE;
7458   ETag_surfxml_link___ctn();
7459   popbuffer(); /* attribute */
7460   switch (YY_START) {
7461    case S_surfxml_ASroute: case S_surfxml_ASroute_1: case S_surfxml_ASroute_2: SET(S_surfxml_ASroute_2); break;
7462    case S_surfxml_bypassASroute: case S_surfxml_bypassASroute_1: case S_surfxml_bypassASroute_2: SET(S_surfxml_bypassASroute_2); break;
7463    case S_surfxml_bypassRoute: case S_surfxml_bypassRoute_1: case S_surfxml_bypassRoute_2: SET(S_surfxml_bypassRoute_2); break;
7464    case S_surfxml_route: case S_surfxml_route_1: case S_surfxml_route_2: SET(S_surfxml_route_2); break;
7465   }
7466  }
7467         YY_BREAK
7468 case 306:
7469 /* rule 306 can match eol */
7470 YY_RULE_SETUP
7471 FAIL("Unexpected end-tag `%s': `</link_ctn>' expected.",surf_parse_text);
7472         YY_BREAK
7473 case 307:
7474 YY_RULE_SETUP
7475 FAIL("Unexpected character `%c': `</link_ctn>' expected.",surf_parse_text[0]);
7476         YY_BREAK
7477 case YY_STATE_EOF(E_surfxml_link___ctn):
7478 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</link_ctn>' expected.");
7479         YY_BREAK
7480
7481 /* <!-- <!ATTLIST model_prop key CDATA #REQUIRED> -->
7482   * <!-- <!ATTLIST model_prop key CDATA #REQUIRED> -->  */
7483 case 308:
7484 /* rule 308 can match eol */
7485 YY_RULE_SETUP
7486 FAIL("Starting tag <model_prop> is not allowed here.");
7487         YY_BREAK
7488 case 309:
7489 /* rule 309 can match eol */
7490 YY_RULE_SETUP
7491 {
7492   AX_surfxml_model___prop_id = 0;
7493   surfxml_model___prop_id_isset = 0;
7494   AX_surfxml_model___prop_value = 0;
7495   surfxml_model___prop_value_isset = 0;
7496   ENTER(AL_surfxml_model___prop); pushbuffer(0);
7497   }
7498         YY_BREAK
7499
7500 case 310:
7501 /* rule 310 can match eol */
7502 YY_RULE_SETUP
7503 if (surfxml_model___prop_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_model___prop>");} surfxml_model___prop_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_model___prop_id);
7504         YY_BREAK
7505 case 311:
7506 /* rule 311 can match eol */
7507 YY_RULE_SETUP
7508 if (surfxml_model___prop_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_model___prop>");}  surfxml_model___prop_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_model___prop_id);
7509         YY_BREAK
7510 case 312:
7511 /* rule 312 can match eol */
7512 YY_RULE_SETUP
7513 if (surfxml_model___prop_value_isset != 0) {FAIL("Multiple definition of attribute value in <surfxml_model___prop>");} surfxml_model___prop_value_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_model___prop_value);
7514         YY_BREAK
7515 case 313:
7516 /* rule 313 can match eol */
7517 YY_RULE_SETUP
7518 if (surfxml_model___prop_value_isset != 0) {FAIL("Multiple definition of attribute value in <surfxml_model___prop>");}  surfxml_model___prop_value_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_model___prop_value);
7519         YY_BREAK
7520 case 314:
7521 YY_RULE_SETUP
7522 {
7523   if (!AX_surfxml_model___prop_id) FAIL("Required attribute `id' not set for `model_prop' element.");
7524   if (!AX_surfxml_model___prop_value) FAIL("Required attribute `value' not set for `model_prop' element.");
7525   LEAVE; STag_surfxml_model___prop();surfxml_pcdata_ix = 0; ENTER(E_surfxml_model___prop);
7526  }
7527         YY_BREAK
7528 case 315:
7529 YY_RULE_SETUP
7530 {
7531   if (!AX_surfxml_model___prop_id) FAIL("Required attribute `id' not set for `model_prop' element.");
7532   if (!AX_surfxml_model___prop_value) FAIL("Required attribute `value' not set for `model_prop' element.");
7533   LEAVE; STag_surfxml_model___prop(); surfxml_pcdata_ix = 0; ETag_surfxml_model___prop(); popbuffer(); /* attribute */
7534   switch (YY_START) {
7535    case S_surfxml_storage___type: case S_surfxml_storage___type_1: case S_surfxml_storage___type_2: SET(S_surfxml_storage___type_2); break;
7536   }
7537  }
7538         YY_BREAK
7539 case 316:
7540 YY_RULE_SETUP
7541 FAIL("Unexpected character `%c' in attribute list of model_prop element.", surf_parse_text[0]);
7542         YY_BREAK
7543 case 317:
7544 YY_RULE_SETUP
7545 FAIL("Bad attribute `%s' in `model_prop' element start tag.",surf_parse_text);
7546         YY_BREAK
7547 case YY_STATE_EOF(AL_surfxml_model___prop):
7548 FAIL("EOF in attribute list of `model_prop' element.");
7549         YY_BREAK
7550
7551 case 318:
7552 /* rule 318 can match eol */
7553 YY_RULE_SETUP
7554 {
7555   LEAVE;
7556   ETag_surfxml_model___prop();
7557   popbuffer(); /* attribute */
7558   switch (YY_START) {
7559    case S_surfxml_storage___type: case S_surfxml_storage___type_1: case S_surfxml_storage___type_2: SET(S_surfxml_storage___type_2); break;
7560   }
7561  }
7562         YY_BREAK
7563 case 319:
7564 /* rule 319 can match eol */
7565 YY_RULE_SETUP
7566 FAIL("Unexpected end-tag `%s': `</model_prop>' expected.",surf_parse_text);
7567         YY_BREAK
7568 case 320:
7569 YY_RULE_SETUP
7570 FAIL("Unexpected character `%c': `</model_prop>' expected.",surf_parse_text[0]);
7571         YY_BREAK
7572 case YY_STATE_EOF(E_surfxml_model___prop):
7573 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</model_prop>' expected.");
7574         YY_BREAK
7575
7576 case 321:
7577 /* rule 321 can match eol */
7578 YY_RULE_SETUP
7579 FAIL("Starting tag <mount> is not allowed here.");
7580         YY_BREAK
7581 case 322:
7582 /* rule 322 can match eol */
7583 YY_RULE_SETUP
7584 {
7585   AX_surfxml_mount_name = 0;
7586   surfxml_mount_name_isset = 0;
7587   AX_surfxml_mount_storageId = 0;
7588   surfxml_mount_storageId_isset = 0;
7589   ENTER(AL_surfxml_mount); pushbuffer(0);
7590   }
7591         YY_BREAK
7592
7593 case 323:
7594 /* rule 323 can match eol */
7595 YY_RULE_SETUP
7596 if (surfxml_mount_name_isset != 0) {FAIL("Multiple definition of attribute name in <surfxml_mount>");} surfxml_mount_name_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_mount_name);
7597         YY_BREAK
7598 case 324:
7599 /* rule 324 can match eol */
7600 YY_RULE_SETUP
7601 if (surfxml_mount_name_isset != 0) {FAIL("Multiple definition of attribute name in <surfxml_mount>");}  surfxml_mount_name_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_mount_name);
7602         YY_BREAK
7603 case 325:
7604 /* rule 325 can match eol */
7605 YY_RULE_SETUP
7606 if (surfxml_mount_storageId_isset != 0) {FAIL("Multiple definition of attribute storageId in <surfxml_mount>");} surfxml_mount_storageId_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_mount_storageId);
7607         YY_BREAK
7608 case 326:
7609 /* rule 326 can match eol */
7610 YY_RULE_SETUP
7611 if (surfxml_mount_storageId_isset != 0) {FAIL("Multiple definition of attribute storageId in <surfxml_mount>");}  surfxml_mount_storageId_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_mount_storageId);
7612         YY_BREAK
7613 case 327:
7614 YY_RULE_SETUP
7615 {
7616   if (!AX_surfxml_mount_name) FAIL("Required attribute `name' not set for `mount' element.");
7617   if (!AX_surfxml_mount_storageId) FAIL("Required attribute `storageId' not set for `mount' element.");
7618   LEAVE; STag_surfxml_mount();surfxml_pcdata_ix = 0; ENTER(E_surfxml_mount);
7619  }
7620         YY_BREAK
7621 case 328:
7622 YY_RULE_SETUP
7623 {
7624   if (!AX_surfxml_mount_name) FAIL("Required attribute `name' not set for `mount' element.");
7625   if (!AX_surfxml_mount_storageId) FAIL("Required attribute `storageId' not set for `mount' element.");
7626   LEAVE; STag_surfxml_mount(); surfxml_pcdata_ix = 0; ETag_surfxml_mount(); popbuffer(); /* attribute */
7627   switch (YY_START) {
7628    case S_surfxml_host: case S_surfxml_host_1: case S_surfxml_host_2: SET(S_surfxml_host_2); break;
7629   }
7630  }
7631         YY_BREAK
7632 case 329:
7633 YY_RULE_SETUP
7634 FAIL("Unexpected character `%c' in attribute list of mount element.", surf_parse_text[0]);
7635         YY_BREAK
7636 case 330:
7637 YY_RULE_SETUP
7638 FAIL("Bad attribute `%s' in `mount' element start tag.",surf_parse_text);
7639         YY_BREAK
7640 case YY_STATE_EOF(AL_surfxml_mount):
7641 FAIL("EOF in attribute list of `mount' element.");
7642         YY_BREAK
7643
7644 case 331:
7645 /* rule 331 can match eol */
7646 YY_RULE_SETUP
7647 {
7648   LEAVE;
7649   ETag_surfxml_mount();
7650   popbuffer(); /* attribute */
7651   switch (YY_START) {
7652    case S_surfxml_host: case S_surfxml_host_1: case S_surfxml_host_2: SET(S_surfxml_host_2); break;
7653   }
7654  }
7655         YY_BREAK
7656 case 332:
7657 /* rule 332 can match eol */
7658 YY_RULE_SETUP
7659 FAIL("Unexpected end-tag `%s': `</mount>' expected.",surf_parse_text);
7660         YY_BREAK
7661 case 333:
7662 YY_RULE_SETUP
7663 FAIL("Unexpected character `%c': `</mount>' expected.",surf_parse_text[0]);
7664         YY_BREAK
7665 case YY_STATE_EOF(E_surfxml_mount):
7666 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</mount>' expected.");
7667         YY_BREAK
7668
7669 case 334:
7670 /* rule 334 can match eol */
7671 YY_RULE_SETUP
7672 FAIL("Starting tag <peer> is not allowed here.");
7673         YY_BREAK
7674 case 335:
7675 /* rule 335 can match eol */
7676 YY_RULE_SETUP
7677 {
7678   AX_surfxml_peer_availability___file = 0;
7679   surfxml_peer_availability___file_isset = 0;
7680   AX_surfxml_peer_bw___in = 0;
7681   surfxml_peer_bw___in_isset = 0;
7682   AX_surfxml_peer_bw___out = 0;
7683   surfxml_peer_bw___out_isset = 0;
7684   AX_surfxml_peer_coordinates = 0;
7685   surfxml_peer_coordinates_isset = 0;
7686   AX_surfxml_peer_id = 0;
7687   surfxml_peer_id_isset = 0;
7688   AX_surfxml_peer_lat = 0;
7689   surfxml_peer_lat_isset = 0;
7690   AX_surfxml_peer_speed = 0;
7691   surfxml_peer_speed_isset = 0;
7692   AX_surfxml_peer_state___file = 0;
7693   surfxml_peer_state___file_isset = 0;
7694   ENTER(AL_surfxml_peer); pushbuffer(0);
7695   }
7696         YY_BREAK
7697
7698 case 336:
7699 /* rule 336 can match eol */
7700 YY_RULE_SETUP
7701 if (surfxml_peer_availability___file_isset != 0) {FAIL("Multiple definition of attribute availability_file in <surfxml_peer>");} surfxml_peer_availability___file_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_availability___file);
7702         YY_BREAK
7703 case 337:
7704 /* rule 337 can match eol */
7705 YY_RULE_SETUP
7706 if (surfxml_peer_availability___file_isset != 0) {FAIL("Multiple definition of attribute availability_file in <surfxml_peer>");}  surfxml_peer_availability___file_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_availability___file);
7707         YY_BREAK
7708 case 338:
7709 /* rule 338 can match eol */
7710 YY_RULE_SETUP
7711 if (surfxml_peer_bw___in_isset != 0) {FAIL("Multiple definition of attribute bw_in in <surfxml_peer>");} surfxml_peer_bw___in_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_bw___in);
7712         YY_BREAK
7713 case 339:
7714 /* rule 339 can match eol */
7715 YY_RULE_SETUP
7716 if (surfxml_peer_bw___in_isset != 0) {FAIL("Multiple definition of attribute bw_in in <surfxml_peer>");}  surfxml_peer_bw___in_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_bw___in);
7717         YY_BREAK
7718 case 340:
7719 /* rule 340 can match eol */
7720 YY_RULE_SETUP
7721 if (surfxml_peer_bw___out_isset != 0) {FAIL("Multiple definition of attribute bw_out in <surfxml_peer>");} surfxml_peer_bw___out_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_bw___out);
7722         YY_BREAK
7723 case 341:
7724 /* rule 341 can match eol */
7725 YY_RULE_SETUP
7726 if (surfxml_peer_bw___out_isset != 0) {FAIL("Multiple definition of attribute bw_out in <surfxml_peer>");}  surfxml_peer_bw___out_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_bw___out);
7727         YY_BREAK
7728 case 342:
7729 /* rule 342 can match eol */
7730 YY_RULE_SETUP
7731 if (surfxml_peer_coordinates_isset != 0) {FAIL("Multiple definition of attribute coordinates in <surfxml_peer>");} surfxml_peer_coordinates_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_coordinates);
7732         YY_BREAK
7733 case 343:
7734 /* rule 343 can match eol */
7735 YY_RULE_SETUP
7736 if (surfxml_peer_coordinates_isset != 0) {FAIL("Multiple definition of attribute coordinates in <surfxml_peer>");}  surfxml_peer_coordinates_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_coordinates);
7737         YY_BREAK
7738 case 344:
7739 /* rule 344 can match eol */
7740 YY_RULE_SETUP
7741 if (surfxml_peer_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_peer>");} surfxml_peer_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_id);
7742         YY_BREAK
7743 case 345:
7744 /* rule 345 can match eol */
7745 YY_RULE_SETUP
7746 if (surfxml_peer_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_peer>");}  surfxml_peer_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_id);
7747         YY_BREAK
7748 case 346:
7749 /* rule 346 can match eol */
7750 YY_RULE_SETUP
7751 if (surfxml_peer_lat_isset != 0) {FAIL("Multiple definition of attribute lat in <surfxml_peer>");} surfxml_peer_lat_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_lat);
7752         YY_BREAK
7753 case 347:
7754 /* rule 347 can match eol */
7755 YY_RULE_SETUP
7756 if (surfxml_peer_lat_isset != 0) {FAIL("Multiple definition of attribute lat in <surfxml_peer>");}  surfxml_peer_lat_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_lat);
7757         YY_BREAK
7758 case 348:
7759 /* rule 348 can match eol */
7760 YY_RULE_SETUP
7761 if (surfxml_peer_speed_isset != 0) {FAIL("Multiple definition of attribute speed in <surfxml_peer>");} surfxml_peer_speed_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_speed);
7762         YY_BREAK
7763 case 349:
7764 /* rule 349 can match eol */
7765 YY_RULE_SETUP
7766 if (surfxml_peer_speed_isset != 0) {FAIL("Multiple definition of attribute speed in <surfxml_peer>");}  surfxml_peer_speed_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_speed);
7767         YY_BREAK
7768 case 350:
7769 /* rule 350 can match eol */
7770 YY_RULE_SETUP
7771 if (surfxml_peer_state___file_isset != 0) {FAIL("Multiple definition of attribute state_file in <surfxml_peer>");} surfxml_peer_state___file_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_peer_state___file);
7772         YY_BREAK
7773 case 351:
7774 /* rule 351 can match eol */
7775 YY_RULE_SETUP
7776 if (surfxml_peer_state___file_isset != 0) {FAIL("Multiple definition of attribute state_file in <surfxml_peer>");}  surfxml_peer_state___file_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_peer_state___file);
7777         YY_BREAK
7778 case 352:
7779 YY_RULE_SETUP
7780 {
7781   if (!AX_surfxml_peer_bw___in) FAIL("Required attribute `bw_in' not set for `peer' element.");
7782   if (!AX_surfxml_peer_bw___out) FAIL("Required attribute `bw_out' not set for `peer' element.");
7783   if (!AX_surfxml_peer_id) FAIL("Required attribute `id' not set for `peer' element.");
7784   if (!AX_surfxml_peer_speed) FAIL("Required attribute `speed' not set for `peer' element.");
7785   LEAVE; STag_surfxml_peer();surfxml_pcdata_ix = 0; ENTER(E_surfxml_peer);
7786  }
7787         YY_BREAK
7788 case 353:
7789 YY_RULE_SETUP
7790 {
7791   if (!AX_surfxml_peer_bw___in) FAIL("Required attribute `bw_in' not set for `peer' element.");
7792   if (!AX_surfxml_peer_bw___out) FAIL("Required attribute `bw_out' not set for `peer' element.");
7793   if (!AX_surfxml_peer_id) FAIL("Required attribute `id' not set for `peer' element.");
7794   if (!AX_surfxml_peer_speed) FAIL("Required attribute `speed' not set for `peer' element.");
7795   LEAVE; STag_surfxml_peer(); surfxml_pcdata_ix = 0; ETag_surfxml_peer(); popbuffer(); /* attribute */
7796   switch (YY_START) {
7797    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
7798    case S_surfxml_include: case S_surfxml_include_1: case S_surfxml_include_2: SET(S_surfxml_include_2); break;
7799    case S_surfxml_platform: case S_surfxml_platform_1: case S_surfxml_platform_3: case S_surfxml_platform_5: case S_surfxml_platform_6: SET(S_surfxml_platform_6); break;
7800   }
7801  }
7802         YY_BREAK
7803 case 354:
7804 YY_RULE_SETUP
7805 FAIL("Unexpected character `%c' in attribute list of peer element.", surf_parse_text[0]);
7806         YY_BREAK
7807 case 355:
7808 YY_RULE_SETUP
7809 FAIL("Bad attribute `%s' in `peer' element start tag.",surf_parse_text);
7810         YY_BREAK
7811 case YY_STATE_EOF(AL_surfxml_peer):
7812 FAIL("EOF in attribute list of `peer' element.");
7813         YY_BREAK
7814
7815 case 356:
7816 /* rule 356 can match eol */
7817 YY_RULE_SETUP
7818 {
7819   LEAVE;
7820   ETag_surfxml_peer();
7821   popbuffer(); /* attribute */
7822   switch (YY_START) {
7823    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
7824    case S_surfxml_include: case S_surfxml_include_1: case S_surfxml_include_2: SET(S_surfxml_include_2); break;
7825    case S_surfxml_platform: case S_surfxml_platform_1: case S_surfxml_platform_3: case S_surfxml_platform_5: case S_surfxml_platform_6: SET(S_surfxml_platform_6); break;
7826   }
7827  }
7828         YY_BREAK
7829 case 357:
7830 /* rule 357 can match eol */
7831 YY_RULE_SETUP
7832 FAIL("Unexpected end-tag `%s': `</peer>' expected.",surf_parse_text);
7833         YY_BREAK
7834 case 358:
7835 YY_RULE_SETUP
7836 FAIL("Unexpected character `%c': `</peer>' expected.",surf_parse_text[0]);
7837         YY_BREAK
7838 case YY_STATE_EOF(E_surfxml_peer):
7839 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</peer>' expected.");
7840         YY_BREAK
7841
7842 /* <!-- 
7843   *              DTD of SimGrid platform and deployment files.
7844   * More info: http://simgrid.gforge.inria.fr/simgrid/latest/doc/platform.html
7845   * To upgrade your files, use the tool simgrid_update_xml
7846   * * New in DTD version 4 (in SimGrid 3.13):
7847   *    - Rename (power->speed) the attributes describing the amount of flop
7848   *      that a <host>, <peer>, <cluster> or <cabinet> can deliver per second.
7849   *    - In <trace_connect>, attribute kind="POWER" is now kind="SPEED".
7850   *    
7851   *    - In <host> and <link>, attributes availability and state are gone.
7852   *      It was redundent with state and availability traces, and with peak values.
7853   *      
7854   *    - In <cluster>, cannot set the availability nor state traces. 
7855   *      This was too complex and unused.
7856   *    - The DOCTYPE points to the right URL (this file):
7857   *      http://simgrid.gforge.inria.fr/simgrid/simgrid.dtd
7858   *      
7859   *    - Kill <gpu>. Was not doing anything.
7860   *    - A warning is emitted for unit-less values (they are still accepted).
7861   *      - speed. Default: 'f' or 'flops'. Also defined:
7862   *         'Yf',         'Zf',         'Ef',       'Pf',        'Tf',        'Gf',        'Mf',        'kf'
7863   *         'yottaflops', 'zettaflops', 'exaflops', 'petaflops', 'teraflops', 'gigaflops', 'megaflops', 'kiloflops'
7864   *      - bandwidth. Default: 'Bps' bytes per second
7865   *        In bytes and powers of 2  (1 KiBps = 1024 Bps): 'EiBps', 'PiBps', 'TiBps', 'GiBps', 'MiBps', 'KiBps'
7866   *        In bits  and powers of 2  (1 Bps = 8 bps)     : 'Eibps', 'Pibps', 'Tibps', 'Gibps', 'Mibps', 'Kibps'
7867   *        In bytes and powers of 10 (1 KBps = 1000 Bps) : 'EBps', 'PBps', 'TBps', 'GBps', 'MBps', 'kBps', 'Bps'
7868   *        In bits  and powers of 10                     : 'Ebps', 'Pbps', 'Tbps', 'Gbps', 'Mbps', 'kbps', 'bps'
7869   *        (Exa and Peta notations were introduced in SimGrid v3.14)
7870   *      - latency. Default: 's' second. Also defined:
7871   *        'w' week, 'd' day, 'h' hour, 'm' minute, 'ms' millisecond, 'us' microsecond, 'ns' nanosecond, 'ps' picosecond
7872   * * New in DTD version 3 (in SimGrid 3.5):
7873   *    - The AS tag were introduced. Every platform should now
7874   *      contain an englobing AS tag.
7875   *    - Routes are now symmetric by default.
7876   *    - Renamed tags (for sake of XML sanity):
7877   *      - LINK:CTN -> LINK_CTN
7878   *      - TRACE:CONNECT -> TRACE_CONNECT
7879   * * New in DTD version 2 (in SimGrid 3.4):
7880   *    - Renamed tags:
7881   *      - CPU -> HOST
7882   *      - NETWORK_LINK -> LINK
7883   *      - ROUTE_ELEMENT ->  LINK:CTN (changed again in v3)
7884   *      - PLATFORM_DESCRIPTION -> PLATFORM
7885   * * New in DTD version 1 (in SimGrid 3.3):
7886   *    - DTD is now versionned with the version attribute of platform
7887   *    - Unit change: 
7888   *      - Link bandwidth: from Mb/s to b/s
7889   *      - CPU speed: from MFlop/s to Flop/s
7890   * -->  */
7891 case 359:
7892 /* rule 359 can match eol */
7893 YY_RULE_SETUP
7894 FAIL("Starting tag <platform> is not allowed here.");
7895         YY_BREAK
7896 case 360:
7897 /* rule 360 can match eol */
7898 YY_RULE_SETUP
7899 {
7900   AX_surfxml_platform_version = 1;
7901   surfxml_platform_version_isset = 0;
7902   ENTER(AL_surfxml_platform); pushbuffer(0);
7903   }
7904         YY_BREAK
7905
7906 case 361:
7907 /* rule 361 can match eol */
7908 YY_RULE_SETUP
7909 if (surfxml_platform_version_isset != 0) {FAIL("Multiple definition of attribute version in <surfxml_platform>");} surfxml_platform_version_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_platform_version);
7910         YY_BREAK
7911 case 362:
7912 /* rule 362 can match eol */
7913 YY_RULE_SETUP
7914 if (surfxml_platform_version_isset != 0) {FAIL("Multiple definition of attribute version in <surfxml_platform>");}  surfxml_platform_version_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_platform_version);
7915         YY_BREAK
7916 case 363:
7917 YY_RULE_SETUP
7918 {
7919   LEAVE; STag_surfxml_platform();surfxml_pcdata_ix = 0; ENTER(S_surfxml_platform);
7920  }
7921         YY_BREAK
7922 case 364:
7923 YY_RULE_SETUP
7924 {
7925   LEAVE; STag_surfxml_platform(); surfxml_pcdata_ix = 0; ETag_surfxml_platform(); popbuffer(); /* attribute */
7926   switch (YY_START) {
7927    case ROOT_surfxml_platform: SET(EPILOG); break;
7928   }
7929  }
7930         YY_BREAK
7931 case 365:
7932 YY_RULE_SETUP
7933 FAIL("Unexpected character `%c' in attribute list of platform element.", surf_parse_text[0]);
7934         YY_BREAK
7935 case 366:
7936 YY_RULE_SETUP
7937 FAIL("Bad attribute `%s' in `platform' element start tag.",surf_parse_text);
7938         YY_BREAK
7939 case YY_STATE_EOF(AL_surfxml_platform):
7940 FAIL("EOF in attribute list of `platform' element.");
7941         YY_BREAK
7942
7943 case 367:
7944 /* rule 367 can match eol */
7945 YY_RULE_SETUP
7946 {
7947   LEAVE;
7948   ETag_surfxml_platform();
7949   popbuffer(); /* attribute */
7950   switch (YY_START) {
7951    case ROOT_surfxml_platform: SET(EPILOG); break;
7952   }
7953  }
7954         YY_BREAK
7955 case 368:
7956 /* rule 368 can match eol */
7957 YY_RULE_SETUP
7958 FAIL("Unexpected end-tag `%s': `</platform>' expected.",surf_parse_text);
7959         YY_BREAK
7960 case 369:
7961 YY_RULE_SETUP
7962 FAIL("Unexpected character `%c': `</platform>' expected.",surf_parse_text[0]);
7963         YY_BREAK
7964 case YY_STATE_EOF(E_surfxml_platform):
7965 case YY_STATE_EOF(S_surfxml_platform):
7966 case YY_STATE_EOF(S_surfxml_platform_1):
7967 case YY_STATE_EOF(S_surfxml_platform_3):
7968 case YY_STATE_EOF(S_surfxml_platform_4):
7969 case YY_STATE_EOF(S_surfxml_platform_6):
7970 case YY_STATE_EOF(S_surfxml_platform_8):
7971 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</platform>' expected.");
7972         YY_BREAK
7973
7974 case 370:
7975 /* rule 370 can match eol */
7976 YY_RULE_SETUP
7977 FAIL("Starting tag <process> is not allowed here.");
7978         YY_BREAK
7979 case 371:
7980 /* rule 371 can match eol */
7981 YY_RULE_SETUP
7982 {
7983   AX_surfxml_process_function = 0;
7984   surfxml_process_function_isset = 0;
7985   AX_surfxml_process_host = 0;
7986   surfxml_process_host_isset = 0;
7987   AX_surfxml_process_kill___time = 50;
7988   surfxml_process_kill___time_isset = 0;
7989   AX_surfxml_process_on___failure = A_surfxml_process_on___failure_DIE;
7990   surfxml_process_on___failure_isset = 0;
7991   AX_surfxml_process_start___time = 45;
7992   surfxml_process_start___time_isset = 0;
7993   ENTER(AL_surfxml_process); pushbuffer(0);
7994   }
7995         YY_BREAK
7996
7997 case 372:
7998 /* rule 372 can match eol */
7999 YY_RULE_SETUP
8000 if (surfxml_process_function_isset != 0) {FAIL("Multiple definition of attribute function in <surfxml_process>");} surfxml_process_function_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_process_function);
8001         YY_BREAK
8002 case 373:
8003 /* rule 373 can match eol */
8004 YY_RULE_SETUP
8005 if (surfxml_process_function_isset != 0) {FAIL("Multiple definition of attribute function in <surfxml_process>");}  surfxml_process_function_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_process_function);
8006         YY_BREAK
8007 case 374:
8008 /* rule 374 can match eol */
8009 YY_RULE_SETUP
8010 if (surfxml_process_host_isset != 0) {FAIL("Multiple definition of attribute host in <surfxml_process>");} surfxml_process_host_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_process_host);
8011         YY_BREAK
8012 case 375:
8013 /* rule 375 can match eol */
8014 YY_RULE_SETUP
8015 if (surfxml_process_host_isset != 0) {FAIL("Multiple definition of attribute host in <surfxml_process>");}  surfxml_process_host_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_process_host);
8016         YY_BREAK
8017 case 376:
8018 /* rule 376 can match eol */
8019 YY_RULE_SETUP
8020 if (surfxml_process_kill___time_isset != 0) {FAIL("Multiple definition of attribute kill_time in <surfxml_process>");} surfxml_process_kill___time_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_process_kill___time);
8021         YY_BREAK
8022 case 377:
8023 /* rule 377 can match eol */
8024 YY_RULE_SETUP
8025 if (surfxml_process_kill___time_isset != 0) {FAIL("Multiple definition of attribute kill_time in <surfxml_process>");}  surfxml_process_kill___time_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_process_kill___time);
8026         YY_BREAK
8027 case 378:
8028 /* rule 378 can match eol */
8029 case 379:
8030 /* rule 379 can match eol */
8031 YY_RULE_SETUP
8032 A_surfxml_process_on___failure = A_surfxml_process_on___failure_DIE;
8033         YY_BREAK
8034 case 380:
8035 /* rule 380 can match eol */
8036 case 381:
8037 /* rule 381 can match eol */
8038 YY_RULE_SETUP
8039 A_surfxml_process_on___failure = A_surfxml_process_on___failure_RESTART;
8040         YY_BREAK
8041 case 382:
8042 /* rule 382 can match eol */
8043 YY_RULE_SETUP
8044 if (surfxml_process_start___time_isset != 0) {FAIL("Multiple definition of attribute start_time in <surfxml_process>");} surfxml_process_start___time_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_process_start___time);
8045         YY_BREAK
8046 case 383:
8047 /* rule 383 can match eol */
8048 YY_RULE_SETUP
8049 if (surfxml_process_start___time_isset != 0) {FAIL("Multiple definition of attribute start_time in <surfxml_process>");}  surfxml_process_start___time_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_process_start___time);
8050         YY_BREAK
8051 case 384:
8052 YY_RULE_SETUP
8053 {
8054   if (!AX_surfxml_process_function) FAIL("Required attribute `function' not set for `process' element.");
8055   if (!AX_surfxml_process_host) FAIL("Required attribute `host' not set for `process' element.");
8056   LEAVE; STag_surfxml_process();surfxml_pcdata_ix = 0; ENTER(S_surfxml_process);
8057  }
8058         YY_BREAK
8059 case 385:
8060 YY_RULE_SETUP
8061 {
8062   if (!AX_surfxml_process_function) FAIL("Required attribute `function' not set for `process' element.");
8063   if (!AX_surfxml_process_host) FAIL("Required attribute `host' not set for `process' element.");
8064   LEAVE; STag_surfxml_process(); surfxml_pcdata_ix = 0; ETag_surfxml_process(); popbuffer(); /* attribute */
8065   switch (YY_START) {
8066    case S_surfxml_platform: case S_surfxml_platform_1: case S_surfxml_platform_3: case S_surfxml_platform_4: case S_surfxml_platform_6: case S_surfxml_platform_7: case S_surfxml_platform_8: SET(S_surfxml_platform_8); break;
8067   }
8068  }
8069         YY_BREAK
8070 case 386:
8071 YY_RULE_SETUP
8072 FAIL("Unexpected character `%c' in attribute list of process element.", surf_parse_text[0]);
8073         YY_BREAK
8074 case 387:
8075 YY_RULE_SETUP
8076 FAIL("Bad attribute `%s' in `process' element start tag.",surf_parse_text);
8077         YY_BREAK
8078 case YY_STATE_EOF(AL_surfxml_process):
8079 FAIL("EOF in attribute list of `process' element.");
8080         YY_BREAK
8081
8082 case 388:
8083 /* rule 388 can match eol */
8084 YY_RULE_SETUP
8085 {
8086   LEAVE;
8087   ETag_surfxml_process();
8088   popbuffer(); /* attribute */
8089   switch (YY_START) {
8090    case S_surfxml_platform: case S_surfxml_platform_1: case S_surfxml_platform_3: case S_surfxml_platform_4: case S_surfxml_platform_6: case S_surfxml_platform_7: case S_surfxml_platform_8: SET(S_surfxml_platform_8); break;
8091   }
8092  }
8093         YY_BREAK
8094 case 389:
8095 /* rule 389 can match eol */
8096 YY_RULE_SETUP
8097 FAIL("Unexpected end-tag `%s': `</process>' expected.",surf_parse_text);
8098         YY_BREAK
8099 case 390:
8100 YY_RULE_SETUP
8101 FAIL("Unexpected character `%c': `</process>' expected.",surf_parse_text[0]);
8102         YY_BREAK
8103 case YY_STATE_EOF(E_surfxml_process):
8104 case YY_STATE_EOF(S_surfxml_process):
8105 case YY_STATE_EOF(S_surfxml_process_2):
8106 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</process>' expected.");
8107         YY_BREAK
8108
8109 /* <!-- <!ATTLIST prop key CDATA #REQUIRED> -->
8110   * <!-- <!ATTLIST prop key CDATA #REQUIRED> -->  */
8111 case 391:
8112 /* rule 391 can match eol */
8113 YY_RULE_SETUP
8114 FAIL("Starting tag <prop> is not allowed here.");
8115         YY_BREAK
8116 case 392:
8117 /* rule 392 can match eol */
8118 YY_RULE_SETUP
8119 {
8120   AX_surfxml_prop_id = 0;
8121   surfxml_prop_id_isset = 0;
8122   AX_surfxml_prop_value = 0;
8123   surfxml_prop_value_isset = 0;
8124   ENTER(AL_surfxml_prop); pushbuffer(0);
8125   }
8126         YY_BREAK
8127
8128 case 393:
8129 /* rule 393 can match eol */
8130 YY_RULE_SETUP
8131 if (surfxml_prop_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_prop>");} surfxml_prop_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_prop_id);
8132         YY_BREAK
8133 case 394:
8134 /* rule 394 can match eol */
8135 YY_RULE_SETUP
8136 if (surfxml_prop_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_prop>");}  surfxml_prop_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_prop_id);
8137         YY_BREAK
8138 case 395:
8139 /* rule 395 can match eol */
8140 YY_RULE_SETUP
8141 if (surfxml_prop_value_isset != 0) {FAIL("Multiple definition of attribute value in <surfxml_prop>");} surfxml_prop_value_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_prop_value);
8142         YY_BREAK
8143 case 396:
8144 /* rule 396 can match eol */
8145 YY_RULE_SETUP
8146 if (surfxml_prop_value_isset != 0) {FAIL("Multiple definition of attribute value in <surfxml_prop>");}  surfxml_prop_value_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_prop_value);
8147         YY_BREAK
8148 case 397:
8149 YY_RULE_SETUP
8150 {
8151   if (!AX_surfxml_prop_id) FAIL("Required attribute `id' not set for `prop' element.");
8152   if (!AX_surfxml_prop_value) FAIL("Required attribute `value' not set for `prop' element.");
8153   LEAVE; STag_surfxml_prop();surfxml_pcdata_ix = 0; ENTER(E_surfxml_prop);
8154  }
8155         YY_BREAK
8156 case 398:
8157 YY_RULE_SETUP
8158 {
8159   if (!AX_surfxml_prop_id) FAIL("Required attribute `id' not set for `prop' element.");
8160   if (!AX_surfxml_prop_value) FAIL("Required attribute `value' not set for `prop' element.");
8161   LEAVE; STag_surfxml_prop(); surfxml_pcdata_ix = 0; ETag_surfxml_prop(); popbuffer(); /* attribute */
8162   switch (YY_START) {
8163    case S_surfxml_AS: case S_surfxml_AS_2: case S_surfxml_AS_3: SET(S_surfxml_AS_3); break;
8164    case S_surfxml_cluster: case S_surfxml_cluster_1: case S_surfxml_cluster_2: SET(S_surfxml_cluster_2); break;
8165    case S_surfxml_config: case S_surfxml_config_1: case S_surfxml_config_2: SET(S_surfxml_config_2); break;
8166    case S_surfxml_host: case S_surfxml_host_1: case S_surfxml_host_2: SET(S_surfxml_host_2); break;
8167    case S_surfxml_link: case S_surfxml_link_1: case S_surfxml_link_2: SET(S_surfxml_link_2); break;
8168    case S_surfxml_process: case S_surfxml_process_1: case S_surfxml_process_2: SET(S_surfxml_process_2); break;
8169    case S_surfxml_storage: case S_surfxml_storage_1: case S_surfxml_storage_2: SET(S_surfxml_storage_2); break;
8170    case S_surfxml_storage___type: case S_surfxml_storage___type_1: case S_surfxml_storage___type_2: SET(S_surfxml_storage___type_2); break;
8171   }
8172  }
8173         YY_BREAK
8174 case 399:
8175 YY_RULE_SETUP
8176 FAIL("Unexpected character `%c' in attribute list of prop element.", surf_parse_text[0]);
8177         YY_BREAK
8178 case 400:
8179 YY_RULE_SETUP
8180 FAIL("Bad attribute `%s' in `prop' element start tag.",surf_parse_text);
8181         YY_BREAK
8182 case YY_STATE_EOF(AL_surfxml_prop):
8183 FAIL("EOF in attribute list of `prop' element.");
8184         YY_BREAK
8185
8186 case 401:
8187 /* rule 401 can match eol */
8188 YY_RULE_SETUP
8189 {
8190   LEAVE;
8191   ETag_surfxml_prop();
8192   popbuffer(); /* attribute */
8193   switch (YY_START) {
8194    case S_surfxml_AS: case S_surfxml_AS_2: case S_surfxml_AS_3: SET(S_surfxml_AS_3); break;
8195    case S_surfxml_cluster: case S_surfxml_cluster_1: case S_surfxml_cluster_2: SET(S_surfxml_cluster_2); break;
8196    case S_surfxml_config: case S_surfxml_config_1: case S_surfxml_config_2: SET(S_surfxml_config_2); break;
8197    case S_surfxml_host: case S_surfxml_host_1: case S_surfxml_host_2: SET(S_surfxml_host_2); break;
8198    case S_surfxml_link: case S_surfxml_link_1: case S_surfxml_link_2: SET(S_surfxml_link_2); break;
8199    case S_surfxml_process: case S_surfxml_process_1: case S_surfxml_process_2: SET(S_surfxml_process_2); break;
8200    case S_surfxml_storage: case S_surfxml_storage_1: case S_surfxml_storage_2: SET(S_surfxml_storage_2); break;
8201    case S_surfxml_storage___type: case S_surfxml_storage___type_1: case S_surfxml_storage___type_2: SET(S_surfxml_storage___type_2); break;
8202   }
8203  }
8204         YY_BREAK
8205 case 402:
8206 /* rule 402 can match eol */
8207 YY_RULE_SETUP
8208 FAIL("Unexpected end-tag `%s': `</prop>' expected.",surf_parse_text);
8209         YY_BREAK
8210 case 403:
8211 YY_RULE_SETUP
8212 FAIL("Unexpected character `%c': `</prop>' expected.",surf_parse_text[0]);
8213         YY_BREAK
8214 case YY_STATE_EOF(E_surfxml_prop):
8215 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</prop>' expected.");
8216         YY_BREAK
8217
8218 case 404:
8219 /* rule 404 can match eol */
8220 YY_RULE_SETUP
8221 FAIL("Starting tag <random> is not allowed here.");
8222         YY_BREAK
8223 case 405:
8224 /* rule 405 can match eol */
8225 YY_RULE_SETUP
8226 {
8227   AX_surfxml_random_generator = A_surfxml_random_generator_DRAND48;
8228   surfxml_random_generator_isset = 0;
8229   AX_surfxml_random_id = 0;
8230   surfxml_random_id_isset = 0;
8231   AX_surfxml_random_max = 0;
8232   surfxml_random_max_isset = 0;
8233   AX_surfxml_random_mean = 0;
8234   surfxml_random_mean_isset = 0;
8235   AX_surfxml_random_min = 0;
8236   surfxml_random_min_isset = 0;
8237   AX_surfxml_random_radical = 0;
8238   surfxml_random_radical_isset = 0;
8239   AX_surfxml_random_seed = 5;
8240   surfxml_random_seed_isset = 0;
8241   AX_surfxml_random_std___deviation = 0;
8242   surfxml_random_std___deviation_isset = 0;
8243   ENTER(AL_surfxml_random); pushbuffer(0);
8244   }
8245         YY_BREAK
8246
8247 case 406:
8248 /* rule 406 can match eol */
8249 case 407:
8250 /* rule 407 can match eol */
8251 YY_RULE_SETUP
8252 A_surfxml_random_generator = A_surfxml_random_generator_DRAND48;
8253         YY_BREAK
8254 case 408:
8255 /* rule 408 can match eol */
8256 case 409:
8257 /* rule 409 can match eol */
8258 YY_RULE_SETUP
8259 A_surfxml_random_generator = A_surfxml_random_generator_RAND;
8260         YY_BREAK
8261 case 410:
8262 /* rule 410 can match eol */
8263 case 411:
8264 /* rule 411 can match eol */
8265 YY_RULE_SETUP
8266 A_surfxml_random_generator = A_surfxml_random_generator_RNGSTREAM;
8267         YY_BREAK
8268 case 412:
8269 /* rule 412 can match eol */
8270 case 413:
8271 /* rule 413 can match eol */
8272 YY_RULE_SETUP
8273 A_surfxml_random_generator = A_surfxml_random_generator_NONE;
8274         YY_BREAK
8275 case 414:
8276 /* rule 414 can match eol */
8277 YY_RULE_SETUP
8278 if (surfxml_random_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_random>");} surfxml_random_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_random_id);
8279         YY_BREAK
8280 case 415:
8281 /* rule 415 can match eol */
8282 YY_RULE_SETUP
8283 if (surfxml_random_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_random>");}  surfxml_random_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_random_id);
8284         YY_BREAK
8285 case 416:
8286 /* rule 416 can match eol */
8287 YY_RULE_SETUP
8288 if (surfxml_random_max_isset != 0) {FAIL("Multiple definition of attribute max in <surfxml_random>");} surfxml_random_max_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_random_max);
8289         YY_BREAK
8290 case 417:
8291 /* rule 417 can match eol */
8292 YY_RULE_SETUP
8293 if (surfxml_random_max_isset != 0) {FAIL("Multiple definition of attribute max in <surfxml_random>");}  surfxml_random_max_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_random_max);
8294         YY_BREAK
8295 case 418:
8296 /* rule 418 can match eol */
8297 YY_RULE_SETUP
8298 if (surfxml_random_mean_isset != 0) {FAIL("Multiple definition of attribute mean in <surfxml_random>");} surfxml_random_mean_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_random_mean);
8299         YY_BREAK
8300 case 419:
8301 /* rule 419 can match eol */
8302 YY_RULE_SETUP
8303 if (surfxml_random_mean_isset != 0) {FAIL("Multiple definition of attribute mean in <surfxml_random>");}  surfxml_random_mean_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_random_mean);
8304         YY_BREAK
8305 case 420:
8306 /* rule 420 can match eol */
8307 YY_RULE_SETUP
8308 if (surfxml_random_min_isset != 0) {FAIL("Multiple definition of attribute min in <surfxml_random>");} surfxml_random_min_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_random_min);
8309         YY_BREAK
8310 case 421:
8311 /* rule 421 can match eol */
8312 YY_RULE_SETUP
8313 if (surfxml_random_min_isset != 0) {FAIL("Multiple definition of attribute min in <surfxml_random>");}  surfxml_random_min_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_random_min);
8314         YY_BREAK
8315 case 422:
8316 /* rule 422 can match eol */
8317 YY_RULE_SETUP
8318 if (surfxml_random_radical_isset != 0) {FAIL("Multiple definition of attribute radical in <surfxml_random>");} surfxml_random_radical_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_random_radical);
8319         YY_BREAK
8320 case 423:
8321 /* rule 423 can match eol */
8322 YY_RULE_SETUP
8323 if (surfxml_random_radical_isset != 0) {FAIL("Multiple definition of attribute radical in <surfxml_random>");}  surfxml_random_radical_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_random_radical);
8324         YY_BREAK
8325 case 424:
8326 /* rule 424 can match eol */
8327 YY_RULE_SETUP
8328 if (surfxml_random_seed_isset != 0) {FAIL("Multiple definition of attribute seed in <surfxml_random>");} surfxml_random_seed_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_random_seed);
8329         YY_BREAK
8330 case 425:
8331 /* rule 425 can match eol */
8332 YY_RULE_SETUP
8333 if (surfxml_random_seed_isset != 0) {FAIL("Multiple definition of attribute seed in <surfxml_random>");}  surfxml_random_seed_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_random_seed);
8334         YY_BREAK
8335 case 426:
8336 /* rule 426 can match eol */
8337 YY_RULE_SETUP
8338 if (surfxml_random_std___deviation_isset != 0) {FAIL("Multiple definition of attribute std_deviation in <surfxml_random>");} surfxml_random_std___deviation_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_random_std___deviation);
8339         YY_BREAK
8340 case 427:
8341 /* rule 427 can match eol */
8342 YY_RULE_SETUP
8343 if (surfxml_random_std___deviation_isset != 0) {FAIL("Multiple definition of attribute std_deviation in <surfxml_random>");}  surfxml_random_std___deviation_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_random_std___deviation);
8344         YY_BREAK
8345 case 428:
8346 YY_RULE_SETUP
8347 {
8348   if (!AX_surfxml_random_id) FAIL("Required attribute `id' not set for `random' element.");
8349   if (!AX_surfxml_random_max) FAIL("Required attribute `max' not set for `random' element.");
8350   if (!AX_surfxml_random_mean) FAIL("Required attribute `mean' not set for `random' element.");
8351   if (!AX_surfxml_random_min) FAIL("Required attribute `min' not set for `random' element.");
8352   if (!AX_surfxml_random_std___deviation) FAIL("Required attribute `std_deviation' not set for `random' element.");
8353   LEAVE; STag_surfxml_random();surfxml_pcdata_ix = 0; ENTER(E_surfxml_random);
8354  }
8355         YY_BREAK
8356 case 429:
8357 YY_RULE_SETUP
8358 {
8359   if (!AX_surfxml_random_id) FAIL("Required attribute `id' not set for `random' element.");
8360   if (!AX_surfxml_random_max) FAIL("Required attribute `max' not set for `random' element.");
8361   if (!AX_surfxml_random_mean) FAIL("Required attribute `mean' not set for `random' element.");
8362   if (!AX_surfxml_random_min) FAIL("Required attribute `min' not set for `random' element.");
8363   if (!AX_surfxml_random_std___deviation) FAIL("Required attribute `std_deviation' not set for `random' element.");
8364   LEAVE; STag_surfxml_random(); surfxml_pcdata_ix = 0; ETag_surfxml_random(); popbuffer(); /* attribute */
8365   switch (YY_START) {
8366    case S_surfxml_platform: case S_surfxml_platform_2: case S_surfxml_platform_3: SET(S_surfxml_platform_3); break;
8367   }
8368  }
8369         YY_BREAK
8370 case 430:
8371 YY_RULE_SETUP
8372 FAIL("Unexpected character `%c' in attribute list of random element.", surf_parse_text[0]);
8373         YY_BREAK
8374 case 431:
8375 YY_RULE_SETUP
8376 FAIL("Bad attribute `%s' in `random' element start tag.",surf_parse_text);
8377         YY_BREAK
8378 case YY_STATE_EOF(AL_surfxml_random):
8379 FAIL("EOF in attribute list of `random' element.");
8380         YY_BREAK
8381
8382 case 432:
8383 /* rule 432 can match eol */
8384 YY_RULE_SETUP
8385 {
8386   LEAVE;
8387   ETag_surfxml_random();
8388   popbuffer(); /* attribute */
8389   switch (YY_START) {
8390    case S_surfxml_platform: case S_surfxml_platform_2: case S_surfxml_platform_3: SET(S_surfxml_platform_3); break;
8391   }
8392  }
8393         YY_BREAK
8394 case 433:
8395 /* rule 433 can match eol */
8396 YY_RULE_SETUP
8397 FAIL("Unexpected end-tag `%s': `</random>' expected.",surf_parse_text);
8398         YY_BREAK
8399 case 434:
8400 YY_RULE_SETUP
8401 FAIL("Unexpected character `%c': `</random>' expected.",surf_parse_text[0]);
8402         YY_BREAK
8403 case YY_STATE_EOF(E_surfxml_random):
8404 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</random>' expected.");
8405         YY_BREAK
8406
8407 case 435:
8408 /* rule 435 can match eol */
8409 YY_RULE_SETUP
8410 FAIL("Starting tag <route> is not allowed here.");
8411         YY_BREAK
8412 case 436:
8413 /* rule 436 can match eol */
8414 YY_RULE_SETUP
8415 {
8416   AX_surfxml_route_dst = 0;
8417   surfxml_route_dst_isset = 0;
8418   AX_surfxml_route_src = 0;
8419   surfxml_route_src_isset = 0;
8420   AX_surfxml_route_symmetrical = A_surfxml_route_symmetrical_YES;
8421   surfxml_route_symmetrical_isset = 0;
8422   ENTER(AL_surfxml_route); pushbuffer(0);
8423   }
8424         YY_BREAK
8425
8426 case 437:
8427 /* rule 437 can match eol */
8428 YY_RULE_SETUP
8429 if (surfxml_route_dst_isset != 0) {FAIL("Multiple definition of attribute dst in <surfxml_route>");} surfxml_route_dst_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_route_dst);
8430         YY_BREAK
8431 case 438:
8432 /* rule 438 can match eol */
8433 YY_RULE_SETUP
8434 if (surfxml_route_dst_isset != 0) {FAIL("Multiple definition of attribute dst in <surfxml_route>");}  surfxml_route_dst_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_route_dst);
8435         YY_BREAK
8436 case 439:
8437 /* rule 439 can match eol */
8438 YY_RULE_SETUP
8439 if (surfxml_route_src_isset != 0) {FAIL("Multiple definition of attribute src in <surfxml_route>");} surfxml_route_src_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_route_src);
8440         YY_BREAK
8441 case 440:
8442 /* rule 440 can match eol */
8443 YY_RULE_SETUP
8444 if (surfxml_route_src_isset != 0) {FAIL("Multiple definition of attribute src in <surfxml_route>");}  surfxml_route_src_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_route_src);
8445         YY_BREAK
8446 case 441:
8447 /* rule 441 can match eol */
8448 case 442:
8449 /* rule 442 can match eol */
8450 YY_RULE_SETUP
8451 A_surfxml_route_symmetrical = A_surfxml_route_symmetrical_YES;
8452         YY_BREAK
8453 case 443:
8454 /* rule 443 can match eol */
8455 case 444:
8456 /* rule 444 can match eol */
8457 YY_RULE_SETUP
8458 A_surfxml_route_symmetrical = A_surfxml_route_symmetrical_NO;
8459         YY_BREAK
8460 case 445:
8461 YY_RULE_SETUP
8462 {
8463   if (!AX_surfxml_route_dst) FAIL("Required attribute `dst' not set for `route' element.");
8464   if (!AX_surfxml_route_src) FAIL("Required attribute `src' not set for `route' element.");
8465   LEAVE; STag_surfxml_route();surfxml_pcdata_ix = 0; ENTER(S_surfxml_route);
8466  }
8467         YY_BREAK
8468 case 446:
8469 YY_RULE_SETUP
8470 {
8471   if (!AX_surfxml_route_dst) FAIL("Required attribute `dst' not set for `route' element.");
8472   if (!AX_surfxml_route_src) FAIL("Required attribute `src' not set for `route' element.");
8473   LEAVE; STag_surfxml_route(); surfxml_pcdata_ix = 0; ETag_surfxml_route(); popbuffer(); /* attribute */
8474   switch (YY_START) {
8475    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_4: case S_surfxml_AS_6: case S_surfxml_AS_7: case S_surfxml_AS_8: SET(S_surfxml_AS_8); break;
8476   }
8477  }
8478         YY_BREAK
8479 case 447:
8480 YY_RULE_SETUP
8481 FAIL("Unexpected character `%c' in attribute list of route element.", surf_parse_text[0]);
8482         YY_BREAK
8483 case 448:
8484 YY_RULE_SETUP
8485 FAIL("Bad attribute `%s' in `route' element start tag.",surf_parse_text);
8486         YY_BREAK
8487 case YY_STATE_EOF(AL_surfxml_route):
8488 FAIL("EOF in attribute list of `route' element.");
8489         YY_BREAK
8490
8491 case 449:
8492 /* rule 449 can match eol */
8493 YY_RULE_SETUP
8494 {
8495   LEAVE;
8496   ETag_surfxml_route();
8497   popbuffer(); /* attribute */
8498   switch (YY_START) {
8499    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_4: case S_surfxml_AS_6: case S_surfxml_AS_7: case S_surfxml_AS_8: SET(S_surfxml_AS_8); break;
8500   }
8501  }
8502         YY_BREAK
8503 case 450:
8504 /* rule 450 can match eol */
8505 YY_RULE_SETUP
8506 FAIL("Unexpected end-tag `%s': `</route>' expected.",surf_parse_text);
8507         YY_BREAK
8508 case 451:
8509 YY_RULE_SETUP
8510 FAIL("Unexpected character `%c': `</route>' expected.",surf_parse_text[0]);
8511         YY_BREAK
8512 case YY_STATE_EOF(E_surfxml_route):
8513 case YY_STATE_EOF(S_surfxml_route):
8514 case YY_STATE_EOF(S_surfxml_route_2):
8515 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</route>' expected.");
8516         YY_BREAK
8517
8518 case 452:
8519 /* rule 452 can match eol */
8520 YY_RULE_SETUP
8521 FAIL("Starting tag <router> is not allowed here.");
8522         YY_BREAK
8523 case 453:
8524 /* rule 453 can match eol */
8525 YY_RULE_SETUP
8526 {
8527   AX_surfxml_router_coordinates = 0;
8528   surfxml_router_coordinates_isset = 0;
8529   AX_surfxml_router_id = 0;
8530   surfxml_router_id_isset = 0;
8531   ENTER(AL_surfxml_router); pushbuffer(0);
8532   }
8533         YY_BREAK
8534
8535 case 454:
8536 /* rule 454 can match eol */
8537 YY_RULE_SETUP
8538 if (surfxml_router_coordinates_isset != 0) {FAIL("Multiple definition of attribute coordinates in <surfxml_router>");} surfxml_router_coordinates_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_router_coordinates);
8539         YY_BREAK
8540 case 455:
8541 /* rule 455 can match eol */
8542 YY_RULE_SETUP
8543 if (surfxml_router_coordinates_isset != 0) {FAIL("Multiple definition of attribute coordinates in <surfxml_router>");}  surfxml_router_coordinates_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_router_coordinates);
8544         YY_BREAK
8545 case 456:
8546 /* rule 456 can match eol */
8547 YY_RULE_SETUP
8548 if (surfxml_router_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_router>");} surfxml_router_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_router_id);
8549         YY_BREAK
8550 case 457:
8551 /* rule 457 can match eol */
8552 YY_RULE_SETUP
8553 if (surfxml_router_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_router>");}  surfxml_router_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_router_id);
8554         YY_BREAK
8555 case 458:
8556 YY_RULE_SETUP
8557 {
8558   if (!AX_surfxml_router_id) FAIL("Required attribute `id' not set for `router' element.");
8559   LEAVE; STag_surfxml_router();surfxml_pcdata_ix = 0; ENTER(E_surfxml_router);
8560  }
8561         YY_BREAK
8562 case 459:
8563 YY_RULE_SETUP
8564 {
8565   if (!AX_surfxml_router_id) FAIL("Required attribute `id' not set for `router' element.");
8566   LEAVE; STag_surfxml_router(); surfxml_pcdata_ix = 0; ETag_surfxml_router(); popbuffer(); /* attribute */
8567   switch (YY_START) {
8568    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
8569   }
8570  }
8571         YY_BREAK
8572 case 460:
8573 YY_RULE_SETUP
8574 FAIL("Unexpected character `%c' in attribute list of router element.", surf_parse_text[0]);
8575         YY_BREAK
8576 case 461:
8577 YY_RULE_SETUP
8578 FAIL("Bad attribute `%s' in `router' element start tag.",surf_parse_text);
8579         YY_BREAK
8580 case YY_STATE_EOF(AL_surfxml_router):
8581 FAIL("EOF in attribute list of `router' element.");
8582         YY_BREAK
8583
8584 case 462:
8585 /* rule 462 can match eol */
8586 YY_RULE_SETUP
8587 {
8588   LEAVE;
8589   ETag_surfxml_router();
8590   popbuffer(); /* attribute */
8591   switch (YY_START) {
8592    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
8593   }
8594  }
8595         YY_BREAK
8596 case 463:
8597 /* rule 463 can match eol */
8598 YY_RULE_SETUP
8599 FAIL("Unexpected end-tag `%s': `</router>' expected.",surf_parse_text);
8600         YY_BREAK
8601 case 464:
8602 YY_RULE_SETUP
8603 FAIL("Unexpected character `%c': `</router>' expected.",surf_parse_text[0]);
8604         YY_BREAK
8605 case YY_STATE_EOF(E_surfxml_router):
8606 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</router>' expected.");
8607         YY_BREAK
8608
8609 case 465:
8610 /* rule 465 can match eol */
8611 YY_RULE_SETUP
8612 FAIL("Starting tag <storage> is not allowed here.");
8613         YY_BREAK
8614 case 466:
8615 /* rule 466 can match eol */
8616 YY_RULE_SETUP
8617 {
8618   AX_surfxml_storage_attach = 0;
8619   surfxml_storage_attach_isset = 0;
8620   AX_surfxml_storage_content = 0;
8621   surfxml_storage_content_isset = 0;
8622   AX_surfxml_storage_content___type = 31;
8623   surfxml_storage_content___type_isset = 0;
8624   AX_surfxml_storage_id = 0;
8625   surfxml_storage_id_isset = 0;
8626   AX_surfxml_storage_typeId = 0;
8627   surfxml_storage_typeId_isset = 0;
8628   ENTER(AL_surfxml_storage); pushbuffer(0);
8629   }
8630         YY_BREAK
8631
8632 case 467:
8633 /* rule 467 can match eol */
8634 YY_RULE_SETUP
8635 if (surfxml_storage_attach_isset != 0) {FAIL("Multiple definition of attribute attach in <surfxml_storage>");} surfxml_storage_attach_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_storage_attach);
8636         YY_BREAK
8637 case 468:
8638 /* rule 468 can match eol */
8639 YY_RULE_SETUP
8640 if (surfxml_storage_attach_isset != 0) {FAIL("Multiple definition of attribute attach in <surfxml_storage>");}  surfxml_storage_attach_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_storage_attach);
8641         YY_BREAK
8642 case 469:
8643 /* rule 469 can match eol */
8644 YY_RULE_SETUP
8645 if (surfxml_storage_content_isset != 0) {FAIL("Multiple definition of attribute content in <surfxml_storage>");} surfxml_storage_content_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_storage_content);
8646         YY_BREAK
8647 case 470:
8648 /* rule 470 can match eol */
8649 YY_RULE_SETUP
8650 if (surfxml_storage_content_isset != 0) {FAIL("Multiple definition of attribute content in <surfxml_storage>");}  surfxml_storage_content_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_storage_content);
8651         YY_BREAK
8652 case 471:
8653 /* rule 471 can match eol */
8654 YY_RULE_SETUP
8655 if (surfxml_storage_content___type_isset != 0) {FAIL("Multiple definition of attribute content_type in <surfxml_storage>");} surfxml_storage_content___type_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_storage_content___type);
8656         YY_BREAK
8657 case 472:
8658 /* rule 472 can match eol */
8659 YY_RULE_SETUP
8660 if (surfxml_storage_content___type_isset != 0) {FAIL("Multiple definition of attribute content_type in <surfxml_storage>");}  surfxml_storage_content___type_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_storage_content___type);
8661         YY_BREAK
8662 case 473:
8663 /* rule 473 can match eol */
8664 YY_RULE_SETUP
8665 if (surfxml_storage_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_storage>");} surfxml_storage_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_storage_id);
8666         YY_BREAK
8667 case 474:
8668 /* rule 474 can match eol */
8669 YY_RULE_SETUP
8670 if (surfxml_storage_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_storage>");}  surfxml_storage_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_storage_id);
8671         YY_BREAK
8672 case 475:
8673 /* rule 475 can match eol */
8674 YY_RULE_SETUP
8675 if (surfxml_storage_typeId_isset != 0) {FAIL("Multiple definition of attribute typeId in <surfxml_storage>");} surfxml_storage_typeId_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_storage_typeId);
8676         YY_BREAK
8677 case 476:
8678 /* rule 476 can match eol */
8679 YY_RULE_SETUP
8680 if (surfxml_storage_typeId_isset != 0) {FAIL("Multiple definition of attribute typeId in <surfxml_storage>");}  surfxml_storage_typeId_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_storage_typeId);
8681         YY_BREAK
8682 case 477:
8683 YY_RULE_SETUP
8684 {
8685   if (!AX_surfxml_storage_attach) FAIL("Required attribute `attach' not set for `storage' element.");
8686   if (!AX_surfxml_storage_id) FAIL("Required attribute `id' not set for `storage' element.");
8687   if (!AX_surfxml_storage_typeId) FAIL("Required attribute `typeId' not set for `storage' element.");
8688   LEAVE; STag_surfxml_storage();surfxml_pcdata_ix = 0; ENTER(S_surfxml_storage);
8689  }
8690         YY_BREAK
8691 case 478:
8692 YY_RULE_SETUP
8693 {
8694   if (!AX_surfxml_storage_attach) FAIL("Required attribute `attach' not set for `storage' element.");
8695   if (!AX_surfxml_storage_id) FAIL("Required attribute `id' not set for `storage' element.");
8696   if (!AX_surfxml_storage_typeId) FAIL("Required attribute `typeId' not set for `storage' element.");
8697   LEAVE; STag_surfxml_storage(); surfxml_pcdata_ix = 0; ETag_surfxml_storage(); popbuffer(); /* attribute */
8698   switch (YY_START) {
8699    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
8700   }
8701  }
8702         YY_BREAK
8703 case 479:
8704 YY_RULE_SETUP
8705 FAIL("Unexpected character `%c' in attribute list of storage element.", surf_parse_text[0]);
8706         YY_BREAK
8707 case 480:
8708 YY_RULE_SETUP
8709 FAIL("Bad attribute `%s' in `storage' element start tag.",surf_parse_text);
8710         YY_BREAK
8711 case YY_STATE_EOF(AL_surfxml_storage):
8712 FAIL("EOF in attribute list of `storage' element.");
8713         YY_BREAK
8714
8715 case 481:
8716 /* rule 481 can match eol */
8717 YY_RULE_SETUP
8718 {
8719   LEAVE;
8720   ETag_surfxml_storage();
8721   popbuffer(); /* attribute */
8722   switch (YY_START) {
8723    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
8724   }
8725  }
8726         YY_BREAK
8727 case 482:
8728 /* rule 482 can match eol */
8729 YY_RULE_SETUP
8730 FAIL("Unexpected end-tag `%s': `</storage>' expected.",surf_parse_text);
8731         YY_BREAK
8732 case 483:
8733 YY_RULE_SETUP
8734 FAIL("Unexpected character `%c': `</storage>' expected.",surf_parse_text[0]);
8735         YY_BREAK
8736 case YY_STATE_EOF(E_surfxml_storage):
8737 case YY_STATE_EOF(S_surfxml_storage):
8738 case YY_STATE_EOF(S_surfxml_storage_2):
8739 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</storage>' expected.");
8740         YY_BREAK
8741
8742 case 484:
8743 /* rule 484 can match eol */
8744 YY_RULE_SETUP
8745 FAIL("Starting tag <storage_type> is not allowed here.");
8746         YY_BREAK
8747 case 485:
8748 /* rule 485 can match eol */
8749 YY_RULE_SETUP
8750 {
8751   AX_surfxml_storage___type_content = 0;
8752   surfxml_storage___type_content_isset = 0;
8753   AX_surfxml_storage___type_content___type = 16;
8754   surfxml_storage___type_content___type_isset = 0;
8755   AX_surfxml_storage___type_id = 0;
8756   surfxml_storage___type_id_isset = 0;
8757   AX_surfxml_storage___type_model = 0;
8758   surfxml_storage___type_model_isset = 0;
8759   AX_surfxml_storage___type_size = 0;
8760   surfxml_storage___type_size_isset = 0;
8761   ENTER(AL_surfxml_storage___type); pushbuffer(0);
8762   }
8763         YY_BREAK
8764
8765 case 486:
8766 /* rule 486 can match eol */
8767 YY_RULE_SETUP
8768 if (surfxml_storage___type_content_isset != 0) {FAIL("Multiple definition of attribute content in <surfxml_storage___type>");} surfxml_storage___type_content_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_storage___type_content);
8769         YY_BREAK
8770 case 487:
8771 /* rule 487 can match eol */
8772 YY_RULE_SETUP
8773 if (surfxml_storage___type_content_isset != 0) {FAIL("Multiple definition of attribute content in <surfxml_storage___type>");}  surfxml_storage___type_content_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_storage___type_content);
8774         YY_BREAK
8775 case 488:
8776 /* rule 488 can match eol */
8777 YY_RULE_SETUP
8778 if (surfxml_storage___type_content___type_isset != 0) {FAIL("Multiple definition of attribute content_type in <surfxml_storage___type>");} surfxml_storage___type_content___type_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_storage___type_content___type);
8779         YY_BREAK
8780 case 489:
8781 /* rule 489 can match eol */
8782 YY_RULE_SETUP
8783 if (surfxml_storage___type_content___type_isset != 0) {FAIL("Multiple definition of attribute content_type in <surfxml_storage___type>");}  surfxml_storage___type_content___type_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_storage___type_content___type);
8784         YY_BREAK
8785 case 490:
8786 /* rule 490 can match eol */
8787 YY_RULE_SETUP
8788 if (surfxml_storage___type_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_storage___type>");} surfxml_storage___type_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_storage___type_id);
8789         YY_BREAK
8790 case 491:
8791 /* rule 491 can match eol */
8792 YY_RULE_SETUP
8793 if (surfxml_storage___type_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_storage___type>");}  surfxml_storage___type_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_storage___type_id);
8794         YY_BREAK
8795 case 492:
8796 /* rule 492 can match eol */
8797 YY_RULE_SETUP
8798 if (surfxml_storage___type_model_isset != 0) {FAIL("Multiple definition of attribute model in <surfxml_storage___type>");} surfxml_storage___type_model_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_storage___type_model);
8799         YY_BREAK
8800 case 493:
8801 /* rule 493 can match eol */
8802 YY_RULE_SETUP
8803 if (surfxml_storage___type_model_isset != 0) {FAIL("Multiple definition of attribute model in <surfxml_storage___type>");}  surfxml_storage___type_model_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_storage___type_model);
8804         YY_BREAK
8805 case 494:
8806 /* rule 494 can match eol */
8807 YY_RULE_SETUP
8808 if (surfxml_storage___type_size_isset != 0) {FAIL("Multiple definition of attribute size in <surfxml_storage___type>");} surfxml_storage___type_size_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_storage___type_size);
8809         YY_BREAK
8810 case 495:
8811 /* rule 495 can match eol */
8812 YY_RULE_SETUP
8813 if (surfxml_storage___type_size_isset != 0) {FAIL("Multiple definition of attribute size in <surfxml_storage___type>");}  surfxml_storage___type_size_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_storage___type_size);
8814         YY_BREAK
8815 case 496:
8816 YY_RULE_SETUP
8817 {
8818   if (!AX_surfxml_storage___type_id) FAIL("Required attribute `id' not set for `storage_type' element.");
8819   if (!AX_surfxml_storage___type_model) FAIL("Required attribute `model' not set for `storage_type' element.");
8820   if (!AX_surfxml_storage___type_size) FAIL("Required attribute `size' not set for `storage_type' element.");
8821   LEAVE; STag_surfxml_storage___type();surfxml_pcdata_ix = 0; ENTER(S_surfxml_storage___type);
8822  }
8823         YY_BREAK
8824 case 497:
8825 YY_RULE_SETUP
8826 {
8827   if (!AX_surfxml_storage___type_id) FAIL("Required attribute `id' not set for `storage_type' element.");
8828   if (!AX_surfxml_storage___type_model) FAIL("Required attribute `model' not set for `storage_type' element.");
8829   if (!AX_surfxml_storage___type_size) FAIL("Required attribute `size' not set for `storage_type' element.");
8830   LEAVE; STag_surfxml_storage___type(); surfxml_pcdata_ix = 0; ETag_surfxml_storage___type(); popbuffer(); /* attribute */
8831   switch (YY_START) {
8832    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
8833   }
8834  }
8835         YY_BREAK
8836 case 498:
8837 YY_RULE_SETUP
8838 FAIL("Unexpected character `%c' in attribute list of storage_type element.", surf_parse_text[0]);
8839         YY_BREAK
8840 case 499:
8841 YY_RULE_SETUP
8842 FAIL("Bad attribute `%s' in `storage_type' element start tag.",surf_parse_text);
8843         YY_BREAK
8844 case YY_STATE_EOF(AL_surfxml_storage___type):
8845 FAIL("EOF in attribute list of `storage_type' element.");
8846         YY_BREAK
8847
8848 case 500:
8849 /* rule 500 can match eol */
8850 YY_RULE_SETUP
8851 {
8852   LEAVE;
8853   ETag_surfxml_storage___type();
8854   popbuffer(); /* attribute */
8855   switch (YY_START) {
8856    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_5: case S_surfxml_AS_6: SET(S_surfxml_AS_6); break;
8857   }
8858  }
8859         YY_BREAK
8860 case 501:
8861 /* rule 501 can match eol */
8862 YY_RULE_SETUP
8863 FAIL("Unexpected end-tag `%s': `</storage_type>' expected.",surf_parse_text);
8864         YY_BREAK
8865 case 502:
8866 YY_RULE_SETUP
8867 FAIL("Unexpected character `%c': `</storage_type>' expected.",surf_parse_text[0]);
8868         YY_BREAK
8869 case YY_STATE_EOF(E_surfxml_storage___type):
8870 case YY_STATE_EOF(S_surfxml_storage___type):
8871 case YY_STATE_EOF(S_surfxml_storage___type_2):
8872 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</storage_type>' expected.");
8873         YY_BREAK
8874
8875 case 503:
8876 /* rule 503 can match eol */
8877 YY_RULE_SETUP
8878 FAIL("Starting tag <trace> is not allowed here.");
8879         YY_BREAK
8880 case 504:
8881 /* rule 504 can match eol */
8882 YY_RULE_SETUP
8883 {
8884   AX_surfxml_trace_file = 0;
8885   surfxml_trace_file_isset = 0;
8886   AX_surfxml_trace_id = 0;
8887   surfxml_trace_id_isset = 0;
8888   AX_surfxml_trace_periodicity = 0;
8889   surfxml_trace_periodicity_isset = 0;
8890   ENTER(AL_surfxml_trace); pushbuffer(0);
8891   }
8892         YY_BREAK
8893
8894 case 505:
8895 /* rule 505 can match eol */
8896 YY_RULE_SETUP
8897 if (surfxml_trace_file_isset != 0) {FAIL("Multiple definition of attribute file in <surfxml_trace>");} surfxml_trace_file_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_trace_file);
8898         YY_BREAK
8899 case 506:
8900 /* rule 506 can match eol */
8901 YY_RULE_SETUP
8902 if (surfxml_trace_file_isset != 0) {FAIL("Multiple definition of attribute file in <surfxml_trace>");}  surfxml_trace_file_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_trace_file);
8903         YY_BREAK
8904 case 507:
8905 /* rule 507 can match eol */
8906 YY_RULE_SETUP
8907 if (surfxml_trace_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_trace>");} surfxml_trace_id_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_trace_id);
8908         YY_BREAK
8909 case 508:
8910 /* rule 508 can match eol */
8911 YY_RULE_SETUP
8912 if (surfxml_trace_id_isset != 0) {FAIL("Multiple definition of attribute id in <surfxml_trace>");}  surfxml_trace_id_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_trace_id);
8913         YY_BREAK
8914 case 509:
8915 /* rule 509 can match eol */
8916 YY_RULE_SETUP
8917 if (surfxml_trace_periodicity_isset != 0) {FAIL("Multiple definition of attribute periodicity in <surfxml_trace>");} surfxml_trace_periodicity_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_trace_periodicity);
8918         YY_BREAK
8919 case 510:
8920 /* rule 510 can match eol */
8921 YY_RULE_SETUP
8922 if (surfxml_trace_periodicity_isset != 0) {FAIL("Multiple definition of attribute periodicity in <surfxml_trace>");}  surfxml_trace_periodicity_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_trace_periodicity);
8923         YY_BREAK
8924 case 511:
8925 YY_RULE_SETUP
8926 {
8927   if (!AX_surfxml_trace_id) FAIL("Required attribute `id' not set for `trace' element.");
8928   if (!AX_surfxml_trace_periodicity) FAIL("Required attribute `periodicity' not set for `trace' element.");
8929   LEAVE; STag_surfxml_trace();pushbuffer(surfxml_pcdata_ix); BUFFERSET(surfxml_pcdata_ix);; ENTER(IN_trace);
8930  }
8931         YY_BREAK
8932 case 512:
8933 YY_RULE_SETUP
8934 {
8935   if (!AX_surfxml_trace_id) FAIL("Required attribute `id' not set for `trace' element.");
8936   if (!AX_surfxml_trace_periodicity) FAIL("Required attribute `periodicity' not set for `trace' element.");
8937   LEAVE; STag_surfxml_trace(); surfxml_pcdata_ix = 0; ETag_surfxml_trace(); popbuffer(); /* attribute */
8938   switch (YY_START) {
8939    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_4: case S_surfxml_AS_6: case S_surfxml_AS_7: case S_surfxml_AS_8: SET(S_surfxml_AS_8); break;
8940    case S_surfxml_include: case S_surfxml_include_1: case S_surfxml_include_2: SET(S_surfxml_include_2); break;
8941    case S_surfxml_platform: case S_surfxml_platform_1: case S_surfxml_platform_3: case S_surfxml_platform_5: case S_surfxml_platform_6: SET(S_surfxml_platform_6); break;
8942   }
8943  }
8944         YY_BREAK
8945 case 513:
8946 YY_RULE_SETUP
8947 FAIL("Unexpected character `%c' in attribute list of trace element.", surf_parse_text[0]);
8948         YY_BREAK
8949 case 514:
8950 YY_RULE_SETUP
8951 FAIL("Bad attribute `%s' in `trace' element start tag.",surf_parse_text);
8952         YY_BREAK
8953 case YY_STATE_EOF(AL_surfxml_trace):
8954 FAIL("EOF in attribute list of `trace' element.");
8955         YY_BREAK
8956
8957 case 515:
8958 /* rule 515 can match eol */
8959 YY_RULE_SETUP
8960 {
8961   LEAVE;
8962   BUFFERDONE;
8963   ETag_surfxml_trace();
8964   surfxml_pcdata_ix = popbuffer();
8965   popbuffer(); /* attribute */
8966   switch (YY_START) {
8967    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_4: case S_surfxml_AS_6: case S_surfxml_AS_7: case S_surfxml_AS_8: SET(S_surfxml_AS_8); break;
8968    case S_surfxml_include: case S_surfxml_include_1: case S_surfxml_include_2: SET(S_surfxml_include_2); break;
8969    case S_surfxml_platform: case S_surfxml_platform_1: case S_surfxml_platform_3: case S_surfxml_platform_5: case S_surfxml_platform_6: SET(S_surfxml_platform_6); break;
8970   }
8971  }
8972         YY_BREAK
8973 case 516:
8974 /* rule 516 can match eol */
8975 YY_RULE_SETUP
8976 FAIL("Unexpected end-tag `%s': `</trace>' expected.",surf_parse_text);
8977         YY_BREAK
8978 case YY_STATE_EOF(IN_trace):
8979 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</trace>' expected.");
8980         YY_BREAK
8981
8982 case 517:
8983 /* rule 517 can match eol */
8984 YY_RULE_SETUP
8985 FAIL("Starting tag <trace_connect> is not allowed here.");
8986         YY_BREAK
8987 case 518:
8988 /* rule 518 can match eol */
8989 YY_RULE_SETUP
8990 {
8991   AX_surfxml_trace___connect_element = 0;
8992   surfxml_trace___connect_element_isset = 0;
8993   AX_surfxml_trace___connect_kind = A_surfxml_trace___connect_kind_HOST___AVAIL;
8994   surfxml_trace___connect_kind_isset = 0;
8995   AX_surfxml_trace___connect_trace = 0;
8996   surfxml_trace___connect_trace_isset = 0;
8997   ENTER(AL_surfxml_trace___connect); pushbuffer(0);
8998   }
8999         YY_BREAK
9000
9001 case 519:
9002 /* rule 519 can match eol */
9003 YY_RULE_SETUP
9004 if (surfxml_trace___connect_element_isset != 0) {FAIL("Multiple definition of attribute element in <surfxml_trace___connect>");} surfxml_trace___connect_element_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_trace___connect_element);
9005         YY_BREAK
9006 case 520:
9007 /* rule 520 can match eol */
9008 YY_RULE_SETUP
9009 if (surfxml_trace___connect_element_isset != 0) {FAIL("Multiple definition of attribute element in <surfxml_trace___connect>");}  surfxml_trace___connect_element_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_trace___connect_element);
9010         YY_BREAK
9011 case 521:
9012 /* rule 521 can match eol */
9013 case 522:
9014 /* rule 522 can match eol */
9015 YY_RULE_SETUP
9016 A_surfxml_trace___connect_kind = A_surfxml_trace___connect_kind_HOST___AVAIL;
9017         YY_BREAK
9018 case 523:
9019 /* rule 523 can match eol */
9020 case 524:
9021 /* rule 524 can match eol */
9022 YY_RULE_SETUP
9023 A_surfxml_trace___connect_kind = A_surfxml_trace___connect_kind_SPEED;
9024         YY_BREAK
9025 case 525:
9026 /* rule 525 can match eol */
9027 case 526:
9028 /* rule 526 can match eol */
9029 YY_RULE_SETUP
9030 A_surfxml_trace___connect_kind = A_surfxml_trace___connect_kind_LINK___AVAIL;
9031         YY_BREAK
9032 case 527:
9033 /* rule 527 can match eol */
9034 case 528:
9035 /* rule 528 can match eol */
9036 YY_RULE_SETUP
9037 A_surfxml_trace___connect_kind = A_surfxml_trace___connect_kind_BANDWIDTH;
9038         YY_BREAK
9039 case 529:
9040 /* rule 529 can match eol */
9041 case 530:
9042 /* rule 530 can match eol */
9043 YY_RULE_SETUP
9044 A_surfxml_trace___connect_kind = A_surfxml_trace___connect_kind_LATENCY;
9045         YY_BREAK
9046 case 531:
9047 /* rule 531 can match eol */
9048 YY_RULE_SETUP
9049 if (surfxml_trace___connect_trace_isset != 0) {FAIL("Multiple definition of attribute trace in <surfxml_trace___connect>");} surfxml_trace___connect_trace_isset = 1; ENTER(VALUE1); BUFFERSET(AX_surfxml_trace___connect_trace);
9050         YY_BREAK
9051 case 532:
9052 /* rule 532 can match eol */
9053 YY_RULE_SETUP
9054 if (surfxml_trace___connect_trace_isset != 0) {FAIL("Multiple definition of attribute trace in <surfxml_trace___connect>");}  surfxml_trace___connect_trace_isset = 1; ENTER(VALUE2); BUFFERSET(AX_surfxml_trace___connect_trace);
9055         YY_BREAK
9056 case 533:
9057 YY_RULE_SETUP
9058 {
9059   if (!AX_surfxml_trace___connect_element) FAIL("Required attribute `element' not set for `trace_connect' element.");
9060   if (!AX_surfxml_trace___connect_trace) FAIL("Required attribute `trace' not set for `trace_connect' element.");
9061   LEAVE; STag_surfxml_trace___connect();surfxml_pcdata_ix = 0; ENTER(E_surfxml_trace___connect);
9062  }
9063         YY_BREAK
9064 case 534:
9065 YY_RULE_SETUP
9066 {
9067   if (!AX_surfxml_trace___connect_element) FAIL("Required attribute `element' not set for `trace_connect' element.");
9068   if (!AX_surfxml_trace___connect_trace) FAIL("Required attribute `trace' not set for `trace_connect' element.");
9069   LEAVE; STag_surfxml_trace___connect(); surfxml_pcdata_ix = 0; ETag_surfxml_trace___connect(); popbuffer(); /* attribute */
9070   switch (YY_START) {
9071    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_4: case S_surfxml_AS_6: case S_surfxml_AS_7: case S_surfxml_AS_8: SET(S_surfxml_AS_8); break;
9072    case S_surfxml_include: case S_surfxml_include_1: case S_surfxml_include_2: SET(S_surfxml_include_2); break;
9073    case S_surfxml_platform: case S_surfxml_platform_1: case S_surfxml_platform_3: case S_surfxml_platform_5: case S_surfxml_platform_6: SET(S_surfxml_platform_6); break;
9074   }
9075  }
9076         YY_BREAK
9077 case 535:
9078 YY_RULE_SETUP
9079 FAIL("Unexpected character `%c' in attribute list of trace_connect element.", surf_parse_text[0]);
9080         YY_BREAK
9081 case 536:
9082 YY_RULE_SETUP
9083 FAIL("Bad attribute `%s' in `trace_connect' element start tag.",surf_parse_text);
9084         YY_BREAK
9085 case YY_STATE_EOF(AL_surfxml_trace___connect):
9086 FAIL("EOF in attribute list of `trace_connect' element.");
9087         YY_BREAK
9088
9089 case 537:
9090 /* rule 537 can match eol */
9091 YY_RULE_SETUP
9092 {
9093   LEAVE;
9094   ETag_surfxml_trace___connect();
9095   popbuffer(); /* attribute */
9096   switch (YY_START) {
9097    case S_surfxml_AS: case S_surfxml_AS_1: case S_surfxml_AS_3: case S_surfxml_AS_4: case S_surfxml_AS_6: case S_surfxml_AS_7: case S_surfxml_AS_8: SET(S_surfxml_AS_8); break;
9098    case S_surfxml_include: case S_surfxml_include_1: case S_surfxml_include_2: SET(S_surfxml_include_2); break;
9099    case S_surfxml_platform: case S_surfxml_platform_1: case S_surfxml_platform_3: case S_surfxml_platform_5: case S_surfxml_platform_6: SET(S_surfxml_platform_6); break;
9100   }
9101  }
9102         YY_BREAK
9103 case 538:
9104 /* rule 538 can match eol */
9105 YY_RULE_SETUP
9106 FAIL("Unexpected end-tag `%s': `</trace_connect>' expected.",surf_parse_text);
9107         YY_BREAK
9108 case 539:
9109 YY_RULE_SETUP
9110 FAIL("Unexpected character `%c': `</trace_connect>' expected.",surf_parse_text[0]);
9111         YY_BREAK
9112 case YY_STATE_EOF(E_surfxml_trace___connect):
9113 if(!ETag_surfxml_include_state()) FAIL("Premature EOF: `</trace_connect>' expected.");
9114         YY_BREAK
9115
9116 /* EPILOG: after the root element. */
9117
9118 case 540:
9119 YY_RULE_SETUP
9120 {SET(PROLOG); yyless(0); CLEANUP; return -1;}
9121         YY_BREAK
9122 case YY_STATE_EOF(EPILOG):
9123 SUCCEED;
9124         YY_BREAK
9125
9126 /* CHARACTER DATA. */
9127
9128 /* Non-defined standard entities... */
9129 case 541:
9130 YY_RULE_SETUP
9131 BUFFERPUTC('&');
9132         YY_BREAK
9133 case 542:
9134 YY_RULE_SETUP
9135 BUFFERPUTC('<');
9136         YY_BREAK
9137 case 543:
9138 YY_RULE_SETUP
9139 BUFFERPUTC('>');
9140         YY_BREAK
9141 case 544:
9142 YY_RULE_SETUP
9143 BUFFERPUTC('\'');
9144         YY_BREAK
9145 case 545:
9146 YY_RULE_SETUP
9147 BUFFERPUTC('"');
9148         YY_BREAK
9149 /* Character entities. */
9150 case 546:
9151 YY_RULE_SETUP
9152 BUFFERPUTC((unsigned char)atoi(surf_parse_text+2));
9153         YY_BREAK
9154 case 547:
9155 YY_RULE_SETUP
9156 BUFFERPUTC((unsigned char)strtol(surf_parse_text+3,NULL,16));
9157         YY_BREAK
9158
9159 case 548:
9160 /* rule 548 can match eol */
9161 case 549:
9162 /* rule 549 can match eol */
9163 case 550:
9164 /* rule 550 can match eol */
9165 case 551:
9166 /* rule 551 can match eol */
9167 YY_RULE_SETUP
9168 BUFFERPUTC('\n');
9169         YY_BREAK
9170
9171 case 552:
9172 YY_RULE_SETUP
9173 ENTER(CDATA);
9174         YY_BREAK
9175 case 553:
9176 YY_RULE_SETUP
9177 FAIL("Unexpected `]""]>' in character data.");
9178         YY_BREAK
9179
9180 case 554:
9181 YY_RULE_SETUP
9182 BUFFERDONE; LEAVE;
9183         YY_BREAK
9184 case YY_STATE_EOF(VALUE1):
9185 FAIL("EOF in literal (\"'\" expected).");
9186         YY_BREAK
9187
9188 case 555:
9189 YY_RULE_SETUP
9190 BUFFERDONE; LEAVE;
9191         YY_BREAK
9192 case YY_STATE_EOF(VALUE2):
9193 FAIL("EOF in literal (`\"' expected).");
9194         YY_BREAK
9195
9196 case 556:
9197 /* rule 556 can match eol */
9198 YY_RULE_SETUP
9199 BUFFERPUTC(surf_parse_text[0]);
9200         YY_BREAK
9201 case 557:
9202 YY_RULE_SETUP
9203 FAIL("Spurious `%c' in character data.",surf_parse_text[0]);
9204         YY_BREAK
9205
9206 case 558:
9207 YY_RULE_SETUP
9208 LEAVE;
9209         YY_BREAK
9210 /* "]""]"               BUFFERPUTC(surf_parse_text[0]); BUFFERPUTC(surf_parse_text[1]); */
9211 case 559:
9212 YY_RULE_SETUP
9213 BUFFERPUTC(surf_parse_text[0]);
9214         YY_BREAK
9215 case YY_STATE_EOF(CDATA):
9216 FAIL("EOF in CDATA section.");
9217         YY_BREAK
9218
9219 /* Impossible rules to avoid warnings from flex(1). */
9220 /* Ideally, this should be replaced by code in flexml.pl that
9221     generates just the states not covered by other rules. */
9222
9223 case 560:
9224 /* rule 560 can match eol */
9225 YY_RULE_SETUP
9226 FAIL("Syntax error on character `%c'.", surf_parse_text[0]);
9227         YY_BREAK
9228
9229 case 561:
9230 YY_RULE_SETUP
9231 ECHO;
9232         YY_BREAK
9233 case YY_STATE_EOF(INITIAL):
9234 case YY_STATE_EOF(S_surfxml_AS_2):
9235 case YY_STATE_EOF(S_surfxml_AS_5):
9236 case YY_STATE_EOF(S_surfxml_AS_7):
9237 case YY_STATE_EOF(S_surfxml_ASroute_1):
9238 case YY_STATE_EOF(S_surfxml_bypassASroute_1):
9239 case YY_STATE_EOF(S_surfxml_bypassRoute_1):
9240 case YY_STATE_EOF(S_surfxml_cluster_1):
9241 case YY_STATE_EOF(S_surfxml_config_1):
9242 case YY_STATE_EOF(S_surfxml_host_1):
9243 case YY_STATE_EOF(S_surfxml_include_1):
9244 case YY_STATE_EOF(S_surfxml_link_1):
9245 case YY_STATE_EOF(ROOT_surfxml_platform):
9246 case YY_STATE_EOF(S_surfxml_platform_2):
9247 case YY_STATE_EOF(S_surfxml_platform_5):
9248 case YY_STATE_EOF(S_surfxml_platform_7):
9249 case YY_STATE_EOF(S_surfxml_process_1):
9250 case YY_STATE_EOF(S_surfxml_route_1):
9251 case YY_STATE_EOF(S_surfxml_storage_1):
9252 case YY_STATE_EOF(S_surfxml_storage___type_1):
9253 case YY_STATE_EOF(IMPOSSIBLE):
9254         yyterminate();
9255
9256         case YY_END_OF_BUFFER:
9257                 {
9258                 /* Amount of text matched not including the EOB char. */
9259                 int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
9260
9261                 /* Undo the effects of YY_DO_BEFORE_ACTION. */
9262                 *yy_cp = (yy_hold_char);
9263                 YY_RESTORE_YY_MORE_OFFSET
9264
9265                 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
9266                         {
9267                         /* We're scanning a new file or input source.  It's
9268                          * possible that this happened because the user
9269                          * just pointed surf_parse_in at a new source and called
9270                          * surf_parse_lex().  If so, then we have to assure
9271                          * consistency between YY_CURRENT_BUFFER and our
9272                          * globals.  Here is the right place to do so, because
9273                          * this is the first action (other than possibly a
9274                          * back-up) that will match for the new input source.
9275                          */
9276                         (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
9277                         YY_CURRENT_BUFFER_LVALUE->yy_input_file = surf_parse_in;
9278                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
9279                         }
9280
9281                 /* Note that here we test for yy_c_buf_p "<=" to the position
9282                  * of the first EOB in the buffer, since yy_c_buf_p will
9283                  * already have been incremented past the NUL character
9284                  * (since all states make transitions on EOB to the
9285                  * end-of-buffer state).  Contrast this with the test
9286                  * in input().
9287                  */
9288                 if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
9289                         { /* This was really a NUL. */
9290                         yy_state_type yy_next_state;
9291
9292                         (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
9293
9294                         yy_current_state = yy_get_previous_state(  );
9295
9296                         /* Okay, we're now positioned to make the NUL
9297                          * transition.  We couldn't have
9298                          * yy_get_previous_state() go ahead and do it
9299                          * for us because it doesn't know how to deal
9300                          * with the possibility of jamming (and we don't
9301                          * want to build jamming into it because then it
9302                          * will run more slowly).
9303                          */
9304
9305                         yy_next_state = yy_try_NUL_trans( yy_current_state );
9306
9307                         yy_bp = (yytext_ptr) + YY_MORE_ADJ;
9308
9309                         if ( yy_next_state )
9310                                 {
9311                                 /* Consume the NUL. */
9312                                 yy_cp = ++(yy_c_buf_p);
9313                                 yy_current_state = yy_next_state;
9314                                 goto yy_match;
9315                                 }
9316
9317                         else
9318                                 {
9319                                 yy_cp = (yy_c_buf_p);
9320                                 goto yy_find_action;
9321                                 }
9322                         }
9323
9324                 else switch ( yy_get_next_buffer(  ) )
9325                         {
9326                         case EOB_ACT_END_OF_FILE:
9327                                 {
9328                                 (yy_did_buffer_switch_on_eof) = 0;
9329
9330                                 if ( surf_parse_wrap( ) )
9331                                         {
9332                                         /* Note: because we've taken care in
9333                                          * yy_get_next_buffer() to have set up
9334                                          * surf_parse_text, we can now set up
9335                                          * yy_c_buf_p so that if some total
9336                                          * hoser (like flex itself) wants to
9337                                          * call the scanner after we return the
9338                                          * YY_NULL, it'll still work - another
9339                                          * YY_NULL will get returned.
9340                                          */
9341                                         (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
9342
9343                                         yy_act = YY_STATE_EOF(YY_START);
9344                                         goto do_action;
9345                                         }
9346
9347                                 else
9348                                         {
9349                                         if ( ! (yy_did_buffer_switch_on_eof) )
9350                                                 YY_NEW_FILE;
9351                                         }
9352                                 break;
9353                                 }
9354
9355                         case EOB_ACT_CONTINUE_SCAN:
9356                                 (yy_c_buf_p) =
9357                                         (yytext_ptr) + yy_amount_of_matched_text;
9358
9359                                 yy_current_state = yy_get_previous_state(  );
9360
9361                                 yy_cp = (yy_c_buf_p);
9362                                 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
9363                                 goto yy_match;
9364
9365                         case EOB_ACT_LAST_MATCH:
9366                                 (yy_c_buf_p) =
9367                                 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
9368
9369                                 yy_current_state = yy_get_previous_state(  );
9370
9371                                 yy_cp = (yy_c_buf_p);
9372                                 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
9373                                 goto yy_find_action;
9374                         }
9375                 break;
9376                 }
9377
9378         default:
9379                 YY_FATAL_ERROR(
9380                         "fatal flex scanner internal error--no action found" );
9381         } /* end of action switch */
9382                 } /* end of scanning one token */
9383         } /* end of user's declarations */
9384 } /* end of surf_parse_lex */
9385
9386 /* yy_get_next_buffer - try to read in a new buffer
9387  *
9388  * Returns a code representing an action:
9389  *      EOB_ACT_LAST_MATCH -
9390  *      EOB_ACT_CONTINUE_SCAN - continue scanning from current position
9391  *      EOB_ACT_END_OF_FILE - end of file
9392  */
9393 static int yy_get_next_buffer (void)
9394 {
9395         char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
9396         char *source = (yytext_ptr);
9397         yy_size_t number_to_move, i;
9398         int ret_val;
9399
9400         if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
9401                 YY_FATAL_ERROR(
9402                 "fatal flex scanner internal error--end of buffer missed" );
9403
9404         if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
9405                 { /* Don't try to fill the buffer, so this is an EOF. */
9406                 if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
9407                         {
9408                         /* We matched a single character, the EOB, so
9409                          * treat this as a final EOF.
9410                          */
9411                         return EOB_ACT_END_OF_FILE;
9412                         }
9413
9414                 else
9415                         {
9416                         /* We matched some text prior to the EOB, first
9417                          * process it.
9418                          */
9419                         return EOB_ACT_LAST_MATCH;
9420                         }
9421                 }
9422
9423         /* Try to read more data. */
9424
9425         /* First move last chars to start of buffer. */
9426         number_to_move = (yy_size_t) ((yy_c_buf_p) - (yytext_ptr)) - 1;
9427
9428         for ( i = 0; i < number_to_move; ++i )
9429                 *(dest++) = *(source++);
9430
9431         if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
9432                 /* don't do the read, it's not guaranteed to return an EOF,
9433                  * just force an EOF
9434                  */
9435                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
9436
9437         else
9438                 {
9439                         int num_to_read =
9440                         YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
9441
9442                 while ( num_to_read <= 0 )
9443                         { /* Not enough room in the buffer - grow it. */
9444
9445                         /* just a shorter name for the current buffer */
9446                         YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
9447
9448                         int yy_c_buf_p_offset =
9449                                 (int) ((yy_c_buf_p) - b->yy_ch_buf);
9450
9451                         if ( b->yy_is_our_buffer )
9452                                 {
9453                                 int new_size = b->yy_buf_size * 2;
9454
9455                                 if ( new_size <= 0 )
9456                                         b->yy_buf_size += b->yy_buf_size / 8;
9457                                 else
9458                                         b->yy_buf_size *= 2;
9459
9460                                 b->yy_ch_buf = (char *)
9461                                         /* Include room in for 2 EOB chars. */
9462                                         surf_parse_realloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
9463                                 }
9464                         else
9465                                 /* Can't grow it, we don't own it. */
9466                                 b->yy_ch_buf = NULL;
9467
9468                         if ( ! b->yy_ch_buf )
9469                                 YY_FATAL_ERROR(
9470                                 "fatal error - scanner input buffer overflow" );
9471
9472                         (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
9473
9474                         num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
9475                                                 number_to_move - 1;
9476
9477                         }
9478
9479                 if ( num_to_read > YY_READ_BUF_SIZE )
9480                         num_to_read = YY_READ_BUF_SIZE;
9481
9482                 /* Read in more data. */
9483                 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
9484                         (yy_n_chars), num_to_read );
9485
9486                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
9487                 }
9488
9489         if ( (yy_n_chars) == 0 )
9490                 {
9491                 if ( number_to_move == YY_MORE_ADJ )
9492                         {
9493                         ret_val = EOB_ACT_END_OF_FILE;
9494                         surf_parse_restart(surf_parse_in  );
9495                         }
9496
9497                 else
9498                         {
9499                         ret_val = EOB_ACT_LAST_MATCH;
9500                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
9501                                 YY_BUFFER_EOF_PENDING;
9502                         }
9503                 }
9504
9505         else
9506                 ret_val = EOB_ACT_CONTINUE_SCAN;
9507
9508         if ((int) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
9509                 /* Extend the array by 50%, plus the number we really need. */
9510                 int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
9511                 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) surf_parse_realloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size  );
9512                 if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
9513                         YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
9514         }
9515
9516         (yy_n_chars) += number_to_move;
9517         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
9518         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
9519
9520         (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
9521
9522         return ret_val;
9523 }
9524
9525 /* yy_get_previous_state - get the state just before the EOB char was reached */
9526
9527     static yy_state_type yy_get_previous_state (void)
9528 {
9529         yy_state_type yy_current_state;
9530         char *yy_cp;
9531     
9532         yy_current_state = (yy_start);
9533
9534         for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
9535                 {
9536                 YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
9537                 if ( yy_accept[yy_current_state] )
9538                         {
9539                         (yy_last_accepting_state) = yy_current_state;
9540                         (yy_last_accepting_cpos) = yy_cp;
9541                         }
9542                 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
9543                         {
9544                         yy_current_state = (int) yy_def[yy_current_state];
9545                         if ( yy_current_state >= 3334 )
9546                                 yy_c = yy_meta[(unsigned int) yy_c];
9547                         }
9548                 yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
9549                 }
9550
9551         return yy_current_state;
9552 }
9553
9554 /* yy_try_NUL_trans - try to make a transition on the NUL character
9555  *
9556  * synopsis
9557  *      next_state = yy_try_NUL_trans( current_state );
9558  */
9559     static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
9560 {
9561         int yy_is_jam;
9562         char *yy_cp = (yy_c_buf_p);
9563
9564         YY_CHAR yy_c = 1;
9565         if ( yy_accept[yy_current_state] )
9566                 {
9567                 (yy_last_accepting_state) = yy_current_state;
9568                 (yy_last_accepting_cpos) = yy_cp;
9569                 }
9570         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
9571                 {
9572                 yy_current_state = (int) yy_def[yy_current_state];
9573                 if ( yy_current_state >= 3334 )
9574                         yy_c = yy_meta[(unsigned int) yy_c];
9575                 }
9576         yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
9577         yy_is_jam = (yy_current_state == 3333);
9578
9579                 return yy_is_jam ? 0 : yy_current_state;
9580 }
9581
9582 #ifndef YY_NO_UNPUT
9583
9584 #endif
9585
9586 #ifndef YY_NO_INPUT
9587 #ifdef __cplusplus
9588     static int yyinput (void)
9589 #else
9590     static int input  (void)
9591 #endif
9592
9593 {
9594         int c;
9595     
9596         *(yy_c_buf_p) = (yy_hold_char);
9597
9598         if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
9599                 {
9600                 /* yy_c_buf_p now points to the character we want to return.
9601                  * If this occurs *before* the EOB characters, then it's a
9602                  * valid NUL; if not, then we've hit the end of the buffer.
9603                  */
9604                 if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
9605                         /* This was really a NUL. */
9606                         *(yy_c_buf_p) = '\0';
9607
9608                 else
9609                         { /* need more input */
9610                         int offset = (yy_c_buf_p) - (yytext_ptr);
9611                         ++(yy_c_buf_p);
9612
9613                         switch ( yy_get_next_buffer(  ) )
9614                                 {
9615                                 case EOB_ACT_LAST_MATCH:
9616                                         /* This happens because yy_g_n_b()
9617                                          * sees that we've accumulated a
9618                                          * token and flags that we need to
9619                                          * try matching the token before
9620                                          * proceeding.  But for input(),
9621                                          * there's no matching to consider.
9622                                          * So convert the EOB_ACT_LAST_MATCH
9623                                          * to EOB_ACT_END_OF_FILE.
9624                                          */
9625
9626                                         /* Reset buffer status. */
9627                                         surf_parse_restart(surf_parse_in );
9628
9629                                         /*FALLTHROUGH*/
9630
9631                                 case EOB_ACT_END_OF_FILE:
9632                                         {
9633                                         if ( surf_parse_wrap( ) )
9634                                                 return 0;
9635
9636                                         if ( ! (yy_did_buffer_switch_on_eof) )
9637                                                 YY_NEW_FILE;
9638 #ifdef __cplusplus
9639                                         return yyinput();
9640 #else
9641                                         return input();
9642 #endif
9643                                         }
9644
9645                                 case EOB_ACT_CONTINUE_SCAN:
9646                                         (yy_c_buf_p) = (yytext_ptr) + offset;
9647                                         break;
9648                                 }
9649                         }
9650                 }
9651
9652         c = *(unsigned char *) (yy_c_buf_p);    /* cast for 8-bit char's */
9653         *(yy_c_buf_p) = '\0';   /* preserve surf_parse_text */
9654         (yy_hold_char) = *++(yy_c_buf_p);
9655
9656         if ( c == '\n' )
9657                 
9658     surf_parse_lineno++;
9659 ;
9660
9661         return c;
9662 }
9663 #endif  /* ifndef YY_NO_INPUT */
9664
9665 /** Immediately switch to a different input stream.
9666  * @param input_file A readable stream.
9667  * 
9668  * @note This function does not reset the start condition to @c INITIAL .
9669  */
9670     void surf_parse_restart  (FILE * input_file )
9671 {
9672     
9673         if ( ! YY_CURRENT_BUFFER ){
9674         surf_parse_ensure_buffer_stack ();
9675                 YY_CURRENT_BUFFER_LVALUE =
9676             surf_parse__create_buffer(surf_parse_in,YY_BUF_SIZE );
9677         }
9678
9679         surf_parse__init_buffer(YY_CURRENT_BUFFER,input_file );
9680         surf_parse__load_buffer_state( );
9681 }
9682
9683 /** Switch to a different input buffer.
9684  * @param new_buffer The new input buffer.
9685  * 
9686  */
9687     void surf_parse__switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
9688 {
9689     
9690         /* TODO. We should be able to replace this entire function body
9691          * with
9692          *              surf_parse_pop_buffer_state();
9693          *              surf_parse_push_buffer_state(new_buffer);
9694      */
9695         surf_parse_ensure_buffer_stack ();
9696         if ( YY_CURRENT_BUFFER == new_buffer )
9697                 return;
9698
9699         if ( YY_CURRENT_BUFFER )
9700                 {
9701                 /* Flush out information for old buffer. */
9702                 *(yy_c_buf_p) = (yy_hold_char);
9703                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
9704                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
9705                 }
9706
9707         YY_CURRENT_BUFFER_LVALUE = new_buffer;
9708         surf_parse__load_buffer_state( );
9709
9710         /* We don't actually know whether we did this switch during
9711          * EOF (surf_parse_wrap()) processing, but the only time this flag
9712          * is looked at is after surf_parse_wrap() is called, so it's safe
9713          * to go ahead and always set it.
9714          */
9715         (yy_did_buffer_switch_on_eof) = 1;
9716 }
9717
9718 static void surf_parse__load_buffer_state  (void)
9719 {
9720         (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
9721         (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
9722         surf_parse_in = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
9723         (yy_hold_char) = *(yy_c_buf_p);
9724 }
9725
9726 /** Allocate and initialize an input buffer state.
9727  * @param file A readable stream.
9728  * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
9729  * 
9730  * @return the allocated buffer state.
9731  */
9732     YY_BUFFER_STATE surf_parse__create_buffer  (FILE * file, int  size )
9733 {
9734         YY_BUFFER_STATE b;
9735     
9736         b = (YY_BUFFER_STATE) surf_parse_alloc(sizeof( struct yy_buffer_state )  );
9737         if ( ! b )
9738                 YY_FATAL_ERROR( "out of dynamic memory in surf_parse__create_buffer()" );
9739
9740         b->yy_buf_size = (yy_size_t)size;
9741
9742         /* yy_ch_buf has to be 2 characters longer than the size given because
9743          * we need to put in 2 end-of-buffer characters.
9744          */
9745         b->yy_ch_buf = (char *) surf_parse_alloc(b->yy_buf_size + 2  );
9746         if ( ! b->yy_ch_buf )
9747                 YY_FATAL_ERROR( "out of dynamic memory in surf_parse__create_buffer()" );
9748
9749         b->yy_is_our_buffer = 1;
9750
9751         surf_parse__init_buffer(b,file );
9752
9753         return b;
9754 }
9755
9756 /** Destroy the buffer.
9757  * @param b a buffer created with surf_parse__create_buffer()
9758  * 
9759  */
9760     void surf_parse__delete_buffer (YY_BUFFER_STATE  b )
9761 {
9762     
9763         if ( ! b )
9764                 return;
9765
9766         if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
9767                 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
9768
9769         if ( b->yy_is_our_buffer )
9770                 surf_parse_free((void *) b->yy_ch_buf  );
9771
9772         surf_parse_free((void *) b  );
9773 }
9774
9775 /* Initializes or reinitializes a buffer.
9776  * This function is sometimes called more than once on the same buffer,
9777  * such as during a surf_parse_restart() or at EOF.
9778  */
9779     static void surf_parse__init_buffer  (YY_BUFFER_STATE  b, FILE * file )
9780
9781 {
9782         int oerrno = errno;
9783     
9784         surf_parse__flush_buffer(b );
9785
9786         b->yy_input_file = file;
9787         b->yy_fill_buffer = 1;
9788
9789     /* If b is the current buffer, then surf_parse__init_buffer was _probably_
9790      * called from surf_parse_restart() or through yy_get_next_buffer.
9791      * In that case, we don't want to reset the lineno or column.
9792      */
9793     if (b != YY_CURRENT_BUFFER){
9794         b->yy_bs_lineno = 1;
9795         b->yy_bs_column = 0;
9796     }
9797
9798         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
9799     
9800         errno = oerrno;
9801 }
9802
9803 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
9804  * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
9805  * 
9806  */
9807     void surf_parse__flush_buffer (YY_BUFFER_STATE  b )
9808 {
9809         if ( ! b )
9810                 return;
9811
9812         b->yy_n_chars = 0;
9813
9814         /* We always need two end-of-buffer characters.  The first causes
9815          * a transition to the end-of-buffer state.  The second causes
9816          * a jam in that state.
9817          */
9818         b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
9819         b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
9820
9821         b->yy_buf_pos = &b->yy_ch_buf[0];
9822
9823         b->yy_at_bol = 1;
9824         b->yy_buffer_status = YY_BUFFER_NEW;
9825
9826         if ( b == YY_CURRENT_BUFFER )
9827                 surf_parse__load_buffer_state( );
9828 }
9829
9830 /** Pushes the new state onto the stack. The new state becomes
9831  *  the current state. This function will allocate the stack
9832  *  if necessary.
9833  *  @param new_buffer The new state.
9834  *  
9835  */
9836 void surf_parse_push_buffer_state (YY_BUFFER_STATE new_buffer )
9837 {
9838         if (new_buffer == NULL)
9839                 return;
9840
9841         surf_parse_ensure_buffer_stack();
9842
9843         /* This block is copied from surf_parse__switch_to_buffer. */
9844         if ( YY_CURRENT_BUFFER )
9845                 {
9846                 /* Flush out information for old buffer. */
9847                 *(yy_c_buf_p) = (yy_hold_char);
9848                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
9849                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
9850                 }
9851
9852         /* Only push if top exists. Otherwise, replace top. */
9853         if (YY_CURRENT_BUFFER)
9854                 (yy_buffer_stack_top)++;
9855         YY_CURRENT_BUFFER_LVALUE = new_buffer;
9856
9857         /* copied from surf_parse__switch_to_buffer. */
9858         surf_parse__load_buffer_state( );
9859         (yy_did_buffer_switch_on_eof) = 1;
9860 }
9861
9862 /** Removes and deletes the top of the stack, if present.
9863  *  The next element becomes the new top.
9864  *  
9865  */
9866 void surf_parse_pop_buffer_state (void)
9867 {
9868         if (!YY_CURRENT_BUFFER)
9869                 return;
9870
9871         surf_parse__delete_buffer(YY_CURRENT_BUFFER );
9872         YY_CURRENT_BUFFER_LVALUE = NULL;
9873         if ((yy_buffer_stack_top) > 0)
9874                 --(yy_buffer_stack_top);
9875
9876         if (YY_CURRENT_BUFFER) {
9877                 surf_parse__load_buffer_state( );
9878                 (yy_did_buffer_switch_on_eof) = 1;
9879         }
9880 }
9881
9882 /* Allocates the stack if it does not exist.
9883  *  Guarantees space for at least one push.
9884  */
9885 static void surf_parse_ensure_buffer_stack (void)
9886 {
9887         int num_to_alloc;
9888     
9889         if (!(yy_buffer_stack)) {
9890
9891                 /* First allocation is just for 2 elements, since we don't know if this
9892                  * scanner will even need a stack. We use 2 instead of 1 to avoid an
9893                  * immediate realloc on the next call.
9894          */
9895       num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */
9896                 (yy_buffer_stack) = (struct yy_buffer_state**)surf_parse_alloc
9897                                                                 (num_to_alloc * sizeof(struct yy_buffer_state*)
9898                                                                 );
9899                 if ( ! (yy_buffer_stack) )
9900                         YY_FATAL_ERROR( "out of dynamic memory in surf_parse_ensure_buffer_stack()" );
9901
9902                 memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
9903
9904                 (yy_buffer_stack_max) = num_to_alloc;
9905                 (yy_buffer_stack_top) = 0;
9906                 return;
9907         }
9908
9909         if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
9910
9911                 /* Increase the buffer to prepare for a possible push. */
9912                 yy_size_t grow_size = 8 /* arbitrary grow size */;
9913
9914                 num_to_alloc = (yy_buffer_stack_max) + grow_size;
9915                 (yy_buffer_stack) = (struct yy_buffer_state**)surf_parse_realloc
9916                                                                 ((yy_buffer_stack),
9917                                                                 num_to_alloc * sizeof(struct yy_buffer_state*)
9918                                                                 );
9919                 if ( ! (yy_buffer_stack) )
9920                         YY_FATAL_ERROR( "out of dynamic memory in surf_parse_ensure_buffer_stack()" );
9921
9922                 /* zero only the new slots.*/
9923                 memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
9924                 (yy_buffer_stack_max) = num_to_alloc;
9925         }
9926 }
9927
9928 /** Setup the input buffer state to scan directly from a user-specified character buffer.
9929  * @param base the character buffer
9930  * @param size the size in bytes of the character buffer
9931  * 
9932  * @return the newly allocated buffer state object.
9933  */
9934 YY_BUFFER_STATE surf_parse__scan_buffer  (char * base, yy_size_t  size )
9935 {
9936         YY_BUFFER_STATE b;
9937     
9938         if ( size < 2 ||
9939              base[size-2] != YY_END_OF_BUFFER_CHAR ||
9940              base[size-1] != YY_END_OF_BUFFER_CHAR )
9941                 /* They forgot to leave room for the EOB's. */
9942                 return NULL;
9943
9944         b = (YY_BUFFER_STATE) surf_parse_alloc(sizeof( struct yy_buffer_state )  );
9945         if ( ! b )
9946                 YY_FATAL_ERROR( "out of dynamic memory in surf_parse__scan_buffer()" );
9947
9948         b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
9949         b->yy_buf_pos = b->yy_ch_buf = base;
9950         b->yy_is_our_buffer = 0;
9951         b->yy_input_file = NULL;
9952         b->yy_n_chars = b->yy_buf_size;
9953         b->yy_is_interactive = 0;
9954         b->yy_at_bol = 1;
9955         b->yy_fill_buffer = 0;
9956         b->yy_buffer_status = YY_BUFFER_NEW;
9957
9958         surf_parse__switch_to_buffer(b  );
9959
9960         return b;
9961 }
9962
9963 /** Setup the input buffer state to scan a string. The next call to surf_parse_lex() will
9964  * scan from a @e copy of @a str.
9965  * @param yystr a NUL-terminated string to scan
9966  * 
9967  * @return the newly allocated buffer state object.
9968  * @note If you want to scan bytes that may contain NUL values, then use
9969  *       surf_parse__scan_bytes() instead.
9970  */
9971 YY_BUFFER_STATE surf_parse__scan_string (yyconst char * yystr )
9972 {
9973     
9974         return surf_parse__scan_bytes(yystr,(int) strlen(yystr) );
9975 }
9976
9977 /** Setup the input buffer state to scan the given bytes. The next call to surf_parse_lex() will
9978  * scan from a @e copy of @a bytes.
9979  * @param yybytes the byte buffer to scan
9980  * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
9981  * 
9982  * @return the newly allocated buffer state object.
9983  */
9984 YY_BUFFER_STATE surf_parse__scan_bytes  (yyconst char * yybytes, int  _yybytes_len )
9985 {
9986         YY_BUFFER_STATE b;
9987         char *buf;
9988         yy_size_t n;
9989         yy_size_t i;
9990     
9991         /* Get memory for full buffer, including space for trailing EOB's. */
9992         n = (yy_size_t) _yybytes_len + 2;
9993         buf = (char *) surf_parse_alloc(n  );
9994         if ( ! buf )
9995                 YY_FATAL_ERROR( "out of dynamic memory in surf_parse__scan_bytes()" );
9996
9997         for ( i = 0; i < (yy_size_t) _yybytes_len; ++i )
9998                 buf[i] = yybytes[i];
9999
10000         buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
10001
10002         b = surf_parse__scan_buffer(buf,n );
10003         if ( ! b )
10004                 YY_FATAL_ERROR( "bad buffer in surf_parse__scan_bytes()" );
10005
10006         /* It's okay to grow etc. this buffer, and we should throw it
10007          * away when we're done.
10008          */
10009         b->yy_is_our_buffer = 1;
10010
10011         return b;
10012 }
10013
10014     static void yy_push_state (int  _new_state )
10015 {
10016         if ( (yy_start_stack_ptr) >= (yy_start_stack_depth) )
10017                 {
10018                 yy_size_t new_size;
10019
10020                 (yy_start_stack_depth) += YY_START_STACK_INCR;
10021                 new_size = (yy_size_t) (yy_start_stack_depth) * sizeof( int );
10022
10023                 if ( ! (yy_start_stack) )
10024                         (yy_start_stack) = (int *) surf_parse_alloc(new_size  );
10025
10026                 else
10027                         (yy_start_stack) = (int *) surf_parse_realloc((void *) (yy_start_stack),new_size  );
10028
10029                 if ( ! (yy_start_stack) )
10030                         YY_FATAL_ERROR( "out of memory expanding start-condition stack" );
10031                 }
10032
10033         (yy_start_stack)[(yy_start_stack_ptr)++] = YY_START;
10034
10035         BEGIN(_new_state);
10036 }
10037
10038     static void yy_pop_state  (void)
10039 {
10040         if ( --(yy_start_stack_ptr) < 0 )
10041                 YY_FATAL_ERROR( "start-condition stack underflow" );
10042
10043         BEGIN((yy_start_stack)[(yy_start_stack_ptr)]);
10044 }
10045
10046 #ifndef YY_EXIT_FAILURE
10047 #define YY_EXIT_FAILURE 2
10048 #endif
10049
10050 static void yynoreturn yy_fatal_error (yyconst char* msg )
10051 {
10052                         (void) fprintf( stderr, "%s\n", msg );
10053         exit( YY_EXIT_FAILURE );
10054 }
10055
10056 /* Redefine yyless() so it works in section 3 code. */
10057
10058 #undef yyless
10059 #define yyless(n) \
10060         do \
10061                 { \
10062                 /* Undo effects of setting up surf_parse_text. */ \
10063         int yyless_macro_arg = (n); \
10064         YY_LESS_LINENO(yyless_macro_arg);\
10065                 surf_parse_text[surf_parse_leng] = (yy_hold_char); \
10066                 (yy_c_buf_p) = surf_parse_text + yyless_macro_arg; \
10067                 (yy_hold_char) = *(yy_c_buf_p); \
10068                 *(yy_c_buf_p) = '\0'; \
10069                 surf_parse_leng = yyless_macro_arg; \
10070                 } \
10071         while ( 0 )
10072
10073 /* Accessor  methods (get/set functions) to struct members. */
10074
10075 /** Get the current line number.
10076  * 
10077  */
10078 int surf_parse_get_lineno  (void)
10079 {
10080     
10081     return surf_parse_lineno;
10082 }
10083
10084 /** Get the input stream.
10085  * 
10086  */
10087 FILE *surf_parse_get_in  (void)
10088 {
10089         return surf_parse_in;
10090 }
10091
10092 /** Get the output stream.
10093  * 
10094  */
10095 FILE *surf_parse_get_out  (void)
10096 {
10097         return surf_parse_out;
10098 }
10099
10100 /** Get the length of the current token.
10101  * 
10102  */
10103 int surf_parse_get_leng  (void)
10104 {
10105         return surf_parse_leng;
10106 }
10107
10108 /** Get the current token.
10109  * 
10110  */
10111
10112 char *surf_parse_get_text  (void)
10113 {
10114         return surf_parse_text;
10115 }
10116
10117 /** Set the current line number.
10118  * @param _line_number line number
10119  * 
10120  */
10121 void surf_parse_set_lineno (int  _line_number )
10122 {
10123     
10124     surf_parse_lineno = _line_number;
10125 }
10126
10127 /** Set the input stream. This does not discard the current
10128  * input buffer.
10129  * @param _in_str A readable stream.
10130  * 
10131  * @see surf_parse__switch_to_buffer
10132  */
10133 void surf_parse_set_in (FILE *  _in_str )
10134 {
10135         surf_parse_in = _in_str ;
10136 }
10137
10138 void surf_parse_set_out (FILE *  _out_str )
10139 {
10140         surf_parse_out = _out_str ;
10141 }
10142
10143 int surf_parse_get_debug  (void)
10144 {
10145         return surf_parse__flex_debug;
10146 }
10147
10148 void surf_parse_set_debug (int  _bdebug )
10149 {
10150         surf_parse__flex_debug = _bdebug ;
10151 }
10152
10153 static int yy_init_globals (void)
10154 {
10155         /* Initialization is the same as for the non-reentrant scanner.
10156      * This function is called from surf_parse_lex_destroy(), so don't allocate here.
10157      */
10158
10159     /* We do not touch surf_parse_lineno unless the option is enabled. */
10160     surf_parse_lineno =  1;
10161     
10162     (yy_buffer_stack) = NULL;
10163     (yy_buffer_stack_top) = 0;
10164     (yy_buffer_stack_max) = 0;
10165     (yy_c_buf_p) = NULL;
10166     (yy_init) = 0;
10167     (yy_start) = 0;
10168
10169     (yy_start_stack_ptr) = 0;
10170     (yy_start_stack_depth) = 0;
10171     (yy_start_stack) =  NULL;
10172
10173 /* Defined in main.c */
10174 #ifdef YY_STDINIT
10175     surf_parse_in = stdin;
10176     surf_parse_out = stdout;
10177 #else
10178     surf_parse_in = NULL;
10179     surf_parse_out = NULL;
10180 #endif
10181
10182     /* For future reference: Set errno on error, since we are called by
10183      * surf_parse_lex_init()
10184      */
10185     return 0;
10186 }
10187
10188 /* surf_parse_lex_destroy is for both reentrant and non-reentrant scanners. */
10189 int surf_parse_lex_destroy  (void)
10190 {
10191     
10192     /* Pop the buffer stack, destroying each element. */
10193         while(YY_CURRENT_BUFFER){
10194                 surf_parse__delete_buffer(YY_CURRENT_BUFFER  );
10195                 YY_CURRENT_BUFFER_LVALUE = NULL;
10196                 surf_parse_pop_buffer_state();
10197         }
10198
10199         /* Destroy the stack itself. */
10200         surf_parse_free((yy_buffer_stack) );
10201         (yy_buffer_stack) = NULL;
10202
10203     /* Destroy the start condition stack. */
10204         surf_parse_free((yy_start_stack)  );
10205         (yy_start_stack) = NULL;
10206
10207     /* Reset the globals. This is important in a non-reentrant scanner so the next time
10208      * surf_parse_lex() is called, initialization will occur. */
10209     yy_init_globals( );
10210
10211     return 0;
10212 }
10213
10214 /*
10215  * Internal utility routines.
10216  */
10217
10218 #ifndef yytext_ptr
10219 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
10220 {
10221                 
10222         int i;
10223         for ( i = 0; i < n; ++i )
10224                 s1[i] = s2[i];
10225 }
10226 #endif
10227
10228 #ifdef YY_NEED_STRLEN
10229 static int yy_flex_strlen (yyconst char * s )
10230 {
10231         int n;
10232         for ( n = 0; s[n]; ++n )
10233                 ;
10234
10235         return n;
10236 }
10237 #endif
10238
10239 void *surf_parse_alloc (yy_size_t  size )
10240 {
10241                         return malloc(size);
10242 }
10243
10244 void *surf_parse_realloc  (void * ptr, yy_size_t  size )
10245 {
10246                 
10247         /* The cast to (char *) in the following accommodates both
10248          * implementations that use char* generic pointers, and those
10249          * that use void* generic pointers.  It works with the latter
10250          * because both ANSI C and C++ allow castless assignment from
10251          * any pointer type to void*, and deal with argument conversions
10252          * as though doing an assignment.
10253          */
10254         return realloc(ptr, size);
10255 }
10256
10257 void surf_parse_free (void * ptr )
10258 {
10259                         free( (char *) ptr );   /* see surf_parse_realloc() for (char *) cast */
10260 }
10261
10262 #define YYTABLES_NAME "yytables"
10263
10264 /* Element context stack lookup. */
10265 int surfxml_element_context(int i)
10266 {
10267   return (0<i && i<yy_start_stack_depth
10268           ? yy_start_stack[yy_start_stack_ptr - i]
10269           : 0);
10270 }
10271
10272 #ifdef FLEX_DEBUG
10273 void print_yy_stack(char* fmt, ...)
10274 {
10275   int i = 0; va_list ap; va_start(ap, fmt);
10276   vfprintf(stderr, fmt, ap);
10277   if (surfxml_statenames) {
10278       for (i=1; i<yy_start_stack_ptr; i++) {
10279           fprintf(stderr, "%s/", surfxml_statenames[yy_start_stack[i] ]);
10280       }
10281       fprintf(stderr,"%s\n", surfxml_statenames[YY_START]);
10282   }
10283   va_end(ap);
10284 }
10285
10286 void print_surfxml_bufferstack()
10287 {
10288     int i;
10289     fputs("Buffer: ", stderr);
10290     for (i = 0; i < blimit; i++) {
10291        if ( surfxml_bufferstack[i] == '\377' ) break;
10292          putc(surfxml_bufferstack[i], stderr);
10293     }
10294     putc('\n', stderr);
10295 }
10296
10297 static void debug_enter(int state, const char* statename) {
10298   yy_push_state(state);
10299   if (surf_parse__flex_debug) {
10300        print_yy_stack("--ENTER(%s) : ",statename);
10301        print_surfxml_bufferstack();
10302   }
10303 }
10304
10305 static void debug_leave(void) {
10306     if (surf_parse__flex_debug) {
10307         print_yy_stack("--LEAVE : ");
10308         print_surfxml_bufferstack();
10309     }
10310   yy_pop_state();
10311 }
10312
10313 static void debug_set(int state, const char* statename) {
10314   BEGIN(state);
10315   if (surf_parse__flex_debug) print_yy_stack("--SET(%s) : ",statename);
10316 }
10317 #endif
10318
10319 static void cleanup(void)
10320 {
10321     if (surfxml_statenames) {
10322         free(surfxml_statenames);
10323         surfxml_statenames = NULL;
10324     }
10325     free(surfxml_bufferstack);
10326     surfxml_bufferstack = NULL;
10327
10328     free(indexstack);
10329     indexstack = NULL;
10330 }
10331
10332 static int fail(const char* fmt, ...)
10333 {
10334     int chars_left, used;
10335     va_list ap; va_start(ap, fmt);
10336 #ifdef FLEXML_yylineno
10337     used = snprintf(flexml_err_msg,flexml_max_err_msg_size,
10338                    "Invalid XML (XML input line %d, state %d): ",
10339                    surf_parse_lineno, YY_START);
10340 #else
10341     used = snprintf(flexml_err_msg,flexml_max_err_msg_size,
10342                    "Invalid XML (state %d): ",
10343                    YY_START);
10344 #endif
10345     chars_left = flexml_max_err_msg_size - used - 1;
10346     vsnprintf(flexml_err_msg + used, chars_left, fmt, ap);
10347     va_end(ap);
10348
10349 #ifndef FLEXML_quiet_parser
10350     /* print directly to sdterr */
10351     fprintf(stderr, "%s\n", flexml_err_msg);
10352     flexml_err_msg[0] = '\0';
10353 #endif
10354
10355     cleanup();
10356
10357     return 1;
10358 }
10359