Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
678bd2f6f604cfafd49d06ff844816184069d060
[simgrid.git] / src / surf / surfxml.c
1
2 #line 3 "surf/surfxml.c"
3
4 #define  YY_INT_ALIGNED short int
5
6 /* A lexical scanner generated by flex */
7
8 #define FLEX_SCANNER
9 #define YY_FLEX_MAJOR_VERSION 2
10 #define YY_FLEX_MINOR_VERSION 5
11 #define YY_FLEX_SUBMINOR_VERSION 33
12 #if YY_FLEX_SUBMINOR_VERSION > 0
13 #define FLEX_BETA
14 #endif
15
16 /* First, we deal with  platform-specific or compiler-specific issues. */
17
18 /* begin standard C headers. */
19 #include <stdio.h>
20 #include <string.h>
21 #include <errno.h>
22 #include <stdlib.h>
23
24 /* end standard C headers. */
25
26 /* flex integer type definitions */
27
28 #ifndef FLEXINT_H
29 #define FLEXINT_H
30
31 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
32
33 #if __STDC_VERSION__ >= 199901L
34
35 /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
36  * if you want the limit (max/min) macros for int types. 
37  */
38 #ifndef __STDC_LIMIT_MACROS
39 #define __STDC_LIMIT_MACROS 1
40 #endif
41
42 #include <inttypes.h>
43 typedef int8_t flex_int8_t;
44 typedef uint8_t flex_uint8_t;
45 typedef int16_t flex_int16_t;
46 typedef uint16_t flex_uint16_t;
47 typedef int32_t flex_int32_t;
48 typedef uint32_t flex_uint32_t;
49 #else
50 typedef signed char flex_int8_t;
51 typedef short int flex_int16_t;
52 typedef int flex_int32_t;
53 typedef unsigned char flex_uint8_t; 
54 typedef unsigned short int flex_uint16_t;
55 typedef unsigned int flex_uint32_t;
56 #endif /* ! C99 */
57
58 /* Limits of integral types. */
59 #ifndef INT8_MIN
60 #define INT8_MIN               (-128)
61 #endif
62 #ifndef INT16_MIN
63 #define INT16_MIN              (-32767-1)
64 #endif
65 #ifndef INT32_MIN
66 #define INT32_MIN              (-2147483647-1)
67 #endif
68 #ifndef INT8_MAX
69 #define INT8_MAX               (127)
70 #endif
71 #ifndef INT16_MAX
72 #define INT16_MAX              (32767)
73 #endif
74 #ifndef INT32_MAX
75 #define INT32_MAX              (2147483647)
76 #endif
77 #ifndef UINT8_MAX
78 #define UINT8_MAX              (255U)
79 #endif
80 #ifndef UINT16_MAX
81 #define UINT16_MAX             (65535U)
82 #endif
83 #ifndef UINT32_MAX
84 #define UINT32_MAX             (4294967295U)
85 #endif
86
87 #endif /* ! FLEXINT_H */
88
89 #ifdef __cplusplus
90
91 /* The "const" storage-class-modifier is valid. */
92 #define YY_USE_CONST
93
94 #else   /* ! __cplusplus */
95
96 #if __STDC__
97
98 #define YY_USE_CONST
99
100 #endif  /* __STDC__ */
101 #endif  /* ! __cplusplus */
102
103 #ifdef YY_USE_CONST
104 #define yyconst const
105 #else
106 #define yyconst
107 #endif
108
109 /* Returned upon end-of-file. */
110 #define YY_NULL 0
111
112 /* Promotes a possibly negative, possibly signed char to an unsigned
113  * integer for use as an array index.  If the signed char is negative,
114  * we want to instead treat it as an 8-bit unsigned char, hence the
115  * double cast.
116  */
117 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
118
119 /* Enter a start condition.  This macro really ought to take a parameter,
120  * but we do it the disgusting crufty way forced on us by the ()-less
121  * definition of BEGIN.
122  */
123 #define BEGIN (yy_start) = 1 + 2 *
124
125 /* Translate the current start state into a value that can be later handed
126  * to BEGIN to return to the state.  The YYSTATE alias is for lex
127  * compatibility.
128  */
129 #define YY_START (((yy_start) - 1) / 2)
130 #define YYSTATE YY_START
131
132 /* Action number for EOF rule of a given start state. */
133 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
134
135 /* Special action meaning "start processing a new file". */
136 #define YY_NEW_FILE surf_parse_restart(surf_parse_in  )
137
138 #define YY_END_OF_BUFFER_CHAR 0
139
140 /* Size of default input buffer. */
141 #ifndef YY_BUF_SIZE
142 #define YY_BUF_SIZE 16384
143 #endif
144
145 /* The state buf must be large enough to hold one state per character in the main buffer.
146  */
147 #define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
148
149 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
150 #define YY_TYPEDEF_YY_BUFFER_STATE
151 typedef struct yy_buffer_state *YY_BUFFER_STATE;
152 #endif
153
154 extern int surf_parse_leng;
155
156 extern FILE *surf_parse_in, *surf_parse_out;
157
158 #define EOB_ACT_CONTINUE_SCAN 0
159 #define EOB_ACT_END_OF_FILE 1
160 #define EOB_ACT_LAST_MATCH 2
161
162     /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires
163      *       access to the local variable yy_act. Since yyless() is a macro, it would break
164      *       existing scanners that call yyless() from OUTSIDE surf_parse_lex. 
165      *       One obvious solution it to make yy_act a global. I tried that, and saw
166      *       a 5% performance hit in a non-surf_parse_lineno scanner, because yy_act is
167      *       normally declared as a register variable-- so it is not worth it.
168      */
169     #define  YY_LESS_LINENO(n) \
170             do { \
171                 int yyl;\
172                 for ( yyl = n; yyl < surf_parse_leng; ++yyl )\
173                     if ( surf_parse_text[yyl] == '\n' )\
174                         --surf_parse_lineno;\
175             }while(0)
176     
177 /* Return all but the first "n" matched characters back to the input stream. */
178 #define yyless(n) \
179         do \
180                 { \
181                 /* Undo effects of setting up surf_parse_text. */ \
182         int yyless_macro_arg = (n); \
183         YY_LESS_LINENO(yyless_macro_arg);\
184                 *yy_cp = (yy_hold_char); \
185                 YY_RESTORE_YY_MORE_OFFSET \
186                 (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
187                 YY_DO_BEFORE_ACTION; /* set up surf_parse_text again */ \
188                 } \
189         while ( 0 )
190
191 #define unput(c) yyunput( c, (yytext_ptr)  )
192
193 /* The following is because we cannot portably get our hands on size_t
194  * (without autoconf's help, which isn't available because we want
195  * flex-generated scanners to compile on their own).
196  */
197
198 #ifndef YY_TYPEDEF_YY_SIZE_T
199 #define YY_TYPEDEF_YY_SIZE_T
200 typedef unsigned int yy_size_t;
201 #endif
202
203 #ifndef YY_STRUCT_YY_BUFFER_STATE
204 #define YY_STRUCT_YY_BUFFER_STATE
205 struct yy_buffer_state
206         {
207         FILE *yy_input_file;
208
209         char *yy_ch_buf;                /* input buffer */
210         char *yy_buf_pos;               /* current position in input buffer */
211
212         /* Size of input buffer in bytes, not including room for EOB
213          * characters.
214          */
215         yy_size_t yy_buf_size;
216
217         /* Number of characters read into yy_ch_buf, not including EOB
218          * characters.
219          */
220         int yy_n_chars;
221
222         /* Whether we "own" the buffer - i.e., we know we created it,
223          * and can realloc() it to grow it, and should free() it to
224          * delete it.
225          */
226         int yy_is_our_buffer;
227
228         /* Whether this is an "interactive" input source; if so, and
229          * if we're using stdio for input, then we want to use getc()
230          * instead of fread(), to make sure we stop fetching input after
231          * each newline.
232          */
233         int yy_is_interactive;
234
235         /* Whether we're considered to be at the beginning of a line.
236          * If so, '^' rules will be active on the next match, otherwise
237          * not.
238          */
239         int yy_at_bol;
240
241     int yy_bs_lineno; /**< The line count. */
242     int yy_bs_column; /**< The column count. */
243     
244         /* Whether to try to fill the input buffer when we reach the
245          * end of it.
246          */
247         int yy_fill_buffer;
248
249         int yy_buffer_status;
250
251 #define YY_BUFFER_NEW 0
252 #define YY_BUFFER_NORMAL 1
253         /* When an EOF's been seen but there's still some text to process
254          * then we mark the buffer as YY_EOF_PENDING, to indicate that we
255          * shouldn't try reading from the input source any more.  We might
256          * still have a bunch of tokens to match, though, because of
257          * possible backing-up.
258          *
259          * When we actually see the EOF, we change the status to "new"
260          * (via surf_parse_restart()), so that the user can continue scanning by
261          * just pointing surf_parse_in at a new input file.
262          */
263 #define YY_BUFFER_EOF_PENDING 2
264
265         };
266 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
267
268 /* Stack of input buffers. */
269 static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
270 static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
271 static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
272
273 /* We provide macros for accessing buffer states in case in the
274  * future we want to put the buffer states in a more general
275  * "scanner state".
276  *
277  * Returns the top of the stack, or NULL.
278  */
279 #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
280                           ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
281                           : NULL)
282
283 /* Same as previous macro, but useful when we know that the buffer stack is not
284  * NULL or when we need an lvalue. For internal use only.
285  */
286 #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
287
288 /* yy_hold_char holds the character lost when surf_parse_text is formed. */
289 static char yy_hold_char;
290 static int yy_n_chars;          /* number of characters read into yy_ch_buf */
291 int surf_parse_leng;
292
293 /* Points to current character in buffer. */
294 static char *yy_c_buf_p = (char *) 0;
295 static int yy_init = 0;         /* whether we need to initialize */
296 static int yy_start = 0;        /* start state number */
297
298 /* Flag which is used to allow surf_parse_wrap()'s to do buffer switches
299  * instead of setting up a fresh surf_parse_in.  A bit of a hack ...
300  */
301 static int yy_did_buffer_switch_on_eof;
302
303 void surf_parse_restart (FILE *input_file  );
304 void surf_parse__switch_to_buffer (YY_BUFFER_STATE new_buffer  );
305 YY_BUFFER_STATE surf_parse__create_buffer (FILE *file,int size  );
306 void surf_parse__delete_buffer (YY_BUFFER_STATE b  );
307 void surf_parse__flush_buffer (YY_BUFFER_STATE b  );
308 void surf_parse_push_buffer_state (YY_BUFFER_STATE new_buffer  );
309 void surf_parse_pop_buffer_state (void );
310
311 static void surf_parse_ensure_buffer_stack (void );
312 static void surf_parse__load_buffer_state (void );
313 static void surf_parse__init_buffer (YY_BUFFER_STATE b,FILE *file  );
314
315 #define YY_FLUSH_BUFFER surf_parse__flush_buffer(YY_CURRENT_BUFFER )
316
317 YY_BUFFER_STATE surf_parse__scan_buffer (char *base,yy_size_t size  );
318 YY_BUFFER_STATE surf_parse__scan_string (yyconst char *yy_str  );
319 YY_BUFFER_STATE surf_parse__scan_bytes (yyconst char *bytes,int len  );
320
321 void *surf_parse_alloc (yy_size_t  );
322 void *surf_parse_realloc (void *,yy_size_t  );
323 void surf_parse_free (void *  );
324
325 #define yy_new_buffer surf_parse__create_buffer
326
327 #define yy_set_interactive(is_interactive) \
328         { \
329         if ( ! YY_CURRENT_BUFFER ){ \
330         surf_parse_ensure_buffer_stack (); \
331                 YY_CURRENT_BUFFER_LVALUE =    \
332             surf_parse__create_buffer(surf_parse_in,YY_BUF_SIZE ); \
333         } \
334         YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
335         }
336
337 #define yy_set_bol(at_bol) \
338         { \
339         if ( ! YY_CURRENT_BUFFER ){\
340         surf_parse_ensure_buffer_stack (); \
341                 YY_CURRENT_BUFFER_LVALUE =    \
342             surf_parse__create_buffer(surf_parse_in,YY_BUF_SIZE ); \
343         } \
344         YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
345         }
346
347 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
348
349 /* Begin user sect3 */
350
351 #define surf_parse_wrap() 1
352 #define YY_SKIP_YYWRAP
353
354 typedef unsigned char YY_CHAR;
355
356 FILE *surf_parse_in = (FILE *) 0, *surf_parse_out = (FILE *) 0;
357
358 typedef int yy_state_type;
359
360 extern int surf_parse_lineno;
361
362 int surf_parse_lineno = 1;
363
364 extern char *surf_parse_text;
365 #define yytext_ptr surf_parse_text
366
367 static yy_state_type yy_get_previous_state (void );
368 static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
369 static int yy_get_next_buffer (void );
370 static void yy_fatal_error (yyconst char msg[]  );
371
372 /* Done after the current pattern has been matched and before the
373  * corresponding action - sets up surf_parse_text.
374  */
375 #define YY_DO_BEFORE_ACTION \
376         (yytext_ptr) = yy_bp; \
377         surf_parse_leng = (size_t) (yy_cp - yy_bp); \
378         (yy_hold_char) = *yy_cp; \
379         *yy_cp = '\0'; \
380         (yy_c_buf_p) = yy_cp;
381
382 #define YY_NUM_RULES 206
383 #define YY_END_OF_BUFFER 207
384 /* This struct is not used in this scanner,
385    but its presence is necessary. */
386 struct yy_trans_info
387         {
388         flex_int32_t yy_verify;
389         flex_int32_t yy_nxt;
390         };
391 static yyconst flex_int16_t yy_accept[1481] =
392     {   0,
393         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
394         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
395         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
396         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
397         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
398         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
399         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
400         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
401         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
402         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
403
404         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
405         0,    0,    0,    0,    0,    0,  207,  205,   24,   10,
406        10,   24,   24,  185,   10,  185,    5,    6,    5,    8,
407         9,    8,  201,  193,  194,  202,  199,  202,  200,  204,
408       193,  194,  204,  205,   34,   10,   34,   34,   34,   32,
409        34,   34,   38,   10,   38,   38,  205,  205,   38,  205,
410        44,   10,   44,   44,   44,   42,   44,   48,   10,   48,
411       205,   74,   10,   74,   74,   74,   72,   74,   74,   74,
412        74,   74,   78,   10,   78,  205,   78,   86,   10,   86,
413        86,   86,   84,   86,   86,   90,   10,   90,  205,   96,
414
415        10,   96,   96,   96,   94,   96,  100,   10,  100,  205,
416       124,   10,  124,  124,  124,  122,  124,  124,  124,  124,
417       128,   10,  128,  128,  205,  144,   10,  144,  144,  144,
418       142,  144,  144,  144,  148,   10,  148,  205,  148,  154,
419        10,  154,  154,  154,  152,  154,  158,   10,  158,  205,
420       170,   10,  170,  170,  170,  168,  170,  170,  170,  170,
421       174,   10,  174,  205,  174,  205,  180,   10,  180,  180,
422       180,  178,  180,  184,   10,  184,  202,  201,   10,    0,
423         2,    2,    0,    4,    7,  196,  195,    0,    0,    0,
424         0,    0,    0,    0,   33,   35,   35,   35,    0,    0,
425
426         0,    0,    0,    0,    0,    0,   43,   45,   45,    0,
427        73,   75,   75,   75,   75,   75,   75,   75,    0,    0,
428        85,   87,   87,   87,    0,   95,   97,   97,    0,  123,
429       125,  125,  125,  125,  125,  125,    0,  143,  145,  145,
430       145,  145,    0,    0,  153,  155,  155,    0,  169,  171,
431       171,  171,  171,  171,    0,    0,  179,  181,  181,    0,
432         0,    0,    0,    0,    0,    0,    3,    0,    0,    0,
433         0,    0,    0,    0,  203,    0,   35,   35,    0,    0,
434         0,    0,    0,    0,    0,    0,    0,   45,    0,    0,
435        75,    0,    0,   75,   75,   75,   75,    0,    0,    0,
436
437         0,    0,   87,    0,    0,    0,    0,    0,    0,  125,
438         0,    0,  125,  125,  125,    0,    0,  145,  145,  145,
439         0,    0,    0,    0,    0,    0,    0,  171,  171,  171,
440       171,    0,    0,    0,  181,    0,    0,    0,  198,    0,
441        23,    1,    0,    0,  191,    0,    0,    0,  188,  187,
442         0,    0,   35,   35,    0,    0,   37,    0,    0,    0,
443         0,    0,    0,    0,    0,   45,    0,    0,   47,    0,
444        75,    0,   51,   50,   75,   75,   75,   75,    0,    0,
445        77,    0,    0,    0,   81,   80,   87,    0,    0,   89,
446         0,    0,   93,   92,    0,    0,   99,    0,  125,    0,
447
448       103,  102,  125,  125,  125,    0,    0,  127,    0,    0,
449         0,  145,    0,    0,    0,    0,  147,    0,    0,    0,
450       151,  150,    0,    0,  157,    0,  171,  171,  171,  171,
451         0,    0,  173,    0,    0,  181,    0,    0,  183,    0,
452         0,    0,    0,  192,  186,    0,    0,    0,   35,   35,
453         0,   49,    0,  101,    0,    0,    0,    0,    0,    0,
454         0,   75,   75,   75,   75,   75,    0,   79,   87,    0,
455         0,  125,  125,  125,  125,    0,    0,  133,  132,  145,
456         0,  131,  130,    0,    0,    0,  171,    0,    0,  171,
457       171,    0,    0,  181,    0,    0,    0,    0,    0,   12,
458
459         0,  189,  190,    0,   35,   35,    0,   49,    0,  101,
460         0,  129,  129,    0,    0,   41,   40,    0,   75,   75,
461        75,    0,    0,    0,    0,   75,    0,   79,    0,    0,
462         0,    0,  125,  125,  125,    0,    0,  125,    0,  145,
463         0,    0,    0,  171,    0,  161,  160,  171,  171,    0,
464         0,    0,    0,    0,    0,    0,    0,    0,   11,    0,
465        35,   35,   35,    0,    0,    0,  129,   91,    0,   75,
466        75,   75,    0,   53,   52,    0,    0,    0,   75,    0,
467        76,    0,   83,   82,    0,   88,    0,  125,  125,  125,
468         0,    0,    0,  125,    0,  126,  145,    0,    0,    0,
469
470       171,  171,  171,    0,    0,    0,  177,  176,    0,    0,
471         0,    0,    0,    0,    0,    0,   35,   35,    0,   39,
472       159,   91,    0,   75,   75,   75,    0,    0,   75,    0,
473       125,    0,    0,  125,  125,    0,    0,  125,  145,    0,
474       146,    0,    0,  171,  171,  171,    0,    0,    0,    0,
475         0,    0,    0,   25,    0,   27,   26,   35,   35,    0,
476        39,  159,    0,   75,   75,   75,    0,    0,    0,    0,
477        75,    0,   98,  125,    0,  109,  108,  125,  125,    0,
478         0,    0,    0,  125,  145,  149,    0,    0,    0,  171,
479       171,    0,  175,    0,  197,    0,    0,    0,   25,   35,
480
481        35,    0,    0,   46,   75,   75,   75,    0,   59,    0,
482        58,   75,    0,    0,  125,  125,  125,    0,  113,    0,
483       112,  125,  145,  149,    0,    0,  163,  162,    0,    0,
484       171,    0,  172,  175,    0,    0,    0,    0,    0,    0,
485         0,    0,    0,    0,    0,   35,    0,   36,   75,   75,
486        75,   61,   60,    0,    0,    0,  105,  104,  125,  125,
487       125,  115,  114,    0,    0,  145,  145,    0,  156,    0,
488       167,  166,    0,    0,    0,  182,    0,    0,    0,    0,
489         0,    0,    0,    0,    0,    0,   29,   28,    0,    0,
490        75,   75,   75,    0,   63,   62,  125,  125,  125,    0,
491
492       117,  116,  145,  145,    0,  165,  164,    0,    0,    0,
493         0,    0,    0,    0,    0,    0,    0,   31,   30,    0,
494         0,   75,   75,   75,  125,    0,    0,  125,  145,  145,
495         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
496         0,    0,   55,   54,   75,   75,   75,   75,  125,    0,
497       111,  110,  125,    0,    0,  145,    0,    0,  145,    0,
498         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
499         0,    0,    0,   75,   75,   75,   75,    0,    0,    0,
500         0,    0,  137,  136,  145,    0,  135,  134,  145,    0,
501         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
502
503         0,    0,    0,    0,   75,   75,   75,   75,    0,  107,
504       106,    0,    0,    0,  145,  145,    0,    0,    0,    0,
505         0,    0,    0,    0,    0,    0,    0,    0,   12,    0,
506        12,    0,   75,   75,   75,   75,    0,    0,    0,    0,
507       145,  145,    0,    0,    0,    0,    0,    0,    0,    0,
508         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
509         0,    0,   75,    0,    0,    0,    0,    0,    0,  145,
510       145,    0,    0,    0,    0,    0,    0,    0,    0,    0,
511         0,    0,    0,   57,   56,    0,   67,   66,    0,   65,
512        64,   75,    0,   71,   70,    0,    0,    0,    0,  145,
513
514       145,    0,    0,    0,    0,    0,    0,    0,    0,    0,
515         0,   11,   75,    0,    0,    0,    0,  145,  145,    0,
516         0,    0,    0,    0,    0,    0,    0,    0,    0,   75,
517         0,    0,    0,    0,  145,  145,    0,    0,    0,    0,
518         0,    0,    0,    0,    0,    0,   75,    0,    0,    0,
519         0,  145,  145,    0,    0,    0,    0,    0,    0,    0,
520         0,    0,    0,    0,    0,    0,    0,    0,    0,  119,
521         0,  118,  145,  145,    0,    0,    0,    0,    0,    0,
522         0,    0,    0,    0,    0,    0,    0,    0,    0,   69,
523        68,  121,  120,  145,  145,    0,    0,    0,    0,    0,
524
525         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
526       145,  145,    0,    0,    0,    0,    0,    0,    0,    0,
527         0,    0,    0,    0,    0,    0,    0,    0,    0,  145,
528       145,    0,    0,    0,    0,    0,    0,    0,    0,    0,
529         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
530         0,  145,  145,    0,    0,    0,    0,    0,    0,    0,
531         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
532         0,    0,    0,  145,  145,    0,    0,    0,    0,    0,
533         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
534         0,    0,    0,    0,    0,  145,  145,    0,    0,    0,
535
536         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
537         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
538         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
539         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
540         0,    0,  141,  140,    0,  139,  138,    0,    0,    0,
541         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
542         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
543         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
544         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
545         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
546
547         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
548         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
549         0,    0,    0,    0,    0,    0,    0,   19,    0,    0,
550         0,   13,    0,    0,    0,    0,    0,    0,    0,   21,
551         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
552         0,    0,    0,    0,   15,    0,    0,    0,    0,    0,
553         0,    0,    0,    0,    0,   18,    0,    0,   14,    0,
554         0,    0,   16,    0,   20,    0,   17,    0,   22,    0
555     } ;
556
557 static yyconst flex_int32_t yy_ec[256] =
558     {   0,
559         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
560         1,    2,    4,    1,    1,    1,    1,    1,    1,    1,
561         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
562         1,    2,    5,    6,    7,    1,    1,    8,    9,    1,
563         1,    1,    1,    1,   10,   11,   12,   13,   13,   13,
564        13,   13,   13,   13,   13,   13,   13,   14,   15,   16,
565        17,   18,   19,    1,   20,   21,   22,   23,   24,   25,
566        26,   27,   28,   26,   26,   26,   29,   30,   31,   32,
567        26,   33,   34,   35,   26,   26,   26,   26,   36,   26,
568        37,    1,   38,    1,   39,    1,   40,   41,   42,   43,
569
570        44,   45,   46,   47,   48,   26,   49,   50,   51,   52,
571        53,   54,   55,   56,   57,   58,   59,   60,   61,   62,
572        63,   26,    1,    1,    1,    1,    1,    1,    1,    1,
573         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
574         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
575         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
576         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
577         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
578         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
579         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
580
581         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
582         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
583         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
584         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
585         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
586         1,    1,    1,    1,    1
587     } ;
588
589 static yyconst flex_int32_t yy_meta[64] =
590     {   0,
591         1,    2,    2,    2,    1,    1,    1,    1,    1,    3,
592         3,    1,    4,    5,    1,    1,    1,    6,    1,    7,
593         7,    7,    7,    7,    7,    5,    5,    5,    5,    5,
594         5,    5,    5,    5,    5,    5,    1,    1,    5,    7,
595         7,    7,    7,    7,    7,    5,    5,    5,    5,    5,
596         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
597         5,    5,    5
598     } ;
599
600 static yyconst flex_int16_t yy_base[1549] =
601     {   0,
602         0,    0,    0,    3,    6,    9,   24,   27,   11,   14,
603        15,   17,   29,   38,   45,   52,   59,   61,   67,   70,
604        99,  161,   73,   76,  117,  122,  125,  128,  144,  179,
605       184,  187,  190,  206,  209,  212,  215,  230,  246,  291,
606       264,  269,  272,  309,  336,  393,  314,  317,  354,  359,
607       362,  365,  411,  416,  419,  422,  450,  510,  468,  473,
608       476,  479,  570,  618,  528,  533,  536,  539,  666,  723,
609       588,  593,  596,  599,  636,  641,  644,  647,  684,  689,
610       780,  837,  692,  695,  741,  746,  749,  752,  798,  803,
611       806,  809,  894,  942,  855,  860,  863,  866,  990, 1047,
612
613       912,  917,  920,  923,  960,  965,  968,  971, 1008, 1013,
614      1104, 1164, 1016, 1065, 1087, 1123, 4137, 4138, 4138,   91,
615       147,   47,   62, 4138,  150,   77, 4138, 4138, 4126, 4138,
616      4138, 4117, 4138, 4130, 4130,  189, 4138, 4138, 4138, 4138,
617      4128, 4128, 4092,  480, 4138,  153, 4111,    0,   79, 4138,
618      4084, 4076, 4138,  234, 1026, 1081, 1138, 1082,  367,  221,
619      4138,  239, 4108,    0,  366, 4138, 4077, 4138,  275,  424,
620       486, 4138,  320, 4106,    0,  372, 4138, 4063,    7, 4082,
621      4068, 4062, 4138,  498, 1021,  540,  485, 4138,  504, 4101,
622         0,  423, 4138, 4075, 4077, 4138,  558,  545,  549, 4138,
623
624       563, 4098,    0,  429, 4138, 4072, 4138,  715,  701,  696,
625      4138,  772, 4096,    0,  753, 4138, 4073, 4069, 4071,   76,
626      4138,  775, 1135,  815,  816, 4138,  827, 4092,    0,  868,
627      4138, 4052, 4057, 4051, 4138,  886, 1140, 1078,  872, 4138,
628      1019, 4088,    0,  873, 4138, 4062, 4138, 1039, 1139, 1025,
629      4138, 1068, 4086,    0, 1083, 4138, 4044, 4049, 4053, 4042,
630      4138, 1130, 1144, 1173, 1141, 1186, 4138, 1193, 4081,    0,
631      1143, 4138, 4058, 4138, 1204, 1198, 4092, 4058, 1212,   34,
632      4033, 4138, 4084, 4075, 4138, 4138, 4138,   26,   36, 4034,
633      4033, 4031, 4071, 4038, 4138,    0, 4031, 4036, 4031, 4031,
634
635      4031, 4034, 4025, 4027, 4026, 4025, 4138,    0, 4027, 4028,
636      4138,    0, 4035, 1216, 4016, 4011, 4011, 4031, 4023, 4013,
637      4138,    0, 1219, 4018, 4013, 4138,    0, 1226, 4010, 4138,
638         0, 4013, 1235, 4006, 4023, 4022, 4011, 4138,    0, 4002,
639      4005, 4016, 4001, 4008, 4138,    0, 1238, 4005, 4138,    0,
640      4002, 3996, 4002, 4011, 3996, 3993, 4138,    0, 3998, 4007,
641      4009, 4027, 4026, 4033,  104, 3991, 4138,  127,    0, 3987,
642      3987, 4024, 4023, 3984, 4138, 3996, 3978, 3982, 1242, 1245,
643      3976, 3990, 3979, 3977, 3970, 3969, 3968, 3982, 1254, 1262,
644      3977, 1265, 1272, 3980, 3984, 3978, 3963, 1281, 1284, 3967,
645
646      1287, 1294, 3960, 1290, 1303, 1307, 1313, 1323, 1326, 3975,
647      1329, 1336, 3973, 3960, 3957, 1332, 1345, 1349, 3974, 1352,
648      1358, 1368, 3961, 1371, 1378, 1387, 1392, 3970, 3953, 3960,
649      3953, 1395, 1398, 3962, 3948, 1404, 1415, 3984, 4138, 3987,
650      4138, 4138,  121, 3954, 4138, 3988, 3987, 3944, 4138, 4138,
651      3942, 3941, 3950, 3940, 1421, 1424, 4138, 1427, 3938, 3945,
652      3945, 3951, 3934, 3933, 3932, 1432, 1444, 1448, 4138, 1454,
653      3939, 1471, 4138, 4138, 3932, 3934, 3930, 3941, 1461, 1466,
654      4138, 1479, 3930, 1483, 4138, 4138, 3939, 1491, 1496, 4138,
655      1499, 1502, 4138, 4138, 1516, 1519, 4138, 1522, 3921, 1526,
656
657      4138, 4138, 3929, 3932, 3935, 1539, 1542, 4138, 1545, 1551,
658      1563, 3936, 1571, 1574, 1582, 1587, 4138, 1590, 3928, 1600,
659      4138, 4138, 1608, 1611, 4138, 1614, 3918, 1617, 3936, 3916,
660      1620, 1633, 4138, 1637, 3914, 3928, 1640, 1643, 4138, 1650,
661      3948,  140, 1660, 4138, 4138, 3955, 3954, 3923, 3914, 3952,
662      1667, 1457, 3906, 1670, 3920, 3919, 3918, 3917, 1678, 1685,
663      1695, 3920, 3914, 3899, 1698, 1701, 1704, 1673, 1707, 1717,
664      1724, 3909, 3914, 3903, 1727, 1730, 1747, 4138, 4138, 3896,
665      1755, 4138, 4138, 1734, 3939, 1765, 3904, 1770, 1782, 3893,
666      3911, 1791, 3898, 1773, 1794, 3928,  166, 3929, 1797, 4138,
667
668      3928, 4138, 4138, 3892, 3892,   35, 1800, 1803, 3900, 1817,
669      3885, 1820, 1823, 3885, 1826, 4138, 4138, 1834, 3899, 3895,
670      3880, 1844, 1856, 1847, 1864, 3892, 1876, 1840, 1852, 1879,
671      1887, 1893, 3893, 3872, 3888, 1896, 1900, 3888, 1912, 3893,
672      1915, 3889, 1918, 3877, 1922, 4138, 4138, 3881, 3870, 1936,
673      3883, 1939, 1942, 1958, 3891, 1193,  263,  183, 4138, 3869,
674      1961, 3876, 3870, 1964, 3878, 3864, 1967, 1970, 1981, 3872,
675      3863, 3872, 1984, 4138, 4138, 1992, 3886, 3885, 3867, 2000,
676      4138, 2004, 4138, 4138, 2012, 4138, 2017, 3856, 2023, 3874,
677      2030, 3881, 3770, 3752, 2039, 4138, 3737, 2042, 3729, 2045,
678
679      3732, 3730, 3730, 2048, 3723, 2052, 4138, 4138, 2065, 3752,
680       206,  272,  189, 3718, 2068, 2072, 3714, 3704, 2086, 2089,
681      2092, 2095, 2099, 3710, 3709, 3695,  257,  301, 3693, 2104,
682      3691, 2108, 2112, 3688, 3674,  302,  358, 3673, 3666, 2126,
683      4138, 3661, 2129, 2132, 3664, 3456, 2135, 3448, 2148, 3467,
684      2152,  167,  332, 2155, 2158, 4138, 4138, 3454, 3443, 2170,
685      2173, 2176, 2179, 3452, 3446, 3449, 3470, 3472, 3452, 3466,
686      3430, 2187, 4138, 2191, 2200, 4138, 4138, 3424, 3418, 3444,
687      3462, 3441, 3437, 3399, 3403, 2182, 2208, 2211, 2214, 2229,
688      3396, 2232, 2235, 2238, 4138, 2295,  316,  287, 2241, 2245,
689
690      3395, 2249, 2255, 4138, 3358, 3373, 3361, 3379, 4138, 3273,
691      4138, 2261, 2266, 2273, 3223, 3158, 3140, 3176, 4138, 3162,
692      4138, 2283, 1216, 2286, 2289, 2299, 4138, 4138, 2307, 2312,
693      2323, 2326, 4138, 2329, 2334,  389,  364,  421,  398,  776,
694       456,  446,  588, 2344, 2351, 2360, 2363, 4138, 3106, 3112,
695      3099, 4138, 4138, 2366, 2369, 2382, 4138, 4138, 3079, 3044,
696      2987, 4138, 4138, 2390, 2393, 2959, 2880, 2401, 4138, 2406,
697      4138, 4138, 2414, 2418, 2426, 4138,  478,  575,  647,  751,
698       624,  684,  551,  752,  865, 2430, 4138, 4138, 2438, 2443,
699      2454, 2870, 2850, 2457, 4138, 4138, 2796, 2465, 2785, 2470,
700
701      4138, 4138, 2765, 2768, 2481, 4138, 4138,  595,  919,   95,
702       535,  920,  971, 1060,  644, 2492, 2495, 4138, 4138, 2503,
703      2509, 2763,  148, 2736, 2712, 2519, 2522, 2672, 2530, 2535,
704       842, 2538,  599, 2541,  635,  242, 2546,  703, 2558, 2563,
705      2580, 2588, 4138, 4138, 2669, 2670, 2632, 2635, 2568, 2597,
706      4138, 4138, 2605, 2608, 2611, 2604, 2624, 2627, 2562,  890,
707      2635,  818, 2640,  923,  798, 1175, 2643, 2646, 2653, 2676,
708      2686, 2704, 2742, 2569, 2563, 2552, 2505, 2664, 2694, 2722,
709      2725, 2760, 4138, 4138, 2509, 2768, 4138, 4138, 2505, 1182,
710       797,  912,  968, 1213, 1043, 1194, 1217, 2734, 2575, 2779,
711
712        17,  431, 2797, 2835, 2470, 2440, 2437, 2433, 2787, 4138,
713      4138, 2815, 1064, 1236, 2396, 2385, 1300,  948, 2827, 1349,
714      1261, 1360, 2853, 1386, 1367, 2856,  374,  691, 2429, 1359,
715      2314, 2859, 2862, 2865, 2881, 2884, 2252, 2227, 2205, 2192,
716      2101, 2099, 2889,  468, 2892,  528, 2900, 2909, 2912,  900,
717      1419, 1396, 2139, 2107, 2070, 2919, 2930, 2936, 2947, 2950,
718      2958, 2963, 2009, 2974, 2977, 1996, 2008, 1942, 1955, 1918,
719      1871, 2985, 1391, 1495, 1420, 2990, 2993, 1497, 1492, 1169,
720      1473, 1869, 2996, 4138, 4138, 3011, 4138, 4138, 3019, 4138,
721      4138, 1795, 3027, 4138, 4138, 1779, 1732, 1680, 1660, 1603,
722
723      1575, 1520,  911, 1553, 1283, 1543, 1546, 1649, 1521, 1577,
724      1613, 4138, 1470, 1427, 1417, 1384, 1333, 1285, 1262, 1705,
725      3035, 1615, 3038, 1729, 1736, 1725, 3041, 1533, 1641, 1217,
726      1230, 1231, 1118, 1101,  987,  941, 1799, 3045, 1668, 3058,
727      1857, 1866, 1792, 3066, 3075, 1541, 3078,  961,  977,  862,
728       872,  780,  723, 1853, 1470, 1698, 1578, 1723, 1890, 1905,
729      1931, 1760, 1932, 1934, 3083, 3094, 3100, 3104,  706, 4138,
730       652, 4138,  603,  560, 1845,  704, 1018, 3112, 1191, 1305,
731      1963, 1982, 3116, 1540, 1813, 1940, 2020, 3119, 3129, 4138,
732      4138, 4138, 4138,  575,  572, 3137, 2064, 2068, 3140, 2109,
733
734      2145, 3148, 3157, 3161, 2151, 2248, 1868, 1894, 2062, 2066,
735       499,  495, 3174, 1347, 1580, 2204, 2237, 1612, 1763, 3182,
736      3192, 2262, 2263, 1795, 1889, 2256, 2266, 1994, 2005,  449,
737       393, 2277, 2299, 1137, 1917, 2041, 2321, 2209, 2288, 2341,
738      2356, 2369, 2393, 2323, 2405, 2419, 2430, 2095, 2123, 2358,
739      2382,  308,  247, 2444, 2457, 1425, 1609, 2433, 2435, 1666,
740      2178, 2460, 2468, 2470, 2499, 2452, 2512, 2484, 2536, 2533,
741      2570, 2153, 2361,  227,  137, 2578, 2584,  996, 1696, 2528,
742      2606, 1987, 2340, 2598, 2603, 2617, 2645, 2642, 2654, 2634,
743      2665, 2714, 2722, 2600, 2668, 3170, 3200, 2673, 2749,  748,
744
745      2011, 2758, 2760, 2814, 2815, 2766, 2830, 2831, 2852, 2862,
746      2863, 2888, 2917, 2737, 2757, 2735, 2777, 3203, 3209, 3219,
747      3222, 2882, 2911, 2181, 2925, 2890, 2939, 2964, 2966, 2956,
748      2988, 3028, 3037, 2953, 2983, 2967, 3014, 2937, 3047, 3055,
749      3076, 3231, 4138, 4138, 3239, 4138, 4138, 3073, 3111, 2407,
750      2675, 3118, 3139, 2994, 3008, 3130, 3179, 3181, 3196, 3201,
751      3209, 3053, 3135, 3211, 3220, 3136, 3198, 3221, 3226, 3231,
752      3232, 3235, 3244, 3234, 3238, 3239, 3240, 3242, 3243, 3254,
753      3255, 3251, 3252, 3246, 3249, 3260, 3262, 3268, 3273, 1472,
754      3065, 3265, 3267, 2383, 3091, 3288, 3291, 3300, 3301, 3270,
755
756      3278, 2899, 3305, 3279, 3282, 3269, 3280, 3283, 3297, 3326,
757      3298, 3299, 3329, 3302, 3306, 3316, 3317, 3318, 3319, 3348,
758      2913, 3330, 3324, 3325, 3323, 3328, 3351, 4138, 3340, 3344,
759      3361, 4138, 3343, 3352, 3353, 3354, 3355, 3356, 3386, 4138,
760      3389, 2952, 3366, 3360, 3362, 3376, 3388, 3377, 3378, 3382,
761      3384, 3408, 3399, 3420, 4138, 3426, 3413, 3400, 3430, 3429,
762      3427, 3431, 3432, 3449, 3452, 4138, 3455, 3458, 4138, 3461,
763      3478, 3481, 4138, 3484, 4138, 3487, 4138, 3490, 4138, 4138,
764      3508, 3515, 3522, 3529, 3536, 3543, 3550, 3557, 3564, 3571,
765      3578, 3585, 3592, 3599, 3606, 3613, 3620, 3627, 3634, 3641,
766
767      3648, 3655, 3662, 3669, 3676, 3683, 3690, 3697, 3702, 3707,
768      3712, 3717, 3722, 3727, 3732, 3737, 3742, 3747, 3754, 3757,
769      3760, 3763, 3766, 3769, 3772, 3775, 3778, 3781, 3784, 3791,
770      3795, 3801, 3807, 3813, 3819, 3825, 3831, 3837, 3843, 3849,
771      3855, 3862, 3869, 3876, 3883, 3890, 3897, 3904
772     } ;
773
774 static yyconst flex_int16_t yy_def[1549] =
775     {   0,
776      1481, 1481, 1482, 1482, 1482, 1482, 1483, 1483, 1484, 1484,
777      1485, 1485, 1486, 1486, 1486, 1486, 1487, 1487, 1481, 1481,
778      1488, 1488, 1489, 1489, 1489, 1489, 1481, 1481, 1489, 1489,
779      1481, 1481, 1489, 1489, 1489, 1489, 1481, 1481, 1490, 1490,
780      1491, 1491, 1481, 1481, 1492, 1492, 1493, 1493, 1481, 1481,
781      1493, 1493, 1493, 1493, 1481, 1481, 1494, 1494, 1495, 1495,
782      1481, 1481, 1496, 1496, 1497, 1497, 1481, 1481, 1498, 1498,
783      1499, 1499, 1481, 1481, 1499, 1499, 1499, 1499, 1481, 1481,
784      1500, 1500, 1501, 1501, 1481, 1481, 1501, 1501, 1501, 1501,
785      1481, 1481, 1502, 1502, 1503, 1503, 1481, 1481, 1504, 1504,
786
787      1505, 1505, 1481, 1481, 1505, 1505, 1505, 1505, 1481, 1481,
788      1506, 1506, 1507, 1507, 1508, 1508, 1480, 1480, 1480, 1480,
789      1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480,
790      1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480,
791      1480, 1480, 1480, 1480, 1480, 1480, 1480, 1509, 1480, 1480,
792      1509, 1509, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480,
793      1480, 1480, 1480, 1510, 1480, 1480, 1510, 1480, 1480, 1480,
794      1480, 1480, 1480, 1480, 1511, 1480, 1480, 1511, 1511, 1511,
795      1511, 1511, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480,
796      1512, 1480, 1480, 1512, 1512, 1480, 1480, 1480, 1480, 1480,
797
798      1480, 1480, 1513, 1480, 1480, 1513, 1480, 1480, 1480, 1480,
799      1480, 1480, 1480, 1514, 1480, 1480, 1514, 1514, 1514, 1514,
800      1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1515, 1480,
801      1480, 1515, 1515, 1515, 1480, 1480, 1480, 1480, 1480, 1480,
802      1480, 1480, 1516, 1480, 1480, 1516, 1480, 1480, 1480, 1480,
803      1480, 1480, 1480, 1517, 1480, 1480, 1517, 1517, 1517, 1517,
804      1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1518,
805      1480, 1480, 1518, 1480, 1480, 1480, 1480, 1480, 1480, 1519,
806      1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480,
807      1480, 1480, 1480, 1480, 1480, 1509, 1509, 1509, 1520, 1480,
808
809      1480, 1480, 1480, 1480, 1480, 1480, 1480, 1510, 1510, 1521,
810      1480, 1511, 1511, 1511, 1511, 1511, 1511, 1511, 1522, 1480,
811      1480, 1512, 1512, 1512, 1523, 1480, 1513, 1513, 1524, 1480,
812      1514, 1514, 1514, 1514, 1514, 1514, 1525, 1480, 1515, 1515,
813      1515, 1515, 1526, 1480, 1480, 1516, 1516, 1527, 1480, 1517,
814      1517, 1517, 1517, 1517, 1528, 1480, 1480, 1518, 1518, 1529,
815      1480, 1480, 1530, 1480, 1530, 1480, 1480, 1480, 1531, 1480,
816      1480, 1480, 1480, 1480, 1480, 1480, 1509, 1509, 1532, 1532,
817      1480, 1480, 1480, 1480, 1480, 1480, 1480, 1510, 1533, 1533,
818      1511, 1480, 1480, 1511, 1511, 1511, 1511, 1534, 1534, 1480,
819
820      1480, 1480, 1512, 1535, 1535, 1480, 1480, 1536, 1536, 1514,
821      1480, 1480, 1514, 1514, 1514, 1537, 1537, 1515, 1515, 1515,
822      1538, 1538, 1480, 1480, 1480, 1539, 1539, 1517, 1517, 1517,
823      1517, 1540, 1540, 1480, 1518, 1541, 1541, 1480, 1480, 1530,
824      1480, 1480, 1530, 1480, 1480, 1531, 1480, 1480, 1480, 1480,
825      1480, 1480, 1509, 1509, 1480, 1532, 1480, 1532, 1480, 1480,
826      1480, 1480, 1480, 1480, 1480, 1510, 1480, 1533, 1480, 1533,
827      1511, 1480, 1480, 1480, 1511, 1511, 1511, 1511, 1480, 1534,
828      1480, 1534, 1480, 1480, 1480, 1480, 1512, 1480, 1535, 1480,
829      1535, 1480, 1480, 1480, 1480, 1536, 1480, 1536, 1514, 1480,
830
831      1480, 1480, 1514, 1514, 1514, 1480, 1537, 1480, 1537, 1480,
832      1480, 1515, 1480, 1480, 1480, 1538, 1480, 1538, 1480, 1480,
833      1480, 1480, 1480, 1539, 1480, 1539, 1517, 1517, 1517, 1517,
834      1480, 1540, 1480, 1540, 1480, 1518, 1480, 1541, 1480, 1541,
835      1480, 1530, 1542, 1480, 1480, 1480, 1480, 1480, 1509, 1509,
836      1532, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480,
837      1533, 1511, 1511, 1511, 1511, 1511, 1534, 1480, 1512, 1535,
838      1536, 1514, 1514, 1514, 1514, 1537, 1480, 1480, 1480, 1515,
839      1480, 1480, 1480, 1538, 1480, 1539, 1517, 1480, 1480, 1517,
840      1517, 1540, 1480, 1518, 1541, 1480, 1530, 1542, 1542, 1480,
841
842      1542, 1480, 1480, 1480, 1509, 1509, 1532, 1480, 1480, 1480,
843      1480, 1480, 1480, 1480, 1480, 1480, 1480, 1533, 1511, 1511,
844      1511, 1480, 1480, 1480, 1480, 1511, 1534, 1480, 1480, 1480,
845      1535, 1536, 1514, 1514, 1514, 1480, 1480, 1514, 1537, 1515,
846      1538, 1480, 1539, 1517, 1480, 1480, 1480, 1517, 1517, 1540,
847      1480, 1480, 1480, 1541, 1480, 1530, 1542, 1542, 1480, 1480,
848      1509, 1509, 1509, 1532, 1480, 1480, 1480, 1480, 1533, 1511,
849      1511, 1511, 1480, 1480, 1480, 1480, 1480, 1480, 1511, 1480,
850      1480, 1480, 1480, 1480, 1480, 1480, 1536, 1514, 1514, 1514,
851      1480, 1480, 1480, 1514, 1480, 1480, 1515, 1538, 1480, 1539,
852
853      1517, 1517, 1517, 1540, 1480, 1480, 1480, 1480, 1541, 1480,
854      1530, 1542, 1542, 1480, 1480, 1480, 1509, 1509, 1532, 1480,
855      1480, 1480, 1533, 1511, 1511, 1511, 1480, 1480, 1511, 1536,
856      1514, 1480, 1480, 1514, 1514, 1480, 1480, 1514, 1515, 1480,
857      1480, 1480, 1539, 1517, 1517, 1517, 1540, 1480, 1541, 1480,
858      1530, 1542, 1542, 1480, 1480, 1480, 1480, 1509, 1509, 1532,
859      1480, 1480, 1533, 1511, 1511, 1511, 1480, 1480, 1480, 1480,
860      1511, 1480, 1480, 1514, 1480, 1480, 1480, 1514, 1514, 1480,
861      1480, 1480, 1480, 1514, 1515, 1480, 1539, 1480, 1480, 1517,
862      1517, 1540, 1480, 1541, 1480, 1530, 1542, 1542, 1480, 1509,
863
864      1509, 1532, 1480, 1480, 1511, 1511, 1511, 1480, 1480, 1480,
865      1480, 1511, 1480, 1480, 1514, 1514, 1514, 1480, 1480, 1480,
866      1480, 1514, 1515, 1480, 1539, 1480, 1480, 1480, 1480, 1480,
867      1517, 1480, 1480, 1480, 1541, 1530, 1530, 1530, 1530, 1530,
868      1530, 1542, 1542, 1480, 1480, 1509, 1480, 1480, 1511, 1511,
869      1511, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1514, 1514,
870      1514, 1480, 1480, 1480, 1480, 1515, 1515, 1480, 1480, 1480,
871      1480, 1480, 1480, 1480, 1480, 1480, 1530, 1530, 1530, 1530,
872      1530, 1530, 1530, 1542, 1542, 1480, 1480, 1480, 1480, 1480,
873      1511, 1511, 1511, 1480, 1480, 1480, 1514, 1514, 1514, 1480,
874
875      1480, 1480, 1515, 1515, 1480, 1480, 1480, 1530, 1530, 1530,
876      1530, 1530, 1530, 1530, 1542, 1542, 1480, 1480, 1480, 1480,
877      1480, 1511, 1511, 1511, 1514, 1480, 1480, 1514, 1515, 1515,
878      1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1542, 1542,
879      1542, 1480, 1480, 1480, 1511, 1511, 1511, 1511, 1514, 1480,
880      1480, 1480, 1514, 1480, 1480, 1515, 1480, 1480, 1515, 1530,
881      1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1542, 1542,
882      1542, 1543, 1544, 1511, 1511, 1511, 1511, 1480, 1480, 1480,
883      1480, 1480, 1480, 1480, 1515, 1480, 1480, 1480, 1515, 1530,
884      1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1542,
885
886      1545, 1546, 1543, 1544, 1511, 1511, 1511, 1511, 1480, 1480,
887      1480, 1480, 1480, 1480, 1515, 1515, 1530, 1530, 1530, 1530,
888      1530, 1530, 1530, 1530, 1530, 1530, 1545, 1542, 1547, 1546,
889      1548, 1542, 1511, 1511, 1511, 1511, 1480, 1480, 1480, 1480,
890      1515, 1515, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530,
891      1530, 1530, 1547, 1480, 1548, 1542, 1480, 1480, 1480, 1480,
892      1480, 1480, 1511, 1480, 1480, 1480, 1480, 1480, 1480, 1515,
893      1515, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530,
894      1530, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480,
895      1480, 1511, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1515,
896
897      1515, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530,
898      1530, 1480, 1511, 1480, 1480, 1480, 1480, 1515, 1515, 1530,
899      1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1511,
900      1480, 1480, 1480, 1480, 1515, 1515, 1530, 1530, 1530, 1530,
901      1530, 1530, 1530, 1530, 1530, 1530, 1511, 1480, 1480, 1480,
902      1480, 1515, 1515, 1530, 1530, 1530, 1530, 1530, 1530, 1530,
903      1530, 1530, 1530, 1530, 1530, 1530, 1480, 1480, 1480, 1480,
904      1480, 1480, 1515, 1515, 1530, 1530, 1530, 1530, 1530, 1530,
905      1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1480, 1480,
906      1480, 1480, 1480, 1515, 1515, 1530, 1530, 1530, 1530, 1530,
907
908      1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530,
909      1515, 1515, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530,
910      1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1515,
911      1515, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530,
912      1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530,
913      1530, 1515, 1515, 1530, 1530, 1530, 1530, 1530, 1530, 1530,
914      1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530,
915      1530, 1530, 1530, 1515, 1515, 1530, 1530, 1530, 1530, 1530,
916      1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530,
917      1530, 1530, 1530, 1530, 1530, 1515, 1515, 1530, 1530, 1530,
918
919      1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530,
920      1530, 1530, 1530, 1530, 1530, 1530, 1530, 1480, 1480, 1480,
921      1480, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530,
922      1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530,
923      1530, 1480, 1480, 1480, 1480, 1480, 1480, 1530, 1530, 1530,
924      1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530,
925      1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530,
926      1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530,
927      1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530,
928      1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530,
929
930      1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530,
931      1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530,
932      1530, 1530, 1530, 1530, 1530, 1530, 1530, 1480, 1530, 1530,
933      1530, 1480, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1480,
934      1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1530,
935      1530, 1530, 1530, 1530, 1480, 1530, 1530, 1530, 1530, 1530,
936      1530, 1530, 1530, 1530, 1530, 1480, 1530, 1530, 1480, 1530,
937      1530, 1530, 1480, 1530, 1480, 1530, 1480, 1530, 1480,    0,
938      1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480,
939      1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480,
940
941      1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480,
942      1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480,
943      1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480,
944      1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480,
945      1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480
946     } ;
947
948 static yyconst flex_int16_t yy_nxt[4202] =
949     {   0,
950      1480,  120,  121,  120,  120,  121,  120,  120,  121,  120,
951       120,  121,  120,  128, 1480,  122,  128,  131,  122,  131,
952       129,  123, 1028,  129,  123,  125,  121,  125,  125,  121,
953       125,  134,  135,  132, 1029,  132,  136,  137,  368,  126,
954       134,  135,  126,  364,  138,  136,  137,  134,  135,  314,
955       139,  280,  136,  138,  134,  135,  365,  139,  315,  136,
956       138,  141,  142,  141,  142,  281,  280,  138,  121,  121,
957       121,  121,  121,  121,  154,  121,  154,  154,  121,  154,
958       282,  283,  144,  283,  662,  144,  370,  369,  155,  371,
959       663,  155,  279,  279,  279,  282,  143,  282,  143,  145,
960
961       146,  121,  146,  145,  145,  145,  145,  145,  145,  145,
962       147,  145,  441,  145,  149,  145,  150,  145,  154,  121,
963       154,  441,  335,  154,  121,  154,  121,  121,  121,  121,
964       121,  121,  156,  336,  443,  145,  145,  156,  441,  368,
965       157,  445,  542,  157,  933,  154,  121,  154,  279,  279,
966       279,  279,  279,  279,  279,  279,  279,  441,  151,  155,
967       152,  145,  146,  121,  146,  145,  145,  145,  145,  145,
968       145,  145,  147,  145,  597,  145,  149,  145,  150,  145,
969       154,  121,  154,  441,  600,  121,  121,  121,  121,  121,
970       121,  154,  121,  154,  155,  288, 1297,  145,  145,  158,
971
972       600,  656,  158,  946,  947,  156,  600,  154,  121,  154,
973       154,  121,  154,  154,  121,  154,  121,  121,  121,  797,
974       151,  156,  152,  441,  159,  283,  713,  159,  289,  751,
975       160,  121,  121,  121,  290,  279,  279,  279,  291,  282,
976       279,  279,  279,  292,  753,  160,  161,  162,  121,  162,
977       161,  161,  161,  161,  161,  161,  161,  163,  161,  441,
978       161,  165,  161,  166,  161,  169,  121,  169,  301, 1296,
979       169,  121,  169,  121,  121,  121,  279,  279,  279,  170,
980       600,  767,  161,  161,  170,  966,  768,  171, 1275,  600,
981       167,  161,  162,  121,  162,  161,  161,  161,  161,  161,
982
983       161,  161,  163,  161,  600,  161,  165,  161,  166,  161,
984       121,  121,  121,  752,  712,  184,  121,  184,  184,  121,
985       184,  279,  279,  279,  171,  769,  780,  161,  161,  185,
986       770,  781,  185,  600,  843,  167,  172,  173,  121,  173,
987       172,  172,  172,  172,  172,  172,  172,  174,  172,  600,
988       172,  176,  172,  177,  172,  121,  121,  121,  842, 1274,
989       121,  121,  121,  184,  121,  184,  184,  121,  184,  186,
990       283,  283,  172,  172,  186,  178,  283,  185,  299, 1028,
991       185,  441,  782,  179,  282,  282,  180,  783,  798,  181,
992       282, 1029,  182,  172,  173,  121,  173,  172,  172,  172,
993
994       172,  172,  172,  172,  174,  172,  441,  172,  176,  172,
995       177,  172,  184,  121,  184,  441,  878,  184,  121,  184,
996       121,  121,  121,  121,  121,  121,  187,  283,  283,  172,
997       172,  187,  178,  283,  186,  310, 1253,  186,  441, 1028,
998       179,  282,  282,  180,  877,  880,  181,  282, 1031,  182,
999       188,  189,  121,  189,  188,  188,  188,  188,  188,  188,
1000       188,  190,  188,  600,  188,  192,  188,  193,  188,  197,
1001       121,  197,  879,  441,  197,  121,  197,  121,  121,  121,
1002       121,  121,  121,  198,  283,  441,  188,  188,  198,  283,
1003       283,  199, 1252,  884,  199,  441,  319,  194,  282,  279,
1004
1005       279,  279, 1073,  282,  282,  279,  279,  279,  883,  195,
1006       188,  189,  121,  189,  188,  188,  188,  188,  188,  188,
1007       188,  190,  188,  908,  188,  192,  188,  193,  188,  208,
1008       121,  208,  300,  294,  208,  121,  208,  121,  121,  121,
1009       121,  121,  121,  209,  283,  441,  188,  188,  209,  283,
1010      1231,  210,  441,  283,  210, 1230,  325,  194,  282,  279,
1011       279,  279, 1075,  282,  279,  279,  279,  282,  441,  195,
1012       200,  201,  121,  201,  200,  200,  200,  200,  200,  200,
1013       200,  202,  200,  934,  200,  204,  200,  205,  200,  222,
1014       121,  222,  441,  320,  222,  121,  222,  121,  121,  121,
1015
1016       121,  121,  121,  223,  306,  600,  200,  200,  223,  914,
1017      1212,  186,  441, 1211,  186, 1195,  441,  206,  200,  201,
1018       121,  201,  200,  200,  200,  200,  200,  200,  200,  202,
1019       200,  909,  200,  204,  200,  205,  200,  222,  121,  222,
1020       885,  441,  222,  121,  222,  222,  121,  222,  222,  121,
1021       222,  223,  441,  931,  200,  200,  223,  962, 1194,  224,
1022      1193,  600,  224,  912,  441,  206,  211,  212,  121,  212,
1023       211,  211,  211,  211,  211,  211,  211,  213,  211,  965,
1024       211,  215,  211,  216,  211,  121,  121,  121,  910,  939,
1025       121,  121,  121,  236,  121,  236,  236,  121,  236,  225,
1026
1027       283,  441,  211,  211,  225,  283,  217,  237,  600,  601,
1028       237, 1192,  329,  218,  282,  219,  279,  279,  279,  282,
1029       441,  441,  220,  211,  212,  121,  212,  211,  211,  211,
1030       211,  211,  211,  211,  213,  211,  913,  211,  215,  211,
1031       216,  211,  121,  121,  121,  302,  968,  121,  121,  121,
1032       236,  121,  236,  236,  121,  236,  238,  283, 1324,  211,
1033       211,  238, 1197,  217,  237,  441, 1174,  237,  441,  600,
1034       218,  282,  219,  279,  279,  279,  279,  279,  279,  220,
1035       226,  227,  121,  227,  226,  226,  226,  226,  226,  226,
1036       226,  228,  226,  441,  226,  230,  226,  231,  226,  236,
1037
1038       121,  236,  911,  915,  236,  121,  236,  121,  121,  121,
1039       121,  121,  121,  239,  441,  441,  226,  226,  239,  283,
1040       283,  238,  232, 1173,  238,  881,  337,  233,  279,  279,
1041       279,  882, 1018,  282,  282,  441,  234,  226,  227,  121,
1042       227,  226,  226,  226,  226,  226,  226,  226,  228,  226,
1043       995,  226,  230,  226,  231,  226,  248,  121,  248,  441,
1044       992,  248,  121,  248,  121,  121,  121,  121,  121,  121,
1045       249,  305,  283,  226,  226,  249,  283,  283,  250,  232,
1046      1172,  250,  600,  343,  233, 1171,  282,  279,  279,  279,
1047       282,  282,  960,  234,  240,  241,  121,  241,  240,  240,
1048
1049       240,  240,  240,  240,  240,  242,  240,  441,  240,  244,
1050       240,  245,  240,  262,  121,  262,  916,  441,  262,  121,
1051       262,  121,  121,  121,  121,  121,  121,  263,  441,  441,
1052       240,  240,  263,  990, 1079,  264,  441,  441,  264, 1121,
1053       441,  246,  240,  241,  121,  241,  240,  240,  240,  240,
1054       240,  240,  240,  242,  240, 1019,  240,  244,  240,  245,
1055       240,  262,  121,  262,  994,  441,  262,  121,  262,  262,
1056       121,  262,  262,  121,  262,  263,  932,  935,  240,  240,
1057       263, 1044, 1170,  265, 1169,  441,  265, 1153,  441,  246,
1058       251,  252,  121,  252,  251,  251,  251,  251,  251,  251,
1059
1060       251,  253,  251, 1020,  251,  255,  251,  256,  251,  121,
1061       121,  121,  936,  441,  121,  121,  121,  275,  121,  275,
1062       279,  279,  279,  266,  937,  283,  251,  251,  266,  283,
1063       283,  276,  319, 1152,  257,  441,  258,  299,  259,  282,
1064       279,  279,  279,  282,  282, 1300,  260,  251,  252,  121,
1065       252,  251,  251,  251,  251,  251,  251,  251,  253,  251,
1066       441,  251,  255,  251,  256,  251,  275,  121,  275,  279,
1067       279,  279,  300,  301,  320,  302, 1198,  441,  303,  303,
1068       276,  304,  283,  251,  251,  283,  283,  283, 1037,  134,
1069       135,  257,  299,  258,  136,  259,  282, 1038, 1022,  282,
1070
1071       282,  282,  277,  260,  267,  268,  121,  268,  267,  267,
1072       267,  267,  267,  267,  267,  269,  267,  938,  267,  271,
1073       267,  272,  267, 1151,  278,  134,  135,  344,  301,  301,
1074       136,  279,  279,  279,  303,  303,  305,  305,  277,  283,
1075       267,  267,  283,  283,  283,  283,  337,  283,  283, 1150,
1076       348,  343,  355,  282,  441,  355,  282,  282,  282,  282,
1077       278,  282,  282,  273,  267,  268,  121,  268,  267,  267,
1078       267,  267,  267,  267,  267,  269,  267,  283,  267,  271,
1079       267,  272,  267,  356,  300,  301,  441,  302,  320,  344,
1080       283,  282,  441,  306,  279,  279,  279,  320, 1256,  441,
1081
1082       267,  267,  283, 1110,  282,  279,  279,  279,  441,  360,
1083       441,  441,  356,  279,  279,  279,  282,  392,  392,  392,
1084       401,  401,  401,  273,  711,  356,  320,  406,  406,  406,
1085       441,  996,  393, 1017,  441,  402,  411,  411,  411,  424,
1086       424,  424,  407,  455,  455,  455,  455,  455,  455, 1200,
1087      1023,  412, 1024, 1149,  425,  467,  467,  467,  866,  457,
1088      1039, 1148,  457,  467,  467,  467,  392,  392,  392, 1040,
1089      1021,  469,  867,  472,  472,  472, 1147,  473,  441,  469,
1090       474,  393,  479,  479,  479,  479,  479,  479,  401,  401,
1091       401,  488,  488,  488,  458,  484,  484,  484,  481,  485,
1092
1093       441,  481,  486,  402,  488,  488,  488,  490,  406,  406,
1094       406, 1123, 1047,  470,  492,  492,  492,  441,  493, 1136,
1095       490,  494,  441,  407,  495,  495,  495,  495,  495,  495,
1096       411,  411,  411,  506,  506,  506,  482,  500,  500,  500,
1097       497,  501, 1135,  497,  502,  412,  506,  506,  506,  508,
1098       510,  510,  510,  513,  513,  513, 1134, 1043,  491,  515,
1099       515,  515,  508, 1201,  441,  511,  441, 1028,  514,  515,
1100       515,  515,  424,  424,  424,  517, 1031,  441,  498,  520,
1101       520,  520, 1046,  521,  441,  517,  522,  425,  523,  523,
1102       523, 1234,  509,  523,  523,  523,  531,  531,  531,  531,
1103
1104       531,  531, 1051,  441,  525,  537,  537,  537,  441,  525,
1105      1048, 1133,  533,  441, 1103,  533,  537,  537,  537, 1050,
1106       518,  539,  455,  455,  455,  455,  455,  455,  455,  455,
1107       455, 1081,  539,  559,  559,  559,  441,  441,  457,  526,
1108      1132,  457,  441, 1105,  457,  467,  467,  467,  560,  467,
1109       467,  467, 1080,  534, 1131,  467,  467,  467,  608,  608,
1110       608,  469,  479,  479,  479,  469,  551,  479,  479,  479,
1111       540,  469,  472,  472,  472, 1278,  473, 1410,  481,  474,
1112       479,  479,  479,  481,  484,  484,  484,  441,  485,  441,
1113       441,  486,  488,  488,  488,  561,  481,  488,  488,  488,
1114
1115       488,  488,  488,  492,  492,  492, 1111,  493,  490,  441,
1116       494, 1130,  441,  490,  441, 1109,  490,  495,  495,  495,
1117       495,  495,  495,  495,  495,  495, 1176,  500,  500,  500,
1118      1104,  501, 1108,  497,  502,  567,  497,  441,  441,  497,
1119       506,  506,  506,  506,  506,  506,  506,  506,  506, 1127,
1120       441,  570,  510,  510,  510, 1120,  508,  441,  441,  508,
1121       441, 1145,  508,  441,  577,  577,  577,  511,  578, 1166,
1122       441,  579,  513,  513,  513,  581,  581,  581, 1124,  582,
1123       571, 1125,  583,  515,  515,  515, 1122,  514,  515,  515,
1124       515,  515,  515,  515,  441,  441,  576,  441, 1205,  517,
1125
1126      1128,  520,  520,  520,  517,  521, 1178,  517,  522,  523,
1127       523,  523,  523,  523,  523,  523,  523,  523,  588,  588,
1128       588,  531,  531,  531, 1235,  525,  441, 1119,  525,  441,
1129       441,  525,  441,  589,  531,  531,  531,  533,  531,  531,
1130       531,  537,  537,  537,  537,  537,  537, 1129,  584, 1139,
1131       533,  537,  537,  537,  533, 1118, 1238,  539,  441, 1279,
1132       539,  599,  599,  599, 1146,  586,  441,  539,  455,  455,
1133       455,  610,  610,  610,  628,  628,  628,  600,  601,  559,
1134       559,  559, 1126,  441,  457,  441,  615,  615,  615,  592,
1135       616, 1157, 1117,  617,  560,  595,  467,  467,  467,  622,
1136
1137       622,  622,  624,  624,  624,  479,  479,  479,  629,  629,
1138       629, 1116,  469,  441,  623,  441, 1282,  625,  488,  488,
1139       488,  481,  441,  630,  607,  495,  495,  495,  636,  636,
1140       636,  506,  506,  506,  490,  515,  515,  515, 1137,  626,
1141       441,  497,  441,  637,  618, 1301,  441,  508,  577,  577,
1142       577,  517,  578,  441, 1177,  579,  581,  581,  581, 1143,
1143       582,  627, 1141,  583, 1115,  638,  523,  523,  523, 1142,
1144       631,  588,  588,  588,  652,  652,  652,  441,  639, 1179,
1145       441,  632,  525,  645,  645,  645,  589,  646, 1183,  653,
1146       647,  641,  531,  531,  531,  537,  537,  537,  599,  599,
1147
1148       599,  455,  455,  455,  608,  608,  608, 1239,  533,  441,
1149      1114,  539,  441,  643,  600, 1162,  441,  457,  610,  610,
1150       610,  667,  667,  667,  667,  667,  667,  615,  615,  615,
1151       441,  616,  650, 1154,  617,  467,  467,  467, 1113, 1246,
1152       657,  628,  628,  628,  664,  622,  622,  622,  624,  624,
1153       624,  469,  654,  629,  629,  629,  658,  673,  673,  673,
1154       623,  674,  441,  625,  675,  676,  676,  676,  630,  677,
1155       441, 1206,  678, 1196,  441,  668, 1175,  680,  680,  680,
1156       682,  682,  682,  441,  683,  441, 1112,  684,  685,  685,
1157       685, 1160,  669,  681,  495,  495,  495,  636,  636,  636,
1158
1159      1161,  691,  691,  691,  686,  692,  441,  441,  693, 1101,
1160       497,  441,  637,  695,  695,  695,  515,  515,  515,  523,
1161       523,  523,  441,  645,  645,  645, 1226,  646, 1181,  696,
1162       647,  700,  517, 1247,  441,  525,  687,  531,  531,  531,
1163       652,  652,  652,  706,  706,  706, 1180,  707,  441,  441,
1164       708,  441, 1227,  533, 1182,  653, 1100,  441,  698,  537,
1165       537,  537,  715,  715,  715,  455,  455,  455,  667,  667,
1166       667,  722,  722,  722, 1099,  539, 1098,  716, 1257,  704,
1167       441,  457,  467,  467,  467,  673,  673,  673, 1184,  674,
1168      1185, 1202,  675,  676,  676,  676, 1207,  677,  469,  441,
1169
1170       678,  680,  680,  680,  441,  682,  682,  682,  709,  683,
1171      1203,  441,  684,  685,  685,  685,  719,  681,  495,  495,
1172       495, 1325,  441,  723,  732,  732,  732, 1097,  441,  686,
1173      1096,  691,  691,  691,  497,  692, 1304,  441,  693,  733,
1174       695,  695,  695,  740,  740,  740,  523,  523,  523,  531,
1175       531,  531, 1250,  706,  706,  706,  696,  707,  441,  741,
1176       708,  734,  525, 1251, 1092,  533,  537,  537,  537,  715,
1177       715,  715,  730,  755,  755,  755, 1208,  756, 1054,  441,
1178       757,  441,  539,  441,  716,  441,  743,  455,  455,  455,
1179       761,  761,  761,  762,  762,  762,  722,  722,  722, 1258,
1180
1181       467,  467,  467,  457,  747,  772,  772,  772,  749,  732,
1182       732,  732,  441,  775,  775,  775,  469,  776, 1228, 1214,
1183       777,  773, 1229, 1215,  733, 1082,  441,  740,  740,  740,
1184       523,  523,  523,  788,  788,  788,  531,  531,  531, 1270,
1185       441,  760,  763,  741, 1054, 1071,  525, 1070,  789,  537,
1186       537,  537,  533,  796,  796,  796,  799,  799,  799,  755,
1187       755,  755,  441,  756, 1218,  539,  757, 1271,  441,  441,
1188       441,  455,  455,  455,  761,  761,  761,  762,  762,  762,
1189       803,  803,  803,  824,  824,  824,  787,  457,  772,  772,
1190       772,  792,  813,  813,  813,  441,  804, 1294,  441,  794,
1191
1192      1219,  775,  775,  775,  773,  776, 1224,  814,  777,  523,
1193       523,  523,  788,  788,  788,  826,  826,  826, 1069,  827,
1194       802,  441,  828, 1350, 1068,  525,  441,  789, 1283,  815,
1195       829,  829,  829,  832,  832,  832,  834,  834,  834,  537,
1196       537,  537,  799,  799,  799,  830,  844,  844,  844,  833,
1197       847,  847,  847, 1067,  441,  539,  803,  803,  803,  825,
1198      1236,  845,  854,  854,  854,  441,  848,  813,  813,  813,
1199      1260, 1066,  804,  441,  856,  856,  856,  855,  857,  441,
1200       441,  858,  814,  441,  864,  864,  864,  824,  824,  824,
1201       868,  868,  868, 1237,  441,  835,  796,  796,  796,  865,
1202
1203       826,  826,  826, 1225,  827,  441,  869,  828,  829,  829,
1204       829, 1248,  441,  870,  870,  870,  441,  871, 1244, 1245,
1205       872, 1249, 1054,  830,  873,  873,  873,  832,  832,  832,
1206       834,  834,  834, 1254,  836,  875,  875,  875,  441,  874,
1207       441,  837,  838,  833,  839,  844,  844,  844,  840, 1261,
1208       841,  876,  886,  886,  886, 1255,  887,  441,  441,  888,
1209       845,  889,  889,  889,  847,  847,  847,  854,  854,  854,
1210       894,  894,  894,  441,  895,  441,  890,  896,  441, 1259,
1211       848, 1266,  855,  856,  856,  856,  441,  857, 1413, 1305,
1212       858,  864,  864,  864,  900,  900,  900, 1262,  901,  441,
1213
1214       441,  902,  868,  868,  868, 1295,  865,  870,  870,  870,
1215       441,  871, 1263, 1272,  872,  873,  873,  873,  869,  905,
1216       905,  905,  441,  906,  441, 1264,  907,  875,  875,  875,
1217       874,  886,  886,  886, 1054,  887,  441, 1273,  888,  889,
1218       889,  889, 1042,  876,  917,  917,  917,  441,  918, 1265,
1219       441,  919,  441, 1041,  890,  920,  920,  920,  894,  894,
1220       894,  441,  895, 1267, 1370,  896,  926,  926,  926,  441,
1221       921,  900,  900,  900,  441,  901, 1036,  441,  902, 1035,
1222      1268,  927,  905,  905,  905,  441,  906,  441, 1280,  907,
1223      1281, 1269,  922,  940,  940,  940,  917,  917,  917, 1034,
1224
1225       918,  441, 1276,  919,  920,  920,  920, 1288,  941,  600,
1226       942,  942,  942, 1033,  943, 1277,  441,  944, 1284,  921,
1227       926,  926,  926,  950,  950,  950, 1285,  951, 1286,  441,
1228       952,  954,  954,  954, 1290,  927,  957,  957,  957,  961,
1229       961,  961,  963,  963,  963,  441,  955,  967,  967,  967,
1230       441,  958, 1016,  441,  964,  441, 1015, 1287,  441,  969,
1231       969,  969, 1008,  441,  940,  940,  940, 1289,  956,  978,
1232       978,  978, 1302,  959,  970,  600, 1026, 1026, 1026,  941,
1233       600,  971,  971,  971,  979,  972, 1291,  441,  973,  942,
1234       942,  942,  441,  943, 1292,  441,  944,  600,  950,  950,
1235
1236       950,  441,  951, 1007, 1006,  952,  980,  980,  980,  954,
1237       954,  954,  982,  982,  982,  441,  983,  441, 1005,  984,
1238       441,  981,  989,  441,  955,  957,  957,  957,  986,  986,
1239       986, 1293,  987, 1298,  441,  988,  961,  961,  961, 1299,
1240       958,  963,  963,  963,  967,  967,  967,  998,  998,  998,
1241      1303,  441,  441, 1306,  969,  969,  969,  441, 1307,  441,
1242       441, 1316,  441,  441,  985,  978,  978,  978,  991,  970,
1243       600,  441, 1308,  993,  977,  976,  997, 1000, 1000, 1000,
1244       979, 1001,  441, 1312, 1002,  441, 1310,  971,  971,  971,
1245       441,  972,  441,  600,  973, 1009, 1009, 1009, 1311, 1010,
1246
1247      1309,  999, 1011,  600,  598,  598,  598,  598,  598,  598,
1248       598,  598,  598,  975, 1313,  598,  974, 1322,  598,  598,
1249       598,  600,  598,  980,  980,  980, 1012, 1012, 1012, 1317,
1250      1013,  441, 1371, 1014,  953,  998,  998,  998,  981,  441,
1251       598,  598,  598,  598,  598,  598,  598,  598,  598,  598,
1252       598,  441,  441,  598,  441,  949,  598,  598,  598,  600,
1253       598,  982,  982,  982, 1314,  983,  441, 1025,  984,  986,
1254       986,  986, 1315,  987,  441,  441,  988,  441,  598,  598,
1255      1000, 1000, 1000,  441, 1001, 1340, 1338, 1002, 1009, 1009,
1256      1009,  948, 1010, 1323,  441, 1011,  600,  598,  598,  598,
1257
1258       598,  598, 1032,  598,  598,  598, 1339,  945,  598,  930,
1259      1330,  598,  598,  598,  600,  598, 1012, 1012, 1012, 1326,
1260      1013, 1327,  929, 1014, 1328, 1329,  928, 1341, 1045, 1045,
1261      1045,  441,  441,  598,  598,  598,  598,  598,  598,  598,
1262       598,  598,  598, 1032,  441,  925,  598,  441,  441,  598,
1263       598,  598,  600,  598, 1049, 1049, 1049, 1026, 1026, 1026,
1264      1056, 1056, 1056, 1057, 1057, 1057, 1059, 1059, 1059,  441,
1265       441,  598,  598,  441, 1331, 1332,  600,  601, 1058,  441,
1266       441, 1060, 1061, 1061, 1061, 1064, 1064, 1064,  924, 1052,
1267      1072, 1072, 1072, 1045, 1045, 1045, 1333, 1062, 1336,  441,
1268
1269      1065, 1076, 1076, 1076, 1420,  441,  441,  441,  923,  441,
1270      1077, 1077, 1077, 1049, 1049, 1049,  441,  441, 1441, 1063,
1271      1056, 1056, 1056, 1334, 1335, 1074,  441, 1337,  441,  441,
1272       441, 1057, 1057, 1057,  441,  904,  600, 1083, 1083, 1083,
1273      1352, 1084,  441, 1348, 1085, 1078, 1058, 1364, 1059, 1059,
1274      1059, 1086, 1086, 1086,  441, 1087,  441, 1456, 1088, 1061,
1275      1061, 1061,  657, 1060, 1089, 1089, 1089, 1351, 1090,  441,
1276       441, 1091, 1349,  441, 1062, 1064, 1064, 1064, 1093, 1093,
1277      1093,  441, 1094,  441,  441, 1095, 1072, 1072, 1072, 1353,
1278      1065, 1076, 1076, 1076, 1077, 1077, 1077, 1083, 1083, 1083,
1279
1280       441, 1084,  441, 1360, 1085,  441, 1354,  441, 1355, 1362,
1281       441,  441, 1086, 1086, 1086,  903, 1087, 1356, 1102, 1088,
1282      1089, 1089, 1089, 1106, 1090,  441, 1107, 1091, 1093, 1093,
1283      1093,  441, 1094, 1361,  899, 1095, 1138, 1138, 1138, 1140,
1284      1140, 1140, 1144, 1144, 1144,  441, 1138, 1138, 1138, 1357,
1285      1155, 1374,  441, 1156,  441,  441, 1363, 1365,  441, 1140,
1286      1140, 1140,  441, 1158,  441, 1375, 1159, 1144, 1144, 1144,
1287       441, 1163,  441, 1410, 1164,  441, 1165, 1165, 1165, 1167,
1288      1167, 1167,  441,  441, 1165, 1165, 1165,  898, 1186, 1358,
1289       441, 1187,  441,  441, 1168, 1188, 1188, 1188, 1359, 1413,
1290
1291       441, 1167, 1167, 1167, 1366, 1189, 1189, 1189,  441, 1190,
1292      1382,  441, 1191, 1199, 1199, 1199, 1168, 1204, 1204, 1204,
1293      1188, 1188, 1188, 1368, 1209, 1367,  897, 1210,  441,  441,
1294      1189, 1189, 1189,  441, 1190,  441,  441, 1191, 1213, 1213,
1295      1213, 1199, 1199, 1199,  893, 1216, 1386,  441, 1217, 1220,
1296      1220, 1220,  441,  441,  441,  892,  441,  441, 1221, 1221,
1297      1221, 1369, 1204, 1204, 1204,  441, 1222, 1372,  891, 1223,
1298       863, 1318, 1318, 1318,  441, 1213, 1213, 1213,  441, 1232,
1299      1376,  862, 1233, 1220, 1220, 1220, 1319, 1240, 1373,  861,
1300      1241,  441, 1383, 1221, 1221, 1221,  441, 1242,  441,  441,
1301
1302      1243, 1320, 1320, 1320, 1318, 1318, 1318,  860, 1387,  441,
1303      1342, 1342, 1342,  441, 1343,  441, 1321, 1344,  441, 1319,
1304      1320, 1320, 1320, 1345, 1345, 1345,  441, 1346,  441, 1377,
1305      1347, 1378, 1342, 1342, 1342, 1321, 1343,  441,  441, 1344,
1306      1345, 1345, 1345,  441, 1346, 1392, 1379, 1347,  441,  441,
1307      1380,  441,  441, 1384, 1393,  441,  441,  441, 1381,  441,
1308       441,  441, 1385,  441, 1400, 1401,  441,  859,  441,  441,
1309      1388,  441,  441, 1390, 1391, 1389, 1394,  441, 1408,  441,
1310      1395,  853,  441, 1409,  441,  441,  441,  441, 1396, 1397,
1311       441, 1398, 1399, 1402, 1403,  441,  441,  441, 1414,  441,
1312
1313       441, 1415, 1406, 1404, 1407,  441, 1405, 1411,  441, 1412,
1314      1416, 1417, 1418, 1420,  441,  441,  441,  441,  441,  441,
1315      1419, 1421,  441,  441, 1422, 1425, 1423, 1427, 1427, 1427,
1316      1431, 1431, 1431,  441,  441,  441,  441, 1424, 1441, 1426,
1317       441,  441,  441, 1428, 1433,  441, 1432,  441, 1434, 1439,
1318      1439, 1439, 1427, 1427, 1427, 1429, 1430,  441, 1435, 1436,
1319       441,  441, 1431, 1431, 1431, 1440, 1442, 1443, 1428,  441,
1320       441,  441,  441,  441, 1456, 1437, 1438,  441, 1432,  441,
1321      1444, 1459, 1446,  441,  852, 1445, 1447, 1439, 1439, 1439,
1322      1454, 1454, 1454,  441,  441,  441, 1459, 1452, 1453,  441,
1323
1324      1448,  441, 1457, 1440, 1458,  441, 1455, 1464, 1467, 1449,
1325      1450, 1451,  851, 1464,  850,  849,  441,  441, 1467, 1460,
1326      1461, 1454, 1454, 1454, 1462,  441, 1463, 1465, 1465, 1465,
1327       441, 1468, 1468, 1468, 1470, 1470, 1471, 1455,  846,  831,
1328      1471,  823,  822, 1466,  441,  821,  441, 1469,  441,  441,
1329      1472, 1472, 1472, 1465, 1465, 1465, 1474, 1474, 1474, 1468,
1330      1468, 1468, 1476, 1476, 1476,  820, 1473,  819,  818, 1466,
1331       817,  816, 1475,  812,  811, 1469,  810,  809, 1477, 1478,
1332      1478, 1478, 1472, 1472, 1472, 1474, 1474, 1474, 1476, 1476,
1333      1476, 1478, 1478, 1478,  808, 1479,  807,  806, 1473,  805,
1334
1335       801, 1475,  800,  795, 1477,  793,  791, 1479,  118,  118,
1336       118,  118,  118,  118,  118,  119,  119,  119,  119,  119,
1337       119,  119,  124,  124,  124,  124,  124,  124,  124,  127,
1338       127,  127,  127,  127,  127,  127,  130,  130,  130,  130,
1339       130,  130,  130,  133,  133,  133,  133,  133,  133,  133,
1340       140,  140,  140,  140,  140,  140,  140,  148,  148,  148,
1341       148,  148,  148,  148,  153,  153,  153,  153,  153,  153,
1342       153,  164,  164,  164,  164,  164,  164,  164,  168,  168,
1343       168,  168,  168,  168,  168,  175,  175,  175,  175,  175,
1344       175,  175,  183,  183,  183,  183,  183,  183,  183,  191,
1345
1346       191,  191,  191,  191,  191,  191,  196,  196,  196,  196,
1347       196,  196,  196,  203,  203,  203,  203,  203,  203,  203,
1348       207,  207,  207,  207,  207,  207,  207,  214,  214,  214,
1349       214,  214,  214,  214,  221,  221,  221,  221,  221,  221,
1350       221,  229,  229,  229,  229,  229,  229,  229,  235,  235,
1351       235,  235,  235,  235,  235,  243,  243,  243,  243,  243,
1352       243,  243,  247,  247,  247,  247,  247,  247,  247,  254,
1353       254,  254,  254,  254,  254,  254,  261,  261,  261,  261,
1354       261,  261,  261,  270,  270,  270,  270,  270,  270,  270,
1355       274,  274,  274,  274,  274,  274,  274,  133,  133,  133,
1356
1357       133,  133,  133,  133,  296,  296,  296,  790,  296,  308,
1358       308,  308,  786,  308,  312,  312,  312,  785,  312,  322,
1359       322,  322,  784,  322,  327,  327,  327,  779,  327,  331,
1360       331,  331,  778,  331,  339,  339,  339,  774,  339,  346,
1361       346,  346,  771,  346,  350,  350,  350,  766,  350,  358,
1362       358,  358,  765,  358,  363,  363,  363,  363,  363,  764,
1363       363,  379,  759,  379,  389,  758,  389,  398,  754,  398,
1364       404,  750,  404,  408,  748,  408,  416,  746,  416,  421,
1365       745,  421,  426,  744,  426,  432,  742,  432,  436,  739,
1366       436,  440,  440,  440,  440,  440,  440,  440,  446,  738,
1367
1368       737,  446,  456,  456,  456,  456,  456,  456,  468,  468,
1369       468,  468,  468,  468,  480,  480,  480,  480,  480,  480,
1370       489,  489,  489,  489,  489,  489,  496,  496,  496,  496,
1371       496,  496,  507,  507,  507,  507,  507,  507,  516,  516,
1372       516,  516,  516,  516,  524,  524,  524,  524,  524,  524,
1373       532,  532,  532,  532,  532,  532,  538,  538,  538,  538,
1374       538,  538,  598,  598,  598,  598,  598,  598,  598, 1003,
1375      1003, 1003, 1003, 1003, 1003, 1003, 1004, 1004, 1004, 1004,
1376      1004, 1004, 1004, 1027, 1027, 1027, 1027, 1027, 1027, 1027,
1377      1030, 1030, 1030, 1030, 1030, 1030, 1030, 1053, 1053, 1053,
1378
1379      1053, 1053, 1053, 1053, 1055, 1055, 1055, 1055, 1055, 1055,
1380      1055,  736,  735,  731,  729,  728,  727,  726,  725,  724,
1381       721,  720,  718,  717,  714,  710,  705,  703,  702,  701,
1382       699,  697,  694,  690,  689,  688,  679,  672,  671,  670,
1383       668,  666,  665,  661,  660,  659,  600,  655,  651,  649,
1384       648,  644,  642,  640,  635,  634,  633,  621,  620,  619,
1385       614,  613,  612,  611,  609,  606,  605,  604,  603,  602,
1386       596,  594,  593,  591,  590,  587,  585,  580,  575,  574,
1387       573,  572,  569,  568,  566,  565,  564,  563,  562,  558,
1388       557,  556,  555,  554,  553,  552,  550,  549,  548,  547,
1389
1390       546,  545,  544,  543,  441,  541,  536,  535,  530,  529,
1391       528,  527,  519,  512,  505,  504,  503,  499,  487,  483,
1392       478,  477,  476,  475,  471,  466,  465,  464,  463,  462,
1393       461,  460,  459,  454,  453,  452,  451,  450,  449,  448,
1394       447,  444,  442,  441,  439,  438,  437,  435,  434,  433,
1395       431,  430,  429,  428,  427,  423,  422,  420,  419,  418,
1396       417,  415,  414,  413,  410,  409,  405,  403,  400,  399,
1397       397,  396,  395,  394,  391,  390,  388,  387,  386,  385,
1398       384,  383,  382,  381,  380,  378,  377,  376,  375,  374,
1399       373,  372,  367,  364,  366,  362,  361,  359,  357,  354,
1400
1401       353,  352,  351,  349,  347,  345,  342,  341,  340,  338,
1402       334,  333,  332,  330,  328,  326,  324,  323,  321,  318,
1403       317,  316,  313,  311,  309,  307,  298,  297,  295,  293,
1404       287,  286,  287,  286,  285,  284, 1480,  117, 1480, 1480,
1405      1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480,
1406      1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480,
1407      1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480,
1408      1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480,
1409      1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480,
1410      1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480,
1411
1412      1480
1413     } ;
1414
1415 static yyconst flex_int16_t yy_chk[4202] =
1416     {   0,
1417         0,    3,    3,    3,    4,    4,    4,    5,    5,    5,
1418         6,    6,    6,    9,    0,    3,   10,   11,    4,   12,
1419         9,    5, 1001,   10,    6,    7,    7,    7,    8,    8,
1420         8,   13,   13,   11, 1001,   12,   13,   13,  288,    7,
1421        14,   14,    8,  280,   13,   14,   14,   15,   15,  179,
1422        15,  122,   15,   14,   16,   16,  280,   16,  179,   16,
1423        15,   17,   17,   18,   18,  122,  123,   16,   19,   19,
1424        19,   20,   20,   20,   23,   23,   23,   24,   24,   24,
1425       123,  126,   19,  149,  606,   20,  289,  288,   23,  289,
1426       606,   24,  120,  120,  120,  126,   17,  149,   18,   21,
1427
1428        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
1429        21,   21,  910,   21,   21,   21,   21,   21,   25,   25,
1430        25,  365,  220,   26,   26,   26,   27,   27,   27,   28,
1431        28,   28,   25,  220,  365,   21,   21,   26,  443,  368,
1432        27,  368,  443,   28,  910,   29,   29,   29,  121,  121,
1433       121,  125,  125,  125,  146,  146,  146,  542,   21,   29,
1434        21,   22,   22,   22,   22,   22,   22,   22,   22,   22,
1435        22,   22,   22,   22,  542,   22,   22,   22,   22,   22,
1436        30,   30,   30,  597,  752,   31,   31,   31,   32,   32,
1437        32,   33,   33,   33,   30,  136, 1275,   22,   22,   31,
1438
1439       658,  597,   32,  923,  923,   33,  713,   34,   34,   34,
1440        35,   35,   35,   36,   36,   36,   37,   37,   37,  752,
1441        22,   34,   22,  711,   35,  160,  658,   36,  136,  711,
1442        37,   38,   38,   38,  136,  154,  154,  154,  136,  160,
1443       162,  162,  162,  136,  713,   38,   39,   39,   39,   39,
1444        39,   39,   39,   39,   39,   39,   39,   39,   39,  936,
1445        39,   39,   39,   39,   39,   41,   41,   41,  160, 1274,
1446        42,   42,   42,   43,   43,   43,  169,  169,  169,   41,
1447       657,  727,   39,   39,   42,  936,  727,   43, 1253,  712,
1448        39,   40,   40,   40,   40,   40,   40,   40,   40,   40,
1449
1450        40,   40,   40,   40,  798,   40,   40,   40,   40,   40,
1451        44,   44,   44,  712,  657,   47,   47,   47,   48,   48,
1452        48,  173,  173,  173,   44,  728,  736,   40,   40,   47,
1453       728,  736,   48,  797,  798,   40,   45,   45,   45,   45,
1454        45,   45,   45,   45,   45,   45,   45,   45,   45,  753,
1455        45,   45,   45,   45,   45,   49,   49,   49,  797, 1252,
1456        50,   50,   50,   51,   51,   51,   52,   52,   52,   49,
1457       165,  159,   45,   45,   50,   45,  176,   51,  159, 1027,
1458        52,  837,  737,   45,  165,  159,   45,  737,  753,   45,
1459       176, 1027,   45,   46,   46,   46,   46,   46,   46,   46,
1460
1461        46,   46,   46,   46,   46,   46,  836,   46,   46,   46,
1462        46,   46,   53,   53,   53,  839,  837,   54,   54,   54,
1463        55,   55,   55,   56,   56,   56,   53,  192,  170,   46,
1464        46,   54,   46,  204,   55,  170, 1231,   56,  838, 1002,
1465        46,  192,  170,   46,  836,  839,   46,  204, 1002,   46,
1466        57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
1467        57,   57,   57,  842,   57,   57,   57,   57,   57,   59,
1468        59,   59,  838,  841,   60,   60,   60,   61,   61,   61,
1469        62,   62,   62,   59,  144, 1044,   57,   57,   60,  187,
1470       171,   61, 1230,  842,   62,  877,  187,   57,  144,  184,
1471
1472       184,  184, 1044,  187,  171,  189,  189,  189,  841,   57,
1473        58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
1474        58,   58,   58,  877,   58,   58,   58,   58,   58,   65,
1475        65,   65,  171,  144,   66,   66,   66,   67,   67,   67,
1476        68,   68,   68,   65,  186, 1046,   58,   58,   66,  198,
1477      1212,   67,  911,  199,   68, 1211,  198,   58,  186,  197,
1478       197,  197, 1046,  198,  201,  201,  201,  199,  883,   58,
1479        63,   63,   63,   63,   63,   63,   63,   63,   63,   63,
1480        63,   63,   63,  911,   63,   63,   63,   63,   63,   71,
1481        71,   71,  878,  186,   72,   72,   72,   73,   73,   73,
1482
1483        74,   74,   74,   71,  199,  843,   63,   63,   72,  883,
1484      1195,   73,  908, 1194,   74, 1174,  933,   63,   64,   64,
1485        64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
1486        64,  878,   64,   64,   64,   64,   64,   75,   75,   75,
1487       843,  881,   76,   76,   76,   77,   77,   77,   78,   78,
1488        78,   75,  935,  908,   64,   64,   76,  933, 1173,   77,
1489      1171,  915,   78,  881,  879,   64,   69,   69,   69,   69,
1490        69,   69,   69,   69,   69,   69,   69,   69,   69,  935,
1491        69,   69,   69,   69,   69,   79,   79,   79,  879,  915,
1492        80,   80,   80,   83,   83,   83,   84,   84,   84,   79,
1493
1494       210,  882,   69,   69,   80,  209,   69,   83, 1028, 1028,
1495        84, 1169,  209,   69,  210,   69,  208,  208,  208,  209,
1496       938, 1176,   69,   70,   70,   70,   70,   70,   70,   70,
1497        70,   70,   70,   70,   70,   70,  882,   70,   70,   70,
1498        70,   70,   85,   85,   85,  210,  938,   86,   86,   86,
1499        87,   87,   87,   88,   88,   88,   85,  215, 1300,   70,
1500        70,   86, 1176,   70,   87, 1300, 1153,   88,  880,  884,
1501        70,  215,   70,  212,  212,  212,  222,  222,  222,   70,
1502        81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
1503        81,   81,   81,  840,   81,   81,   81,   81,   81,   89,
1504
1505        89,   89,  880,  884,   90,   90,   90,   91,   91,   91,
1506        92,   92,   92,   89,  991,  965,   81,   81,   90,  224,
1507       225,   91,   81, 1152,   92,  840,  224,   81,  227,  227,
1508       227,  840,  991,  224,  225,  962,   81,   82,   82,   82,
1509        82,   82,   82,   82,   82,   82,   82,   82,   82,   82,
1510       965,   82,   82,   82,   82,   82,   95,   95,   95,  931,
1511       962,   96,   96,   96,   97,   97,   97,   98,   98,   98,
1512        95,  225,  230,   82,   82,   96,  239,  244,   97,   82,
1513      1151,   98,  885,  239,   82, 1150,  230,  236,  236,  236,
1514       239,  244,  931,   82,   93,   93,   93,   93,   93,   93,
1515
1516        93,   93,   93,   93,   93,   93,   93,  960,   93,   93,
1517        93,   93,   93,  101,  101,  101,  885, 1050,  102,  102,
1518       102,  103,  103,  103,  104,  104,  104,  101, 1103,  992,
1519        93,   93,  102,  960, 1050,  103,  909,  912,  104, 1103,
1520       964,   93,   94,   94,   94,   94,   94,   94,   94,   94,
1521        94,   94,   94,   94,   94,  992,   94,   94,   94,   94,
1522        94,  105,  105,  105,  964, 1018,  106,  106,  106,  107,
1523       107,  107,  108,  108,  108,  105,  909,  912,   94,   94,
1524       106, 1018, 1149,  107, 1148,  993,  108, 1136,  913,   94,
1525        99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
1526
1527        99,   99,   99,  993,   99,   99,   99,   99,   99,  109,
1528       109,  109,  913, 1278,  110,  110,  110,  113,  113,  113,
1529       241,  241,  241,  109,  913,  185,   99,   99,  110,  250,
1530       155,  113,  185, 1135,   99, 1177,   99,  155,   99,  185,
1531       248,  248,  248,  250,  155, 1278,   99,  100,  100,  100,
1532       100,  100,  100,  100,  100,  100,  100,  100,  100,  100,
1533       995,  100,  100,  100,  100,  100,  114,  114,  114,  252,
1534       252,  252,  155,  155,  185,  155, 1177,  914,  250,  155,
1535       114,  155,  238,  100,  100,  156,  158,  255, 1013,  115,
1536       115,  100,  156,  100,  115,  100,  238, 1013,  995,  156,
1537
1538       158,  255,  115,  100,  111,  111,  111,  111,  111,  111,
1539       111,  111,  111,  111,  111,  111,  111,  914,  111,  111,
1540       111,  111,  111, 1134,  115,  116,  116,  238,  156,  158,
1541       116,  262,  262,  262,  156,  158,  156,  158,  116,  223,
1542       111,  111,  157,  249,  237,  265,  223,  271,  263, 1133,
1543       249,  237,  265,  223, 1234,  263,  157,  249,  237,  265,
1544       116,  271,  263,  111,  112,  112,  112,  112,  112,  112,
1545       112,  112,  112,  112,  112,  112,  112,  264,  112,  112,
1546       112,  112,  112,  263,  157,  157, 1080,  157,  223,  237,
1547       266,  264,  966,  157,  268,  268,  268,  263, 1234,  990,
1548
1549       112,  112,  276, 1080,  266,  275,  275,  275, 1179,  276,
1550       656,  996,  264,  279,  279,  279,  276,  314,  314,  314,
1551       323,  323,  323,  112,  656,  266,  264,  328,  328,  328,
1552       994,  966,  314,  990,  997,  323,  333,  333,  333,  347,
1553       347,  347,  328,  379,  379,  379,  380,  380,  380, 1179,
1554       996,  333,  997, 1132,  347,  389,  389,  389,  823,  379,
1555      1014, 1131,  380,  390,  390,  390,  392,  392,  392, 1014,
1556       994,  389,  823,  393,  393,  393, 1130,  393, 1021,  390,
1557       393,  392,  398,  398,  398,  399,  399,  399,  401,  401,
1558       401,  404,  404,  404,  380,  402,  402,  402,  398,  402,
1559
1560      1105,  399,  402,  401,  405,  405,  405,  404,  406,  406,
1561       406, 1105, 1021,  390,  407,  407,  407, 1017,  407, 1119,
1562       405,  407, 1180,  406,  408,  408,  408,  409,  409,  409,
1563       411,  411,  411,  416,  416,  416,  399,  412,  412,  412,
1564       408,  412, 1118,  409,  412,  411,  417,  417,  417,  416,
1565       418,  418,  418,  420,  420,  420, 1117, 1017,  405,  421,
1566       421,  421,  417, 1180, 1214,  418, 1020, 1030,  420,  422,
1567       422,  422,  424,  424,  424,  421, 1030, 1022,  409,  425,
1568       425,  425, 1020,  425, 1025,  422,  425,  424,  426,  426,
1569       426, 1214,  417,  427,  427,  427,  432,  432,  432,  433,
1570
1571       433,  433, 1025, 1024,  426,  436,  436,  436, 1073,  427,
1572      1022, 1116,  432, 1052, 1073,  433,  437,  437,  437, 1024,
1573       422,  436,  455,  455,  455,  456,  456,  456,  458,  458,
1574       458, 1052,  437,  466,  466,  466, 1051, 1075,  455,  427,
1575      1115,  456, 1256, 1075,  458,  467,  467,  467,  466,  468,
1576       468,  468, 1051,  433, 1114,  470,  470,  470,  552,  552,
1577       552,  467,  479,  479,  479,  468,  458,  480,  480,  480,
1578       437,  470,  472,  472,  472, 1256,  472, 1390,  479,  472,
1579       482,  482,  482,  480,  484,  484,  484, 1155,  484, 1390,
1580      1081,  484,  488,  488,  488,  470,  482,  489,  489,  489,
1581
1582       491,  491,  491,  492,  492,  492, 1081,  492,  488, 1079,
1583       492, 1113, 1074,  489, 1078, 1079,  491,  495,  495,  495,
1584       496,  496,  496,  498,  498,  498, 1155,  500,  500,  500,
1585      1074,  500, 1078,  495,  500,  482,  496, 1102, 1109,  498,
1586       506,  506,  506,  507,  507,  507,  509,  509,  509, 1109,
1587      1128,  491,  510,  510,  510, 1102,  506, 1184, 1146,  507,
1588      1106, 1128,  509, 1107,  511,  511,  511,  510,  511, 1146,
1589      1104,  511,  513,  513,  513,  514,  514,  514, 1106,  514,
1590       498, 1107,  514,  515,  515,  515, 1104,  513,  516,  516,
1591       516,  518,  518,  518, 1110, 1157,  509, 1215, 1184,  515,
1592
1593      1110,  520,  520,  520,  516,  520, 1157,  518,  520,  523,
1594       523,  523,  524,  524,  524,  526,  526,  526,  528,  528,
1595       528,  531,  531,  531, 1215,  523, 1257, 1101,  524, 1218,
1596      1111,  526, 1122,  528,  532,  532,  532,  531,  534,  534,
1597       534,  537,  537,  537,  538,  538,  538, 1111,  518, 1122,
1598       532,  540,  540,  540,  534, 1100, 1218,  537, 1129, 1257,
1599       538,  543,  543,  543, 1129,  526, 1108,  540,  551,  551,
1600       551,  554,  554,  554,  568,  568,  568,  543,  543,  559,
1601       559,  559, 1108, 1260,  551, 1139,  560,  560,  560,  534,
1602       560, 1139, 1099,  560,  559,  540,  561,  561,  561,  565,
1603
1604       565,  565,  566,  566,  566,  567,  567,  567,  569,  569,
1605       569, 1098,  561, 1279,  565, 1156, 1260,  566,  570,  570,
1606       570,  567, 1120,  569,  551,  571,  571,  571,  575,  575,
1607       575,  576,  576,  576,  570,  584,  584,  584, 1120,  566,
1608      1158,  571, 1126,  575,  561, 1279, 1124,  576,  577,  577,
1609       577,  584,  577, 1125, 1156,  577,  581,  581,  581, 1126,
1610       581,  567, 1124,  581, 1097,  575,  586,  586,  586, 1125,
1611       570,  588,  588,  588,  594,  594,  594, 1162,  576, 1158,
1612      1219,  571,  586,  589,  589,  589,  588,  589, 1162,  594,
1613       589,  584,  592,  592,  592,  595,  595,  595,  599,  599,
1614
1615       599,  607,  607,  607,  608,  608,  608, 1219,  592, 1143,
1616      1096,  595, 1224,  586,  599, 1143, 1137,  607,  610,  610,
1617       610,  612,  612,  612,  613,  613,  613,  615,  615,  615,
1618      1185,  615,  592, 1137,  615,  618,  618,  618, 1092, 1224,
1619       599,  628,  628,  628,  607,  622,  622,  622,  624,  624,
1620       624,  618,  595,  629,  629,  629,  599,  623,  623,  623,
1621       622,  623, 1175,  624,  623,  625,  625,  625,  629,  625,
1622      1154, 1185,  625, 1175, 1141,  612, 1154,  627,  627,  627,
1623       630,  630,  630, 1142,  630, 1207, 1082,  630,  631,  631,
1624       631, 1141,  618,  627,  632,  632,  632,  636,  636,  636,
1625
1626      1142,  637,  637,  637,  631,  637, 1225, 1159,  637, 1071,
1627       632, 1208,  636,  639,  639,  639,  641,  641,  641,  643,
1628       643,  643, 1160,  645,  645,  645, 1207,  645, 1160,  639,
1629       645,  643,  641, 1225, 1235,  643,  632,  650,  650,  650,
1630       652,  652,  652,  653,  653,  653, 1159,  653, 1161, 1163,
1631       653, 1164, 1208,  650, 1161,  652, 1070, 1186,  641,  654,
1632       654,  654,  661,  661,  661,  664,  664,  664,  667,  667,
1633       667,  668,  668,  668, 1069,  654, 1068,  661, 1235,  650,
1634      1181,  664,  669,  669,  669,  673,  673,  673, 1163,  673,
1635      1164, 1181,  673,  676,  676,  676, 1186,  676,  669, 1182,
1636
1637       676,  680,  680,  680, 1282,  682,  682,  682,  654,  682,
1638      1182, 1228,  682,  685,  685,  685,  664,  680,  687,  687,
1639       687, 1301, 1229,  669,  689,  689,  689, 1067, 1301,  685,
1640      1066,  691,  691,  691,  687,  691, 1282, 1187,  691,  689,
1641       695,  695,  695,  698,  698,  698,  700,  700,  700,  704,
1642       704,  704, 1228,  706,  706,  706,  695,  706, 1236,  698,
1643       706,  689,  700, 1229, 1063,  704,  709,  709,  709,  715,
1644       715,  715,  687,  716,  716,  716, 1187,  716, 1055, 1209,
1645       716, 1197,  709, 1210,  715, 1198,  700,  719,  719,  719,
1646       720,  720,  720,  721,  721,  721,  722,  722,  722, 1236,
1647
1648       723,  723,  723,  719,  704,  730,  730,  730,  709,  732,
1649       732,  732, 1248,  733,  733,  733,  723,  733, 1209, 1197,
1650       733,  730, 1210, 1198,  732, 1054, 1200,  740,  740,  740,
1651       743,  743,  743,  744,  744,  744,  747,  747,  747, 1248,
1652      1249,  719,  723,  740, 1053, 1042,  743, 1041,  744,  749,
1653       749,  749,  747,  751,  751,  751,  754,  754,  754,  755,
1654       755,  755, 1201,  755, 1200,  749,  755, 1249, 1205,  751,
1655      1272,  760,  760,  760,  761,  761,  761,  762,  762,  762,
1656       763,  763,  763,  786,  786,  786,  743,  760,  772,  772,
1657       772,  747,  774,  774,  774, 1261,  763, 1272, 1324,  749,
1658
1659      1201,  775,  775,  775,  772,  775, 1205,  774,  775,  787,
1660       787,  787,  788,  788,  788,  789,  789,  789, 1040,  789,
1661       760, 1216,  789, 1324, 1039,  787, 1238,  788, 1261,  774,
1662       790,  790,  790,  792,  792,  792,  793,  793,  793,  794,
1663       794,  794,  799,  799,  799,  790,  800,  800,  800,  792,
1664       802,  802,  802, 1038, 1217,  794,  803,  803,  803,  787,
1665      1216,  800,  812,  812,  812, 1206,  802,  813,  813,  813,
1666      1238, 1037,  803, 1226,  814,  814,  814,  812,  814, 1222,
1667      1223,  814,  813, 1227,  822,  822,  822,  824,  824,  824,
1668       825,  825,  825, 1217, 1232,  794,  796,  796,  796,  822,
1669
1670       826,  826,  826, 1206,  826, 1239,  825,  826,  829,  829,
1671       829, 1226,  796,  830,  830,  830, 1233,  830, 1222, 1223,
1672       830, 1227, 1031,  829,  831,  831,  831,  832,  832,  832,
1673       834,  834,  834, 1232,  796,  835,  835,  835, 1237,  831,
1674      1244,  796,  796,  832,  796,  844,  844,  844,  796, 1239,
1675       796,  835,  845,  845,  845, 1233,  845, 1283, 1240,  845,
1676       844,  846,  846,  846,  847,  847,  847,  854,  854,  854,
1677       855,  855,  855, 1241,  855, 1250,  846,  855, 1273, 1237,
1678       847, 1244,  854,  856,  856,  856, 1242,  856, 1394, 1283,
1679       856,  864,  864,  864,  865,  865,  865, 1240,  865, 1251,
1680
1681      1394,  865,  868,  868,  868, 1273,  864,  870,  870,  870,
1682      1243,  870, 1241, 1250,  870,  873,  873,  873,  868,  874,
1683       874,  874, 1245,  874, 1350, 1242,  874,  875,  875,  875,
1684       873,  886,  886,  886, 1029,  886, 1246, 1251,  886,  889,
1685       889,  889, 1016,  875,  890,  890,  890, 1247,  890, 1243,
1686      1258,  890, 1259, 1015,  889,  891,  891,  891,  894,  894,
1687       894, 1254,  894, 1245, 1350,  894,  898,  898,  898, 1266,
1688       891,  900,  900,  900, 1255,  900, 1008, 1262,  900, 1007,
1689      1246,  898,  905,  905,  905, 1263,  905, 1264, 1258,  905,
1690      1259, 1247,  891,  916,  916,  916,  917,  917,  917, 1006,
1691
1692       917, 1268, 1254,  917,  920,  920,  920, 1266,  916,  916,
1693       921,  921,  921, 1005,  921, 1255, 1265,  921, 1262,  920,
1694       926,  926,  926,  927,  927,  927, 1263,  927, 1264, 1267,
1695       927,  929,  929,  929, 1268,  926,  930,  930,  930,  932,
1696       932,  932,  934,  934,  934, 1280,  929,  937,  937,  937,
1697      1270,  930,  989, 1269,  934,  932,  985, 1265,  934,  939,
1698       939,  939,  977,  937,  940,  940,  940, 1267,  929,  949,
1699       949,  949, 1280,  930,  939,  939,  999,  999,  999,  940,
1700       940,  941,  941,  941,  949,  941, 1269, 1271,  941,  942,
1701       942,  942,  999,  942, 1270, 1276,  942,  941,  950,  950,
1702
1703       950, 1277,  950,  976,  975,  950,  953,  953,  953,  954,
1704       954,  954,  955,  955,  955, 1284,  955, 1294,  974,  955,
1705      1285,  953,  959, 1281,  954,  957,  957,  957,  958,  958,
1706       958, 1271,  958, 1276, 1286,  958,  961,  961,  961, 1277,
1707       957,  963,  963,  963,  967,  967,  967,  968,  968,  968,
1708      1281, 1290,  961, 1284,  969,  969,  969,  963, 1285, 1288,
1709       967, 1294, 1287,  968,  956,  978,  978,  978,  961,  969,
1710       969, 1289, 1286,  963,  948,  947,  967,  970,  970,  970,
1711       978,  970, 1291, 1290,  970, 1295, 1288,  971,  971,  971,
1712      1298,  971, 1351,  970,  971,  979,  979,  979, 1289,  979,
1713
1714      1287,  968,  979,  971,  972,  972,  972,  972,  972,  972,
1715       972,  972,  972,  946, 1291,  972,  945, 1298,  972,  972,
1716       972,  972,  972,  980,  980,  980,  981,  981,  981, 1295,
1717       981, 1292, 1351,  981,  928,  998,  998,  998,  980, 1293,
1718       972,  972,  973,  973,  973,  973,  973,  973,  973,  973,
1719       973,  998, 1316,  973, 1314,  925,  973,  973,  973,  973,
1720       973,  982,  982,  982, 1292,  982, 1299,  998,  982,  986,
1721       986,  986, 1293,  986, 1315, 1302,  986, 1303,  973,  973,
1722      1000, 1000, 1000, 1306, 1000, 1316, 1314, 1000, 1009, 1009,
1723      1009,  924, 1009, 1299, 1317, 1009, 1000, 1003, 1003, 1003,
1724
1725      1003, 1003, 1003, 1003, 1003, 1003, 1315,  922, 1003,  904,
1726      1306, 1003, 1003, 1003, 1003, 1003, 1012, 1012, 1012, 1302,
1727      1012, 1303,  903, 1012, 1304, 1305,  899, 1317, 1019, 1019,
1728      1019, 1304, 1305, 1003, 1003, 1004, 1004, 1004, 1004, 1004,
1729      1004, 1004, 1004, 1004, 1019,  897, 1004, 1307, 1308, 1004,
1730      1004, 1004, 1004, 1004, 1023, 1023, 1023, 1026, 1026, 1026,
1731      1032, 1032, 1032, 1033, 1033, 1033, 1034, 1034, 1034, 1309,
1732      1023, 1004, 1004, 1026, 1307, 1308, 1032, 1032, 1033, 1310,
1733      1311, 1034, 1035, 1035, 1035, 1036, 1036, 1036,  893, 1026,
1734      1043, 1043, 1043, 1045, 1045, 1045, 1309, 1035, 1312, 1322,
1735
1736      1036, 1047, 1047, 1047, 1402, 1312, 1043, 1326,  892, 1045,
1737      1048, 1048, 1048, 1049, 1049, 1049, 1402, 1047, 1421, 1035,
1738      1056, 1056, 1056, 1310, 1311, 1045, 1048, 1313, 1323, 1049,
1739      1421, 1057, 1057, 1057, 1313,  867, 1056, 1058, 1058, 1058,
1740      1326, 1058, 1325, 1322, 1058, 1049, 1057, 1338, 1059, 1059,
1741      1059, 1060, 1060, 1060, 1338, 1060, 1327, 1442, 1060, 1061,
1742      1061, 1061, 1056, 1059, 1062, 1062, 1062, 1325, 1062, 1442,
1743      1334, 1062, 1323, 1330, 1061, 1064, 1064, 1064, 1065, 1065,
1744      1065, 1328, 1065, 1329, 1336, 1065, 1072, 1072, 1072, 1327,
1745      1064, 1076, 1076, 1076, 1077, 1077, 1077, 1083, 1083, 1083,
1746
1747      1335, 1083, 1072, 1334, 1083, 1331, 1328, 1076, 1329, 1336,
1748      1077, 1354, 1086, 1086, 1086,  866, 1086, 1330, 1072, 1086,
1749      1089, 1089, 1089, 1076, 1089, 1355, 1077, 1089, 1093, 1093,
1750      1093, 1337, 1093, 1335,  861, 1093, 1121, 1121, 1121, 1123,
1751      1123, 1123, 1127, 1127, 1127, 1332, 1138, 1138, 1138, 1331,
1752      1138, 1354, 1121, 1138, 1333, 1123, 1337, 1339, 1127, 1140,
1753      1140, 1140, 1138, 1140, 1339, 1355, 1140, 1144, 1144, 1144,
1754      1362, 1144, 1340, 1391, 1144, 1140, 1145, 1145, 1145, 1147,
1755      1147, 1147, 1391, 1144, 1165, 1165, 1165,  860, 1165, 1332,
1756      1348, 1165, 1145, 1341, 1147, 1166, 1166, 1166, 1333, 1395,
1757
1758      1165, 1167, 1167, 1167, 1340, 1168, 1168, 1168, 1395, 1168,
1759      1362, 1166, 1168, 1178, 1178, 1178, 1167, 1183, 1183, 1183,
1760      1188, 1188, 1188, 1348, 1188, 1341,  859, 1188, 1349, 1178,
1761      1189, 1189, 1189, 1183, 1189, 1352, 1188, 1189, 1196, 1196,
1762      1196, 1199, 1199, 1199,  851, 1199, 1366, 1356, 1199, 1202,
1763      1202, 1202, 1363, 1366, 1196,  850, 1353, 1199, 1203, 1203,
1764      1203, 1349, 1204, 1204, 1204, 1202, 1204, 1352,  849, 1204,
1765       820, 1296, 1296, 1296, 1203, 1213, 1213, 1213, 1204, 1213,
1766      1356,  818, 1213, 1220, 1220, 1220, 1296, 1220, 1353,  817,
1767      1220, 1213, 1363, 1221, 1221, 1221, 1357, 1221, 1358, 1220,
1768
1769      1221, 1297, 1297, 1297, 1318, 1318, 1318,  816, 1367, 1221,
1770      1319, 1319, 1319, 1359, 1319, 1367, 1297, 1319, 1360, 1318,
1771      1320, 1320, 1320, 1321, 1321, 1321, 1361, 1321, 1364, 1357,
1772      1321, 1358, 1342, 1342, 1342, 1320, 1342, 1365, 1368, 1342,
1773      1345, 1345, 1345, 1369, 1345, 1372, 1359, 1345, 1370, 1371,
1774      1360, 1374, 1372, 1364, 1373, 1375, 1376, 1377, 1361, 1378,
1775      1379, 1373, 1365, 1384, 1380, 1381, 1385,  815, 1382, 1383,
1776      1368, 1380, 1381, 1370, 1371, 1369, 1374, 1386, 1388, 1387,
1777      1375,  810, 1392, 1389, 1393, 1388, 1406, 1400, 1376, 1377,
1778      1389, 1378, 1379, 1382, 1383, 1401, 1404, 1407, 1396, 1405,
1779
1780      1408, 1397, 1386, 1384, 1387, 1396, 1385, 1392, 1397, 1393,
1781      1398, 1399, 1400, 1403, 1409, 1411, 1412, 1398, 1399, 1414,
1782      1401, 1404, 1403, 1415, 1405, 1408, 1406, 1410, 1410, 1410,
1783      1413, 1413, 1413, 1416, 1417, 1418, 1419, 1407, 1422, 1409,
1784      1425, 1423, 1424, 1410, 1414, 1426, 1413, 1422, 1415, 1420,
1785      1420, 1420, 1427, 1427, 1427, 1411, 1412, 1429, 1416, 1417,
1786      1433, 1430, 1431, 1431, 1431, 1420, 1423, 1424, 1427, 1434,
1787      1435, 1436, 1437, 1438, 1443, 1418, 1419, 1444, 1431, 1445,
1788      1425, 1446, 1429, 1443,  808, 1426, 1430, 1439, 1439, 1439,
1789      1441, 1441, 1441, 1446, 1448, 1449, 1447, 1437, 1438, 1450,
1790
1791      1433, 1451, 1444, 1439, 1445, 1447, 1441, 1453, 1458, 1434,
1792      1435, 1436,  807, 1452,  806,  805, 1453, 1458, 1457, 1448,
1793      1449, 1454, 1454, 1454, 1450, 1452, 1451, 1456, 1456, 1456,
1794      1457, 1459, 1459, 1459, 1460, 1461, 1462, 1454,  801,  791,
1795      1463,  785,  784, 1456, 1461,  783, 1460, 1459, 1462, 1463,
1796      1464, 1464, 1464, 1465, 1465, 1465, 1467, 1467, 1467, 1468,
1797      1468, 1468, 1470, 1470, 1470,  782, 1464,  781,  780, 1465,
1798       779,  778, 1467,  771,  770, 1468,  769,  768, 1470, 1471,
1799      1471, 1471, 1472, 1472, 1472, 1474, 1474, 1474, 1476, 1476,
1800      1476, 1478, 1478, 1478,  767, 1471,  766,  765, 1472,  764,
1801
1802       759, 1474,  758,  750, 1476,  748,  746, 1478, 1481, 1481,
1803      1481, 1481, 1481, 1481, 1481, 1482, 1482, 1482, 1482, 1482,
1804      1482, 1482, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1484,
1805      1484, 1484, 1484, 1484, 1484, 1484, 1485, 1485, 1485, 1485,
1806      1485, 1485, 1485, 1486, 1486, 1486, 1486, 1486, 1486, 1486,
1807      1487, 1487, 1487, 1487, 1487, 1487, 1487, 1488, 1488, 1488,
1808      1488, 1488, 1488, 1488, 1489, 1489, 1489, 1489, 1489, 1489,
1809      1489, 1490, 1490, 1490, 1490, 1490, 1490, 1490, 1491, 1491,
1810      1491, 1491, 1491, 1491, 1491, 1492, 1492, 1492, 1492, 1492,
1811      1492, 1492, 1493, 1493, 1493, 1493, 1493, 1493, 1493, 1494,
1812
1813      1494, 1494, 1494, 1494, 1494, 1494, 1495, 1495, 1495, 1495,
1814      1495, 1495, 1495, 1496, 1496, 1496, 1496, 1496, 1496, 1496,
1815      1497, 1497, 1497, 1497, 1497, 1497, 1497, 1498, 1498, 1498,
1816      1498, 1498, 1498, 1498, 1499, 1499, 1499, 1499, 1499, 1499,
1817      1499, 1500, 1500, 1500, 1500, 1500, 1500, 1500, 1501, 1501,
1818      1501, 1501, 1501, 1501, 1501, 1502, 1502, 1502, 1502, 1502,
1819      1502, 1502, 1503, 1503, 1503, 1503, 1503, 1503, 1503, 1504,
1820      1504, 1504, 1504, 1504, 1504, 1504, 1505, 1505, 1505, 1505,
1821      1505, 1505, 1505, 1506, 1506, 1506, 1506, 1506, 1506, 1506,
1822      1507, 1507, 1507, 1507, 1507, 1507, 1507, 1508, 1508, 1508,
1823
1824      1508, 1508, 1508, 1508, 1509, 1509, 1509,  745, 1509, 1510,
1825      1510, 1510,  742, 1510, 1511, 1511, 1511,  739, 1511, 1512,
1826      1512, 1512,  738, 1512, 1513, 1513, 1513,  735, 1513, 1514,
1827      1514, 1514,  734, 1514, 1515, 1515, 1515,  731, 1515, 1516,
1828      1516, 1516,  729, 1516, 1517, 1517, 1517,  726, 1517, 1518,
1829      1518, 1518,  725, 1518, 1519, 1519, 1519, 1519, 1519,  724,
1830      1519, 1520,  718, 1520, 1521,  717, 1521, 1522,  714, 1522,
1831      1523,  710, 1523, 1524,  705, 1524, 1525,  703, 1525, 1526,
1832       702, 1526, 1527,  701, 1527, 1528,  699, 1528, 1529,  697,
1833      1529, 1530, 1530, 1530, 1530, 1530, 1530, 1530, 1531,  694,
1834
1835       693, 1531, 1532, 1532, 1532, 1532, 1532, 1532, 1533, 1533,
1836      1533, 1533, 1533, 1533, 1534, 1534, 1534, 1534, 1534, 1534,
1837      1535, 1535, 1535, 1535, 1535, 1535, 1536, 1536, 1536, 1536,
1838      1536, 1536, 1537, 1537, 1537, 1537, 1537, 1537, 1538, 1538,
1839      1538, 1538, 1538, 1538, 1539, 1539, 1539, 1539, 1539, 1539,
1840      1540, 1540, 1540, 1540, 1540, 1540, 1541, 1541, 1541, 1541,
1841      1541, 1541, 1542, 1542, 1542, 1542, 1542, 1542, 1542, 1543,
1842      1543, 1543, 1543, 1543, 1543, 1543, 1544, 1544, 1544, 1544,
1843      1544, 1544, 1544, 1545, 1545, 1545, 1545, 1545, 1545, 1545,
1844      1546, 1546, 1546, 1546, 1546, 1546, 1546, 1547, 1547, 1547,
1845
1846      1547, 1547, 1547, 1547, 1548, 1548, 1548, 1548, 1548, 1548,
1847      1548,  692,  690,  688,  679,  678,  677,  672,  671,  670,
1848       666,  665,  663,  662,  660,  655,  651,  649,  648,  644,
1849       642,  640,  638,  635,  634,  633,  626,  621,  620,  619,
1850       614,  611,  609,  605,  604,  601,  598,  596,  593,  591,
1851       590,  587,  585,  580,  574,  573,  572,  564,  563,  562,
1852       558,  557,  556,  555,  553,  550,  549,  548,  547,  546,
1853       541,  536,  535,  530,  529,  527,  519,  512,  505,  504,
1854       503,  499,  487,  483,  478,  477,  476,  475,  471,  465,
1855       464,  463,  462,  461,  460,  459,  454,  453,  452,  451,
1856
1857       448,  447,  446,  444,  440,  438,  435,  434,  431,  430,
1858       429,  428,  423,  419,  415,  414,  413,  410,  403,  400,
1859       397,  396,  395,  394,  391,  388,  387,  386,  385,  384,
1860       383,  382,  381,  378,  377,  376,  374,  373,  372,  371,
1861       370,  366,  364,  363,  362,  361,  360,  359,  356,  355,
1862       354,  353,  352,  351,  348,  344,  343,  342,  341,  340,
1863       337,  336,  335,  334,  332,  329,  325,  324,  320,  319,
1864       318,  317,  316,  315,  313,  310,  309,  306,  305,  304,
1865       303,  302,  301,  300,  299,  298,  297,  294,  293,  292,
1866       291,  290,  284,  283,  281,  278,  277,  273,  269,  260,
1867
1868       259,  258,  257,  253,  246,  242,  234,  233,  232,  228,
1869       219,  218,  217,  213,  206,  202,  195,  194,  190,  182,
1870       181,  180,  178,  174,  167,  163,  152,  151,  147,  143,
1871       142,  141,  135,  134,  132,  129,  117, 1480, 1480, 1480,
1872      1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480,
1873      1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480,
1874      1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480,
1875      1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480,
1876      1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480,
1877      1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480, 1480,
1878
1879      1480
1880     } ;
1881
1882 /* Table of booleans, true if rule could match eol. */
1883 static yyconst flex_int32_t yy_rule_can_match_eol[207] =
1884     {   0,
1885 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1886     1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 
1887     1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1888     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 
1889     1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 
1890     0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1891     1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
1892     1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 
1893     1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 
1894     0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 
1895     0, 1, 0, 0, 0, 1, 0,     };
1896
1897 static yy_state_type yy_last_accepting_state;
1898 static char *yy_last_accepting_cpos;
1899
1900 extern int surf_parse__flex_debug;
1901 int surf_parse__flex_debug = 0;
1902
1903 /* The intent behind this definition is that it'll catch
1904  * any uses of REJECT which flex missed.
1905  */
1906 #define REJECT reject_used_but_not_detected
1907 #define yymore() yymore_used_but_not_detected
1908 #define YY_MORE_ADJ 0
1909 #define YY_RESTORE_YY_MORE_OFFSET
1910 char *surf_parse_text;
1911 /* Validating XML processor for surf/surfxml.dtd.
1912  * Generated 2007/10/31 10:34:28.
1913  *
1914  * This program was generated with the FleXML XML processor generator.
1915  * FleXML is Copyright (C) 1999-2005 Kristoffer Rose.  All rights reserved.
1916  * FleXML is Copyright (C) 2003-2006 Martin Quinson.  All rights reserved.
1917  * (Id: flexml.pl,v 1.61 2006/09/13 16:34:33 wdowling Exp).
1918  * 
1919  * There are two, intertwined parts to this program, part A and part B.
1920  *
1921  * Part A
1922  * ------
1923  * 
1924  * Some parts, here collectively called "Part A", are found in the 
1925  * FleXML package.  They are Copyright (C) 1999-2005 Kristoffer Rose
1926  * and Copyright (C) 2003-2006 Martin Quinson. All rights reserved.
1927  *
1928  * You can redistribute, use, perform, display and/or modify "Part A"
1929  * provided the following two conditions hold:
1930  *
1931  * 1. The program is distributed WITHOUT ANY WARRANTY from the author of
1932  *    FleXML; without even the implied warranty of MERCHANTABILITY or
1933  *    FITNESS FOR A PARTICULAR PURPOSE.
1934  *
1935  * 2. The program distribution conditions do not in any way affect the
1936  *    distribution conditions of the FleXML system used to generate this
1937  *    file or any version of FleXML derived from that system.
1938  *
1939  * Notice that these are explicit rights granted to you for files
1940  * generated by the FleXML system.  For your rights in connection with
1941  * the FleXML system itself please consult the GNU General Public License.
1942  * 
1943  * Part B
1944  * ------
1945  * 
1946  * The other parts, here collectively called "Part B", and which came 
1947  * from the DTD used by FleXML to generate this program, can be 
1948  * distributed (or not, as the case may be) under the terms of whoever
1949  * wrote them, provided these terms respect and obey the two conditions 
1950  * above under the heading "Part A".
1951  *
1952  * The author of and contributors to FleXML specifically disclaim
1953  * any copyright interest in "Part B", unless "Part B" was written 
1954  * by the author of or contributors to FleXML.
1955  * 
1956  */
1957
1958 /* Version strings. */
1959 const char rcs_surfxml_flexml_skeleton[] =
1960  "$" "Id: skel,v 1.38 2006/09/12 18:05:45 wdowling Exp $";
1961 const char rcs_surfxml_flexml[] =
1962  "$" "Id: flexml.pl,v 1.61 2006/09/13 16:34:33 wdowling Exp $";
1963
1964 /* ANSI headers. */
1965 #if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(__TOS_WIN__)
1966 #  ifndef __STRICT_ANSI__
1967 #    include <io.h>
1968 #    include <process.h>
1969 #  endif
1970 #else
1971 #  include <unistd.h>
1972 #endif
1973 #include <stdio.h>
1974 #include <string.h>
1975 #include <assert.h>
1976 #include <stdarg.h>
1977 #include <ctype.h>
1978
1979 #ifndef FLEXML_INDEXSTACKSIZE
1980 #define FLEXML_INDEXSTACKSIZE 1000
1981 #endif
1982
1983 /* Generated definitions. */
1984 #define FLEXML_yylineno
1985 #ifndef FLEXML_BUFFERSTACKSIZE
1986 #define FLEXML_BUFFERSTACKSIZE 1000000
1987 #endif
1988 #define FLEXML_NEED_BUFFERLIT
1989
1990 /* XML processor api. */
1991 /* FleXML-provided data. */
1992 int surfxml_pcdata_ix;
1993 extern char *surfxml_bufferstack;
1994 #define surfxml_pcdata (surfxml_bufferstack + surfxml_pcdata_ix)
1995 AT_surfxml_link_id AX_surfxml_link_id;
1996 #define A_surfxml_link_id (surfxml_bufferstack + AX_surfxml_link_id)
1997 AT_surfxml_prop_id AX_surfxml_prop_id;
1998 #define A_surfxml_prop_id (surfxml_bufferstack + AX_surfxml_prop_id)
1999 AT_surfxml_host_interference_recv AX_surfxml_host_interference_recv;
2000 #define A_surfxml_host_interference_recv (surfxml_bufferstack + AX_surfxml_host_interference_recv)
2001 AT_surfxml_host_id AX_surfxml_host_id;
2002 #define A_surfxml_host_id (surfxml_bufferstack + AX_surfxml_host_id)
2003 AT_surfxml_link_latency_file AX_surfxml_link_latency_file;
2004 #define A_surfxml_link_latency_file (surfxml_bufferstack + AX_surfxml_link_latency_file)
2005 AT_surfxml_process_host AX_surfxml_process_host;
2006 #define A_surfxml_process_host (surfxml_bufferstack + AX_surfxml_process_host)
2007 AT_surfxml_host_availability_file AX_surfxml_host_availability_file;
2008 #define A_surfxml_host_availability_file (surfxml_bufferstack + AX_surfxml_host_availability_file)
2009 AT_surfxml_host_state AX_surfxml_host_state;
2010 #define A_surfxml_host_state AX_surfxml_host_state
2011 AT_surfxml_host_interference_send_recv AX_surfxml_host_interference_send_recv;
2012 #define A_surfxml_host_interference_send_recv (surfxml_bufferstack + AX_surfxml_host_interference_send_recv)
2013 AT_surfxml_route_impact_on_dst_with_other_send AX_surfxml_route_impact_on_dst_with_other_send;
2014 #define A_surfxml_route_impact_on_dst_with_other_send (surfxml_bufferstack + AX_surfxml_route_impact_on_dst_with_other_send)
2015 AT_surfxml_host_interference_send AX_surfxml_host_interference_send;
2016 #define A_surfxml_host_interference_send (surfxml_bufferstack + AX_surfxml_host_interference_send)
2017 AT_surfxml_route_impact_on_dst AX_surfxml_route_impact_on_dst;
2018 #define A_surfxml_route_impact_on_dst (surfxml_bufferstack + AX_surfxml_route_impact_on_dst)
2019 AT_surfxml_prop_value AX_surfxml_prop_value;
2020 #define A_surfxml_prop_value (surfxml_bufferstack + AX_surfxml_prop_value)
2021 AT_surfxml_route_impact_on_src_with_other_recv AX_surfxml_route_impact_on_src_with_other_recv;
2022 #define A_surfxml_route_impact_on_src_with_other_recv (surfxml_bufferstack + AX_surfxml_route_impact_on_src_with_other_recv)
2023 AT_surfxml_host_power AX_surfxml_host_power;
2024 #define A_surfxml_host_power (surfxml_bufferstack + AX_surfxml_host_power)
2025 AT_surfxml_link_state_file AX_surfxml_link_state_file;
2026 #define A_surfxml_link_state_file (surfxml_bufferstack + AX_surfxml_link_state_file)
2027 AT_surfxml_router_id AX_surfxml_router_id;
2028 #define A_surfxml_router_id (surfxml_bufferstack + AX_surfxml_router_id)
2029 AT_surfxml_process_start_time AX_surfxml_process_start_time;
2030 #define A_surfxml_process_start_time (surfxml_bufferstack + AX_surfxml_process_start_time)
2031 AT_surfxml_platform_xmlns_c_route AX_surfxml_platform_xmlns_c_route;
2032 #define A_surfxml_platform_xmlns_c_route (surfxml_bufferstack + AX_surfxml_platform_xmlns_c_route)
2033 AT_surfxml_process_function AX_surfxml_process_function;
2034 #define A_surfxml_process_function (surfxml_bufferstack + AX_surfxml_process_function)
2035 AT_surfxml_host_max_outgoing_rate AX_surfxml_host_max_outgoing_rate;
2036 #define A_surfxml_host_max_outgoing_rate (surfxml_bufferstack + AX_surfxml_host_max_outgoing_rate)
2037 AT_surfxml_link_sharing_policy AX_surfxml_link_sharing_policy;
2038 #define A_surfxml_link_sharing_policy AX_surfxml_link_sharing_policy
2039 AT_surfxml_link_c_ctn_id AX_surfxml_link_c_ctn_id;
2040 #define A_surfxml_link_c_ctn_id (surfxml_bufferstack + AX_surfxml_link_c_ctn_id)
2041 AT_surfxml_process_kill_time AX_surfxml_process_kill_time;
2042 #define A_surfxml_process_kill_time (surfxml_bufferstack + AX_surfxml_process_kill_time)
2043 AT_surfxml_host_availability AX_surfxml_host_availability;
2044 #define A_surfxml_host_availability (surfxml_bufferstack + AX_surfxml_host_availability)
2045 AT_surfxml_argument_value AX_surfxml_argument_value;
2046 #define A_surfxml_argument_value (surfxml_bufferstack + AX_surfxml_argument_value)
2047 AT_surfxml_link_state AX_surfxml_link_state;
2048 #define A_surfxml_link_state AX_surfxml_link_state
2049 AT_surfxml_route_src AX_surfxml_route_src;
2050 #define A_surfxml_route_src (surfxml_bufferstack + AX_surfxml_route_src)
2051 AT_surfxml_route_impact_on_src AX_surfxml_route_impact_on_src;
2052 #define A_surfxml_route_impact_on_src (surfxml_bufferstack + AX_surfxml_route_impact_on_src)
2053 AT_surfxml_link_bandwidth AX_surfxml_link_bandwidth;
2054 #define A_surfxml_link_bandwidth (surfxml_bufferstack + AX_surfxml_link_bandwidth)
2055 AT_surfxml_link_latency AX_surfxml_link_latency;
2056 #define A_surfxml_link_latency (surfxml_bufferstack + AX_surfxml_link_latency)
2057 AT_surfxml_platform_xmlns_c_link AX_surfxml_platform_xmlns_c_link;
2058 #define A_surfxml_platform_xmlns_c_link (surfxml_bufferstack + AX_surfxml_platform_xmlns_c_link)
2059 AT_surfxml_include_file AX_surfxml_include_file;
2060 #define A_surfxml_include_file (surfxml_bufferstack + AX_surfxml_include_file)
2061 AT_surfxml_link_bandwidth_file AX_surfxml_link_bandwidth_file;
2062 #define A_surfxml_link_bandwidth_file (surfxml_bufferstack + AX_surfxml_link_bandwidth_file)
2063 AT_surfxml_host_state_file AX_surfxml_host_state_file;
2064 #define A_surfxml_host_state_file (surfxml_bufferstack + AX_surfxml_host_state_file)
2065 AT_surfxml_route_dst AX_surfxml_route_dst;
2066 #define A_surfxml_route_dst (surfxml_bufferstack + AX_surfxml_route_dst)
2067 AT_surfxml_platform_version AX_surfxml_platform_version;
2068 #define A_surfxml_platform_version (surfxml_bufferstack + AX_surfxml_platform_version)
2069
2070 /* XML state. */
2071 #ifdef FLEX_DEBUG
2072 # define ENTER(state)   debug_enter(state,#state)
2073 # define LEAVE          debug_leave()
2074 # define SET(state)     debug_set(state,#state)
2075   static void debug_enter(int, const char*);
2076   static void debug_leave(void);
2077   static void debug_set(int, const char*);
2078 #else
2079 # define ENTER(state)   (yy_push_state(state))
2080 # define LEAVE          (yy_pop_state())
2081 # define SET(state)     BEGIN(state)
2082 #endif
2083
2084 /* Generic actions. */
2085 #define SKIP    /*skip*/
2086 #define SUCCEED        CLEANUP; return 0
2087
2088 #define FAIL    return fail
2089 static int fail(const char*, ...);
2090
2091 enum {flexml_max_err_msg_size = 512};
2092 static char flexml_err_msg[flexml_max_err_msg_size];
2093 const char * surfxml_parse_err_msg()
2094 {
2095     return flexml_err_msg;
2096 }
2097 static void reset_surfxml_parse_err_msg()
2098 {
2099     flexml_err_msg[0] = '\0';
2100 }
2101
2102 /* Cleanup */
2103 static void cleanup(void);
2104 #define CLEANUP  cleanup()
2105
2106 /* Text buffer stack handling. */
2107 char *surfxml_bufferstack = NULL;
2108 static int blimit = FLEXML_BUFFERSTACKSIZE;
2109 static int bnext = 1;
2110
2111 static int *indexstack = NULL;
2112 static int ilimit = FLEXML_INDEXSTACKSIZE;
2113 static int inext = 1;
2114
2115 #define BUFFERSET(P)  (P = bnext)
2116 #define BUFFERPUTC(C) (ck_blimit(), surfxml_bufferstack[bnext++] = (C))
2117 #define BUFFERDONE    (BUFFERPUTC('\0'))
2118
2119 #define BUFFERLITERAL(C, P) surfxml_bufferliteral(C, &(P), surf_parse_text)
2120
2121 /* after this is called, there are at least 2 slots left in the stack */
2122 static int ck_blimit()
2123 {
2124      if (bnext >= blimit) {
2125          blimit += FLEXML_BUFFERSTACKSIZE + 2;
2126          {
2127              char *temp = (char *) realloc(surfxml_bufferstack, blimit);
2128              assert(temp);
2129              surfxml_bufferstack = temp;
2130          }
2131      }
2132      return 0;
2133 }
2134
2135 /* after this is called, there are at least 2 slots left in the stack */
2136 static int ck_ilimit()
2137 {
2138      if (inext >= ilimit) {
2139          ilimit += FLEXML_INDEXSTACKSIZE + 2;
2140          {
2141              int *temp = (int *) realloc(indexstack, ilimit);
2142              assert(temp);
2143              indexstack = temp;
2144          }
2145      }
2146      return 0;
2147 }
2148
2149 #ifdef FLEXML_NEED_BUFFERLIT
2150 static void surfxml_bufferliteral(char c, int* pp, const char* text)
2151 {
2152   const char *s = (c ? strchr(text,c) : text-1), *e = strrchr(text,c);
2153   assert(s <= e); BUFFERSET(*pp);
2154   while (++s<e) {
2155     if (isspace(*s) && c) { BUFFERPUTC(' '); while (isspace(*s)) ++s; }
2156     else BUFFERPUTC(*s);
2157   }
2158   BUFFERDONE;
2159 }
2160 #endif
2161
2162 static void pushbuffer(int p)
2163 {
2164     ck_ilimit();
2165     indexstack[inext++] = p;
2166     indexstack[inext++] = bnext;    
2167 }
2168
2169 static int popbuffer(void)
2170 {
2171     assert(inext >= 2);
2172     bnext = indexstack[--inext];
2173     return indexstack[--inext];
2174 }
2175
2176 /* General internal entities are `unput' back onto the input stream... */
2177 #define ENTITYTEXT(T) \
2178   { char *s = (T), *e = s+strlen(s);\
2179     while (--e >= s) { unput(*e); }}
2180
2181 /* Flex standard options. */
2182 #define YY_NO_INPUT 1
2183 /* Flex user-requested options. */
2184 /* XML character classes (currently restricted to ASCII). */
2185 /* "Common syntactic structures." */
2186 /* "Names and Tokens." */
2187 /* Miscellaneous. */
2188 /* Parser states (flex `exclusive start conditions'):
2189  *
2190  * PROLOG       the XML prolog of the document before <?xml...>
2191  * DOCTYPE      the XML prolog of the document after <?xml...>
2192  * EPILOG       after the root element
2193  * INCOMMENT    inside an XML comment <!--....-->
2194  * INPI         inside an XML PI <?...?>
2195  * VALUE1       inside a '...'-delimited literal
2196  * VALUE2       inside a "..."-delimited literal
2197  * CDATA        inside a <![CDATA[...] ]> section.
2198  * ROOT_<tag>   expect root element <tag>
2199  * AL_<tag>     inside the attribute list for <tag>
2200  * IN_<tag>     inside a <tag> with element contents (ready for end tag)
2201  * IMPOSSIBLE   dummy to permit disabling rules; must be last
2202  */
2203
2204 /* State names. */
2205 const char* *surfxml_statenames=NULL;
2206
2207 #define INITIAL 0
2208 #define PROLOG 1
2209 #define DOCTYPE 2
2210 #define EPILOG 3
2211 #define INCOMMENT 4
2212 #define INPI 5
2213 #define VALUE1 6
2214 #define VALUE2 7
2215 #define CDATA 8
2216 #define ROOT_surfxml_platform 9
2217 #define AL_surfxml_platform 10
2218 #define S_surfxml_platform 11
2219 #define S_surfxml_platform_1 12
2220 #define S_surfxml_platform_2 13
2221 #define S_surfxml_platform_3 14
2222 #define S_surfxml_platform_4 15
2223 #define S_surfxml_platform_5 16
2224 #define E_surfxml_platform 17
2225 #define ROOT_surfxml_include 18
2226 #define AL_surfxml_include 19
2227 #define E_surfxml_include 20
2228 #define ROOT_surfxml_host 21
2229 #define AL_surfxml_host 22
2230 #define S_surfxml_host 23
2231 #define S_surfxml_host_1 24
2232 #define S_surfxml_host_2 25
2233 #define E_surfxml_host 26
2234 #define ROOT_surfxml_prop 27
2235 #define AL_surfxml_prop 28
2236 #define E_surfxml_prop 29
2237 #define ROOT_surfxml_router 30
2238 #define AL_surfxml_router 31
2239 #define E_surfxml_router 32
2240 #define ROOT_surfxml_link 33
2241 #define AL_surfxml_link 34
2242 #define S_surfxml_link 35
2243 #define S_surfxml_link_1 36
2244 #define S_surfxml_link_2 37
2245 #define E_surfxml_link 38
2246 #define ROOT_surfxml_route 39
2247 #define AL_surfxml_route 40
2248 #define S_surfxml_route 41
2249 #define S_surfxml_route_1 42
2250 #define S_surfxml_route_2 43
2251 #define E_surfxml_route 44
2252 #define ROOT_surfxml_link_c_ctn 45
2253 #define AL_surfxml_link_c_ctn 46
2254 #define E_surfxml_link_c_ctn 47
2255 #define ROOT_surfxml_process 48
2256 #define AL_surfxml_process 49
2257 #define S_surfxml_process 50
2258 #define S_surfxml_process_1 51
2259 #define S_surfxml_process_2 52
2260 #define E_surfxml_process 53
2261 #define ROOT_surfxml_argument 54
2262 #define AL_surfxml_argument 55
2263 #define E_surfxml_argument 56
2264 #define IMPOSSIBLE 57
2265
2266 #ifndef YY_NO_UNISTD_H
2267 /* Special case for "unistd.h", since it is non-ANSI. We include it way
2268  * down here because we want the user's section 1 to have been scanned first.
2269  * The user has a chance to override it with an option.
2270  */
2271 #if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(__TOS_WIN__)
2272 #  ifndef __STRICT_ANSI__
2273 #    include <io.h>
2274 #    include <process.h>
2275 #  endif
2276 #else
2277 #  include <unistd.h>
2278 #endif
2279 #endif
2280
2281 #ifndef YY_EXTRA_TYPE
2282 #define YY_EXTRA_TYPE void *
2283 #endif
2284
2285 static int yy_init_globals (void );
2286
2287 /* Macros after this point can all be overridden by user definitions in
2288  * section 1.
2289  */
2290
2291 #ifndef YY_SKIP_YYWRAP
2292 #ifdef __cplusplus
2293 extern "C" int surf_parse_wrap (void );
2294 #else
2295 extern int surf_parse_wrap (void );
2296 #endif
2297 #endif
2298
2299 #ifndef yytext_ptr
2300 static void yy_flex_strncpy (char *,yyconst char *,int );
2301 #endif
2302
2303 #ifdef YY_NEED_STRLEN
2304 static int yy_flex_strlen (yyconst char * );
2305 #endif
2306
2307 #ifndef YY_NO_INPUT
2308
2309 #ifdef __cplusplus
2310 static int yyinput (void );
2311 #else
2312 static int input (void );
2313 #endif
2314
2315 #endif
2316
2317         static int yy_start_stack_ptr = 0;
2318         static int yy_start_stack_depth = 0;
2319         static int *yy_start_stack = NULL;
2320     
2321     static void yy_push_state (int new_state );
2322     
2323     static void yy_pop_state (void );
2324     
2325 /* Amount of stuff to slurp up with each read. */
2326 #ifndef YY_READ_BUF_SIZE
2327 #define YY_READ_BUF_SIZE 8192
2328 #endif
2329
2330 /* Copy whatever the last rule matched to the standard output. */
2331 #ifndef ECHO
2332 /* This used to be an fputs(), but since the string might contain NUL's,
2333  * we now use fwrite().
2334  */
2335 #define ECHO (void) fwrite( surf_parse_text, surf_parse_leng, 1, surf_parse_out )
2336 #endif
2337
2338 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
2339  * is returned in "result".
2340  */
2341 #ifndef YY_INPUT
2342 #define YY_INPUT(buf,result,max_size) \
2343         if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
2344                 { \
2345                 int c = '*'; \
2346                 size_t n; \
2347                 for ( n = 0; n < max_size && \
2348                              (c = getc( surf_parse_in )) != EOF && c != '\n'; ++n ) \
2349                         buf[n] = (char) c; \
2350                 if ( c == '\n' ) \
2351                         buf[n++] = (char) c; \
2352                 if ( c == EOF && ferror( surf_parse_in ) ) \
2353                         YY_FATAL_ERROR( "input in flex scanner failed" ); \
2354                 result = n; \
2355                 } \
2356         else \
2357                 { \
2358                 errno=0; \
2359                 while ( (result = fread(buf, 1, max_size, surf_parse_in))==0 && ferror(surf_parse_in)) \
2360                         { \
2361                         if( errno != EINTR) \
2362                                 { \
2363                                 YY_FATAL_ERROR( "input in flex scanner failed" ); \
2364                                 break; \
2365                                 } \
2366                         errno=0; \
2367                         clearerr(surf_parse_in); \
2368                         } \
2369                 }\
2370 \
2371
2372 #endif
2373
2374 /* No semi-colon after return; correct usage is to write "yyterminate();" -
2375  * we don't want an extra ';' after the "return" because that will cause
2376  * some compilers to complain about unreachable statements.
2377  */
2378 #ifndef yyterminate
2379 #define yyterminate() return YY_NULL
2380 #endif
2381
2382 /* Number of entries by which start-condition stack grows. */
2383 #ifndef YY_START_STACK_INCR
2384 #define YY_START_STACK_INCR 25
2385 #endif
2386
2387 /* Report a fatal error. */
2388 #ifndef YY_FATAL_ERROR
2389 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
2390 #endif
2391
2392 /* end tables serialization structures and prototypes */
2393
2394 /* Default declaration of generated scanner - a define so the user can
2395  * easily add parameters.
2396  */
2397 #ifndef YY_DECL
2398 #define YY_DECL_IS_OURS 1
2399
2400 extern int surf_parse_lex (void);
2401
2402 #define YY_DECL int surf_parse_lex (void)
2403 #endif /* !YY_DECL */
2404
2405 /* Code executed at the beginning of each rule, after surf_parse_text and surf_parse_leng
2406  * have been set up.
2407  */
2408 #ifndef YY_USER_ACTION
2409 #define YY_USER_ACTION
2410 #endif
2411
2412 /* Code executed at the end of each rule. */
2413 #ifndef YY_BREAK
2414 #define YY_BREAK break;
2415 #endif
2416
2417 #define YY_RULE_SETUP \
2418         YY_USER_ACTION
2419
2420 /** The main scanner function which does all the work.
2421  */
2422 YY_DECL
2423 {
2424         register yy_state_type yy_current_state;
2425         register char *yy_cp, *yy_bp;
2426         register int yy_act;
2427     
2428  /* Bypass Flex's default INITIAL state and begin by parsing the XML prolog. */
2429  SET(PROLOG);
2430  reset_surfxml_parse_err_msg();
2431  surfxml_bufferstack = (char *) malloc(FLEXML_BUFFERSTACKSIZE);
2432  assert(surfxml_bufferstack);
2433  #ifdef FLEX_DEBUG
2434  {
2435      int i;
2436      for (i = 0; i < blimit; i++) {
2437          surfxml_bufferstack[i] = '\377';
2438      }
2439  }
2440  #endif
2441  surfxml_bufferstack[0] = '\0';
2442  indexstack = (int *) malloc(FLEXML_INDEXSTACKSIZE * sizeof(int));
2443  assert(indexstack);
2444  indexstack[0] = 0;
2445
2446   /* FleXML_init */
2447   bnext = inext = 1;
2448   surfxml_bufferliteral('\0', &bnext, "0.0");
2449   surfxml_bufferliteral('\0', &bnext, "http://simgrid.gforge.inria.fr/");
2450   surfxml_bufferliteral('\0', &bnext, "http://simgrid.gforge.inria.fr/");
2451   surfxml_bufferliteral('\0', &bnext, "1.0");
2452   surfxml_bufferliteral('\0', &bnext, "1.0");
2453   surfxml_bufferliteral('\0', &bnext, "1.0");
2454   surfxml_bufferliteral('\0', &bnext, "1.0");
2455   surfxml_bufferliteral('\0', &bnext, "-1.0");
2456   surfxml_bufferliteral('\0', &bnext, "0.0");
2457   surfxml_bufferliteral('\0', &bnext, "0.0");
2458   surfxml_bufferliteral('\0', &bnext, "0.0");
2459   surfxml_bufferliteral('\0', &bnext, "0.0");
2460   surfxml_bufferliteral('\0', &bnext, "0.0");
2461   surfxml_bufferliteral('\0', &bnext, "-1.0");
2462   surfxml_bufferliteral('\0', &bnext, "-1.0");
2463   if(!surfxml_statenames) {surfxml_statenames= (const char **)calloc(IMPOSSIBLE,sizeof(char*));
2464   surfxml_statenames[PROLOG] = NULL;
2465   surfxml_statenames[DOCTYPE] = NULL;
2466   surfxml_statenames[EPILOG] = NULL;
2467   surfxml_statenames[INCOMMENT] = NULL;
2468   surfxml_statenames[INPI] = NULL;
2469   surfxml_statenames[VALUE1] = NULL;
2470   surfxml_statenames[VALUE2] = NULL;
2471   surfxml_statenames[CDATA] = NULL;
2472   surfxml_statenames[ROOT_surfxml_platform] = NULL;
2473   surfxml_statenames[AL_surfxml_platform] = NULL;
2474   surfxml_statenames[S_surfxml_platform] = "platform";
2475   surfxml_statenames[S_surfxml_platform_1] = "platform";
2476   surfxml_statenames[S_surfxml_platform_2] = "platform";
2477   surfxml_statenames[S_surfxml_platform_3] = "platform";
2478   surfxml_statenames[S_surfxml_platform_4] = "platform";
2479   surfxml_statenames[S_surfxml_platform_5] = "platform";
2480   surfxml_statenames[E_surfxml_platform] = "platform";
2481   surfxml_statenames[ROOT_surfxml_include] = NULL;
2482   surfxml_statenames[AL_surfxml_include] = NULL;
2483   surfxml_statenames[E_surfxml_include] = "include";
2484   surfxml_statenames[ROOT_surfxml_host] = NULL;
2485   surfxml_statenames[AL_surfxml_host] = NULL;
2486   surfxml_statenames[S_surfxml_host] = "host";
2487   surfxml_statenames[S_surfxml_host_1] = "host";
2488   surfxml_statenames[S_surfxml_host_2] = "host";
2489   surfxml_statenames[E_surfxml_host] = "host";
2490   surfxml_statenames[ROOT_surfxml_prop] = NULL;
2491   surfxml_statenames[AL_surfxml_prop] = NULL;
2492   surfxml_statenames[E_surfxml_prop] = "prop";
2493   surfxml_statenames[ROOT_surfxml_router] = NULL;
2494   surfxml_statenames[AL_surfxml_router] = NULL;
2495   surfxml_statenames[E_surfxml_router] = "router";
2496   surfxml_statenames[ROOT_surfxml_link] = NULL;
2497   surfxml_statenames[AL_surfxml_link] = NULL;
2498   surfxml_statenames[S_surfxml_link] = "link";
2499   surfxml_statenames[S_surfxml_link_1] = "link";
2500   surfxml_statenames[S_surfxml_link_2] = "link";
2501   surfxml_statenames[E_surfxml_link] = "link";
2502   surfxml_statenames[ROOT_surfxml_route] = NULL;
2503   surfxml_statenames[AL_surfxml_route] = NULL;
2504   surfxml_statenames[S_surfxml_route] = "route";
2505   surfxml_statenames[S_surfxml_route_1] = "route";
2506   surfxml_statenames[S_surfxml_route_2] = "route";
2507   surfxml_statenames[E_surfxml_route] = "route";
2508   surfxml_statenames[ROOT_surfxml_link_c_ctn] = NULL;
2509   surfxml_statenames[AL_surfxml_link_c_ctn] = NULL;
2510   surfxml_statenames[E_surfxml_link_c_ctn] = "link:ctn";
2511   surfxml_statenames[ROOT_surfxml_process] = NULL;
2512   surfxml_statenames[AL_surfxml_process] = NULL;
2513   surfxml_statenames[S_surfxml_process] = "process";
2514   surfxml_statenames[S_surfxml_process_1] = "process";
2515   surfxml_statenames[S_surfxml_process_2] = "process";
2516   surfxml_statenames[E_surfxml_process] = "process";
2517   surfxml_statenames[ROOT_surfxml_argument] = NULL;
2518   surfxml_statenames[AL_surfxml_argument] = NULL;
2519   surfxml_statenames[E_surfxml_argument] = "argument";
2520   }
2521
2522  /* COMMENTS and PIs: handled uniformly for efficiency. */
2523
2524         if ( !(yy_init) )
2525                 {
2526                 (yy_init) = 1;
2527
2528 #ifdef YY_USER_INIT
2529                 YY_USER_INIT;
2530 #endif
2531
2532                 if ( ! (yy_start) )
2533                         (yy_start) = 1; /* first start state */
2534
2535                 if ( ! surf_parse_in )
2536                         surf_parse_in = stdin;
2537
2538                 if ( ! surf_parse_out )
2539                         surf_parse_out = stdout;
2540
2541                 if ( ! YY_CURRENT_BUFFER ) {
2542                         surf_parse_ensure_buffer_stack ();
2543                         YY_CURRENT_BUFFER_LVALUE =
2544                                 surf_parse__create_buffer(surf_parse_in,YY_BUF_SIZE );
2545                 }
2546
2547                 surf_parse__load_buffer_state( );
2548                 }
2549
2550         while ( 1 )             /* loops until end-of-file is reached */
2551                 {
2552                 yy_cp = (yy_c_buf_p);
2553
2554                 /* Support of surf_parse_text. */
2555                 *yy_cp = (yy_hold_char);
2556
2557                 /* yy_bp points to the position in yy_ch_buf of the start of
2558                  * the current run.
2559                  */
2560                 yy_bp = yy_cp;
2561
2562                 yy_current_state = (yy_start);
2563 yy_match:
2564                 do
2565                         {
2566                         register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
2567                         if ( yy_accept[yy_current_state] )
2568                                 {
2569                                 (yy_last_accepting_state) = yy_current_state;
2570                                 (yy_last_accepting_cpos) = yy_cp;
2571                                 }
2572                         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2573                                 {
2574                                 yy_current_state = (int) yy_def[yy_current_state];
2575                                 if ( yy_current_state >= 1481 )
2576                                         yy_c = yy_meta[(unsigned int) yy_c];
2577                                 }
2578                         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2579                         ++yy_cp;
2580                         }
2581                 while ( yy_base[yy_current_state] != 4138 );
2582
2583 yy_find_action:
2584                 yy_act = yy_accept[yy_current_state];
2585                 if ( yy_act == 0 )
2586                         { /* have to back up */
2587                         yy_cp = (yy_last_accepting_cpos);
2588                         yy_current_state = (yy_last_accepting_state);
2589                         yy_act = yy_accept[yy_current_state];
2590                         }
2591
2592                 YY_DO_BEFORE_ACTION;
2593
2594                 if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] )
2595                         {
2596                         int yyl;
2597                         for ( yyl = 0; yyl < surf_parse_leng; ++yyl )
2598                                 if ( surf_parse_text[yyl] == '\n' )
2599                                            
2600     surf_parse_lineno++;
2601 ;
2602                         }
2603
2604 do_action:      /* This label is used only to access EOF actions. */
2605
2606                 switch ( yy_act )
2607         { /* beginning of action switch */
2608                         case 0: /* must back up */
2609                         /* undo the effects of YY_DO_BEFORE_ACTION */
2610                         *yy_cp = (yy_hold_char);
2611                         yy_cp = (yy_last_accepting_cpos);
2612                         yy_current_state = (yy_last_accepting_state);
2613                         goto yy_find_action;
2614
2615 case 1:
2616 YY_RULE_SETUP
2617 ENTER(INCOMMENT);
2618         YY_BREAK
2619 case 2:
2620 YY_RULE_SETUP
2621 ENTER(INPI);
2622         YY_BREAK
2623
2624 case 3:
2625 YY_RULE_SETUP
2626 LEAVE;
2627         YY_BREAK
2628 case 4:
2629 case 5:
2630 case 6:
2631 /* rule 6 can match eol */
2632 YY_RULE_SETUP
2633 SKIP;
2634         YY_BREAK
2635 case YY_STATE_EOF(INCOMMENT):
2636 FAIL("EOF in comment.");
2637         YY_BREAK
2638
2639 case 7:
2640 YY_RULE_SETUP
2641 LEAVE;
2642         YY_BREAK
2643 case 8:
2644 case 9:
2645 /* rule 9 can match eol */
2646 YY_RULE_SETUP
2647 SKIP;
2648         YY_BREAK
2649 case YY_STATE_EOF(INPI):
2650 FAIL("EOF in PI (processing instruction).");
2651         YY_BREAK
2652
2653 /* SPACES: skipped uniformly */
2654 case 10:
2655 /* rule 10 can match eol */
2656 YY_RULE_SETUP
2657 SKIP;
2658         YY_BREAK
2659 /* PROLOG: determine root element and process it. */
2660
2661 case 11:
2662 /* rule 11 can match eol */
2663 YY_RULE_SETUP
2664 SET(DOCTYPE); 
2665         YY_BREAK
2666 case 12:
2667 /* rule 12 can match eol */
2668 YY_RULE_SETUP
2669 FAIL("Bad declaration %s.",surf_parse_text);
2670         YY_BREAK
2671
2672 case 13:
2673 /* rule 13 can match eol */
2674 YY_RULE_SETUP
2675 SET(ROOT_surfxml_link);
2676         YY_BREAK
2677 case 14:
2678 /* rule 14 can match eol */
2679 YY_RULE_SETUP
2680 SET(ROOT_surfxml_include);
2681         YY_BREAK
2682 case 15:
2683 /* rule 15 can match eol */
2684 YY_RULE_SETUP
2685 SET(ROOT_surfxml_route);
2686         YY_BREAK
2687 case 16:
2688 /* rule 16 can match eol */
2689 YY_RULE_SETUP
2690 SET(ROOT_surfxml_process);
2691         YY_BREAK
2692 case 17:
2693 /* rule 17 can match eol */
2694 YY_RULE_SETUP
2695 SET(ROOT_surfxml_link_c_ctn);
2696         YY_BREAK
2697 case 18:
2698 /* rule 18 can match eol */
2699 YY_RULE_SETUP
2700 SET(ROOT_surfxml_router);
2701         YY_BREAK
2702 case 19:
2703 /* rule 19 can match eol */
2704 YY_RULE_SETUP
2705 SET(ROOT_surfxml_host);
2706         YY_BREAK
2707 case 20:
2708 /* rule 20 can match eol */
2709 YY_RULE_SETUP
2710 SET(ROOT_surfxml_argument);
2711         YY_BREAK
2712 case 21:
2713 /* rule 21 can match eol */
2714 YY_RULE_SETUP
2715 SET(ROOT_surfxml_prop);
2716         YY_BREAK
2717 case 22:
2718 /* rule 22 can match eol */
2719 YY_RULE_SETUP
2720 SET(ROOT_surfxml_platform);
2721         YY_BREAK
2722 case 23:
2723 /* rule 23 can match eol */
2724 YY_RULE_SETUP
2725 FAIL("Bad declaration %s.",surf_parse_text);
2726         YY_BREAK
2727 case 24:
2728 YY_RULE_SETUP
2729 FAIL("Unexpected character `%c' in prolog.", surf_parse_text[0]);
2730         YY_BREAK
2731 case YY_STATE_EOF(PROLOG):
2732 case YY_STATE_EOF(DOCTYPE):
2733 FAIL("EOF in prolog.");
2734         YY_BREAK
2735
2736 /* RULES DERIVED FROM DTD. */
2737 /* <!-- Small DTD for SURF based tools. -->  */
2738 case 25:
2739 /* rule 25 can match eol */
2740 YY_RULE_SETUP
2741 {
2742   AX_surfxml_platform_version = 1;
2743   AX_surfxml_platform_xmlns_c_link = 5;
2744   AX_surfxml_platform_xmlns_c_route = 37;
2745   ENTER(AL_surfxml_platform); pushbuffer(0);
2746   }
2747         YY_BREAK
2748
2749 case 26:
2750 /* rule 26 can match eol */
2751 YY_RULE_SETUP
2752 ENTER(VALUE1); BUFFERSET(AX_surfxml_platform_version);
2753         YY_BREAK
2754 case 27:
2755 /* rule 27 can match eol */
2756 YY_RULE_SETUP
2757 ENTER(VALUE2); BUFFERSET(AX_surfxml_platform_version);
2758         YY_BREAK
2759 case 28:
2760 /* rule 28 can match eol */
2761 YY_RULE_SETUP
2762 ENTER(VALUE1); BUFFERSET(AX_surfxml_platform_xmlns_c_link);
2763         YY_BREAK
2764 case 29:
2765 /* rule 29 can match eol */
2766 YY_RULE_SETUP
2767 ENTER(VALUE2); BUFFERSET(AX_surfxml_platform_xmlns_c_link);
2768         YY_BREAK
2769 case 30:
2770 /* rule 30 can match eol */
2771 YY_RULE_SETUP
2772 ENTER(VALUE1); BUFFERSET(AX_surfxml_platform_xmlns_c_route);
2773         YY_BREAK
2774 case 31:
2775 /* rule 31 can match eol */
2776 YY_RULE_SETUP
2777 ENTER(VALUE2); BUFFERSET(AX_surfxml_platform_xmlns_c_route);
2778         YY_BREAK
2779 case 32:
2780 YY_RULE_SETUP
2781 {
2782   LEAVE; STag_surfxml_platform();surfxml_pcdata_ix = 0; ENTER(S_surfxml_platform);
2783  }
2784         YY_BREAK
2785 case 33:
2786 YY_RULE_SETUP
2787 {
2788   LEAVE; STag_surfxml_platform(); surfxml_pcdata_ix = 0; ETag_surfxml_platform(); popbuffer(); /* attribute */
2789   switch (YY_START) {
2790    case ROOT_surfxml_platform: SET(EPILOG); break;
2791   }
2792  }
2793         YY_BREAK
2794 case 34:
2795 YY_RULE_SETUP
2796 FAIL("Unexpected character `%c' in attribute list of platform element.", surf_parse_text[0]);
2797         YY_BREAK
2798 case 35:
2799 YY_RULE_SETUP
2800 FAIL("Bad attribute `%s' in `platform' element start tag.",surf_parse_text);
2801         YY_BREAK
2802 case YY_STATE_EOF(AL_surfxml_platform):
2803 FAIL("EOF in attribute list of `platform' element.");
2804         YY_BREAK
2805
2806 case 36:
2807 /* rule 36 can match eol */
2808 YY_RULE_SETUP
2809 {
2810   LEAVE;
2811   ETag_surfxml_platform();
2812   popbuffer(); /* attribute */
2813   switch (YY_START) {
2814    case ROOT_surfxml_platform: SET(EPILOG); break;
2815   }
2816  }
2817         YY_BREAK
2818 case 37:
2819 /* rule 37 can match eol */
2820 YY_RULE_SETUP
2821 FAIL("Unexpected end-tag `%s': `</platform>' expected.",surf_parse_text);
2822         YY_BREAK
2823 case 38:
2824 YY_RULE_SETUP
2825 FAIL("Unexpected character `%c': `</platform>' expected.",surf_parse_text[0]);
2826         YY_BREAK
2827 case YY_STATE_EOF(S_surfxml_platform_5):
2828 case YY_STATE_EOF(S_surfxml_platform_1):
2829 case YY_STATE_EOF(S_surfxml_platform_3):
2830 case YY_STATE_EOF(S_surfxml_platform):
2831 case YY_STATE_EOF(E_surfxml_platform):
2832 FAIL("Premature EOF: `</platform>' expected.");
2833         YY_BREAK
2834
2835 case 39:
2836 /* rule 39 can match eol */
2837 YY_RULE_SETUP
2838 {
2839   AX_surfxml_include_file = 0;
2840   ENTER(AL_surfxml_include); pushbuffer(0);
2841   }
2842         YY_BREAK
2843
2844 case 40:
2845 /* rule 40 can match eol */
2846 YY_RULE_SETUP
2847 ENTER(VALUE1); BUFFERSET(AX_surfxml_include_file);
2848         YY_BREAK
2849 case 41:
2850 /* rule 41 can match eol */
2851 YY_RULE_SETUP
2852 ENTER(VALUE2); BUFFERSET(AX_surfxml_include_file);
2853         YY_BREAK
2854 case 42:
2855 YY_RULE_SETUP
2856 {
2857   if (!AX_surfxml_include_file) FAIL("Required attribute `file' not set for `include' element.");
2858   LEAVE; STag_surfxml_include();surfxml_pcdata_ix = 0; ENTER(E_surfxml_include);
2859  }
2860         YY_BREAK
2861 case 43:
2862 YY_RULE_SETUP
2863 {
2864   if (!AX_surfxml_include_file) FAIL("Required attribute `file' not set for `include' element.");
2865   LEAVE; STag_surfxml_include(); surfxml_pcdata_ix = 0; ETag_surfxml_include(); popbuffer(); /* attribute */
2866   switch (YY_START) {
2867    case S_surfxml_platform_5: case S_surfxml_platform_1: case S_surfxml_platform_3: case S_surfxml_platform: case S_surfxml_platform_4: SET(S_surfxml_platform_5); break;
2868    case S_surfxml_platform_2: SET(S_surfxml_platform_3); break;
2869    case ROOT_surfxml_include: SET(EPILOG); break;
2870   }
2871  }
2872         YY_BREAK
2873 case 44:
2874 YY_RULE_SETUP
2875 FAIL("Unexpected character `%c' in attribute list of include element.", surf_parse_text[0]);
2876         YY_BREAK
2877 case 45:
2878 YY_RULE_SETUP
2879 FAIL("Bad attribute `%s' in `include' element start tag.",surf_parse_text);
2880         YY_BREAK
2881 case YY_STATE_EOF(AL_surfxml_include):
2882 FAIL("EOF in attribute list of `include' element.");
2883         YY_BREAK
2884
2885 case 46:
2886 /* rule 46 can match eol */
2887 YY_RULE_SETUP
2888 {
2889   LEAVE;
2890   ETag_surfxml_include();
2891   popbuffer(); /* attribute */
2892   switch (YY_START) {
2893    case S_surfxml_platform_5: case S_surfxml_platform_1: case S_surfxml_platform_3: case S_surfxml_platform: case S_surfxml_platform_4: SET(S_surfxml_platform_5); break;
2894    case S_surfxml_platform_2: SET(S_surfxml_platform_3); break;
2895    case ROOT_surfxml_include: SET(EPILOG); break;
2896   }
2897  }
2898         YY_BREAK
2899 case 47:
2900 /* rule 47 can match eol */
2901 YY_RULE_SETUP
2902 FAIL("Unexpected end-tag `%s': `</include>' expected.",surf_parse_text);
2903         YY_BREAK
2904 case 48:
2905 YY_RULE_SETUP
2906 FAIL("Unexpected character `%c': `</include>' expected.",surf_parse_text[0]);
2907         YY_BREAK
2908 case YY_STATE_EOF(E_surfxml_include):
2909 FAIL("Premature EOF: `</include>' expected.");
2910         YY_BREAK
2911
2912 case 49:
2913 /* rule 49 can match eol */
2914 YY_RULE_SETUP
2915 {
2916   AX_surfxml_host_id = 0;
2917   AX_surfxml_host_power = 0;
2918   AX_surfxml_host_availability = 69;
2919   AX_surfxml_host_availability_file = 0;
2920   AX_surfxml_host_state = A_surfxml_host_state_ON;
2921   AX_surfxml_host_state_file = 0;
2922   AX_surfxml_host_interference_send = 73;
2923   AX_surfxml_host_interference_recv = 77;
2924   AX_surfxml_host_interference_send_recv = 81;
2925   AX_surfxml_host_max_outgoing_rate = 85;
2926   ENTER(AL_surfxml_host); pushbuffer(0);
2927   }
2928         YY_BREAK
2929
2930 case 50:
2931 /* rule 50 can match eol */
2932 YY_RULE_SETUP
2933 ENTER(VALUE1); BUFFERSET(AX_surfxml_host_id);
2934         YY_BREAK
2935 case 51:
2936 /* rule 51 can match eol */
2937 YY_RULE_SETUP
2938 ENTER(VALUE2); BUFFERSET(AX_surfxml_host_id);
2939         YY_BREAK
2940 case 52:
2941 /* rule 52 can match eol */
2942 YY_RULE_SETUP
2943 ENTER(VALUE1); BUFFERSET(AX_surfxml_host_power);
2944         YY_BREAK
2945 case 53:
2946 /* rule 53 can match eol */
2947 YY_RULE_SETUP
2948 ENTER(VALUE2); BUFFERSET(AX_surfxml_host_power);
2949         YY_BREAK
2950 case 54:
2951 /* rule 54 can match eol */
2952 YY_RULE_SETUP
2953 ENTER(VALUE1); BUFFERSET(AX_surfxml_host_availability);
2954         YY_BREAK
2955 case 55:
2956 /* rule 55 can match eol */
2957 YY_RULE_SETUP
2958 ENTER(VALUE2); BUFFERSET(AX_surfxml_host_availability);
2959         YY_BREAK
2960 case 56:
2961 /* rule 56 can match eol */
2962 YY_RULE_SETUP
2963 ENTER(VALUE1); BUFFERSET(AX_surfxml_host_availability_file);
2964         YY_BREAK
2965 case 57:
2966 /* rule 57 can match eol */
2967 YY_RULE_SETUP
2968 ENTER(VALUE2); BUFFERSET(AX_surfxml_host_availability_file);
2969         YY_BREAK
2970 case 58:
2971 /* rule 58 can match eol */
2972 case 59:
2973 /* rule 59 can match eol */
2974 YY_RULE_SETUP
2975 A_surfxml_host_state = A_surfxml_host_state_ON;
2976         YY_BREAK
2977 case 60:
2978 /* rule 60 can match eol */
2979 case 61:
2980 /* rule 61 can match eol */
2981 YY_RULE_SETUP
2982 A_surfxml_host_state = A_surfxml_host_state_OFF;
2983         YY_BREAK
2984 case 62:
2985 /* rule 62 can match eol */
2986 YY_RULE_SETUP
2987 ENTER(VALUE1); BUFFERSET(AX_surfxml_host_state_file);
2988         YY_BREAK
2989 case 63:
2990 /* rule 63 can match eol */
2991 YY_RULE_SETUP
2992 ENTER(VALUE2); BUFFERSET(AX_surfxml_host_state_file);
2993         YY_BREAK
2994 case 64:
2995 /* rule 64 can match eol */
2996 YY_RULE_SETUP
2997 ENTER(VALUE1); BUFFERSET(AX_surfxml_host_interference_send);
2998         YY_BREAK
2999 case 65:
3000 /* rule 65 can match eol */
3001 YY_RULE_SETUP
3002 ENTER(VALUE2); BUFFERSET(AX_surfxml_host_interference_send);
3003         YY_BREAK
3004 case 66:
3005 /* rule 66 can match eol */
3006 YY_RULE_SETUP
3007 ENTER(VALUE1); BUFFERSET(AX_surfxml_host_interference_recv);
3008         YY_BREAK
3009 case 67:
3010 /* rule 67 can match eol */
3011 YY_RULE_SETUP
3012 ENTER(VALUE2); BUFFERSET(AX_surfxml_host_interference_recv);
3013         YY_BREAK
3014 case 68:
3015 /* rule 68 can match eol */
3016 YY_RULE_SETUP
3017 ENTER(VALUE1); BUFFERSET(AX_surfxml_host_interference_send_recv);
3018         YY_BREAK
3019 case 69:
3020 /* rule 69 can match eol */
3021 YY_RULE_SETUP
3022 ENTER(VALUE2); BUFFERSET(AX_surfxml_host_interference_send_recv);
3023         YY_BREAK
3024 case 70:
3025 /* rule 70 can match eol */
3026 YY_RULE_SETUP
3027 ENTER(VALUE1); BUFFERSET(AX_surfxml_host_max_outgoing_rate);
3028         YY_BREAK
3029 case 71:
3030 /* rule 71 can match eol */
3031 YY_RULE_SETUP
3032 ENTER(VALUE2); BUFFERSET(AX_surfxml_host_max_outgoing_rate);
3033         YY_BREAK
3034 case 72:
3035 YY_RULE_SETUP
3036 {
3037   if (!AX_surfxml_host_id) FAIL("Required attribute `id' not set for `host' element.");
3038   if (!AX_surfxml_host_power) FAIL("Required attribute `power' not set for `host' element.");
3039   LEAVE; STag_surfxml_host();surfxml_pcdata_ix = 0; ENTER(S_surfxml_host);
3040  }
3041         YY_BREAK
3042 case 73:
3043 YY_RULE_SETUP
3044 {
3045   if (!AX_surfxml_host_id) FAIL("Required attribute `id' not set for `host' element.");
3046   if (!AX_surfxml_host_power) FAIL("Required attribute `power' not set for `host' element.");
3047   LEAVE; STag_surfxml_host(); surfxml_pcdata_ix = 0; ETag_surfxml_host(); popbuffer(); /* attribute */
3048   switch (YY_START) {
3049    case S_surfxml_platform_2: case S_surfxml_platform_3: case S_surfxml_platform: SET(S_surfxml_platform_3); break;
3050    case ROOT_surfxml_host: SET(EPILOG); break;
3051   }
3052  }
3053         YY_BREAK
3054 case 74:
3055 YY_RULE_SETUP
3056 FAIL("Unexpected character `%c' in attribute list of host element.", surf_parse_text[0]);
3057         YY_BREAK
3058 case 75:
3059 YY_RULE_SETUP
3060 FAIL("Bad attribute `%s' in `host' element start tag.",surf_parse_text);
3061         YY_BREAK
3062 case YY_STATE_EOF(AL_surfxml_host):
3063 FAIL("EOF in attribute list of `host' element.");
3064         YY_BREAK
3065
3066 case 76:
3067 /* rule 76 can match eol */
3068 YY_RULE_SETUP
3069 {
3070   LEAVE;
3071   ETag_surfxml_host();
3072   popbuffer(); /* attribute */
3073   switch (YY_START) {
3074    case S_surfxml_platform_2: case S_surfxml_platform_3: case S_surfxml_platform: SET(S_surfxml_platform_3); break;
3075    case ROOT_surfxml_host: SET(EPILOG); break;
3076   }
3077  }
3078         YY_BREAK
3079 case 77:
3080 /* rule 77 can match eol */
3081 YY_RULE_SETUP
3082 FAIL("Unexpected end-tag `%s': `</host>' expected.",surf_parse_text);
3083         YY_BREAK
3084 case 78:
3085 YY_RULE_SETUP
3086 FAIL("Unexpected character `%c': `</host>' expected.",surf_parse_text[0]);
3087         YY_BREAK
3088 case YY_STATE_EOF(S_surfxml_host):
3089 case YY_STATE_EOF(E_surfxml_host):
3090 case YY_STATE_EOF(S_surfxml_host_2):
3091 FAIL("Premature EOF: `</host>' expected.");
3092         YY_BREAK
3093
3094 case 79:
3095 /* rule 79 can match eol */
3096 YY_RULE_SETUP
3097 {
3098   AX_surfxml_prop_id = 0;
3099   AX_surfxml_prop_value = 0;
3100   ENTER(AL_surfxml_prop); pushbuffer(0);
3101   }
3102         YY_BREAK
3103
3104 case 80:
3105 /* rule 80 can match eol */
3106 YY_RULE_SETUP
3107 ENTER(VALUE1); BUFFERSET(AX_surfxml_prop_id);
3108         YY_BREAK
3109 case 81:
3110 /* rule 81 can match eol */
3111 YY_RULE_SETUP
3112 ENTER(VALUE2); BUFFERSET(AX_surfxml_prop_id);
3113         YY_BREAK
3114 case 82:
3115 /* rule 82 can match eol */
3116 YY_RULE_SETUP
3117 ENTER(VALUE1); BUFFERSET(AX_surfxml_prop_value);
3118         YY_BREAK
3119 case 83:
3120 /* rule 83 can match eol */
3121 YY_RULE_SETUP
3122 ENTER(VALUE2); BUFFERSET(AX_surfxml_prop_value);
3123         YY_BREAK
3124 case 84:
3125 YY_RULE_SETUP
3126 {
3127   if (!AX_surfxml_prop_id) FAIL("Required attribute `id' not set for `prop' element.");
3128   if (!AX_surfxml_prop_value) FAIL("Required attribute `value' not set for `prop' element.");
3129   LEAVE; STag_surfxml_prop();surfxml_pcdata_ix = 0; ENTER(E_surfxml_prop);
3130  }
3131         YY_BREAK
3132 case 85:
3133 YY_RULE_SETUP
3134 {
3135   if (!AX_surfxml_prop_id) FAIL("Required attribute `id' not set for `prop' element.");
3136   if (!AX_surfxml_prop_value) FAIL("Required attribute `value' not set for `prop' element.");
3137   LEAVE; STag_surfxml_prop(); surfxml_pcdata_ix = 0; ETag_surfxml_prop(); popbuffer(); /* attribute */
3138   switch (YY_START) {
3139    case S_surfxml_process_1: case S_surfxml_process: case S_surfxml_process_2: SET(S_surfxml_process_2); break;
3140    case S_surfxml_host: case S_surfxml_host_1: case S_surfxml_host_2: SET(S_surfxml_host_2); break;
3141    case ROOT_surfxml_prop: SET(EPILOG); break;
3142    case S_surfxml_link_1: case S_surfxml_link_2: case S_surfxml_link: SET(S_surfxml_link_2); break;
3143   }
3144  }
3145         YY_BREAK
3146 case 86:
3147 YY_RULE_SETUP
3148 FAIL("Unexpected character `%c' in attribute list of prop element.", surf_parse_text[0]);
3149         YY_BREAK
3150 case 87:
3151 YY_RULE_SETUP
3152 FAIL("Bad attribute `%s' in `prop' element start tag.",surf_parse_text);
3153         YY_BREAK
3154 case YY_STATE_EOF(AL_surfxml_prop):
3155 FAIL("EOF in attribute list of `prop' element.");
3156         YY_BREAK
3157
3158 case 88:
3159 /* rule 88 can match eol */
3160 YY_RULE_SETUP
3161 {
3162   LEAVE;
3163   ETag_surfxml_prop();
3164   popbuffer(); /* attribute */
3165   switch (YY_START) {
3166    case S_surfxml_process_1: case S_surfxml_process: case S_surfxml_process_2: SET(S_surfxml_process_2); break;
3167    case S_surfxml_host: case S_surfxml_host_1: case S_surfxml_host_2: SET(S_surfxml_host_2); break;
3168    case ROOT_surfxml_prop: SET(EPILOG); break;
3169    case S_surfxml_link_1: case S_surfxml_link_2: case S_surfxml_link: SET(S_surfxml_link_2); break;
3170   }
3171  }
3172         YY_BREAK
3173 case 89:
3174 /* rule 89 can match eol */
3175 YY_RULE_SETUP
3176 FAIL("Unexpected end-tag `%s': `</prop>' expected.",surf_parse_text);
3177         YY_BREAK
3178 case 90:
3179 YY_RULE_SETUP
3180 FAIL("Unexpected character `%c': `</prop>' expected.",surf_parse_text[0]);
3181         YY_BREAK
3182 case YY_STATE_EOF(E_surfxml_prop):
3183 FAIL("Premature EOF: `</prop>' expected.");
3184         YY_BREAK
3185
3186 case 91:
3187 /* rule 91 can match eol */
3188 YY_RULE_SETUP
3189 {
3190   AX_surfxml_router_id = 0;
3191   ENTER(AL_surfxml_router); pushbuffer(0);
3192   }
3193         YY_BREAK
3194
3195 case 92:
3196 /* rule 92 can match eol */
3197 YY_RULE_SETUP
3198 ENTER(VALUE1); BUFFERSET(AX_surfxml_router_id);
3199         YY_BREAK
3200 case 93:
3201 /* rule 93 can match eol */
3202 YY_RULE_SETUP
3203 ENTER(VALUE2); BUFFERSET(AX_surfxml_router_id);
3204         YY_BREAK
3205 case 94:
3206 YY_RULE_SETUP
3207 {
3208   if (!AX_surfxml_router_id) FAIL("Required attribute `id' not set for `router' element.");
3209   LEAVE; STag_surfxml_router();surfxml_pcdata_ix = 0; ENTER(E_surfxml_router);
3210  }
3211         YY_BREAK
3212 case 95:
3213 YY_RULE_SETUP
3214 {
3215   if (!AX_surfxml_router_id) FAIL("Required attribute `id' not set for `router' element.");
3216   LEAVE; STag_surfxml_router(); surfxml_pcdata_ix = 0; ETag_surfxml_router(); popbuffer(); /* attribute */
3217   switch (YY_START) {
3218    case S_surfxml_platform_2: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_3); break;
3219    case ROOT_surfxml_router: SET(EPILOG); break;
3220   }
3221  }
3222         YY_BREAK
3223 case 96:
3224 YY_RULE_SETUP
3225 FAIL("Unexpected character `%c' in attribute list of router element.", surf_parse_text[0]);
3226         YY_BREAK
3227 case 97:
3228 YY_RULE_SETUP
3229 FAIL("Bad attribute `%s' in `router' element start tag.",surf_parse_text);
3230         YY_BREAK
3231 case YY_STATE_EOF(AL_surfxml_router):
3232 FAIL("EOF in attribute list of `router' element.");
3233         YY_BREAK
3234
3235 case 98:
3236 /* rule 98 can match eol */
3237 YY_RULE_SETUP
3238 {
3239   LEAVE;
3240   ETag_surfxml_router();
3241   popbuffer(); /* attribute */
3242   switch (YY_START) {
3243    case S_surfxml_platform_2: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_3); break;
3244    case ROOT_surfxml_router: SET(EPILOG); break;
3245   }
3246  }
3247         YY_BREAK
3248 case 99:
3249 /* rule 99 can match eol */
3250 YY_RULE_SETUP
3251 FAIL("Unexpected end-tag `%s': `</router>' expected.",surf_parse_text);
3252         YY_BREAK
3253 case 100:
3254 YY_RULE_SETUP
3255 FAIL("Unexpected character `%c': `</router>' expected.",surf_parse_text[0]);
3256         YY_BREAK
3257 case YY_STATE_EOF(E_surfxml_router):
3258 FAIL("Premature EOF: `</router>' expected.");
3259         YY_BREAK
3260
3261 case 101:
3262 /* rule 101 can match eol */
3263 YY_RULE_SETUP
3264 {
3265   AX_surfxml_link_id = 0;
3266   AX_surfxml_link_bandwidth = 0;
3267   AX_surfxml_link_bandwidth_file = 0;
3268   AX_surfxml_link_latency = 90;
3269   AX_surfxml_link_latency_file = 0;
3270   AX_surfxml_link_state = A_surfxml_link_state_ON;
3271   AX_surfxml_link_state_file = 0;
3272   AX_surfxml_link_sharing_policy = A_surfxml_link_sharing_policy_SHARED;
3273   ENTER(AL_surfxml_link); pushbuffer(0);
3274   }
3275         YY_BREAK
3276
3277 case 102:
3278 /* rule 102 can match eol */
3279 YY_RULE_SETUP
3280 ENTER(VALUE1); BUFFERSET(AX_surfxml_link_id);
3281         YY_BREAK
3282 case 103:
3283 /* rule 103 can match eol */
3284 YY_RULE_SETUP
3285 ENTER(VALUE2); BUFFERSET(AX_surfxml_link_id);
3286         YY_BREAK
3287 case 104:
3288 /* rule 104 can match eol */
3289 YY_RULE_SETUP
3290 ENTER(VALUE1); BUFFERSET(AX_surfxml_link_bandwidth);
3291         YY_BREAK
3292 case 105:
3293 /* rule 105 can match eol */
3294 YY_RULE_SETUP
3295 ENTER(VALUE2); BUFFERSET(AX_surfxml_link_bandwidth);
3296         YY_BREAK
3297 case 106:
3298 /* rule 106 can match eol */
3299 YY_RULE_SETUP
3300 ENTER(VALUE1); BUFFERSET(AX_surfxml_link_bandwidth_file);
3301         YY_BREAK
3302 case 107:
3303 /* rule 107 can match eol */
3304 YY_RULE_SETUP
3305 ENTER(VALUE2); BUFFERSET(AX_surfxml_link_bandwidth_file);
3306         YY_BREAK
3307 case 108:
3308 /* rule 108 can match eol */
3309 YY_RULE_SETUP
3310 ENTER(VALUE1); BUFFERSET(AX_surfxml_link_latency);
3311         YY_BREAK
3312 case 109:
3313 /* rule 109 can match eol */
3314 YY_RULE_SETUP
3315 ENTER(VALUE2); BUFFERSET(AX_surfxml_link_latency);
3316         YY_BREAK
3317 case 110:
3318 /* rule 110 can match eol */
3319 YY_RULE_SETUP
3320 ENTER(VALUE1); BUFFERSET(AX_surfxml_link_latency_file);
3321         YY_BREAK
3322 case 111:
3323 /* rule 111 can match eol */
3324 YY_RULE_SETUP
3325 ENTER(VALUE2); BUFFERSET(AX_surfxml_link_latency_file);
3326         YY_BREAK
3327 case 112:
3328 /* rule 112 can match eol */
3329 case 113:
3330 /* rule 113 can match eol */
3331 YY_RULE_SETUP
3332 A_surfxml_link_state = A_surfxml_link_state_ON;
3333         YY_BREAK
3334 case 114:
3335 /* rule 114 can match eol */
3336 case 115:
3337 /* rule 115 can match eol */
3338 YY_RULE_SETUP
3339 A_surfxml_link_state = A_surfxml_link_state_OFF;
3340         YY_BREAK
3341 case 116:
3342 /* rule 116 can match eol */
3343 YY_RULE_SETUP
3344 ENTER(VALUE1); BUFFERSET(AX_surfxml_link_state_file);
3345         YY_BREAK
3346 case 117:
3347 /* rule 117 can match eol */
3348 YY_RULE_SETUP
3349 ENTER(VALUE2); BUFFERSET(AX_surfxml_link_state_file);
3350         YY_BREAK
3351 case 118:
3352 /* rule 118 can match eol */
3353 case 119:
3354 /* rule 119 can match eol */
3355 YY_RULE_SETUP
3356 A_surfxml_link_sharing_policy = A_surfxml_link_sharing_policy_SHARED;
3357         YY_BREAK
3358 case 120:
3359 /* rule 120 can match eol */
3360 case 121:
3361 /* rule 121 can match eol */
3362 YY_RULE_SETUP
3363 A_surfxml_link_sharing_policy = A_surfxml_link_sharing_policy_FATPIPE;
3364         YY_BREAK
3365 case 122:
3366 YY_RULE_SETUP
3367 {
3368   if (!AX_surfxml_link_id) FAIL("Required attribute `id' not set for `link' element.");
3369   if (!AX_surfxml_link_bandwidth) FAIL("Required attribute `bandwidth' not set for `link' element.");
3370   LEAVE; STag_surfxml_link();surfxml_pcdata_ix = 0; ENTER(S_surfxml_link);
3371  }
3372         YY_BREAK
3373 case 123:
3374 YY_RULE_SETUP
3375 {
3376   if (!AX_surfxml_link_id) FAIL("Required attribute `id' not set for `link' element.");
3377   if (!AX_surfxml_link_bandwidth) FAIL("Required attribute `bandwidth' not set for `link' element.");
3378   LEAVE; STag_surfxml_link(); surfxml_pcdata_ix = 0; ETag_surfxml_link(); popbuffer(); /* attribute */
3379   switch (YY_START) {
3380    case S_surfxml_platform_2: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_3); break;
3381    case ROOT_surfxml_link: SET(EPILOG); break;
3382   }
3383  }
3384         YY_BREAK
3385 case 124:
3386 YY_RULE_SETUP
3387 FAIL("Unexpected character `%c' in attribute list of link element.", surf_parse_text[0]);
3388         YY_BREAK
3389 case 125:
3390 YY_RULE_SETUP
3391 FAIL("Bad attribute `%s' in `link' element start tag.",surf_parse_text);
3392         YY_BREAK
3393 case YY_STATE_EOF(AL_surfxml_link):
3394 FAIL("EOF in attribute list of `link' element.");
3395         YY_BREAK
3396
3397 case 126:
3398 /* rule 126 can match eol */
3399 YY_RULE_SETUP
3400 {
3401   LEAVE;
3402   ETag_surfxml_link();
3403   popbuffer(); /* attribute */
3404   switch (YY_START) {
3405    case S_surfxml_platform_2: case S_surfxml_platform: case S_surfxml_platform_3: SET(S_surfxml_platform_3); break;
3406    case ROOT_surfxml_link: SET(EPILOG); break;
3407   }
3408  }
3409         YY_BREAK
3410 case 127:
3411 /* rule 127 can match eol */
3412 YY_RULE_SETUP
3413 FAIL("Unexpected end-tag `%s': `</link>' expected.",surf_parse_text);
3414         YY_BREAK
3415 case 128:
3416 YY_RULE_SETUP
3417 FAIL("Unexpected character `%c': `</link>' expected.",surf_parse_text[0]);
3418         YY_BREAK
3419 case YY_STATE_EOF(S_surfxml_link_2):
3420 case YY_STATE_EOF(E_surfxml_link):
3421 case YY_STATE_EOF(S_surfxml_link):
3422 FAIL("Premature EOF: `</link>' expected.");
3423         YY_BREAK
3424
3425 case 129:
3426 /* rule 129 can match eol */
3427 YY_RULE_SETUP
3428 {
3429   AX_surfxml_route_src = 0;
3430   AX_surfxml_route_dst = 0;
3431   AX_surfxml_route_impact_on_src = 94;
3432   AX_surfxml_route_impact_on_dst = 98;
3433   AX_surfxml_route_impact_on_src_with_other_recv = 102;
3434   AX_surfxml_route_impact_on_dst_with_other_send = 106;
3435   ENTER(AL_surfxml_route); pushbuffer(0);
3436   }
3437         YY_BREAK
3438
3439 case 130:
3440 /* rule 130 can match eol */
3441 YY_RULE_SETUP
3442 ENTER(VALUE1); BUFFERSET(AX_surfxml_route_src);
3443         YY_BREAK
3444 case 131:
3445 /* rule 131 can match eol */
3446 YY_RULE_SETUP
3447 ENTER(VALUE2); BUFFERSET(AX_surfxml_route_src);
3448         YY_BREAK
3449 case 132:
3450 /* rule 132 can match eol */
3451 YY_RULE_SETUP
3452 ENTER(VALUE1); BUFFERSET(AX_surfxml_route_dst);
3453         YY_BREAK
3454 case 133:
3455 /* rule 133 can match eol */
3456 YY_RULE_SETUP
3457 ENTER(VALUE2); BUFFERSET(AX_surfxml_route_dst);
3458         YY_BREAK
3459 case 134:
3460 /* rule 134 can match eol */
3461 YY_RULE_SETUP
3462 ENTER(VALUE1); BUFFERSET(AX_surfxml_route_impact_on_src);
3463         YY_BREAK
3464 case 135:
3465 /* rule 135 can match eol */
3466 YY_RULE_SETUP
3467 ENTER(VALUE2); BUFFERSET(AX_surfxml_route_impact_on_src);
3468         YY_BREAK
3469 case 136:
3470 /* rule 136 can match eol */
3471 YY_RULE_SETUP
3472 ENTER(VALUE1); BUFFERSET(AX_surfxml_route_impact_on_dst);
3473         YY_BREAK
3474 case 137:
3475 /* rule 137 can match eol */
3476 YY_RULE_SETUP
3477 ENTER(VALUE2); BUFFERSET(AX_surfxml_route_impact_on_dst);
3478         YY_BREAK
3479 case 138:
3480 /* rule 138 can match eol */
3481 YY_RULE_SETUP
3482 ENTER(VALUE1); BUFFERSET(AX_surfxml_route_impact_on_src_with_other_recv);
3483         YY_BREAK
3484 case 139:
3485 /* rule 139 can match eol */
3486 YY_RULE_SETUP
3487 ENTER(VALUE2); BUFFERSET(AX_surfxml_route_impact_on_src_with_other_recv);
3488         YY_BREAK
3489 case 140:
3490 /* rule 140 can match eol */
3491 YY_RULE_SETUP
3492 ENTER(VALUE1); BUFFERSET(AX_surfxml_route_impact_on_dst_with_other_send);
3493         YY_BREAK
3494 case 141:
3495 /* rule 141 can match eol */
3496 YY_RULE_SETUP
3497 ENTER(VALUE2); BUFFERSET(AX_surfxml_route_impact_on_dst_with_other_send);
3498         YY_BREAK
3499 case 142:
3500 YY_RULE_SETUP
3501 {
3502   if (!AX_surfxml_route_src) FAIL("Required attribute `src' not set for `route' element.");
3503   if (!AX_surfxml_route_dst) FAIL("Required attribute `dst' not set for `route' element.");
3504   LEAVE; STag_surfxml_route();surfxml_pcdata_ix = 0; ENTER(S_surfxml_route);
3505  }
3506         YY_BREAK
3507 case 143:
3508 YY_RULE_SETUP
3509 {
3510   if (!AX_surfxml_route_src) FAIL("Required attribute `src' not set for `route' element.");
3511   if (!AX_surfxml_route_dst) FAIL("Required attribute `dst' not set for `route' element.");
3512   LEAVE; STag_surfxml_route(); surfxml_pcdata_ix = 0; ETag_surfxml_route(); popbuffer(); /* attribute */
3513   switch (YY_START) {
3514    case S_surfxml_platform_5: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: case S_surfxml_platform_4: SET(S_surfxml_platform_5); break;
3515    case ROOT_surfxml_route: SET(EPILOG); break;
3516   }
3517  }
3518         YY_BREAK
3519 case 144:
3520 YY_RULE_SETUP
3521 FAIL("Unexpected character `%c' in attribute list of route element.", surf_parse_text[0]);
3522         YY_BREAK
3523 case 145:
3524 YY_RULE_SETUP
3525 FAIL("Bad attribute `%s' in `route' element start tag.",surf_parse_text);
3526         YY_BREAK
3527 case YY_STATE_EOF(AL_surfxml_route):
3528 FAIL("EOF in attribute list of `route' element.");
3529         YY_BREAK
3530
3531 case 146:
3532 /* rule 146 can match eol */
3533 YY_RULE_SETUP
3534 {
3535   LEAVE;
3536   ETag_surfxml_route();
3537   popbuffer(); /* attribute */
3538   switch (YY_START) {
3539    case S_surfxml_platform_5: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: case S_surfxml_platform_4: SET(S_surfxml_platform_5); break;
3540    case ROOT_surfxml_route: SET(EPILOG); break;
3541   }
3542  }
3543         YY_BREAK
3544 case 147:
3545 /* rule 147 can match eol */
3546 YY_RULE_SETUP
3547 FAIL("Unexpected end-tag `%s': `</route>' expected.",surf_parse_text);
3548         YY_BREAK
3549 case 148:
3550 YY_RULE_SETUP
3551 FAIL("Unexpected character `%c': `</route>' expected.",surf_parse_text[0]);
3552         YY_BREAK
3553 case YY_STATE_EOF(S_surfxml_route):
3554 case YY_STATE_EOF(S_surfxml_route_2):
3555 case YY_STATE_EOF(E_surfxml_route):
3556 FAIL("Premature EOF: `</route>' expected.");
3557         YY_BREAK
3558
3559 case 149:
3560 /* rule 149 can match eol */
3561 YY_RULE_SETUP
3562 {
3563   AX_surfxml_link_c_ctn_id = 0;
3564   ENTER(AL_surfxml_link_c_ctn); pushbuffer(0);
3565   }
3566         YY_BREAK
3567
3568 case 150:
3569 /* rule 150 can match eol */
3570 YY_RULE_SETUP
3571 ENTER(VALUE1); BUFFERSET(AX_surfxml_link_c_ctn_id);
3572         YY_BREAK
3573 case 151:
3574 /* rule 151 can match eol */
3575 YY_RULE_SETUP
3576 ENTER(VALUE2); BUFFERSET(AX_surfxml_link_c_ctn_id);
3577         YY_BREAK
3578 case 152:
3579 YY_RULE_SETUP
3580 {
3581   if (!AX_surfxml_link_c_ctn_id) FAIL("Required attribute `id' not set for `link:ctn' element.");
3582   LEAVE; STag_surfxml_link_c_ctn();surfxml_pcdata_ix = 0; ENTER(E_surfxml_link_c_ctn);
3583  }
3584         YY_BREAK
3585 case 153:
3586 YY_RULE_SETUP
3587 {
3588   if (!AX_surfxml_link_c_ctn_id) FAIL("Required attribute `id' not set for `link:ctn' element.");
3589   LEAVE; STag_surfxml_link_c_ctn(); surfxml_pcdata_ix = 0; ETag_surfxml_link_c_ctn(); popbuffer(); /* attribute */
3590   switch (YY_START) {
3591    case S_surfxml_route_1: case S_surfxml_route: case S_surfxml_route_2: SET(S_surfxml_route_2); break;
3592    case ROOT_surfxml_link_c_ctn: SET(EPILOG); break;
3593   }
3594  }
3595         YY_BREAK
3596 case 154:
3597 YY_RULE_SETUP
3598 FAIL("Unexpected character `%c' in attribute list of link:ctn element.", surf_parse_text[0]);
3599         YY_BREAK
3600 case 155:
3601 YY_RULE_SETUP
3602 FAIL("Bad attribute `%s' in `link:ctn' element start tag.",surf_parse_text);
3603         YY_BREAK
3604 case YY_STATE_EOF(AL_surfxml_link_c_ctn):
3605 FAIL("EOF in attribute list of `link:ctn' element.");
3606         YY_BREAK
3607
3608 case 156:
3609 /* rule 156 can match eol */
3610 YY_RULE_SETUP
3611 {
3612   LEAVE;
3613   ETag_surfxml_link_c_ctn();
3614   popbuffer(); /* attribute */
3615   switch (YY_START) {
3616    case S_surfxml_route_1: case S_surfxml_route: case S_surfxml_route_2: SET(S_surfxml_route_2); break;
3617    case ROOT_surfxml_link_c_ctn: SET(EPILOG); break;
3618   }
3619  }
3620         YY_BREAK
3621 case 157:
3622 /* rule 157 can match eol */
3623 YY_RULE_SETUP
3624 FAIL("Unexpected end-tag `%s': `</link:ctn>' expected.",surf_parse_text);
3625         YY_BREAK
3626 case 158:
3627 YY_RULE_SETUP
3628 FAIL("Unexpected character `%c': `</link:ctn>' expected.",surf_parse_text[0]);
3629         YY_BREAK
3630 case YY_STATE_EOF(E_surfxml_link_c_ctn):
3631 FAIL("Premature EOF: `</link:ctn>' expected.");
3632         YY_BREAK
3633
3634 case 159:
3635 /* rule 159 can match eol */
3636 YY_RULE_SETUP
3637 {
3638   AX_surfxml_process_host = 0;
3639   AX_surfxml_process_function = 0;
3640   AX_surfxml_process_start_time = 110;
3641   AX_surfxml_process_kill_time = 115;
3642   ENTER(AL_surfxml_process); pushbuffer(0);
3643   }
3644         YY_BREAK
3645
3646 case 160:
3647 /* rule 160 can match eol */
3648 YY_RULE_SETUP
3649 ENTER(VALUE1); BUFFERSET(AX_surfxml_process_host);
3650         YY_BREAK
3651 case 161:
3652 /* rule 161 can match eol */
3653 YY_RULE_SETUP
3654 ENTER(VALUE2); BUFFERSET(AX_surfxml_process_host);
3655         YY_BREAK
3656 case 162:
3657 /* rule 162 can match eol */
3658 YY_RULE_SETUP
3659 ENTER(VALUE1); BUFFERSET(AX_surfxml_process_function);
3660         YY_BREAK
3661 case 163:
3662 /* rule 163 can match eol */
3663 YY_RULE_SETUP
3664 ENTER(VALUE2); BUFFERSET(AX_surfxml_process_function);
3665         YY_BREAK
3666 case 164:
3667 /* rule 164 can match eol */
3668 YY_RULE_SETUP
3669 ENTER(VALUE1); BUFFERSET(AX_surfxml_process_start_time);
3670         YY_BREAK
3671 case 165:
3672 /* rule 165 can match eol */
3673 YY_RULE_SETUP
3674 ENTER(VALUE2); BUFFERSET(AX_surfxml_process_start_time);
3675         YY_BREAK
3676 case 166:
3677 /* rule 166 can match eol */
3678 YY_RULE_SETUP
3679 ENTER(VALUE1); BUFFERSET(AX_surfxml_process_kill_time);
3680         YY_BREAK
3681 case 167:
3682 /* rule 167 can match eol */
3683 YY_RULE_SETUP
3684 ENTER(VALUE2); BUFFERSET(AX_surfxml_process_kill_time);
3685         YY_BREAK
3686 case 168:
3687 YY_RULE_SETUP
3688 {
3689   if (!AX_surfxml_process_host) FAIL("Required attribute `host' not set for `process' element.");
3690   if (!AX_surfxml_process_function) FAIL("Required attribute `function' not set for `process' element.");
3691   LEAVE; STag_surfxml_process();surfxml_pcdata_ix = 0; ENTER(S_surfxml_process);
3692  }
3693         YY_BREAK
3694 case 169:
3695 YY_RULE_SETUP
3696 {
3697   if (!AX_surfxml_process_host) FAIL("Required attribute `host' not set for `process' element.");
3698   if (!AX_surfxml_process_function) FAIL("Required attribute `function' not set for `process' element.");
3699   LEAVE; STag_surfxml_process(); surfxml_pcdata_ix = 0; ETag_surfxml_process(); popbuffer(); /* attribute */
3700   switch (YY_START) {
3701    case S_surfxml_platform_5: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: case S_surfxml_platform_4: SET(S_surfxml_platform_5); break;
3702    case ROOT_surfxml_process: SET(EPILOG); break;
3703   }
3704  }
3705         YY_BREAK
3706 case 170:
3707 YY_RULE_SETUP
3708 FAIL("Unexpected character `%c' in attribute list of process element.", surf_parse_text[0]);
3709         YY_BREAK
3710 case 171:
3711 YY_RULE_SETUP
3712 FAIL("Bad attribute `%s' in `process' element start tag.",surf_parse_text);
3713         YY_BREAK
3714 case YY_STATE_EOF(AL_surfxml_process):
3715 FAIL("EOF in attribute list of `process' element.");
3716         YY_BREAK
3717
3718 case 172:
3719 /* rule 172 can match eol */
3720 YY_RULE_SETUP
3721 {
3722   LEAVE;
3723   ETag_surfxml_process();
3724   popbuffer(); /* attribute */
3725   switch (YY_START) {
3726    case S_surfxml_platform_5: case S_surfxml_platform_1: case S_surfxml_platform: case S_surfxml_platform_3: case S_surfxml_platform_4: SET(S_surfxml_platform_5); break;
3727    case ROOT_surfxml_process: SET(EPILOG); break;
3728   }
3729  }
3730         YY_BREAK
3731 case 173:
3732 /* rule 173 can match eol */
3733 YY_RULE_SETUP
3734 FAIL("Unexpected end-tag `%s': `</process>' expected.",surf_parse_text);
3735         YY_BREAK
3736 case 174:
3737 YY_RULE_SETUP
3738 FAIL("Unexpected character `%c': `</process>' expected.",surf_parse_text[0]);
3739         YY_BREAK
3740 case YY_STATE_EOF(S_surfxml_process):
3741 case YY_STATE_EOF(E_surfxml_process):
3742 case YY_STATE_EOF(S_surfxml_process_2):
3743 FAIL("Premature EOF: `</process>' expected.");
3744         YY_BREAK
3745
3746 case 175:
3747 /* rule 175 can match eol */
3748 YY_RULE_SETUP
3749 {
3750   AX_surfxml_argument_value = 0;
3751   ENTER(AL_surfxml_argument); pushbuffer(0);
3752   }
3753         YY_BREAK
3754
3755 case 176:
3756 /* rule 176 can match eol */
3757 YY_RULE_SETUP
3758 ENTER(VALUE1); BUFFERSET(AX_surfxml_argument_value);
3759         YY_BREAK
3760 case 177:
3761 /* rule 177 can match eol */
3762 YY_RULE_SETUP
3763 ENTER(VALUE2); BUFFERSET(AX_surfxml_argument_value);
3764         YY_BREAK
3765 case 178:
3766 YY_RULE_SETUP
3767 {
3768   if (!AX_surfxml_argument_value) FAIL("Required attribute `value' not set for `argument' element.");
3769   LEAVE; STag_surfxml_argument();surfxml_pcdata_ix = 0; ENTER(E_surfxml_argument);
3770  }
3771         YY_BREAK
3772 case 179:
3773 YY_RULE_SETUP
3774 {
3775   if (!AX_surfxml_argument_value) FAIL("Required attribute `value' not set for `argument' element.");
3776   LEAVE; STag_surfxml_argument(); surfxml_pcdata_ix = 0; ETag_surfxml_argument(); popbuffer(); /* attribute */
3777   switch (YY_START) {
3778    case S_surfxml_process_1: case S_surfxml_process: case S_surfxml_process_2: SET(S_surfxml_process_2); break;
3779    case ROOT_surfxml_argument: SET(EPILOG); break;
3780   }
3781  }
3782         YY_BREAK
3783 case 180:
3784 YY_RULE_SETUP
3785 FAIL("Unexpected character `%c' in attribute list of argument element.", surf_parse_text[0]);
3786         YY_BREAK
3787 case 181:
3788 YY_RULE_SETUP
3789 FAIL("Bad attribute `%s' in `argument' element start tag.",surf_parse_text);
3790         YY_BREAK
3791 case YY_STATE_EOF(AL_surfxml_argument):
3792 FAIL("EOF in attribute list of `argument' element.");
3793         YY_BREAK
3794
3795 case 182:
3796 /* rule 182 can match eol */
3797 YY_RULE_SETUP
3798 {
3799   LEAVE;
3800   ETag_surfxml_argument();
3801   popbuffer(); /* attribute */
3802   switch (YY_START) {
3803    case S_surfxml_process_1: case S_surfxml_process: case S_surfxml_process_2: SET(S_surfxml_process_2); break;
3804    case ROOT_surfxml_argument: SET(EPILOG); break;
3805   }
3806  }
3807         YY_BREAK
3808 case 183:
3809 /* rule 183 can match eol */
3810 YY_RULE_SETUP
3811 FAIL("Unexpected end-tag `%s': `</argument>' expected.",surf_parse_text);
3812         YY_BREAK
3813 case 184:
3814 YY_RULE_SETUP
3815 FAIL("Unexpected character `%c': `</argument>' expected.",surf_parse_text[0]);
3816         YY_BREAK
3817 case YY_STATE_EOF(E_surfxml_argument):
3818 FAIL("Premature EOF: `</argument>' expected.");
3819         YY_BREAK
3820
3821 /* EPILOG: after the root element. */
3822
3823 case 185:
3824 YY_RULE_SETUP
3825 {SET(PROLOG); yyless(0); CLEANUP; return -1;}
3826         YY_BREAK
3827 case YY_STATE_EOF(EPILOG):
3828 SUCCEED;
3829         YY_BREAK
3830
3831 /* CHARACTER DATA. */
3832
3833 /* Non-defined standard entities... */
3834 case 186:
3835 YY_RULE_SETUP
3836 BUFFERPUTC('&');
3837         YY_BREAK
3838 case 187:
3839 YY_RULE_SETUP
3840 BUFFERPUTC('<');
3841         YY_BREAK
3842 case 188:
3843 YY_RULE_SETUP
3844 BUFFERPUTC('>');
3845         YY_BREAK
3846 case 189:
3847 YY_RULE_SETUP
3848 BUFFERPUTC('\'');
3849         YY_BREAK
3850 case 190:
3851 YY_RULE_SETUP
3852 BUFFERPUTC('"');
3853         YY_BREAK
3854 /* Character entities. */
3855 case 191:
3856 YY_RULE_SETUP
3857 BUFFERPUTC((unsigned char)atoi(surf_parse_text+2));
3858         YY_BREAK
3859 case 192:
3860 YY_RULE_SETUP
3861 BUFFERPUTC((unsigned char)strtol(surf_parse_text+3,NULL,16));
3862         YY_BREAK
3863
3864 case 193:
3865 /* rule 193 can match eol */
3866 case 194:
3867 /* rule 194 can match eol */
3868 case 195:
3869 /* rule 195 can match eol */
3870 case 196:
3871 /* rule 196 can match eol */
3872 YY_RULE_SETUP
3873 BUFFERPUTC('\n');
3874         YY_BREAK
3875
3876 case 197:
3877 YY_RULE_SETUP
3878 ENTER(CDATA);
3879         YY_BREAK
3880 case 198:
3881 YY_RULE_SETUP
3882 FAIL("Unexpected `]""]>' in character data.");
3883         YY_BREAK
3884
3885 case 199:
3886 YY_RULE_SETUP
3887 BUFFERDONE; LEAVE;
3888         YY_BREAK
3889 case YY_STATE_EOF(VALUE1):
3890 FAIL("EOF in literal (\"'\" expected).");
3891         YY_BREAK
3892
3893 case 200:
3894 YY_RULE_SETUP
3895 BUFFERDONE; LEAVE;
3896         YY_BREAK
3897 case YY_STATE_EOF(VALUE2):
3898 FAIL("EOF in literal (`\"' expected).");
3899         YY_BREAK
3900
3901 case 201:
3902 /* rule 201 can match eol */
3903 YY_RULE_SETUP
3904 BUFFERPUTC(surf_parse_text[0]);
3905         YY_BREAK
3906 case 202:
3907 YY_RULE_SETUP
3908 FAIL("Spurious `%c' in character data.",surf_parse_text[0]);
3909         YY_BREAK
3910
3911 case 203:
3912 YY_RULE_SETUP
3913 LEAVE;
3914         YY_BREAK
3915 /* "]""]"               BUFFERPUTC(surf_parse_text[0]); BUFFERPUTC(surf_parse_text[1]); */
3916 case 204:
3917 YY_RULE_SETUP
3918 BUFFERPUTC(surf_parse_text[0]);
3919         YY_BREAK
3920 case YY_STATE_EOF(CDATA):
3921 FAIL("EOF in CDATA section.");
3922         YY_BREAK
3923
3924 /* Impossible rules to avoid warnings from flex(1). */
3925 /* Ideally, this should be replaced by code in flexml.pl that
3926     generates just the states not covered by other rules. */
3927
3928 case 205:
3929 /* rule 205 can match eol */
3930 YY_RULE_SETUP
3931 FAIL("Syntax error on character `%c'.", surf_parse_text[0]);
3932         YY_BREAK
3933
3934 case 206:
3935 YY_RULE_SETUP
3936 ECHO;
3937         YY_BREAK
3938 case YY_STATE_EOF(INITIAL):
3939 case YY_STATE_EOF(ROOT_surfxml_platform):
3940 case YY_STATE_EOF(S_surfxml_platform_2):
3941 case YY_STATE_EOF(S_surfxml_platform_4):
3942 case YY_STATE_EOF(ROOT_surfxml_include):
3943 case YY_STATE_EOF(ROOT_surfxml_host):
3944 case YY_STATE_EOF(S_surfxml_host_1):
3945 case YY_STATE_EOF(ROOT_surfxml_prop):
3946 case YY_STATE_EOF(ROOT_surfxml_router):
3947 case YY_STATE_EOF(ROOT_surfxml_link):
3948 case YY_STATE_EOF(S_surfxml_link_1):
3949 case YY_STATE_EOF(ROOT_surfxml_route):
3950 case YY_STATE_EOF(S_surfxml_route_1):
3951 case YY_STATE_EOF(ROOT_surfxml_link_c_ctn):
3952 case YY_STATE_EOF(ROOT_surfxml_process):
3953 case YY_STATE_EOF(S_surfxml_process_1):
3954 case YY_STATE_EOF(ROOT_surfxml_argument):
3955 case YY_STATE_EOF(IMPOSSIBLE):
3956         yyterminate();
3957
3958         case YY_END_OF_BUFFER:
3959                 {
3960                 /* Amount of text matched not including the EOB char. */
3961                 int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
3962
3963                 /* Undo the effects of YY_DO_BEFORE_ACTION. */
3964                 *yy_cp = (yy_hold_char);
3965                 YY_RESTORE_YY_MORE_OFFSET
3966
3967                 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
3968                         {
3969                         /* We're scanning a new file or input source.  It's
3970                          * possible that this happened because the user
3971                          * just pointed surf_parse_in at a new source and called
3972                          * surf_parse_lex().  If so, then we have to assure
3973                          * consistency between YY_CURRENT_BUFFER and our
3974                          * globals.  Here is the right place to do so, because
3975                          * this is the first action (other than possibly a
3976                          * back-up) that will match for the new input source.
3977                          */
3978                         (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
3979                         YY_CURRENT_BUFFER_LVALUE->yy_input_file = surf_parse_in;
3980                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
3981                         }
3982
3983                 /* Note that here we test for yy_c_buf_p "<=" to the position
3984                  * of the first EOB in the buffer, since yy_c_buf_p will
3985                  * already have been incremented past the NUL character
3986                  * (since all states make transitions on EOB to the
3987                  * end-of-buffer state).  Contrast this with the test
3988                  * in input().
3989                  */
3990                 if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
3991                         { /* This was really a NUL. */
3992                         yy_state_type yy_next_state;
3993
3994                         (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
3995
3996                         yy_current_state = yy_get_previous_state(  );
3997
3998                         /* Okay, we're now positioned to make the NUL
3999                          * transition.  We couldn't have
4000                          * yy_get_previous_state() go ahead and do it
4001                          * for us because it doesn't know how to deal
4002                          * with the possibility of jamming (and we don't
4003                          * want to build jamming into it because then it
4004                          * will run more slowly).
4005                          */
4006
4007                         yy_next_state = yy_try_NUL_trans( yy_current_state );
4008
4009                         yy_bp = (yytext_ptr) + YY_MORE_ADJ;
4010
4011                         if ( yy_next_state )
4012                                 {
4013                                 /* Consume the NUL. */
4014                                 yy_cp = ++(yy_c_buf_p);
4015                                 yy_current_state = yy_next_state;
4016                                 goto yy_match;
4017                                 }
4018
4019                         else
4020                                 {
4021                                 yy_cp = (yy_c_buf_p);
4022                                 goto yy_find_action;
4023                                 }
4024                         }
4025
4026                 else switch ( yy_get_next_buffer(  ) )
4027                         {
4028                         case EOB_ACT_END_OF_FILE:
4029                                 {
4030                                 (yy_did_buffer_switch_on_eof) = 0;
4031
4032                                 if ( surf_parse_wrap( ) )
4033                                         {
4034                                         /* Note: because we've taken care in
4035                                          * yy_get_next_buffer() to have set up
4036                                          * surf_parse_text, we can now set up
4037                                          * yy_c_buf_p so that if some total
4038                                          * hoser (like flex itself) wants to
4039                                          * call the scanner after we return the
4040                                          * YY_NULL, it'll still work - another
4041                                          * YY_NULL will get returned.
4042                                          */
4043                                         (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
4044
4045                                         yy_act = YY_STATE_EOF(YY_START);
4046                                         goto do_action;
4047                                         }
4048
4049                                 else
4050                                         {
4051                                         if ( ! (yy_did_buffer_switch_on_eof) )
4052                                                 YY_NEW_FILE;
4053                                         }
4054                                 break;
4055                                 }
4056
4057                         case EOB_ACT_CONTINUE_SCAN:
4058                                 (yy_c_buf_p) =
4059                                         (yytext_ptr) + yy_amount_of_matched_text;
4060
4061                                 yy_current_state = yy_get_previous_state(  );
4062
4063                                 yy_cp = (yy_c_buf_p);
4064                                 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
4065                                 goto yy_match;
4066
4067                         case EOB_ACT_LAST_MATCH:
4068                                 (yy_c_buf_p) =
4069                                 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
4070
4071                                 yy_current_state = yy_get_previous_state(  );
4072
4073                                 yy_cp = (yy_c_buf_p);
4074                                 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
4075                                 goto yy_find_action;
4076                         }
4077                 break;
4078                 }
4079
4080         default:
4081                 YY_FATAL_ERROR(
4082                         "fatal flex scanner internal error--no action found" );
4083         } /* end of action switch */
4084                 } /* end of scanning one token */
4085 } /* end of surf_parse_lex */
4086
4087 /* yy_get_next_buffer - try to read in a new buffer
4088  *
4089  * Returns a code representing an action:
4090  *      EOB_ACT_LAST_MATCH -
4091  *      EOB_ACT_CONTINUE_SCAN - continue scanning from current position
4092  *      EOB_ACT_END_OF_FILE - end of file
4093  */
4094 static int yy_get_next_buffer (void)
4095 {
4096         register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
4097         register char *source = (yytext_ptr);
4098         register int number_to_move, i;
4099         int ret_val;
4100
4101         if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
4102                 YY_FATAL_ERROR(
4103                 "fatal flex scanner internal error--end of buffer missed" );
4104
4105         if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
4106                 { /* Don't try to fill the buffer, so this is an EOF. */
4107                 if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
4108                         {
4109                         /* We matched a single character, the EOB, so
4110                          * treat this as a final EOF.
4111                          */
4112                         return EOB_ACT_END_OF_FILE;
4113                         }
4114
4115                 else
4116                         {
4117                         /* We matched some text prior to the EOB, first
4118                          * process it.
4119                          */
4120                         return EOB_ACT_LAST_MATCH;
4121                         }
4122                 }
4123
4124         /* Try to read more data. */
4125
4126         /* First move last chars to start of buffer. */
4127         number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
4128
4129         for ( i = 0; i < number_to_move; ++i )
4130                 *(dest++) = *(source++);
4131
4132         if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
4133                 /* don't do the read, it's not guaranteed to return an EOF,
4134                  * just force an EOF
4135                  */
4136                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
4137
4138         else
4139                 {
4140                         int num_to_read =
4141                         YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
4142
4143                 while ( num_to_read <= 0 )
4144                         { /* Not enough room in the buffer - grow it. */
4145
4146                         /* just a shorter name for the current buffer */
4147                         YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
4148
4149                         int yy_c_buf_p_offset =
4150                                 (int) ((yy_c_buf_p) - b->yy_ch_buf);
4151
4152                         if ( b->yy_is_our_buffer )
4153                                 {
4154                                 int new_size = b->yy_buf_size * 2;
4155
4156                                 if ( new_size <= 0 )
4157                                         b->yy_buf_size += b->yy_buf_size / 8;
4158                                 else
4159                                         b->yy_buf_size *= 2;
4160
4161                                 b->yy_ch_buf = (char *)
4162                                         /* Include room in for 2 EOB chars. */
4163                                         surf_parse_realloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
4164                                 }
4165                         else
4166                                 /* Can't grow it, we don't own it. */
4167                                 b->yy_ch_buf = 0;
4168
4169                         if ( ! b->yy_ch_buf )
4170                                 YY_FATAL_ERROR(
4171                                 "fatal error - scanner input buffer overflow" );
4172
4173                         (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
4174
4175                         num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
4176                                                 number_to_move - 1;
4177
4178                         }
4179
4180                 if ( num_to_read > YY_READ_BUF_SIZE )
4181                         num_to_read = YY_READ_BUF_SIZE;
4182
4183                 /* Read in more data. */
4184                 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
4185                         (yy_n_chars), (size_t) num_to_read );
4186
4187                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
4188                 }
4189
4190         if ( (yy_n_chars) == 0 )
4191                 {
4192                 if ( number_to_move == YY_MORE_ADJ )
4193                         {
4194                         ret_val = EOB_ACT_END_OF_FILE;
4195                         surf_parse_restart(surf_parse_in  );
4196                         }
4197
4198                 else
4199                         {
4200                         ret_val = EOB_ACT_LAST_MATCH;
4201                         YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
4202                                 YY_BUFFER_EOF_PENDING;
4203                         }
4204                 }
4205
4206         else
4207                 ret_val = EOB_ACT_CONTINUE_SCAN;
4208
4209         (yy_n_chars) += number_to_move;
4210         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
4211         YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
4212
4213         (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
4214
4215         return ret_val;
4216 }
4217
4218 /* yy_get_previous_state - get the state just before the EOB char was reached */
4219
4220     static yy_state_type yy_get_previous_state (void)
4221 {
4222         register yy_state_type yy_current_state;
4223         register char *yy_cp;
4224     
4225         yy_current_state = (yy_start);
4226
4227         for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
4228                 {
4229                 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
4230                 if ( yy_accept[yy_current_state] )
4231                         {
4232                         (yy_last_accepting_state) = yy_current_state;
4233                         (yy_last_accepting_cpos) = yy_cp;
4234                         }
4235                 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
4236                         {
4237                         yy_current_state = (int) yy_def[yy_current_state];
4238                         if ( yy_current_state >= 1481 )
4239                                 yy_c = yy_meta[(unsigned int) yy_c];
4240                         }
4241                 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
4242                 }
4243
4244         return yy_current_state;
4245 }
4246
4247 /* yy_try_NUL_trans - try to make a transition on the NUL character
4248  *
4249  * synopsis
4250  *      next_state = yy_try_NUL_trans( current_state );
4251  */
4252     static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
4253 {
4254         register int yy_is_jam;
4255         register char *yy_cp = (yy_c_buf_p);
4256
4257         register YY_CHAR yy_c = 1;
4258         if ( yy_accept[yy_current_state] )
4259                 {
4260                 (yy_last_accepting_state) = yy_current_state;
4261                 (yy_last_accepting_cpos) = yy_cp;
4262                 }
4263         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
4264                 {
4265                 yy_current_state = (int) yy_def[yy_current_state];
4266                 if ( yy_current_state >= 1481 )
4267                         yy_c = yy_meta[(unsigned int) yy_c];
4268                 }
4269         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
4270         yy_is_jam = (yy_current_state == 1480);
4271
4272         return yy_is_jam ? 0 : yy_current_state;
4273 }
4274
4275 #ifndef YY_NO_INPUT
4276 #ifdef __cplusplus
4277     static int yyinput (void)
4278 #else
4279     static int input  (void)
4280 #endif
4281
4282 {
4283         int c;
4284     
4285         *(yy_c_buf_p) = (yy_hold_char);
4286
4287         if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
4288                 {
4289                 /* yy_c_buf_p now points to the character we want to return.
4290                  * If this occurs *before* the EOB characters, then it's a
4291                  * valid NUL; if not, then we've hit the end of the buffer.
4292                  */
4293                 if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
4294                         /* This was really a NUL. */
4295                         *(yy_c_buf_p) = '\0';
4296
4297                 else
4298                         { /* need more input */
4299                         int offset = (yy_c_buf_p) - (yytext_ptr);
4300                         ++(yy_c_buf_p);
4301
4302                         switch ( yy_get_next_buffer(  ) )
4303                                 {
4304                                 case EOB_ACT_LAST_MATCH:
4305                                         /* This happens because yy_g_n_b()
4306                                          * sees that we've accumulated a
4307                                          * token and flags that we need to
4308                                          * try matching the token before
4309                                          * proceeding.  But for input(),
4310                                          * there's no matching to consider.
4311                                          * So convert the EOB_ACT_LAST_MATCH
4312                                          * to EOB_ACT_END_OF_FILE.
4313                                          */
4314
4315                                         /* Reset buffer status. */
4316                                         surf_parse_restart(surf_parse_in );
4317
4318                                         /*FALLTHROUGH*/
4319
4320                                 case EOB_ACT_END_OF_FILE:
4321                                         {
4322                                         if ( surf_parse_wrap( ) )
4323                                                 return EOF;
4324
4325                                         if ( ! (yy_did_buffer_switch_on_eof) )
4326                                                 YY_NEW_FILE;
4327 #ifdef __cplusplus
4328                                         return yyinput();
4329 #else
4330                                         return input();
4331 #endif
4332                                         }
4333
4334                                 case EOB_ACT_CONTINUE_SCAN:
4335                                         (yy_c_buf_p) = (yytext_ptr) + offset;
4336                                         break;
4337                                 }
4338                         }
4339                 }
4340
4341         c = *(unsigned char *) (yy_c_buf_p);    /* cast for 8-bit char's */
4342         *(yy_c_buf_p) = '\0';   /* preserve surf_parse_text */
4343         (yy_hold_char) = *++(yy_c_buf_p);
4344
4345         if ( c == '\n' )
4346                    
4347     surf_parse_lineno++;
4348 ;
4349
4350         return c;
4351 }
4352 #endif  /* ifndef YY_NO_INPUT */
4353
4354 /** Immediately switch to a different input stream.
4355  * @param input_file A readable stream.
4356  * 
4357  * @note This function does not reset the start condition to @c INITIAL .
4358  */
4359     void surf_parse_restart  (FILE * input_file )
4360 {
4361     
4362         if ( ! YY_CURRENT_BUFFER ){
4363         surf_parse_ensure_buffer_stack ();
4364                 YY_CURRENT_BUFFER_LVALUE =
4365             surf_parse__create_buffer(surf_parse_in,YY_BUF_SIZE );
4366         }
4367
4368         surf_parse__init_buffer(YY_CURRENT_BUFFER,input_file );
4369         surf_parse__load_buffer_state( );
4370 }
4371
4372 /** Switch to a different input buffer.
4373  * @param new_buffer The new input buffer.
4374  * 
4375  */
4376     void surf_parse__switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
4377 {
4378     
4379         /* TODO. We should be able to replace this entire function body
4380          * with
4381          *              surf_parse_pop_buffer_state();
4382          *              surf_parse_push_buffer_state(new_buffer);
4383      */
4384         surf_parse_ensure_buffer_stack ();
4385         if ( YY_CURRENT_BUFFER == new_buffer )
4386                 return;
4387
4388         if ( YY_CURRENT_BUFFER )
4389                 {
4390                 /* Flush out information for old buffer. */
4391                 *(yy_c_buf_p) = (yy_hold_char);
4392                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
4393                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
4394                 }
4395
4396         YY_CURRENT_BUFFER_LVALUE = new_buffer;
4397         surf_parse__load_buffer_state( );
4398
4399         /* We don't actually know whether we did this switch during
4400          * EOF (surf_parse_wrap()) processing, but the only time this flag
4401          * is looked at is after surf_parse_wrap() is called, so it's safe
4402          * to go ahead and always set it.
4403          */
4404         (yy_did_buffer_switch_on_eof) = 1;
4405 }
4406
4407 static void surf_parse__load_buffer_state  (void)
4408 {
4409         (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
4410         (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
4411         surf_parse_in = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
4412         (yy_hold_char) = *(yy_c_buf_p);
4413 }
4414
4415 /** Allocate and initialize an input buffer state.
4416  * @param file A readable stream.
4417  * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
4418  * 
4419  * @return the allocated buffer state.
4420  */
4421     YY_BUFFER_STATE surf_parse__create_buffer  (FILE * file, int  size )
4422 {
4423         YY_BUFFER_STATE b;
4424     
4425         b = (YY_BUFFER_STATE) surf_parse_alloc(sizeof( struct yy_buffer_state )  );
4426         if ( ! b )
4427                 YY_FATAL_ERROR( "out of dynamic memory in surf_parse__create_buffer()" );
4428
4429         b->yy_buf_size = size;
4430
4431         /* yy_ch_buf has to be 2 characters longer than the size given because
4432          * we need to put in 2 end-of-buffer characters.
4433          */
4434         b->yy_ch_buf = (char *) surf_parse_alloc(b->yy_buf_size + 2  );
4435         if ( ! b->yy_ch_buf )
4436                 YY_FATAL_ERROR( "out of dynamic memory in surf_parse__create_buffer()" );
4437
4438         b->yy_is_our_buffer = 1;
4439
4440         surf_parse__init_buffer(b,file );
4441
4442         return b;
4443 }
4444
4445 /** Destroy the buffer.
4446  * @param b a buffer created with surf_parse__create_buffer()
4447  * 
4448  */
4449     void surf_parse__delete_buffer (YY_BUFFER_STATE  b )
4450 {
4451     
4452         if ( ! b )
4453                 return;
4454
4455         if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
4456                 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
4457
4458         if ( b->yy_is_our_buffer )
4459                 surf_parse_free((void *) b->yy_ch_buf  );
4460
4461         surf_parse_free((void *) b  );
4462 }
4463
4464 #ifndef __cplusplus
4465 extern int isatty (int );
4466 #endif /* __cplusplus */
4467     
4468 /* Initializes or reinitializes a buffer.
4469  * This function is sometimes called more than once on the same buffer,
4470  * such as during a surf_parse_restart() or at EOF.
4471  */
4472     static void surf_parse__init_buffer  (YY_BUFFER_STATE  b, FILE * file )
4473
4474 {
4475         int oerrno = errno;
4476     
4477         surf_parse__flush_buffer(b );
4478
4479         b->yy_input_file = file;
4480         b->yy_fill_buffer = 1;
4481
4482     /* If b is the current buffer, then surf_parse__init_buffer was _probably_
4483      * called from surf_parse_restart() or through yy_get_next_buffer.
4484      * In that case, we don't want to reset the lineno or column.
4485      */
4486     if (b != YY_CURRENT_BUFFER){
4487         b->yy_bs_lineno = 1;
4488         b->yy_bs_column = 0;
4489     }
4490
4491         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
4492     
4493         errno = oerrno;
4494 }
4495
4496 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
4497  * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
4498  * 
4499  */
4500     void surf_parse__flush_buffer (YY_BUFFER_STATE  b )
4501 {
4502         if ( ! b )
4503                 return;
4504
4505         b->yy_n_chars = 0;
4506
4507         /* We always need two end-of-buffer characters.  The first causes
4508          * a transition to the end-of-buffer state.  The second causes
4509          * a jam in that state.
4510          */
4511         b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
4512         b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
4513
4514         b->yy_buf_pos = &b->yy_ch_buf[0];
4515
4516         b->yy_at_bol = 1;
4517         b->yy_buffer_status = YY_BUFFER_NEW;
4518
4519         if ( b == YY_CURRENT_BUFFER )
4520                 surf_parse__load_buffer_state( );
4521 }
4522
4523 /** Pushes the new state onto the stack. The new state becomes
4524  *  the current state. This function will allocate the stack
4525  *  if necessary.
4526  *  @param new_buffer The new state.
4527  *  
4528  */
4529 void surf_parse_push_buffer_state (YY_BUFFER_STATE new_buffer )
4530 {
4531         if (new_buffer == NULL)
4532                 return;
4533
4534         surf_parse_ensure_buffer_stack();
4535
4536         /* This block is copied from surf_parse__switch_to_buffer. */
4537         if ( YY_CURRENT_BUFFER )
4538                 {
4539                 /* Flush out information for old buffer. */
4540                 *(yy_c_buf_p) = (yy_hold_char);
4541                 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
4542                 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
4543                 }
4544
4545         /* Only push if top exists. Otherwise, replace top. */
4546         if (YY_CURRENT_BUFFER)
4547                 (yy_buffer_stack_top)++;
4548         YY_CURRENT_BUFFER_LVALUE = new_buffer;
4549
4550         /* copied from surf_parse__switch_to_buffer. */
4551         surf_parse__load_buffer_state( );
4552         (yy_did_buffer_switch_on_eof) = 1;
4553 }
4554
4555 /** Removes and deletes the top of the stack, if present.
4556  *  The next element becomes the new top.
4557  *  
4558  */
4559 void surf_parse_pop_buffer_state (void)
4560 {
4561         if (!YY_CURRENT_BUFFER)
4562                 return;
4563
4564         surf_parse__delete_buffer(YY_CURRENT_BUFFER );
4565         YY_CURRENT_BUFFER_LVALUE = NULL;
4566         if ((yy_buffer_stack_top) > 0)
4567                 --(yy_buffer_stack_top);
4568
4569         if (YY_CURRENT_BUFFER) {
4570                 surf_parse__load_buffer_state( );
4571                 (yy_did_buffer_switch_on_eof) = 1;
4572         }
4573 }
4574
4575 /* Allocates the stack if it does not exist.
4576  *  Guarantees space for at least one push.
4577  */
4578 static void surf_parse_ensure_buffer_stack (void)
4579 {
4580         int num_to_alloc;
4581     
4582         if (!(yy_buffer_stack)) {
4583
4584                 /* First allocation is just for 2 elements, since we don't know if this
4585                  * scanner will even need a stack. We use 2 instead of 1 to avoid an
4586                  * immediate realloc on the next call.
4587          */
4588                 num_to_alloc = 1;
4589                 (yy_buffer_stack) = (struct yy_buffer_state**)surf_parse_alloc
4590                                                                 (num_to_alloc * sizeof(struct yy_buffer_state*)
4591                                                                 );
4592                 
4593                 memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
4594                                 
4595                 (yy_buffer_stack_max) = num_to_alloc;
4596                 (yy_buffer_stack_top) = 0;
4597                 return;
4598         }
4599
4600         if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
4601
4602                 /* Increase the buffer to prepare for a possible push. */
4603                 int grow_size = 8 /* arbitrary grow size */;
4604
4605                 num_to_alloc = (yy_buffer_stack_max) + grow_size;
4606                 (yy_buffer_stack) = (struct yy_buffer_state**)surf_parse_realloc
4607                                                                 ((yy_buffer_stack),
4608                                                                 num_to_alloc * sizeof(struct yy_buffer_state*)
4609                                                                 );
4610
4611                 /* zero only the new slots.*/
4612                 memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
4613                 (yy_buffer_stack_max) = num_to_alloc;
4614         }
4615 }
4616
4617 /** Setup the input buffer state to scan directly from a user-specified character buffer.
4618  * @param base the character buffer
4619  * @param size the size in bytes of the character buffer
4620  * 
4621  * @return the newly allocated buffer state object. 
4622  */
4623 YY_BUFFER_STATE surf_parse__scan_buffer  (char * base, yy_size_t  size )
4624 {
4625         YY_BUFFER_STATE b;
4626     
4627         if ( size < 2 ||
4628              base[size-2] != YY_END_OF_BUFFER_CHAR ||
4629              base[size-1] != YY_END_OF_BUFFER_CHAR )
4630                 /* They forgot to leave room for the EOB's. */
4631                 return 0;
4632
4633         b = (YY_BUFFER_STATE) surf_parse_alloc(sizeof( struct yy_buffer_state )  );
4634         if ( ! b )
4635                 YY_FATAL_ERROR( "out of dynamic memory in surf_parse__scan_buffer()" );
4636
4637         b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
4638         b->yy_buf_pos = b->yy_ch_buf = base;
4639         b->yy_is_our_buffer = 0;
4640         b->yy_input_file = 0;
4641         b->yy_n_chars = b->yy_buf_size;
4642         b->yy_is_interactive = 0;
4643         b->yy_at_bol = 1;
4644         b->yy_fill_buffer = 0;
4645         b->yy_buffer_status = YY_BUFFER_NEW;
4646
4647         surf_parse__switch_to_buffer(b  );
4648
4649         return b;
4650 }
4651
4652 /** Setup the input buffer state to scan a string. The next call to surf_parse_lex() will
4653  * scan from a @e copy of @a str.
4654  * @param yystr a NUL-terminated string to scan
4655  * 
4656  * @return the newly allocated buffer state object.
4657  * @note If you want to scan bytes that may contain NUL values, then use
4658  *       surf_parse__scan_bytes() instead.
4659  */
4660 YY_BUFFER_STATE surf_parse__scan_string (yyconst char * yystr )
4661 {
4662     
4663         return surf_parse__scan_bytes(yystr,strlen(yystr) );
4664 }
4665
4666 /** Setup the input buffer state to scan the given bytes. The next call to surf_parse_lex() will
4667  * scan from a @e copy of @a bytes.
4668  * @param bytes the byte buffer to scan
4669  * @param len the number of bytes in the buffer pointed to by @a bytes.
4670  * 
4671  * @return the newly allocated buffer state object.
4672  */
4673 YY_BUFFER_STATE surf_parse__scan_bytes  (yyconst char * yybytes, int  _yybytes_len )
4674 {
4675         YY_BUFFER_STATE b;
4676         char *buf;
4677         yy_size_t n;
4678         int i;
4679     
4680         /* Get memory for full buffer, including space for trailing EOB's. */
4681         n = _yybytes_len + 2;
4682         buf = (char *) surf_parse_alloc(n  );
4683         if ( ! buf )
4684                 YY_FATAL_ERROR( "out of dynamic memory in surf_parse__scan_bytes()" );
4685
4686         for ( i = 0; i < _yybytes_len; ++i )
4687                 buf[i] = yybytes[i];
4688
4689         buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
4690
4691         b = surf_parse__scan_buffer(buf,n );
4692         if ( ! b )
4693                 YY_FATAL_ERROR( "bad buffer in surf_parse__scan_bytes()" );
4694
4695         /* It's okay to grow etc. this buffer, and we should throw it
4696          * away when we're done.
4697          */
4698         b->yy_is_our_buffer = 1;
4699
4700         return b;
4701 }
4702
4703     static void yy_push_state (int  new_state )
4704 {
4705         if ( (yy_start_stack_ptr) >= (yy_start_stack_depth) )
4706                 {
4707                 yy_size_t new_size;
4708
4709                 (yy_start_stack_depth) += YY_START_STACK_INCR;
4710                 new_size = (yy_start_stack_depth) * sizeof( int );
4711
4712                 if ( ! (yy_start_stack) )
4713                         (yy_start_stack) = (int *) surf_parse_alloc(new_size  );
4714
4715                 else
4716                         (yy_start_stack) = (int *) surf_parse_realloc((void *) (yy_start_stack),new_size  );
4717
4718                 if ( ! (yy_start_stack) )
4719                         YY_FATAL_ERROR(
4720                         "out of memory expanding start-condition stack" );
4721                 }
4722
4723         (yy_start_stack)[(yy_start_stack_ptr)++] = YY_START;
4724
4725         BEGIN(new_state);
4726 }
4727
4728     static void yy_pop_state  (void)
4729 {
4730         if ( --(yy_start_stack_ptr) < 0 )
4731                 YY_FATAL_ERROR( "start-condition stack underflow" );
4732
4733         BEGIN((yy_start_stack)[(yy_start_stack_ptr)]);
4734 }
4735
4736 #ifndef YY_EXIT_FAILURE
4737 #define YY_EXIT_FAILURE 2
4738 #endif
4739
4740 static void yy_fatal_error (yyconst char* msg )
4741 {
4742         (void) fprintf( stderr, "%s\n", msg );
4743         exit( YY_EXIT_FAILURE );
4744 }
4745
4746 /* Redefine yyless() so it works in section 3 code. */
4747
4748 #undef yyless
4749 #define yyless(n) \
4750         do \
4751                 { \
4752                 /* Undo effects of setting up surf_parse_text. */ \
4753         int yyless_macro_arg = (n); \
4754         YY_LESS_LINENO(yyless_macro_arg);\
4755                 surf_parse_text[surf_parse_leng] = (yy_hold_char); \
4756                 (yy_c_buf_p) = surf_parse_text + yyless_macro_arg; \
4757                 (yy_hold_char) = *(yy_c_buf_p); \
4758                 *(yy_c_buf_p) = '\0'; \
4759                 surf_parse_leng = yyless_macro_arg; \
4760                 } \
4761         while ( 0 )
4762
4763 /* Accessor  methods (get/set functions) to struct members. */
4764
4765 /** Get the current line number.
4766  * 
4767  */
4768 int surf_parse_get_lineno  (void)
4769 {
4770         
4771     return surf_parse_lineno;
4772 }
4773
4774 /** Get the input stream.
4775  * 
4776  */
4777 FILE *surf_parse_get_in  (void)
4778 {
4779         return surf_parse_in;
4780 }
4781
4782 /** Get the output stream.
4783  * 
4784  */
4785 FILE *surf_parse_get_out  (void)
4786 {
4787         return surf_parse_out;
4788 }
4789
4790 /** Get the length of the current token.
4791  * 
4792  */
4793 int surf_parse_get_leng  (void)
4794 {
4795         return surf_parse_leng;
4796 }
4797
4798 /** Get the current token.
4799  * 
4800  */
4801
4802 char *surf_parse_get_text  (void)
4803 {
4804         return surf_parse_text;
4805 }
4806
4807 /** Set the current line number.
4808  * @param line_number
4809  * 
4810  */
4811 void surf_parse_set_lineno (int  line_number )
4812 {
4813     
4814     surf_parse_lineno = line_number;
4815 }
4816
4817 /** Set the input stream. This does not discard the current
4818  * input buffer.
4819  * @param in_str A readable stream.
4820  * 
4821  * @see surf_parse__switch_to_buffer
4822  */
4823 void surf_parse_set_in (FILE *  in_str )
4824 {
4825         surf_parse_in = in_str ;
4826 }
4827
4828 void surf_parse_set_out (FILE *  out_str )
4829 {
4830         surf_parse_out = out_str ;
4831 }
4832
4833 int surf_parse_get_debug  (void)
4834 {
4835         return surf_parse__flex_debug;
4836 }
4837
4838 void surf_parse_set_debug (int  bdebug )
4839 {
4840         surf_parse__flex_debug = bdebug ;
4841 }
4842
4843 static int yy_init_globals (void)
4844 {
4845         /* Initialization is the same as for the non-reentrant scanner.
4846      * This function is called from surf_parse_lex_destroy(), so don't allocate here.
4847      */
4848
4849     /* We do not touch surf_parse_lineno unless the option is enabled. */
4850     surf_parse_lineno =  1;
4851     
4852     (yy_buffer_stack) = 0;
4853     (yy_buffer_stack_top) = 0;
4854     (yy_buffer_stack_max) = 0;
4855     (yy_c_buf_p) = (char *) 0;
4856     (yy_init) = 0;
4857     (yy_start) = 0;
4858
4859     (yy_start_stack_ptr) = 0;
4860     (yy_start_stack_depth) = 0;
4861     (yy_start_stack) =  NULL;
4862
4863 /* Defined in main.c */
4864 #ifdef YY_STDINIT
4865     surf_parse_in = stdin;
4866     surf_parse_out = stdout;
4867 #else
4868     surf_parse_in = (FILE *) 0;
4869     surf_parse_out = (FILE *) 0;
4870 #endif
4871
4872     /* For future reference: Set errno on error, since we are called by
4873      * surf_parse_lex_init()
4874      */
4875     return 0;
4876 }
4877
4878 /* surf_parse_lex_destroy is for both reentrant and non-reentrant scanners. */
4879 int surf_parse_lex_destroy  (void)
4880 {
4881     
4882     /* Pop the buffer stack, destroying each element. */
4883         while(YY_CURRENT_BUFFER){
4884                 surf_parse__delete_buffer(YY_CURRENT_BUFFER  );
4885                 YY_CURRENT_BUFFER_LVALUE = NULL;
4886                 surf_parse_pop_buffer_state();
4887         }
4888
4889         /* Destroy the stack itself. */
4890         surf_parse_free((yy_buffer_stack) );
4891         (yy_buffer_stack) = NULL;
4892
4893     /* Destroy the start condition stack. */
4894         surf_parse_free((yy_start_stack)  );
4895         (yy_start_stack) = NULL;
4896
4897     /* Reset the globals. This is important in a non-reentrant scanner so the next time
4898      * surf_parse_lex() is called, initialization will occur. */
4899     yy_init_globals( );
4900
4901     return 0;
4902 }
4903
4904 /*
4905  * Internal utility routines.
4906  */
4907
4908 #ifndef yytext_ptr
4909 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
4910 {
4911         register int i;
4912         for ( i = 0; i < n; ++i )
4913                 s1[i] = s2[i];
4914 }
4915 #endif
4916
4917 #ifdef YY_NEED_STRLEN
4918 static int yy_flex_strlen (yyconst char * s )
4919 {
4920         register int n;
4921         for ( n = 0; s[n]; ++n )
4922                 ;
4923
4924         return n;
4925 }
4926 #endif
4927
4928 void *surf_parse_alloc (yy_size_t  size )
4929 {
4930         return (void *) malloc( size );
4931 }
4932
4933 void *surf_parse_realloc  (void * ptr, yy_size_t  size )
4934 {
4935         /* The cast to (char *) in the following accommodates both
4936          * implementations that use char* generic pointers, and those
4937          * that use void* generic pointers.  It works with the latter
4938          * because both ANSI C and C++ allow castless assignment from
4939          * any pointer type to void*, and deal with argument conversions
4940          * as though doing an assignment.
4941          */
4942         return (void *) realloc( (char *) ptr, size );
4943 }
4944
4945 void surf_parse_free (void * ptr )
4946 {
4947         free( (char *) ptr );   /* see surf_parse_realloc() for (char *) cast */
4948 }
4949
4950 #define YYTABLES_NAME "yytables"
4951
4952 /* Element context stack lookup. */
4953 int surfxml_element_context(int i)
4954 {
4955   return (0<i && i<yy_start_stack_depth
4956           ? yy_start_stack[yy_start_stack_ptr - i]
4957           : 0);
4958 }
4959
4960 #ifdef FLEX_DEBUG
4961 void print_yy_stack(char* fmt, ...)
4962 {
4963   int i = 0; va_list ap; va_start(ap, fmt);
4964   vfprintf(stderr, fmt, ap);
4965   if (surfxml_statenames) {
4966       for (i=1; i<yy_start_stack_ptr; i++) {
4967           fprintf(stderr, "%s/", surfxml_statenames[yy_start_stack[i] ]);
4968       }
4969       fprintf(stderr,"%s\n", surfxml_statenames[YY_START]);
4970   }
4971   va_end(ap);
4972 }
4973
4974 void print_surfxml_bufferstack()
4975 {
4976     int i;
4977     fputs("Buffer: ", stderr);
4978     for (i = 0; i < blimit; i++) {
4979        if ( surfxml_bufferstack[i] == '\377' ) break;
4980          putc(surfxml_bufferstack[i], stderr);
4981     }
4982     putc('\n', stderr);
4983 }
4984
4985 static void debug_enter(int state, const char* statename) {
4986   yy_push_state(state);
4987   if (surf_parse__flex_debug) {
4988        print_yy_stack("--ENTER(%s) : ",statename);
4989        print_surfxml_bufferstack();
4990   }
4991 }
4992
4993 static void debug_leave(void) {
4994     if (surf_parse__flex_debug) {
4995         print_yy_stack("--LEAVE : ");
4996         print_surfxml_bufferstack();
4997     }
4998   yy_pop_state();
4999 }
5000
5001 static void debug_set(int state, const char* statename) {
5002   BEGIN(state);
5003   if (surf_parse__flex_debug) print_yy_stack("--SET(%s) : ",statename);
5004 }
5005 #endif
5006
5007 static void cleanup(void)
5008 {
5009     if (surfxml_statenames) {
5010         free(surfxml_statenames);
5011         surfxml_statenames = NULL;
5012     }
5013     free(surfxml_bufferstack);
5014     surfxml_bufferstack = NULL;
5015
5016     free(indexstack);
5017     indexstack = NULL;
5018 }
5019
5020 static int fail(const char* fmt, ...)
5021 {
5022     int chars_left, used;
5023     va_list ap; va_start(ap, fmt);
5024 #ifdef FLEXML_yylineno
5025     used = sprintf(flexml_err_msg,
5026                    "Invalid XML (XML input line %d, state %d): ",
5027                    surf_parse_lineno, YY_START);
5028 #else
5029     used = sprintf(flexml_err_msg,
5030                    "Invalid XML (state %d): ",
5031                    YY_START);
5032 #endif
5033     chars_left = flexml_max_err_msg_size - used - 1;
5034     vsnprintf(flexml_err_msg + used, chars_left, fmt, ap);
5035     va_end(ap);
5036
5037 #ifndef FLEXML_quiet_parser
5038     /* print directly to sdterr */
5039     fprintf(stderr, "%s\n", flexml_err_msg);
5040     flexml_err_msg[0] = '\0';
5041 #endif
5042
5043     cleanup();
5044
5045     return 1;
5046 }
5047