Logo AND Algorithmique Numérique Distribuée

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