Logo AND Algorithmique Numérique Distribuée

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