Browse Source

fix msvs 2010 build issues reported by community member FriarTuck

David Rose 14 years ago
parent
commit
dd4df70a28

+ 2717 - 2710
direct/src/dcparser/dcLexer.cxx.prebuilt

@@ -1,2710 +1,2717 @@
-#line 2 "lex.yy.c"
-
-#line 4 "lex.yy.c"
-
-#define  YY_INT_ALIGNED short int
-
-/* A lexical scanner generated by flex */
-
-#define yy_create_buffer dcyy_create_buffer
-#define yy_delete_buffer dcyy_delete_buffer
-#define yy_flex_debug dcyy_flex_debug
-#define yy_init_buffer dcyy_init_buffer
-#define yy_flush_buffer dcyy_flush_buffer
-#define yy_load_buffer_state dcyy_load_buffer_state
-#define yy_switch_to_buffer dcyy_switch_to_buffer
-#define yyin dcyyin
-#define yyleng dcyyleng
-#define yylex dcyylex
-#define yylineno dcyylineno
-#define yyout dcyyout
-#define yyrestart dcyyrestart
-#define yytext dcyytext
-#define yywrap dcyywrap
-#define yyalloc dcyyalloc
-#define yyrealloc dcyyrealloc
-#define yyfree dcyyfree
-
-#define FLEX_SCANNER
-#define YY_FLEX_MAJOR_VERSION 2
-#define YY_FLEX_MINOR_VERSION 5
-#define YY_FLEX_SUBMINOR_VERSION 35
-#if YY_FLEX_SUBMINOR_VERSION > 0
-#define FLEX_BETA
-#endif
-
-/* First, we deal with  platform-specific or compiler-specific issues. */
-
-/* begin standard C headers. */
-#include <stdio.h>
-#include <string.h>
-#include <errno.h>
-#include <stdlib.h>
-
-/* end standard C headers. */
-
-/* flex integer type definitions */
-
-#ifndef FLEXINT_H
-#define FLEXINT_H
-
-/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
-
-#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
-
-/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
- * if you want the limit (max/min) macros for int types. 
- */
-#ifndef __STDC_LIMIT_MACROS
-#define __STDC_LIMIT_MACROS 1
-#endif
-
-#include <inttypes.h>
-typedef int8_t flex_int8_t;
-typedef uint8_t flex_uint8_t;
-typedef int16_t flex_int16_t;
-typedef uint16_t flex_uint16_t;
-typedef int32_t flex_int32_t;
-typedef uint32_t flex_uint32_t;
-#else
-typedef signed char flex_int8_t;
-typedef short int flex_int16_t;
-typedef int flex_int32_t;
-typedef unsigned char flex_uint8_t; 
-typedef unsigned short int flex_uint16_t;
-typedef unsigned int flex_uint32_t;
-#endif /* ! C99 */
-
-/* Limits of integral types. */
-#ifndef INT8_MIN
-#define INT8_MIN               (-128)
-#endif
-#ifndef INT16_MIN
-#define INT16_MIN              (-32767-1)
-#endif
-#ifndef INT32_MIN
-#define INT32_MIN              (-2147483647-1)
-#endif
-#ifndef INT8_MAX
-#define INT8_MAX               (127)
-#endif
-#ifndef INT16_MAX
-#define INT16_MAX              (32767)
-#endif
-#ifndef INT32_MAX
-#define INT32_MAX              (2147483647)
-#endif
-#ifndef UINT8_MAX
-#define UINT8_MAX              (255U)
-#endif
-#ifndef UINT16_MAX
-#define UINT16_MAX             (65535U)
-#endif
-#ifndef UINT32_MAX
-#define UINT32_MAX             (4294967295U)
-#endif
-
-#endif /* ! FLEXINT_H */
-
-#ifdef __cplusplus
-
-/* The "const" storage-class-modifier is valid. */
-#define YY_USE_CONST
-
-#else	/* ! __cplusplus */
-
-/* C99 requires __STDC__ to be defined as 1. */
-#if defined (__STDC__)
-
-#define YY_USE_CONST
-
-#endif	/* defined (__STDC__) */
-#endif	/* ! __cplusplus */
-
-#ifdef YY_USE_CONST
-#define yyconst const
-#else
-#define yyconst
-#endif
-
-/* Returned upon end-of-file. */
-#define YY_NULL 0
-
-/* Promotes a possibly negative, possibly signed char to an unsigned
- * integer for use as an array index.  If the signed char is negative,
- * we want to instead treat it as an 8-bit unsigned char, hence the
- * double cast.
- */
-#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
-
-/* Enter a start condition.  This macro really ought to take a parameter,
- * but we do it the disgusting crufty way forced on us by the ()-less
- * definition of BEGIN.
- */
-#define BEGIN (yy_start) = 1 + 2 *
-
-/* Translate the current start state into a value that can be later handed
- * to BEGIN to return to the state.  The YYSTATE alias is for lex
- * compatibility.
- */
-#define YY_START (((yy_start) - 1) / 2)
-#define YYSTATE YY_START
-
-/* Action number for EOF rule of a given start state. */
-#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
-
-/* Special action meaning "start processing a new file". */
-#define YY_NEW_FILE dcyyrestart(dcyyin  )
-
-#define YY_END_OF_BUFFER_CHAR 0
-
-/* Size of default input buffer. */
-#ifndef YY_BUF_SIZE
-#define YY_BUF_SIZE 16384
-#endif
-
-/* The state buf must be large enough to hold one state per character in the main buffer.
- */
-#define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
-
-#ifndef YY_TYPEDEF_YY_BUFFER_STATE
-#define YY_TYPEDEF_YY_BUFFER_STATE
-typedef struct yy_buffer_state *YY_BUFFER_STATE;
-#endif
-
-extern int dcyyleng;
-
-extern FILE *dcyyin, *dcyyout;
-
-#define EOB_ACT_CONTINUE_SCAN 0
-#define EOB_ACT_END_OF_FILE 1
-#define EOB_ACT_LAST_MATCH 2
-
-    #define YY_LESS_LINENO(n)
-    
-/* Return all but the first "n" matched characters back to the input stream. */
-#define yyless(n) \
-	do \
-		{ \
-		/* Undo effects of setting up dcyytext. */ \
-        int yyless_macro_arg = (n); \
-        YY_LESS_LINENO(yyless_macro_arg);\
-		*yy_cp = (yy_hold_char); \
-		YY_RESTORE_YY_MORE_OFFSET \
-		(yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
-		YY_DO_BEFORE_ACTION; /* set up dcyytext again */ \
-		} \
-	while ( 0 )
-
-#define unput(c) yyunput( c, (yytext_ptr)  )
-
-#ifndef YY_TYPEDEF_YY_SIZE_T
-#define YY_TYPEDEF_YY_SIZE_T
-typedef size_t yy_size_t;
-#endif
-
-#ifndef YY_STRUCT_YY_BUFFER_STATE
-#define YY_STRUCT_YY_BUFFER_STATE
-struct yy_buffer_state
-	{
-	FILE *yy_input_file;
-
-	char *yy_ch_buf;		/* input buffer */
-	char *yy_buf_pos;		/* current position in input buffer */
-
-	/* Size of input buffer in bytes, not including room for EOB
-	 * characters.
-	 */
-	yy_size_t yy_buf_size;
-
-	/* Number of characters read into yy_ch_buf, not including EOB
-	 * characters.
-	 */
-	int yy_n_chars;
-
-	/* Whether we "own" the buffer - i.e., we know we created it,
-	 * and can realloc() it to grow it, and should free() it to
-	 * delete it.
-	 */
-	int yy_is_our_buffer;
-
-	/* Whether this is an "interactive" input source; if so, and
-	 * if we're using stdio for input, then we want to use getc()
-	 * instead of fread(), to make sure we stop fetching input after
-	 * each newline.
-	 */
-	int yy_is_interactive;
-
-	/* Whether we're considered to be at the beginning of a line.
-	 * If so, '^' rules will be active on the next match, otherwise
-	 * not.
-	 */
-	int yy_at_bol;
-
-    int yy_bs_lineno; /**< The line count. */
-    int yy_bs_column; /**< The column count. */
-    
-	/* Whether to try to fill the input buffer when we reach the
-	 * end of it.
-	 */
-	int yy_fill_buffer;
-
-	int yy_buffer_status;
-
-#define YY_BUFFER_NEW 0
-#define YY_BUFFER_NORMAL 1
-	/* When an EOF's been seen but there's still some text to process
-	 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
-	 * shouldn't try reading from the input source any more.  We might
-	 * still have a bunch of tokens to match, though, because of
-	 * possible backing-up.
-	 *
-	 * When we actually see the EOF, we change the status to "new"
-	 * (via dcyyrestart()), so that the user can continue scanning by
-	 * just pointing dcyyin at a new input file.
-	 */
-#define YY_BUFFER_EOF_PENDING 2
-
-	};
-#endif /* !YY_STRUCT_YY_BUFFER_STATE */
-
-/* Stack of input buffers. */
-static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
-static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
-static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
-
-/* We provide macros for accessing buffer states in case in the
- * future we want to put the buffer states in a more general
- * "scanner state".
- *
- * Returns the top of the stack, or NULL.
- */
-#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
-                          ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
-                          : NULL)
-
-/* Same as previous macro, but useful when we know that the buffer stack is not
- * NULL or when we need an lvalue. For internal use only.
- */
-#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
-
-/* yy_hold_char holds the character lost when dcyytext is formed. */
-static char yy_hold_char;
-static int yy_n_chars;		/* number of characters read into yy_ch_buf */
-int dcyyleng;
-
-/* Points to current character in buffer. */
-static char *yy_c_buf_p = (char *) 0;
-static int yy_init = 0;		/* whether we need to initialize */
-static int yy_start = 0;	/* start state number */
-
-/* Flag which is used to allow dcyywrap()'s to do buffer switches
- * instead of setting up a fresh dcyyin.  A bit of a hack ...
- */
-static int yy_did_buffer_switch_on_eof;
-
-void dcyyrestart (FILE *input_file  );
-void dcyy_switch_to_buffer (YY_BUFFER_STATE new_buffer  );
-YY_BUFFER_STATE dcyy_create_buffer (FILE *file,int size  );
-void dcyy_delete_buffer (YY_BUFFER_STATE b  );
-void dcyy_flush_buffer (YY_BUFFER_STATE b  );
-void dcyypush_buffer_state (YY_BUFFER_STATE new_buffer  );
-void dcyypop_buffer_state (void );
-
-static void dcyyensure_buffer_stack (void );
-static void dcyy_load_buffer_state (void );
-static void dcyy_init_buffer (YY_BUFFER_STATE b,FILE *file  );
-
-#define YY_FLUSH_BUFFER dcyy_flush_buffer(YY_CURRENT_BUFFER )
-
-YY_BUFFER_STATE dcyy_scan_buffer (char *base,yy_size_t size  );
-YY_BUFFER_STATE dcyy_scan_string (yyconst char *yy_str  );
-YY_BUFFER_STATE dcyy_scan_bytes (yyconst char *bytes,int len  );
-
-void *dcyyalloc (yy_size_t  );
-void *dcyyrealloc (void *,yy_size_t  );
-void dcyyfree (void *  );
-
-#define yy_new_buffer dcyy_create_buffer
-
-#define yy_set_interactive(is_interactive) \
-	{ \
-	if ( ! YY_CURRENT_BUFFER ){ \
-        dcyyensure_buffer_stack (); \
-		YY_CURRENT_BUFFER_LVALUE =    \
-            dcyy_create_buffer(dcyyin,YY_BUF_SIZE ); \
-	} \
-	YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
-	}
-
-#define yy_set_bol(at_bol) \
-	{ \
-	if ( ! YY_CURRENT_BUFFER ){\
-        dcyyensure_buffer_stack (); \
-		YY_CURRENT_BUFFER_LVALUE =    \
-            dcyy_create_buffer(dcyyin,YY_BUF_SIZE ); \
-	} \
-	YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
-	}
-
-#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
-
-typedef unsigned char YY_CHAR;
-
-FILE *dcyyin = (FILE *) 0, *dcyyout = (FILE *) 0;
-
-typedef int yy_state_type;
-
-extern int dcyylineno;
-
-int dcyylineno = 1;
-
-extern char *dcyytext;
-#define yytext_ptr dcyytext
-
-static yy_state_type yy_get_previous_state (void );
-static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
-static int yy_get_next_buffer (void );
-static void yy_fatal_error (yyconst char msg[]  );
-
-/* Done after the current pattern has been matched and before the
- * corresponding action - sets up dcyytext.
- */
-#define YY_DO_BEFORE_ACTION \
-	(yytext_ptr) = yy_bp; \
-	dcyyleng = (size_t) (yy_cp - yy_bp); \
-	(yy_hold_char) = *yy_cp; \
-	*yy_cp = '\0'; \
-	(yy_c_buf_p) = yy_cp;
-
-#define YY_NUM_RULES 44
-#define YY_END_OF_BUFFER 45
-/* This struct is not used in this scanner,
-   but its presence is necessary. */
-struct yy_trans_info
-	{
-	flex_int32_t yy_verify;
-	flex_int32_t yy_nxt;
-	};
-static yyconst flex_int16_t yy_accept[165] =
-    {   0,
-        0,    0,   45,   43,    2,    1,   39,   40,   43,   43,
-       43,   35,   35,   41,   42,   42,   42,   42,   42,   42,
-       42,   42,   42,   42,    1,    0,   36,   38,    4,    3,
-       38,   35,   37,   42,   42,   42,   42,   42,   42,   42,
-       42,   42,   42,   42,   42,   42,   42,   42,   42,    0,
-        3,   37,   42,   42,   42,   42,   42,   42,   42,   42,
-       42,   42,   42,   42,   42,   42,   42,    0,   38,   25,
-       42,   12,   34,   42,   42,   42,    7,   42,   42,   42,
-       42,   15,   42,   42,   42,   42,   42,   42,   42,   14,
-       42,   42,   42,   42,   16,   17,   18,   42,   42,   42,
-
-       42,   42,   42,   42,   42,   42,   19,   26,    5,   42,
-       42,    8,   42,   42,   42,   42,   24,    6,   11,   42,
-       20,   21,   22,   42,   13,   23,   42,   42,   42,    9,
-       10,   42,   42,   42,   42,   42,   42,   42,   42,   42,
-       42,   42,   42,   42,   27,   42,   42,   42,   42,   28,
-       29,   42,   42,   42,   30,   31,   32,   42,   42,   42,
-       42,   42,   33,    0
-    } ;
-
-static yyconst flex_int32_t yy_ec[256] =
-    {   0,
-        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
-        1,    1,    2,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    2,    1,    4,    1,    1,    1,    1,    5,    1,
-        1,    6,    7,    1,    7,    8,    9,   10,   11,   12,
-       13,   14,   15,   16,   15,   17,   15,    1,    1,   18,
-        1,    1,    1,    1,   19,   19,   19,   19,   20,   19,
-       21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
-       21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
-        1,    1,    1,    1,   21,    1,   22,   23,   24,   25,
-
-       26,   27,   28,   29,   30,   21,   31,   32,   33,   34,
-       35,   36,   21,   37,   38,   39,   40,   21,   41,   42,
-       43,   21,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1
-    } ;
-
-static yyconst flex_int32_t yy_meta[44] =
-    {   0,
-        1,    1,    2,    1,    1,    1,    3,    4,    1,    5,
-        5,    5,    5,    5,    5,    5,    5,    1,    6,    6,
-        7,    6,    6,    6,    6,    6,    6,    7,    7,    7,
-        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
-        7,    8,    7
-    } ;
-
-static yyconst flex_int16_t yy_base[173] =
-    {   0,
-        0,    0,  209,  210,  210,    0,  210,  210,  200,    0,
-       38,   37,   38,  210,    0,   16,   27,   26,   22,   24,
-      181,   21,  163,  175,    0,    0,  196,   35,  210,    0,
-        0,    0,    0,    0,  168,  176,  163,  178,  167,  171,
-      162,  161,  159,  155,  150,  155,  161,  154,  155,  181,
-        0,    0,  164,  164,  159,  147,  161,  160,  159,  147,
-      144,   52,  137,   34,  138,  150,  136,  167,  166,  159,
-      140,    0,    0,  132,  129,  129,    0,  130,  150,  153,
-      150,  141,  127,  127,  136,  135,  133,   59,  145,    0,
-      118,  123,  138,  114,  130,  129,    0,  113,  112,  120,
-
-      108,  117,  119,  128,  131,  128,  119,    0,    0,  101,
-      125,    0,  101,  100,   99,  110,    0,    0,    0,  107,
-      111,   44,    0,   95,    0,    0,   94,   93,  107,    0,
-        0,   91,   90,   96,   88,  102,  101,   79,   84,   83,
-       85,   96,   74,   72,    0,   83,   76,   58,   43,    0,
-        0,   40,   39,   64,    0,    0,    0,   56,   40,   36,
-       49,   24,    0,  210,   84,   89,   46,   91,   95,  103,
-      107,  111
-    } ;
-
-static yyconst flex_int16_t yy_def[173] =
-    {   0,
-      164,    1,  164,  164,  164,  165,  164,  164,  166,  167,
-      164,  168,  168,  164,  169,  169,  169,  169,  169,  169,
-      169,  169,  169,  169,  165,  167,  166,  167,  164,  170,
-       28,   13,  171,  169,  169,  169,  169,  169,  169,  169,
-      169,  169,  169,  169,  169,  169,  169,  169,  169,  172,
-      170,  171,  169,  169,  169,  169,  169,  169,  169,  169,
-      169,  169,  169,  169,  169,  169,  169,  172,  172,  169,
-      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
-      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
-      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
-
-      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
-      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
-      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
-      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
-      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
-      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
-      169,  169,  169,    0,  164,  164,  164,  164,  164,  164,
-      164,  164
-    } ;
-
-static yyconst flex_int16_t yy_nxt[254] =
-    {   0,
-        4,    5,    6,    7,    8,    4,    9,   10,   11,   12,
-       13,   13,   13,   13,   13,   13,   13,   14,   15,   15,
-       15,   15,   16,   17,   18,   15,   19,   15,   15,   20,
-       21,   15,   15,   15,   15,   15,   15,   22,   23,   24,
-       15,   15,   15,   29,   31,   31,   30,   35,   37,   39,
-       28,   40,   36,   41,   50,   38,   43,   44,   42,   46,
-       50,   47,   79,   84,   80,  133,  163,   81,   82,  104,
-      162,  105,  161,   85,  106,  107,  160,  159,   33,  164,
-      158,  157,  156,  134,   25,  155,   25,   25,   25,   25,
-       25,   25,   27,   27,   32,   32,  154,  153,   32,   34,
-
-       34,   34,   34,   51,  152,   51,   51,   51,   51,   51,
-       51,   52,   52,   69,  151,   69,  150,  149,  148,  147,
-      146,  145,  144,  143,  142,  141,  140,  139,  138,  137,
-      136,  135,  132,  131,  130,  129,  128,  127,  126,  125,
-      124,  123,  122,  121,  120,  119,  118,  117,  116,  115,
-      114,  113,  112,  111,  110,  109,  108,  103,  102,  101,
-      100,   99,   98,   97,   96,   95,   94,   93,   92,   91,
-       90,   89,  164,  164,   88,   87,   86,   83,   78,   77,
-       76,   75,   74,   73,   72,   71,   70,   68,   67,   66,
-       65,   64,   63,   62,   61,   60,   59,   58,   57,   56,
-
-       55,   54,   53,   31,   49,   48,   45,   26,  164,    3,
-      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
-      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
-      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
-      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
-      164,  164,  164
-    } ;
-
-static yyconst flex_int16_t yy_chk[254] =
-    {   0,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,   11,   12,   13,   11,   16,   17,   18,
-      167,   18,   16,   19,   28,   17,   20,   20,   19,   22,
-       28,   22,   62,   64,   62,  122,  162,   62,   62,   88,
-      161,   88,  160,   64,   88,   88,  159,  158,   12,   13,
-      154,  153,  152,  122,  165,  149,  165,  165,  165,  165,
-      165,  165,  166,  166,  168,  168,  148,  147,  168,  169,
-
-      169,  169,  169,  170,  146,  170,  170,  170,  170,  170,
-      170,  171,  171,  172,  144,  172,  143,  142,  141,  140,
-      139,  138,  137,  136,  135,  134,  133,  132,  129,  128,
-      127,  124,  121,  120,  116,  115,  114,  113,  111,  110,
-      107,  106,  105,  104,  103,  102,  101,  100,   99,   98,
-       96,   95,   94,   93,   92,   91,   89,   87,   86,   85,
-       84,   83,   82,   81,   80,   79,   78,   76,   75,   74,
-       71,   70,   69,   68,   67,   66,   65,   63,   61,   60,
-       59,   58,   57,   56,   55,   54,   53,   50,   49,   48,
-       47,   46,   45,   44,   43,   42,   41,   40,   39,   38,
-
-       37,   36,   35,   27,   24,   23,   21,    9,    3,  164,
-      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
-      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
-      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
-      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
-      164,  164,  164
-    } ;
-
-static yy_state_type yy_last_accepting_state;
-static char *yy_last_accepting_cpos;
-
-extern int dcyy_flex_debug;
-int dcyy_flex_debug = 0;
-
-/* The intent behind this definition is that it'll catch
- * any uses of REJECT which flex missed.
- */
-#define REJECT reject_used_but_not_detected
-#define yymore() yymore_used_but_not_detected
-#define YY_MORE_ADJ 0
-#define YY_RESTORE_YY_MORE_OFFSET
-char *dcyytext;
-#line 1 "dcLexer.lxx"
-/*
-// Filename: dcLexer.lxx
-// Created by:  drose (05Oct00)
-// 
-////////////////////////////////////////////////////////////////////
-*/
-#line 9 "dcLexer.lxx"
-#include "dcLexerDefs.h"
-#include "dcParserDefs.h"
-#include "dcParser.h"
-#include "dcFile.h"
-#include "dcindent.h"
-#include "pstrtod.h"
-
-
-static int yyinput(void);        // declared by flex.
-extern "C" int dcyywrap();
-
-////////////////////////////////////////////////////////////////////
-// Static variables
-////////////////////////////////////////////////////////////////////
-
-// We'll increment line_number and col_number as we parse the file, so
-// that we can report the position of an error.
-static int line_number = 0;
-static int col_number = 0;
-
-// current_line holds as much of the current line as will fit.  Its
-// only purpose is for printing it out to report an error to the user.
-static const int max_error_width = 1024;
-static char current_line[max_error_width + 1];
-
-static int error_count = 0;
-static int warning_count = 0;
-
-// This is the pointer to the current input stream.
-static istream *inp = NULL;
-
-// This is the name of the dc file we're parsing.  We keep it so we
-// can print it out for error messages.
-static string dc_filename;
-
-// This is the initial token state returned by the lexer.  It allows
-// the yacc grammar to start from initial points.
-static int initial_token;
-
-
-////////////////////////////////////////////////////////////////////
-// Defining the interface to the lexer.
-////////////////////////////////////////////////////////////////////
-
-void
-dc_init_lexer(istream &in, const string &filename) {
-  inp = &in;
-  dc_filename = filename;
-  line_number = 0;
-  col_number = 0;
-  error_count = 0;
-  warning_count = 0;
-  initial_token = START_DC;
-}
-
-void
-dc_start_parameter_value() {
-  /* Set the initial state to begin parsing a parameter value, instead
-     of at the beginning of the dc file. */
-  initial_token = START_PARAMETER_VALUE;
-}
-
-void
-dc_start_parameter_description() {
-  /* Set the initial state to begin parsing a parameter description, instead
-     of at the beginning of the dc file. */
-  initial_token = START_PARAMETER_DESCRIPTION;
-}
-
-int
-dc_error_count() {
-  return error_count;
-}
-
-int
-dc_warning_count() {
-  return warning_count;
-}
-
-
-////////////////////////////////////////////////////////////////////
-// Internal support functions.
-////////////////////////////////////////////////////////////////////
-
-int
-dcyywrap(void) {
-  return 1;
-}
-
-void
-dcyyerror(const string &msg) {
-  cerr << "\nError";
-  if (!dc_filename.empty()) {
-    cerr << " in " << dc_filename;
-  }
-  cerr 
-    << " at line " << line_number << ", column " << col_number << ":\n"
-    << current_line << "\n";
-  indent(cerr, col_number-1) 
-    << "^\n" << msg << "\n\n";
-  
-  error_count++;
-}
-
-void
-dcyywarning(const string &msg) {
-  cerr << "\nWarning";
-  if (!dc_filename.empty()) {
-    cerr << " in " << dc_filename;
-  }
-  cerr 
-    << " at line " << line_number << ", column " << col_number << ":\n"
-    << current_line << "\n";
-  indent(cerr, col_number-1) 
-    << "^\n" << msg << "\n\n";
-
-  warning_count++;
-}
-
-// Now define a function to take input from an istream instead of a
-// stdio FILE pointer.  This is flex-specific.
-static void
-input_chars(char *buffer, int &result, int max_size) {
-  nassertv(inp != NULL);
-  if (*inp) {
-    inp->read(buffer, max_size);
-    result = inp->gcount();
-    if (result >= 0 && result < max_size) {
-      // Truncate at the end of the read.
-      buffer[result] = '\0';
-    }
-
-    if (line_number == 0) {
-      // This is a special case.  If we are reading the very first bit
-      // from the stream, copy it into the current_line array.  This
-      // is because the \n.* rule below, which fills current_line
-      // normally, doesn't catch the first line.
-      strncpy(current_line, dcyytext, max_error_width);
-      current_line[max_error_width] = '\0';
-      line_number++;
-      col_number = 0;
-
-      // Truncate it at the newline.
-      char *end = strchr(current_line, '\n');
-      if (end != NULL) {
-        *end = '\0';
-      }
-    }
-
-  } else {
-    // End of file or I/O error.
-    result = 0;
-  }
-}
-#undef YY_INPUT
-#define YY_INPUT(buffer, result, max_size) input_chars(buffer, result, max_size)
-
-// read_char reads and returns a single character, incrementing the
-// supplied line and column numbers as appropriate.  A convenience
-// function for the scanning functions below.
-static int
-read_char(int &line, int &col) {
-  int c = yyinput();
-  if (c == '\n') {
-    line++;
-    col = 0;
-  } else {
-    col++;
-  }
-  return c;
-}
-
-// scan_quoted_string reads a string delimited by quotation marks and
-// returns it.
-static string
-scan_quoted_string(char quote_mark) {
-  string result;
-
-  // We don't touch the current line number and column number during
-  // scanning, so that if we detect an error while scanning the string
-  // (e.g. an unterminated string), we'll report the error as
-  // occurring at the start of the string, not at the end--somewhat
-  // more convenient for the user.
-
-  // Instead of adjusting the global line_number and col_number
-  // variables, we'll operate on our own local variables for the
-  // interim.
-  int line = line_number;
-  int col = col_number;
-
-  int c;
-  c = read_char(line, col);
-  while (c != quote_mark && c != EOF) {
-    // A newline is not allowed within a string unless it is escaped.
-    if (c == '\n') {
-      c = EOF;
-      break;
-
-    } else if (c == '\\') {
-      // Backslash escapes the following character.  We also respect
-      // some C conventions.
-      c = read_char(line, col);
-      switch (c) {
-      case 'a':
-        result += '\a';
-        c = read_char(line, col);
-        break;
-
-      case 'n':
-        result += '\n';
-        c = read_char(line, col);
-        break;
-
-      case 'r':
-        result += '\r';
-        c = read_char(line, col);
-        break;
-
-      case 't':
-        result += '\t';
-        c = read_char(line, col);
-        break;
-
-      case 'x':
-        {
-          int hex = 0;
-          c = read_char(line, col);
-          for (int i = 0; i < 2 && isxdigit(c); i++) {
-            hex = hex * 16 + (isdigit(c) ? c - '0' : tolower(c) - 'a' + 10);
-            c = read_char(line, col);
-          }
-
-          result += hex;
-        }
-        break;
-
-      case '0':
-        {
-          int oct = 0;
-          c = read_char(line, col);
-          for (int i = 0; i < 3 && (c >= '0' && c < '7'); i++) {
-            oct = oct * 8 + (c - '0');
-            c = read_char(line, col);
-          }
-
-          result += oct;
-        }
-        break;
-
-      case '1':
-      case '2':
-      case '3':
-      case '4':
-      case '5':
-      case '6':
-      case '7':
-      case '8':
-      case '9':
-        {
-          int dec = 0;
-          c = read_char(line, col);
-          for (int i = 0; i < 3 && isdigit(c); i++) {
-            dec = dec * 10 + (c - '0');
-            c = read_char(line, col);
-          }
-
-          result += dec;
-        }
-        break;
-
-      case EOF:
-        break;
-
-      default:
-        result += c;
-        c = read_char(line, col);
-      }
-
-    } else {
-      result += c;
-      c = read_char(line, col);
-    }
-  }
-
-  if (c == EOF) {
-    dcyyerror("This quotation mark is unterminated.");
-  }
-
-  line_number = line;
-  col_number = col;
-
-  return result;
-}
-
-// scan_hex_string reads a string of hexadecimal digits delimited by
-// angle brackets and returns the representative string.
-static string
-scan_hex_string() {
-  string result;
-
-  // We don't touch the current line number and column number during
-  // scanning, so that if we detect an error while scanning the string
-  // (e.g. an unterminated string), we'll report the error as
-  // occurring at the start of the string, not at the end--somewhat
-  // more convenient for the user.
-
-  // Instead of adjusting the global line_number and col_number
-  // variables, we'll operate on our own local variables for the
-  // interim.
-  int line = line_number;
-  int col = col_number;
-
-  bool odd = false;
-  int last = 0;
-  int c;
-  c = read_char(line, col);
-  while (c != '>' && c != EOF) {
-    int value;
-    if (c >= '0' && c <= '9') {
-      value = c - '0';
-    } else if (c >= 'a' && c <= 'f') {
-      value = c - 'a' + 10;
-    } else if (c >= 'A' && c <= 'F') {
-      value = c - 'A' + 10;
-    } else {
-      line_number = line;
-      col_number = col;
-      dcyyerror("Invalid hex digit.");
-      return string();
-    }
-
-    odd = !odd;
-    if (odd) {
-      last = value;
-    } else {
-      result += (char)((last << 4) | value);
-    }
-    c = read_char(line, col);
-  }
-
-  if (c == EOF) {
-    dcyyerror("This hex string is unterminated.");
-    return string();
-  } else if (odd) {
-    dcyyerror("Odd number of hex digits.");
-    return string();
-  }
-
-  line_number = line;
-  col_number = col;
-
-  return result;
-}
-
-// eat_c_comment scans past all characters up until the first */
-// encountered.
-static void
-eat_c_comment() {
-  // As above, we'll operate on our own local copies of line_number
-  // and col_number within this function.
-
-  int line = line_number;
-  int col = col_number;
-
-  int c, last_c;
-  
-  last_c = '\0';
-  c = read_char(line, col);
-  while (c != EOF && !(last_c == '*' && c == '/')) {
-    if (last_c == '/' && c == '*') {
-      dcyywarning("This comment contains a nested /* symbol--possibly unclosed?");
-    }
-    last_c = c;
-    c = read_char(line, col);
-  }
-
-  if (c == EOF) {
-    dcyyerror("This comment marker is unclosed.");
-  }
-
-  line_number = line;
-  col_number = col;
-}
-
-
-
-// accept() is called below as each piece is pulled off and
-// accepted by the lexer; it increments the current column number.
-inline void accept() {
-  col_number += dcyyleng;
-}
-
-#line 977 "lex.yy.c"
-
-#define INITIAL 0
-
-#ifndef YY_NO_UNISTD_H
-/* Special case for "unistd.h", since it is non-ANSI. We include it way
- * down here because we want the user's section 1 to have been scanned first.
- * The user has a chance to override it with an option.
- */
-#endif
-
-#ifndef YY_EXTRA_TYPE
-#define YY_EXTRA_TYPE void *
-#endif
-
-static int yy_init_globals (void );
-
-/* Accessor methods to globals.
-   These are made visible to non-reentrant scanners for convenience. */
-
-int dcyylex_destroy (void );
-
-int dcyyget_debug (void );
-
-void dcyyset_debug (int debug_flag  );
-
-YY_EXTRA_TYPE dcyyget_extra (void );
-
-void dcyyset_extra (YY_EXTRA_TYPE user_defined  );
-
-FILE *dcyyget_in (void );
-
-void dcyyset_in  (FILE * in_str  );
-
-FILE *dcyyget_out (void );
-
-void dcyyset_out  (FILE * out_str  );
-
-int dcyyget_leng (void );
-
-char *dcyyget_text (void );
-
-int dcyyget_lineno (void );
-
-void dcyyset_lineno (int line_number  );
-
-/* Macros after this point can all be overridden by user definitions in
- * section 1.
- */
-
-#ifndef YY_SKIP_YYWRAP
-#ifdef __cplusplus
-extern "C" int dcyywrap (void );
-#else
-extern int dcyywrap (void );
-#endif
-#endif
-
-    static void yyunput (int c,char *buf_ptr  );
-    
-#ifndef yytext_ptr
-static void yy_flex_strncpy (char *,yyconst char *,int );
-#endif
-
-#ifdef YY_NEED_STRLEN
-static int yy_flex_strlen (yyconst char * );
-#endif
-
-#ifndef YY_NO_INPUT
-
-#ifdef __cplusplus
-static int yyinput (void );
-#else
-static int input (void );
-#endif
-
-#endif
-
-/* Amount of stuff to slurp up with each read. */
-#ifndef YY_READ_BUF_SIZE
-#define YY_READ_BUF_SIZE 8192
-#endif
-
-/* Copy whatever the last rule matched to the standard output. */
-#ifndef ECHO
-/* This used to be an fputs(), but since the string might contain NUL's,
- * we now use fwrite().
- */
-#define ECHO fwrite( dcyytext, dcyyleng, 1, dcyyout )
-#endif
-
-/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
- * is returned in "result".
- */
-#ifndef YY_INPUT
-#define YY_INPUT(buf,result,max_size) \
-	if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
-		{ \
-		int c = '*'; \
-		int n; \
-		for ( n = 0; n < max_size && \
-			     (c = getc( dcyyin )) != EOF && c != '\n'; ++n ) \
-			buf[n] = (char) c; \
-		if ( c == '\n' ) \
-			buf[n++] = (char) c; \
-		if ( c == EOF && ferror( dcyyin ) ) \
-			YY_FATAL_ERROR( "input in flex scanner failed" ); \
-		result = n; \
-		} \
-	else \
-		{ \
-		errno=0; \
-		while ( (result = fread(buf, 1, max_size, dcyyin))==0 && ferror(dcyyin)) \
-			{ \
-			if( errno != EINTR) \
-				{ \
-				YY_FATAL_ERROR( "input in flex scanner failed" ); \
-				break; \
-				} \
-			errno=0; \
-			clearerr(dcyyin); \
-			} \
-		}\
-\
-
-#endif
-
-/* No semi-colon after return; correct usage is to write "yyterminate();" -
- * we don't want an extra ';' after the "return" because that will cause
- * some compilers to complain about unreachable statements.
- */
-#ifndef yyterminate
-#define yyterminate() return YY_NULL
-#endif
-
-/* Number of entries by which start-condition stack grows. */
-#ifndef YY_START_STACK_INCR
-#define YY_START_STACK_INCR 25
-#endif
-
-/* Report a fatal error. */
-#ifndef YY_FATAL_ERROR
-#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
-#endif
-
-/* end tables serialization structures and prototypes */
-
-/* Default declaration of generated scanner - a define so the user can
- * easily add parameters.
- */
-#ifndef YY_DECL
-#define YY_DECL_IS_OURS 1
-
-extern int dcyylex (void);
-
-#define YY_DECL int dcyylex (void)
-#endif /* !YY_DECL */
-
-/* Code executed at the beginning of each rule, after dcyytext and dcyyleng
- * have been set up.
- */
-#ifndef YY_USER_ACTION
-#define YY_USER_ACTION
-#endif
-
-/* Code executed at the end of each rule. */
-#ifndef YY_BREAK
-#define YY_BREAK break;
-#endif
-
-#define YY_RULE_SETUP \
-	YY_USER_ACTION
-
-/** The main scanner function which does all the work.
- */
-YY_DECL
-{
-	register yy_state_type yy_current_state;
-	register char *yy_cp, *yy_bp;
-	register int yy_act;
-    
-#line 408 "dcLexer.lxx"
-
-
-
-  if (initial_token != 0) {
-    int t = initial_token;
-    initial_token = 0;
-    return t;
-  }
-
-
-#line 1170 "lex.yy.c"
-
-	if ( !(yy_init) )
-		{
-		(yy_init) = 1;
-
-#ifdef YY_USER_INIT
-		YY_USER_INIT;
-#endif
-
-		if ( ! (yy_start) )
-			(yy_start) = 1;	/* first start state */
-
-		if ( ! dcyyin )
-			dcyyin = stdin;
-
-		if ( ! dcyyout )
-			dcyyout = stdout;
-
-		if ( ! YY_CURRENT_BUFFER ) {
-			dcyyensure_buffer_stack ();
-			YY_CURRENT_BUFFER_LVALUE =
-				dcyy_create_buffer(dcyyin,YY_BUF_SIZE );
-		}
-
-		dcyy_load_buffer_state( );
-		}
-
-	while ( 1 )		/* loops until end-of-file is reached */
-		{
-		yy_cp = (yy_c_buf_p);
-
-		/* Support of dcyytext. */
-		*yy_cp = (yy_hold_char);
-
-		/* yy_bp points to the position in yy_ch_buf of the start of
-		 * the current run.
-		 */
-		yy_bp = yy_cp;
-
-		yy_current_state = (yy_start);
-yy_match:
-		do
-			{
-			register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
-			if ( yy_accept[yy_current_state] )
-				{
-				(yy_last_accepting_state) = yy_current_state;
-				(yy_last_accepting_cpos) = yy_cp;
-				}
-			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
-				{
-				yy_current_state = (int) yy_def[yy_current_state];
-				if ( yy_current_state >= 165 )
-					yy_c = yy_meta[(unsigned int) yy_c];
-				}
-			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-			++yy_cp;
-			}
-		while ( yy_base[yy_current_state] != 210 );
-
-yy_find_action:
-		yy_act = yy_accept[yy_current_state];
-		if ( yy_act == 0 )
-			{ /* have to back up */
-			yy_cp = (yy_last_accepting_cpos);
-			yy_current_state = (yy_last_accepting_state);
-			yy_act = yy_accept[yy_current_state];
-			}
-
-		YY_DO_BEFORE_ACTION;
-
-do_action:	/* This label is used only to access EOF actions. */
-
-		switch ( yy_act )
-	{ /* beginning of action switch */
-			case 0: /* must back up */
-			/* undo the effects of YY_DO_BEFORE_ACTION */
-			*yy_cp = (yy_hold_char);
-			yy_cp = (yy_last_accepting_cpos);
-			yy_current_state = (yy_last_accepting_state);
-			goto yy_find_action;
-
-case 1:
-/* rule 1 can match eol */
-YY_RULE_SETUP
-#line 418 "dcLexer.lxx"
-{
-  // New line.  Save a copy of the line so we can print it out for the
-  // benefit of the user in case we get an error.
-
-  strncpy(current_line, dcyytext+1, max_error_width);
-  current_line[max_error_width] = '\0';
-  line_number++;
-  col_number=0;
-
-  // Return the whole line to the lexer, except the newline character,
-  // which we eat.
-  yyless(1);
-}
-	YY_BREAK
-case 2:
-YY_RULE_SETUP
-#line 432 "dcLexer.lxx"
-{ 
-  // Eat whitespace.
-  accept();
-}
-	YY_BREAK
-case 3:
-YY_RULE_SETUP
-#line 437 "dcLexer.lxx"
-{ 
-  // Eat C++-style comments.
-  accept();
-}
-	YY_BREAK
-case 4:
-YY_RULE_SETUP
-#line 442 "dcLexer.lxx"
-{
-  // Eat C-style comments.
-  accept();
-  eat_c_comment(); 
-}
-	YY_BREAK
-case 5:
-YY_RULE_SETUP
-#line 449 "dcLexer.lxx"
-{
-  accept();
-  return KW_DCLASS;
-}
-	YY_BREAK
-case 6:
-YY_RULE_SETUP
-#line 454 "dcLexer.lxx"
-{
-  accept();
-  return KW_STRUCT;
-}
-	YY_BREAK
-case 7:
-YY_RULE_SETUP
-#line 459 "dcLexer.lxx"
-{
-  accept();
-  return KW_FROM;
-}
-	YY_BREAK
-case 8:
-YY_RULE_SETUP
-#line 464 "dcLexer.lxx"
-{
-  accept();
-  return KW_IMPORT;
-}
-	YY_BREAK
-case 9:
-YY_RULE_SETUP
-#line 469 "dcLexer.lxx"
-{
-  accept();
-  return KW_KEYWORD;
-}
-	YY_BREAK
-case 10:
-YY_RULE_SETUP
-#line 474 "dcLexer.lxx"
-{
-  accept();
-  return KW_TYPEDEF;
-}
-	YY_BREAK
-case 11:
-YY_RULE_SETUP
-#line 479 "dcLexer.lxx"
-{
-  accept();
-  return KW_SWITCH;
-}
-	YY_BREAK
-case 12:
-YY_RULE_SETUP
-#line 484 "dcLexer.lxx"
-{
-  accept();
-  return KW_CASE;
-}
-	YY_BREAK
-case 13:
-YY_RULE_SETUP
-#line 489 "dcLexer.lxx"
-{
-  accept();
-  return KW_DEFAULT;
-}
-	YY_BREAK
-case 14:
-YY_RULE_SETUP
-#line 494 "dcLexer.lxx"
-{
-  accept();
-  return KW_BREAK;
-}
-	YY_BREAK
-case 15:
-YY_RULE_SETUP
-#line 499 "dcLexer.lxx"
-{
-  accept();
-  return KW_INT8;
-}
-	YY_BREAK
-case 16:
-YY_RULE_SETUP
-#line 504 "dcLexer.lxx"
-{
-  accept();
-  return KW_INT16;
-}
-	YY_BREAK
-case 17:
-YY_RULE_SETUP
-#line 509 "dcLexer.lxx"
-{
-  accept();
-  return KW_INT32;
-}
-	YY_BREAK
-case 18:
-YY_RULE_SETUP
-#line 514 "dcLexer.lxx"
-{
-  accept();
-  return KW_INT64;
-}
-	YY_BREAK
-case 19:
-YY_RULE_SETUP
-#line 519 "dcLexer.lxx"
-{
-  accept();
-  return KW_UINT8;
-}
-	YY_BREAK
-case 20:
-YY_RULE_SETUP
-#line 524 "dcLexer.lxx"
-{
-  accept();
-  return KW_UINT16;
-}
-	YY_BREAK
-case 21:
-YY_RULE_SETUP
-#line 529 "dcLexer.lxx"
-{
-  accept();
-  return KW_UINT32;
-}
-	YY_BREAK
-case 22:
-YY_RULE_SETUP
-#line 534 "dcLexer.lxx"
-{
-  accept();
-  return KW_UINT64;
-}
-	YY_BREAK
-case 23:
-YY_RULE_SETUP
-#line 539 "dcLexer.lxx"
-{
-  accept();
-  return KW_FLOAT64;
-}
-	YY_BREAK
-case 24:
-YY_RULE_SETUP
-#line 544 "dcLexer.lxx"
-{
-  accept();
-  return KW_STRING;
-}
-	YY_BREAK
-case 25:
-YY_RULE_SETUP
-#line 549 "dcLexer.lxx"
-{
-  accept();
-  return KW_BLOB;
-}
-	YY_BREAK
-case 26:
-YY_RULE_SETUP
-#line 554 "dcLexer.lxx"
-{
-  accept();
-  return KW_BLOB32;
-}
-	YY_BREAK
-case 27:
-YY_RULE_SETUP
-#line 559 "dcLexer.lxx"
-{
-  accept();
-  return KW_INT8ARRAY;
-}
-	YY_BREAK
-case 28:
-YY_RULE_SETUP
-#line 564 "dcLexer.lxx"
-{
-  accept();
-  return KW_INT16ARRAY;
-}
-	YY_BREAK
-case 29:
-YY_RULE_SETUP
-#line 569 "dcLexer.lxx"
-{
-  accept();
-  return KW_INT32ARRAY;
-}
-	YY_BREAK
-case 30:
-YY_RULE_SETUP
-#line 574 "dcLexer.lxx"
-{
-  accept();
-  return KW_UINT8ARRAY;
-}
-	YY_BREAK
-case 31:
-YY_RULE_SETUP
-#line 579 "dcLexer.lxx"
-{
-  accept();
-  return KW_UINT16ARRAY;
-}
-	YY_BREAK
-case 32:
-YY_RULE_SETUP
-#line 584 "dcLexer.lxx"
-{
-  accept();
-  return KW_UINT32ARRAY;
-}
-	YY_BREAK
-case 33:
-YY_RULE_SETUP
-#line 589 "dcLexer.lxx"
-{
-  accept();
-  return KW_UINT32UINT8ARRAY;
-}
-	YY_BREAK
-case 34:
-YY_RULE_SETUP
-#line 594 "dcLexer.lxx"
-{
-  accept();
-  return KW_CHAR;
-}
-	YY_BREAK
-case 35:
-YY_RULE_SETUP
-#line 599 "dcLexer.lxx"
-{ 
-  // An unsigned integer number.
-  accept();
-
-  // atoll isn't fully portable, so we'll decode the integer by hand.
-  dcyylval.str = dcyytext;
-  dcyylval.u.uint64 = 0;
-  const char *p = dcyytext;
-  while (*p != '\0') {
-    PN_uint64 next_value = dcyylval.u.uint64 * 10;
-    if (next_value < dcyylval.u.uint64) {
-      dcyyerror("Number out of range.");
-      dcyylval.u.uint64 = 1;
-      return UNSIGNED_INTEGER;
-    }
-
-    dcyylval.u.uint64 = next_value + (*p - '0');
-    ++p;
-  }
-  
-  return UNSIGNED_INTEGER;
-}
-	YY_BREAK
-case 36:
-YY_RULE_SETUP
-#line 622 "dcLexer.lxx"
-{ 
-  // A signed integer number.
-  accept();
-
-  // atoll isn't fully portable, so we'll decode the integer by hand.
-  dcyylval.str = dcyytext;
-
-  bool neg = false;
-  const char *p = dcyytext;
-  if (*p == '-') {
-    neg = true;
-    ++p;
-  } else if (*p == '+') {
-    ++p;
-  }
-
-  PN_uint64 value = 0;
-  while (*p != '\0') {
-    PN_uint64 next_value = value * 10;
-    if (next_value < value) {
-      dcyyerror("Number out of range.");
-      dcyylval.u.int64 = 1;
-      return SIGNED_INTEGER;
-    }
-
-    value = next_value + (*p - '0');
-    ++p;
-  }
-
-  if (neg) {
-    dcyylval.u.int64 = -(PN_int64)value;
-    if (dcyylval.u.int64 > 0) {
-      dcyyerror("Number out of range.");
-      dcyylval.u.int64 = 1;
-    }
-  } else {
-    dcyylval.u.int64 = (PN_int64)value;
-    if (dcyylval.u.int64 < 0) {
-      dcyyerror("Number out of range.");
-      dcyylval.u.int64 = 1;
-    }
-  }    
-  
-  return SIGNED_INTEGER;
-}
-	YY_BREAK
-case 37:
-YY_RULE_SETUP
-#line 668 "dcLexer.lxx"
-{
-  // A hexadecimal integer number.
-  accept(); 
-
-  // As above, we'll decode the hex string by hand.
-  dcyylval.str = dcyytext;
-  dcyylval.u.uint64 = 0;
-  const char *p = dcyytext + 2;
-  while (*p != '\0') {
-    PN_uint64 next_value = dcyylval.u.uint64 * 16;
-    if (next_value < dcyylval.u.uint64) {
-      dcyyerror("Number out of range.");
-      dcyylval.u.uint64 = 1;
-      return UNSIGNED_INTEGER;
-    }
-
-    if (isalpha(*p)) {
-      dcyylval.u.uint64 = next_value + (tolower(*p) - 'a' + 10);
-    } else {
-      dcyylval.u.uint64 = next_value + (*p - '0');
-    }
-    ++p;
-  }
-
-  return UNSIGNED_INTEGER; 
-}
-	YY_BREAK
-case 38:
-YY_RULE_SETUP
-#line 695 "dcLexer.lxx"
-{ 
-  // A floating-point number.
-  accept(); 
-  dcyylval.u.real = patof(dcyytext); 
-  dcyylval.str = dcyytext;
-  return REAL; 
-}
-	YY_BREAK
-case 39:
-YY_RULE_SETUP
-#line 703 "dcLexer.lxx"
-{
-  // Quoted string.
-  accept();
-  dcyylval.str = scan_quoted_string('"');
-  return STRING;
-}
-	YY_BREAK
-case 40:
-YY_RULE_SETUP
-#line 710 "dcLexer.lxx"
-{
-  // Single-quoted string.
-  accept();
-  dcyylval.str = scan_quoted_string('\'');
-  return STRING;
-}
-	YY_BREAK
-case 41:
-YY_RULE_SETUP
-#line 717 "dcLexer.lxx"
-{
-  // Long hex string.
-  accept();
-  dcyylval.str = scan_hex_string();
-  return HEX_STRING;
-}
-	YY_BREAK
-case 42:
-YY_RULE_SETUP
-#line 724 "dcLexer.lxx"
-{ 
-  // Identifier or keyword.
-  accept();
-  dcyylval.str = dcyytext;
-
-  if (dc_file != (DCFile *)NULL) {
-    const DCKeyword *keyword = dc_file->get_keyword_by_name(dcyylval.str);
-    if (keyword != (DCKeyword *)NULL) {
-      dcyylval.u.keyword = keyword;
-      return KEYWORD;
-    }
-  }
-  return IDENTIFIER;
-}
-	YY_BREAK
-case 43:
-YY_RULE_SETUP
-#line 740 "dcLexer.lxx"
-{
-  // Send any other printable character as itself.
-  accept(); 
-  return dcyytext[0];
-}
-	YY_BREAK
-case 44:
-YY_RULE_SETUP
-#line 746 "dcLexer.lxx"
-ECHO;
-	YY_BREAK
-#line 1714 "lex.yy.c"
-case YY_STATE_EOF(INITIAL):
-	yyterminate();
-
-	case YY_END_OF_BUFFER:
-		{
-		/* Amount of text matched not including the EOB char. */
-		int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
-
-		/* Undo the effects of YY_DO_BEFORE_ACTION. */
-		*yy_cp = (yy_hold_char);
-		YY_RESTORE_YY_MORE_OFFSET
-
-		if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
-			{
-			/* We're scanning a new file or input source.  It's
-			 * possible that this happened because the user
-			 * just pointed dcyyin at a new source and called
-			 * dcyylex().  If so, then we have to assure
-			 * consistency between YY_CURRENT_BUFFER and our
-			 * globals.  Here is the right place to do so, because
-			 * this is the first action (other than possibly a
-			 * back-up) that will match for the new input source.
-			 */
-			(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
-			YY_CURRENT_BUFFER_LVALUE->yy_input_file = dcyyin;
-			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
-			}
-
-		/* Note that here we test for yy_c_buf_p "<=" to the position
-		 * of the first EOB in the buffer, since yy_c_buf_p will
-		 * already have been incremented past the NUL character
-		 * (since all states make transitions on EOB to the
-		 * end-of-buffer state).  Contrast this with the test
-		 * in input().
-		 */
-		if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
-			{ /* This was really a NUL. */
-			yy_state_type yy_next_state;
-
-			(yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
-
-			yy_current_state = yy_get_previous_state(  );
-
-			/* Okay, we're now positioned to make the NUL
-			 * transition.  We couldn't have
-			 * yy_get_previous_state() go ahead and do it
-			 * for us because it doesn't know how to deal
-			 * with the possibility of jamming (and we don't
-			 * want to build jamming into it because then it
-			 * will run more slowly).
-			 */
-
-			yy_next_state = yy_try_NUL_trans( yy_current_state );
-
-			yy_bp = (yytext_ptr) + YY_MORE_ADJ;
-
-			if ( yy_next_state )
-				{
-				/* Consume the NUL. */
-				yy_cp = ++(yy_c_buf_p);
-				yy_current_state = yy_next_state;
-				goto yy_match;
-				}
-
-			else
-				{
-				yy_cp = (yy_c_buf_p);
-				goto yy_find_action;
-				}
-			}
-
-		else switch ( yy_get_next_buffer(  ) )
-			{
-			case EOB_ACT_END_OF_FILE:
-				{
-				(yy_did_buffer_switch_on_eof) = 0;
-
-				if ( dcyywrap( ) )
-					{
-					/* Note: because we've taken care in
-					 * yy_get_next_buffer() to have set up
-					 * dcyytext, we can now set up
-					 * yy_c_buf_p so that if some total
-					 * hoser (like flex itself) wants to
-					 * call the scanner after we return the
-					 * YY_NULL, it'll still work - another
-					 * YY_NULL will get returned.
-					 */
-					(yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
-
-					yy_act = YY_STATE_EOF(YY_START);
-					goto do_action;
-					}
-
-				else
-					{
-					if ( ! (yy_did_buffer_switch_on_eof) )
-						YY_NEW_FILE;
-					}
-				break;
-				}
-
-			case EOB_ACT_CONTINUE_SCAN:
-				(yy_c_buf_p) =
-					(yytext_ptr) + yy_amount_of_matched_text;
-
-				yy_current_state = yy_get_previous_state(  );
-
-				yy_cp = (yy_c_buf_p);
-				yy_bp = (yytext_ptr) + YY_MORE_ADJ;
-				goto yy_match;
-
-			case EOB_ACT_LAST_MATCH:
-				(yy_c_buf_p) =
-				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
-
-				yy_current_state = yy_get_previous_state(  );
-
-				yy_cp = (yy_c_buf_p);
-				yy_bp = (yytext_ptr) + YY_MORE_ADJ;
-				goto yy_find_action;
-			}
-		break;
-		}
-
-	default:
-		YY_FATAL_ERROR(
-			"fatal flex scanner internal error--no action found" );
-	} /* end of action switch */
-		} /* end of scanning one token */
-} /* end of dcyylex */
-
-/* yy_get_next_buffer - try to read in a new buffer
- *
- * Returns a code representing an action:
- *	EOB_ACT_LAST_MATCH -
- *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position
- *	EOB_ACT_END_OF_FILE - end of file
- */
-static int yy_get_next_buffer (void)
-{
-    	register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
-	register char *source = (yytext_ptr);
-	register int number_to_move, i;
-	int ret_val;
-
-	if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
-		YY_FATAL_ERROR(
-		"fatal flex scanner internal error--end of buffer missed" );
-
-	if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
-		{ /* Don't try to fill the buffer, so this is an EOF. */
-		if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
-			{
-			/* We matched a single character, the EOB, so
-			 * treat this as a final EOF.
-			 */
-			return EOB_ACT_END_OF_FILE;
-			}
-
-		else
-			{
-			/* We matched some text prior to the EOB, first
-			 * process it.
-			 */
-			return EOB_ACT_LAST_MATCH;
-			}
-		}
-
-	/* Try to read more data. */
-
-	/* First move last chars to start of buffer. */
-	number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
-
-	for ( i = 0; i < number_to_move; ++i )
-		*(dest++) = *(source++);
-
-	if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
-		/* don't do the read, it's not guaranteed to return an EOF,
-		 * just force an EOF
-		 */
-		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
-
-	else
-		{
-			int num_to_read =
-			YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
-
-		while ( num_to_read <= 0 )
-			{ /* Not enough room in the buffer - grow it. */
-
-			/* just a shorter name for the current buffer */
-			YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
-
-			int yy_c_buf_p_offset =
-				(int) ((yy_c_buf_p) - b->yy_ch_buf);
-
-			if ( b->yy_is_our_buffer )
-				{
-				int new_size = b->yy_buf_size * 2;
-
-				if ( new_size <= 0 )
-					b->yy_buf_size += b->yy_buf_size / 8;
-				else
-					b->yy_buf_size *= 2;
-
-				b->yy_ch_buf = (char *)
-					/* Include room in for 2 EOB chars. */
-					dcyyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
-				}
-			else
-				/* Can't grow it, we don't own it. */
-				b->yy_ch_buf = 0;
-
-			if ( ! b->yy_ch_buf )
-				YY_FATAL_ERROR(
-				"fatal error - scanner input buffer overflow" );
-
-			(yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
-
-			num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
-						number_to_move - 1;
-
-			}
-
-		if ( num_to_read > YY_READ_BUF_SIZE )
-			num_to_read = YY_READ_BUF_SIZE;
-
-		/* Read in more data. */
-		YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
-			(yy_n_chars), (size_t) num_to_read );
-
-		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
-		}
-
-	if ( (yy_n_chars) == 0 )
-		{
-		if ( number_to_move == YY_MORE_ADJ )
-			{
-			ret_val = EOB_ACT_END_OF_FILE;
-			dcyyrestart(dcyyin  );
-			}
-
-		else
-			{
-			ret_val = EOB_ACT_LAST_MATCH;
-			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
-				YY_BUFFER_EOF_PENDING;
-			}
-		}
-
-	else
-		ret_val = EOB_ACT_CONTINUE_SCAN;
-
-	if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
-		/* Extend the array by 50%, plus the number we really need. */
-		yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
-		YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) dcyyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size  );
-		if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
-			YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
-	}
-
-	(yy_n_chars) += number_to_move;
-	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
-	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
-
-	(yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
-
-	return ret_val;
-}
-
-/* yy_get_previous_state - get the state just before the EOB char was reached */
-
-    static yy_state_type yy_get_previous_state (void)
-{
-	register yy_state_type yy_current_state;
-	register char *yy_cp;
-    
-	yy_current_state = (yy_start);
-
-	for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
-		{
-		register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
-		if ( yy_accept[yy_current_state] )
-			{
-			(yy_last_accepting_state) = yy_current_state;
-			(yy_last_accepting_cpos) = yy_cp;
-			}
-		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
-			{
-			yy_current_state = (int) yy_def[yy_current_state];
-			if ( yy_current_state >= 165 )
-				yy_c = yy_meta[(unsigned int) yy_c];
-			}
-		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-		}
-
-	return yy_current_state;
-}
-
-/* yy_try_NUL_trans - try to make a transition on the NUL character
- *
- * synopsis
- *	next_state = yy_try_NUL_trans( current_state );
- */
-    static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
-{
-	register int yy_is_jam;
-    	register char *yy_cp = (yy_c_buf_p);
-
-	register YY_CHAR yy_c = 1;
-	if ( yy_accept[yy_current_state] )
-		{
-		(yy_last_accepting_state) = yy_current_state;
-		(yy_last_accepting_cpos) = yy_cp;
-		}
-	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
-		{
-		yy_current_state = (int) yy_def[yy_current_state];
-		if ( yy_current_state >= 165 )
-			yy_c = yy_meta[(unsigned int) yy_c];
-		}
-	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-	yy_is_jam = (yy_current_state == 164);
-
-	return yy_is_jam ? 0 : yy_current_state;
-}
-
-    static void yyunput (int c, register char * yy_bp )
-{
-	register char *yy_cp;
-    
-    yy_cp = (yy_c_buf_p);
-
-	/* undo effects of setting up dcyytext */
-	*yy_cp = (yy_hold_char);
-
-	if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
-		{ /* need to shift things up to make room */
-		/* +2 for EOB chars. */
-		register int number_to_move = (yy_n_chars) + 2;
-		register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
-					YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
-		register char *source =
-				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
-
-		while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
-			*--dest = *--source;
-
-		yy_cp += (int) (dest - source);
-		yy_bp += (int) (dest - source);
-		YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
-			(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
-
-		if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
-			YY_FATAL_ERROR( "flex scanner push-back overflow" );
-		}
-
-	*--yy_cp = (char) c;
-
-	(yytext_ptr) = yy_bp;
-	(yy_hold_char) = *yy_cp;
-	(yy_c_buf_p) = yy_cp;
-}
-
-#ifndef YY_NO_INPUT
-#ifdef __cplusplus
-    static int yyinput (void)
-#else
-    static int input  (void)
-#endif
-
-{
-	int c;
-    
-	*(yy_c_buf_p) = (yy_hold_char);
-
-	if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
-		{
-		/* yy_c_buf_p now points to the character we want to return.
-		 * If this occurs *before* the EOB characters, then it's a
-		 * valid NUL; if not, then we've hit the end of the buffer.
-		 */
-		if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
-			/* This was really a NUL. */
-			*(yy_c_buf_p) = '\0';
-
-		else
-			{ /* need more input */
-			int offset = (yy_c_buf_p) - (yytext_ptr);
-			++(yy_c_buf_p);
-
-			switch ( yy_get_next_buffer(  ) )
-				{
-				case EOB_ACT_LAST_MATCH:
-					/* This happens because yy_g_n_b()
-					 * sees that we've accumulated a
-					 * token and flags that we need to
-					 * try matching the token before
-					 * proceeding.  But for input(),
-					 * there's no matching to consider.
-					 * So convert the EOB_ACT_LAST_MATCH
-					 * to EOB_ACT_END_OF_FILE.
-					 */
-
-					/* Reset buffer status. */
-					dcyyrestart(dcyyin );
-
-					/*FALLTHROUGH*/
-
-				case EOB_ACT_END_OF_FILE:
-					{
-					if ( dcyywrap( ) )
-						return EOF;
-
-					if ( ! (yy_did_buffer_switch_on_eof) )
-						YY_NEW_FILE;
-#ifdef __cplusplus
-					return yyinput();
-#else
-					return input();
-#endif
-					}
-
-				case EOB_ACT_CONTINUE_SCAN:
-					(yy_c_buf_p) = (yytext_ptr) + offset;
-					break;
-				}
-			}
-		}
-
-	c = *(unsigned char *) (yy_c_buf_p);	/* cast for 8-bit char's */
-	*(yy_c_buf_p) = '\0';	/* preserve dcyytext */
-	(yy_hold_char) = *++(yy_c_buf_p);
-
-	return c;
-}
-#endif	/* ifndef YY_NO_INPUT */
-
-/** Immediately switch to a different input stream.
- * @param input_file A readable stream.
- * 
- * @note This function does not reset the start condition to @c INITIAL .
- */
-    void dcyyrestart  (FILE * input_file )
-{
-    
-	if ( ! YY_CURRENT_BUFFER ){
-        dcyyensure_buffer_stack ();
-		YY_CURRENT_BUFFER_LVALUE =
-            dcyy_create_buffer(dcyyin,YY_BUF_SIZE );
-	}
-
-	dcyy_init_buffer(YY_CURRENT_BUFFER,input_file );
-	dcyy_load_buffer_state( );
-}
-
-/** Switch to a different input buffer.
- * @param new_buffer The new input buffer.
- * 
- */
-    void dcyy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
-{
-    
-	/* TODO. We should be able to replace this entire function body
-	 * with
-	 *		dcyypop_buffer_state();
-	 *		dcyypush_buffer_state(new_buffer);
-     */
-	dcyyensure_buffer_stack ();
-	if ( YY_CURRENT_BUFFER == new_buffer )
-		return;
-
-	if ( YY_CURRENT_BUFFER )
-		{
-		/* Flush out information for old buffer. */
-		*(yy_c_buf_p) = (yy_hold_char);
-		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
-		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
-		}
-
-	YY_CURRENT_BUFFER_LVALUE = new_buffer;
-	dcyy_load_buffer_state( );
-
-	/* We don't actually know whether we did this switch during
-	 * EOF (dcyywrap()) processing, but the only time this flag
-	 * is looked at is after dcyywrap() is called, so it's safe
-	 * to go ahead and always set it.
-	 */
-	(yy_did_buffer_switch_on_eof) = 1;
-}
-
-static void dcyy_load_buffer_state  (void)
-{
-    	(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
-	(yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
-	dcyyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
-	(yy_hold_char) = *(yy_c_buf_p);
-}
-
-/** Allocate and initialize an input buffer state.
- * @param file A readable stream.
- * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
- * 
- * @return the allocated buffer state.
- */
-    YY_BUFFER_STATE dcyy_create_buffer  (FILE * file, int  size )
-{
-	YY_BUFFER_STATE b;
-    
-	b = (YY_BUFFER_STATE) dcyyalloc(sizeof( struct yy_buffer_state )  );
-	if ( ! b )
-		YY_FATAL_ERROR( "out of dynamic memory in dcyy_create_buffer()" );
-
-	b->yy_buf_size = size;
-
-	/* yy_ch_buf has to be 2 characters longer than the size given because
-	 * we need to put in 2 end-of-buffer characters.
-	 */
-	b->yy_ch_buf = (char *) dcyyalloc(b->yy_buf_size + 2  );
-	if ( ! b->yy_ch_buf )
-		YY_FATAL_ERROR( "out of dynamic memory in dcyy_create_buffer()" );
-
-	b->yy_is_our_buffer = 1;
-
-	dcyy_init_buffer(b,file );
-
-	return b;
-}
-
-/** Destroy the buffer.
- * @param b a buffer created with dcyy_create_buffer()
- * 
- */
-    void dcyy_delete_buffer (YY_BUFFER_STATE  b )
-{
-    
-	if ( ! b )
-		return;
-
-	if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
-		YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
-
-	if ( b->yy_is_our_buffer )
-		dcyyfree((void *) b->yy_ch_buf  );
-
-	dcyyfree((void *) b  );
-}
-
-#ifndef __cplusplus
-extern int isatty (int );
-#endif /* __cplusplus */
-    
-/* Initializes or reinitializes a buffer.
- * This function is sometimes called more than once on the same buffer,
- * such as during a dcyyrestart() or at EOF.
- */
-    static void dcyy_init_buffer  (YY_BUFFER_STATE  b, FILE * file )
-
-{
-	int oerrno = errno;
-    
-	dcyy_flush_buffer(b );
-
-	b->yy_input_file = file;
-	b->yy_fill_buffer = 1;
-
-    /* If b is the current buffer, then dcyy_init_buffer was _probably_
-     * called from dcyyrestart() or through yy_get_next_buffer.
-     * In that case, we don't want to reset the lineno or column.
-     */
-    if (b != YY_CURRENT_BUFFER){
-        b->yy_bs_lineno = 1;
-        b->yy_bs_column = 0;
-    }
-
-        b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
-    
-	errno = oerrno;
-}
-
-/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
- * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
- * 
- */
-    void dcyy_flush_buffer (YY_BUFFER_STATE  b )
-{
-    	if ( ! b )
-		return;
-
-	b->yy_n_chars = 0;
-
-	/* We always need two end-of-buffer characters.  The first causes
-	 * a transition to the end-of-buffer state.  The second causes
-	 * a jam in that state.
-	 */
-	b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
-	b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
-
-	b->yy_buf_pos = &b->yy_ch_buf[0];
-
-	b->yy_at_bol = 1;
-	b->yy_buffer_status = YY_BUFFER_NEW;
-
-	if ( b == YY_CURRENT_BUFFER )
-		dcyy_load_buffer_state( );
-}
-
-/** Pushes the new state onto the stack. The new state becomes
- *  the current state. This function will allocate the stack
- *  if necessary.
- *  @param new_buffer The new state.
- *  
- */
-void dcyypush_buffer_state (YY_BUFFER_STATE new_buffer )
-{
-    	if (new_buffer == NULL)
-		return;
-
-	dcyyensure_buffer_stack();
-
-	/* This block is copied from dcyy_switch_to_buffer. */
-	if ( YY_CURRENT_BUFFER )
-		{
-		/* Flush out information for old buffer. */
-		*(yy_c_buf_p) = (yy_hold_char);
-		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
-		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
-		}
-
-	/* Only push if top exists. Otherwise, replace top. */
-	if (YY_CURRENT_BUFFER)
-		(yy_buffer_stack_top)++;
-	YY_CURRENT_BUFFER_LVALUE = new_buffer;
-
-	/* copied from dcyy_switch_to_buffer. */
-	dcyy_load_buffer_state( );
-	(yy_did_buffer_switch_on_eof) = 1;
-}
-
-/** Removes and deletes the top of the stack, if present.
- *  The next element becomes the new top.
- *  
- */
-void dcyypop_buffer_state (void)
-{
-    	if (!YY_CURRENT_BUFFER)
-		return;
-
-	dcyy_delete_buffer(YY_CURRENT_BUFFER );
-	YY_CURRENT_BUFFER_LVALUE = NULL;
-	if ((yy_buffer_stack_top) > 0)
-		--(yy_buffer_stack_top);
-
-	if (YY_CURRENT_BUFFER) {
-		dcyy_load_buffer_state( );
-		(yy_did_buffer_switch_on_eof) = 1;
-	}
-}
-
-/* Allocates the stack if it does not exist.
- *  Guarantees space for at least one push.
- */
-static void dcyyensure_buffer_stack (void)
-{
-	int num_to_alloc;
-    
-	if (!(yy_buffer_stack)) {
-
-		/* First allocation is just for 2 elements, since we don't know if this
-		 * scanner will even need a stack. We use 2 instead of 1 to avoid an
-		 * immediate realloc on the next call.
-         */
-		num_to_alloc = 1;
-		(yy_buffer_stack) = (struct yy_buffer_state**)dcyyalloc
-								(num_to_alloc * sizeof(struct yy_buffer_state*)
-								);
-		if ( ! (yy_buffer_stack) )
-			YY_FATAL_ERROR( "out of dynamic memory in dcyyensure_buffer_stack()" );
-								  
-		memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
-				
-		(yy_buffer_stack_max) = num_to_alloc;
-		(yy_buffer_stack_top) = 0;
-		return;
-	}
-
-	if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
-
-		/* Increase the buffer to prepare for a possible push. */
-		int grow_size = 8 /* arbitrary grow size */;
-
-		num_to_alloc = (yy_buffer_stack_max) + grow_size;
-		(yy_buffer_stack) = (struct yy_buffer_state**)dcyyrealloc
-								((yy_buffer_stack),
-								num_to_alloc * sizeof(struct yy_buffer_state*)
-								);
-		if ( ! (yy_buffer_stack) )
-			YY_FATAL_ERROR( "out of dynamic memory in dcyyensure_buffer_stack()" );
-
-		/* zero only the new slots.*/
-		memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
-		(yy_buffer_stack_max) = num_to_alloc;
-	}
-}
-
-/** Setup the input buffer state to scan directly from a user-specified character buffer.
- * @param base the character buffer
- * @param size the size in bytes of the character buffer
- * 
- * @return the newly allocated buffer state object. 
- */
-YY_BUFFER_STATE dcyy_scan_buffer  (char * base, yy_size_t  size )
-{
-	YY_BUFFER_STATE b;
-    
-	if ( size < 2 ||
-	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
-	     base[size-1] != YY_END_OF_BUFFER_CHAR )
-		/* They forgot to leave room for the EOB's. */
-		return 0;
-
-	b = (YY_BUFFER_STATE) dcyyalloc(sizeof( struct yy_buffer_state )  );
-	if ( ! b )
-		YY_FATAL_ERROR( "out of dynamic memory in dcyy_scan_buffer()" );
-
-	b->yy_buf_size = size - 2;	/* "- 2" to take care of EOB's */
-	b->yy_buf_pos = b->yy_ch_buf = base;
-	b->yy_is_our_buffer = 0;
-	b->yy_input_file = 0;
-	b->yy_n_chars = b->yy_buf_size;
-	b->yy_is_interactive = 0;
-	b->yy_at_bol = 1;
-	b->yy_fill_buffer = 0;
-	b->yy_buffer_status = YY_BUFFER_NEW;
-
-	dcyy_switch_to_buffer(b  );
-
-	return b;
-}
-
-/** Setup the input buffer state to scan a string. The next call to dcyylex() will
- * scan from a @e copy of @a str.
- * @param yystr a NUL-terminated string to scan
- * 
- * @return the newly allocated buffer state object.
- * @note If you want to scan bytes that may contain NUL values, then use
- *       dcyy_scan_bytes() instead.
- */
-YY_BUFFER_STATE dcyy_scan_string (yyconst char * yystr )
-{
-    
-	return dcyy_scan_bytes(yystr,strlen(yystr) );
-}
-
-/** Setup the input buffer state to scan the given bytes. The next call to dcyylex() will
- * scan from a @e copy of @a bytes.
- * @param bytes the byte buffer to scan
- * @param len the number of bytes in the buffer pointed to by @a bytes.
- * 
- * @return the newly allocated buffer state object.
- */
-YY_BUFFER_STATE dcyy_scan_bytes  (yyconst char * yybytes, int  _yybytes_len )
-{
-	YY_BUFFER_STATE b;
-	char *buf;
-	yy_size_t n;
-	int i;
-    
-	/* Get memory for full buffer, including space for trailing EOB's. */
-	n = _yybytes_len + 2;
-	buf = (char *) dcyyalloc(n  );
-	if ( ! buf )
-		YY_FATAL_ERROR( "out of dynamic memory in dcyy_scan_bytes()" );
-
-	for ( i = 0; i < _yybytes_len; ++i )
-		buf[i] = yybytes[i];
-
-	buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
-
-	b = dcyy_scan_buffer(buf,n );
-	if ( ! b )
-		YY_FATAL_ERROR( "bad buffer in dcyy_scan_bytes()" );
-
-	/* It's okay to grow etc. this buffer, and we should throw it
-	 * away when we're done.
-	 */
-	b->yy_is_our_buffer = 1;
-
-	return b;
-}
-
-#ifndef YY_EXIT_FAILURE
-#define YY_EXIT_FAILURE 2
-#endif
-
-static void yy_fatal_error (yyconst char* msg )
-{
-    	(void) fprintf( stderr, "%s\n", msg );
-	exit( YY_EXIT_FAILURE );
-}
-
-/* Redefine yyless() so it works in section 3 code. */
-
-#undef yyless
-#define yyless(n) \
-	do \
-		{ \
-		/* Undo effects of setting up dcyytext. */ \
-        int yyless_macro_arg = (n); \
-        YY_LESS_LINENO(yyless_macro_arg);\
-		dcyytext[dcyyleng] = (yy_hold_char); \
-		(yy_c_buf_p) = dcyytext + yyless_macro_arg; \
-		(yy_hold_char) = *(yy_c_buf_p); \
-		*(yy_c_buf_p) = '\0'; \
-		dcyyleng = yyless_macro_arg; \
-		} \
-	while ( 0 )
-
-/* Accessor  methods (get/set functions) to struct members. */
-
-/** Get the current line number.
- * 
- */
-int dcyyget_lineno  (void)
-{
-        
-    return dcyylineno;
-}
-
-/** Get the input stream.
- * 
- */
-FILE *dcyyget_in  (void)
-{
-        return dcyyin;
-}
-
-/** Get the output stream.
- * 
- */
-FILE *dcyyget_out  (void)
-{
-        return dcyyout;
-}
-
-/** Get the length of the current token.
- * 
- */
-int dcyyget_leng  (void)
-{
-        return dcyyleng;
-}
-
-/** Get the current token.
- * 
- */
-
-char *dcyyget_text  (void)
-{
-        return dcyytext;
-}
-
-/** Set the current line number.
- * @param line_number
- * 
- */
-void dcyyset_lineno (int  line_number )
-{
-    
-    dcyylineno = line_number;
-}
-
-/** Set the input stream. This does not discard the current
- * input buffer.
- * @param in_str A readable stream.
- * 
- * @see dcyy_switch_to_buffer
- */
-void dcyyset_in (FILE *  in_str )
-{
-        dcyyin = in_str ;
-}
-
-void dcyyset_out (FILE *  out_str )
-{
-        dcyyout = out_str ;
-}
-
-int dcyyget_debug  (void)
-{
-        return dcyy_flex_debug;
-}
-
-void dcyyset_debug (int  bdebug )
-{
-        dcyy_flex_debug = bdebug ;
-}
-
-static int yy_init_globals (void)
-{
-        /* Initialization is the same as for the non-reentrant scanner.
-     * This function is called from dcyylex_destroy(), so don't allocate here.
-     */
-
-    (yy_buffer_stack) = 0;
-    (yy_buffer_stack_top) = 0;
-    (yy_buffer_stack_max) = 0;
-    (yy_c_buf_p) = (char *) 0;
-    (yy_init) = 0;
-    (yy_start) = 0;
-
-/* Defined in main.c */
-#ifdef YY_STDINIT
-    dcyyin = stdin;
-    dcyyout = stdout;
-#else
-    dcyyin = (FILE *) 0;
-    dcyyout = (FILE *) 0;
-#endif
-
-    /* For future reference: Set errno on error, since we are called by
-     * dcyylex_init()
-     */
-    return 0;
-}
-
-/* dcyylex_destroy is for both reentrant and non-reentrant scanners. */
-int dcyylex_destroy  (void)
-{
-    
-    /* Pop the buffer stack, destroying each element. */
-	while(YY_CURRENT_BUFFER){
-		dcyy_delete_buffer(YY_CURRENT_BUFFER  );
-		YY_CURRENT_BUFFER_LVALUE = NULL;
-		dcyypop_buffer_state();
-	}
-
-	/* Destroy the stack itself. */
-	dcyyfree((yy_buffer_stack) );
-	(yy_buffer_stack) = NULL;
-
-    /* Reset the globals. This is important in a non-reentrant scanner so the next time
-     * dcyylex() is called, initialization will occur. */
-    yy_init_globals( );
-
-    return 0;
-}
-
-/*
- * Internal utility routines.
- */
-
-#ifndef yytext_ptr
-static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
-{
-	register int i;
-	for ( i = 0; i < n; ++i )
-		s1[i] = s2[i];
-}
-#endif
-
-#ifdef YY_NEED_STRLEN
-static int yy_flex_strlen (yyconst char * s )
-{
-	register int n;
-	for ( n = 0; s[n]; ++n )
-		;
-
-	return n;
-}
-#endif
-
-void *dcyyalloc (yy_size_t  size )
-{
-	return (void *) malloc( size );
-}
-
-void *dcyyrealloc  (void * ptr, yy_size_t  size )
-{
-	/* The cast to (char *) in the following accommodates both
-	 * implementations that use char* generic pointers, and those
-	 * that use void* generic pointers.  It works with the latter
-	 * because both ANSI C and C++ allow castless assignment from
-	 * any pointer type to void*, and deal with argument conversions
-	 * as though doing an assignment.
-	 */
-	return (void *) realloc( (char *) ptr, size );
-}
-
-void dcyyfree (void * ptr )
-{
-	free( (char *) ptr );	/* see dcyyrealloc() for (char *) cast */
-}
-
-#define YYTABLES_NAME "yytables"
-
-#line 746 "dcLexer.lxx"
+#line 2 "lex.yy.c"
+
+#line 4 "lex.yy.c"
+
+#define  YY_INT_ALIGNED short int
+
+/* A lexical scanner generated by flex */
+
+#define yy_create_buffer dcyy_create_buffer
+#define yy_delete_buffer dcyy_delete_buffer
+#define yy_flex_debug dcyy_flex_debug
+#define yy_init_buffer dcyy_init_buffer
+#define yy_flush_buffer dcyy_flush_buffer
+#define yy_load_buffer_state dcyy_load_buffer_state
+#define yy_switch_to_buffer dcyy_switch_to_buffer
+#define yyin dcyyin
+#define yyleng dcyyleng
+#define yylex dcyylex
+#define yylineno dcyylineno
+#define yyout dcyyout
+#define yyrestart dcyyrestart
+#define yytext dcyytext
+#define yywrap dcyywrap
+#define yyalloc dcyyalloc
+#define yyrealloc dcyyrealloc
+#define yyfree dcyyfree
+
+#define FLEX_SCANNER
+#define YY_FLEX_MAJOR_VERSION 2
+#define YY_FLEX_MINOR_VERSION 5
+#define YY_FLEX_SUBMINOR_VERSION 35
+#if YY_FLEX_SUBMINOR_VERSION > 0
+#define FLEX_BETA
+#endif
+
+/* First, we deal with  platform-specific or compiler-specific issues. */
+
+/* begin standard C headers. */
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <stdlib.h>
+
+/* end standard C headers. */
+
+/* flex integer type definitions */
+
+#ifndef FLEXINT_H
+#define FLEXINT_H
+
+/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
+
+#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+
+/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
+ * if you want the limit (max/min) macros for int types. 
+ */
+#ifndef __STDC_LIMIT_MACROS
+#define __STDC_LIMIT_MACROS 1
+#endif
+
+#include <inttypes.h>
+typedef int8_t flex_int8_t;
+typedef uint8_t flex_uint8_t;
+typedef int16_t flex_int16_t;
+typedef uint16_t flex_uint16_t;
+typedef int32_t flex_int32_t;
+typedef uint32_t flex_uint32_t;
+#else
+typedef signed char flex_int8_t;
+typedef short int flex_int16_t;
+typedef int flex_int32_t;
+typedef unsigned char flex_uint8_t; 
+typedef unsigned short int flex_uint16_t;
+typedef unsigned int flex_uint32_t;
+#endif /* ! C99 */
+
+/* Limits of integral types. */
+#ifndef INT8_MIN
+#define INT8_MIN               (-128)
+#endif
+#ifndef INT16_MIN
+#define INT16_MIN              (-32767-1)
+#endif
+#ifndef INT32_MIN
+#define INT32_MIN              (-2147483647-1)
+#endif
+#ifndef INT8_MAX
+#define INT8_MAX               (127)
+#endif
+#ifndef INT16_MAX
+#define INT16_MAX              (32767)
+#endif
+#ifndef INT32_MAX
+#define INT32_MAX              (2147483647)
+#endif
+#ifndef UINT8_MAX
+#define UINT8_MAX              (255U)
+#endif
+#ifndef UINT16_MAX
+#define UINT16_MAX             (65535U)
+#endif
+#ifndef UINT32_MAX
+#define UINT32_MAX             (4294967295U)
+#endif
+
+#endif /* ! FLEXINT_H */
+
+#ifdef __cplusplus
+
+/* The "const" storage-class-modifier is valid. */
+#define YY_USE_CONST
+
+#else	/* ! __cplusplus */
+
+/* C99 requires __STDC__ to be defined as 1. */
+#if defined (__STDC__)
+
+#define YY_USE_CONST
+
+#endif	/* defined (__STDC__) */
+#endif	/* ! __cplusplus */
+
+#ifdef YY_USE_CONST
+#define yyconst const
+#else
+#define yyconst
+#endif
+
+/* Returned upon end-of-file. */
+#define YY_NULL 0
+
+/* Promotes a possibly negative, possibly signed char to an unsigned
+ * integer for use as an array index.  If the signed char is negative,
+ * we want to instead treat it as an 8-bit unsigned char, hence the
+ * double cast.
+ */
+#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
+
+/* Enter a start condition.  This macro really ought to take a parameter,
+ * but we do it the disgusting crufty way forced on us by the ()-less
+ * definition of BEGIN.
+ */
+#define BEGIN (yy_start) = 1 + 2 *
+
+/* Translate the current start state into a value that can be later handed
+ * to BEGIN to return to the state.  The YYSTATE alias is for lex
+ * compatibility.
+ */
+#define YY_START (((yy_start) - 1) / 2)
+#define YYSTATE YY_START
+
+/* Action number for EOF rule of a given start state. */
+#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
+
+/* Special action meaning "start processing a new file". */
+#define YY_NEW_FILE dcyyrestart(dcyyin  )
+
+#define YY_END_OF_BUFFER_CHAR 0
+
+/* Size of default input buffer. */
+#ifndef YY_BUF_SIZE
+#define YY_BUF_SIZE 16384
+#endif
+
+/* The state buf must be large enough to hold one state per character in the main buffer.
+ */
+#define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
+
+#ifndef YY_TYPEDEF_YY_BUFFER_STATE
+#define YY_TYPEDEF_YY_BUFFER_STATE
+typedef struct yy_buffer_state *YY_BUFFER_STATE;
+#endif
+
+extern int dcyyleng;
+
+extern FILE *dcyyin, *dcyyout;
+
+#define EOB_ACT_CONTINUE_SCAN 0
+#define EOB_ACT_END_OF_FILE 1
+#define EOB_ACT_LAST_MATCH 2
+
+    #define YY_LESS_LINENO(n)
+    
+/* Return all but the first "n" matched characters back to the input stream. */
+#define yyless(n) \
+	do \
+		{ \
+		/* Undo effects of setting up dcyytext. */ \
+        int yyless_macro_arg = (n); \
+        YY_LESS_LINENO(yyless_macro_arg);\
+		*yy_cp = (yy_hold_char); \
+		YY_RESTORE_YY_MORE_OFFSET \
+		(yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
+		YY_DO_BEFORE_ACTION; /* set up dcyytext again */ \
+		} \
+	while ( 0 )
+
+#define unput(c) yyunput( c, (yytext_ptr)  )
+
+#ifndef YY_TYPEDEF_YY_SIZE_T
+#define YY_TYPEDEF_YY_SIZE_T
+typedef size_t yy_size_t;
+#endif
+
+#ifndef YY_STRUCT_YY_BUFFER_STATE
+#define YY_STRUCT_YY_BUFFER_STATE
+struct yy_buffer_state
+	{
+	FILE *yy_input_file;
+
+	char *yy_ch_buf;		/* input buffer */
+	char *yy_buf_pos;		/* current position in input buffer */
+
+	/* Size of input buffer in bytes, not including room for EOB
+	 * characters.
+	 */
+	yy_size_t yy_buf_size;
+
+	/* Number of characters read into yy_ch_buf, not including EOB
+	 * characters.
+	 */
+	int yy_n_chars;
+
+	/* Whether we "own" the buffer - i.e., we know we created it,
+	 * and can realloc() it to grow it, and should free() it to
+	 * delete it.
+	 */
+	int yy_is_our_buffer;
+
+	/* Whether this is an "interactive" input source; if so, and
+	 * if we're using stdio for input, then we want to use getc()
+	 * instead of fread(), to make sure we stop fetching input after
+	 * each newline.
+	 */
+	int yy_is_interactive;
+
+	/* Whether we're considered to be at the beginning of a line.
+	 * If so, '^' rules will be active on the next match, otherwise
+	 * not.
+	 */
+	int yy_at_bol;
+
+    int yy_bs_lineno; /**< The line count. */
+    int yy_bs_column; /**< The column count. */
+    
+	/* Whether to try to fill the input buffer when we reach the
+	 * end of it.
+	 */
+	int yy_fill_buffer;
+
+	int yy_buffer_status;
+
+#define YY_BUFFER_NEW 0
+#define YY_BUFFER_NORMAL 1
+	/* When an EOF's been seen but there's still some text to process
+	 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
+	 * shouldn't try reading from the input source any more.  We might
+	 * still have a bunch of tokens to match, though, because of
+	 * possible backing-up.
+	 *
+	 * When we actually see the EOF, we change the status to "new"
+	 * (via dcyyrestart()), so that the user can continue scanning by
+	 * just pointing dcyyin at a new input file.
+	 */
+#define YY_BUFFER_EOF_PENDING 2
+
+	};
+#endif /* !YY_STRUCT_YY_BUFFER_STATE */
+
+/* Stack of input buffers. */
+static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
+static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
+static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
+
+/* We provide macros for accessing buffer states in case in the
+ * future we want to put the buffer states in a more general
+ * "scanner state".
+ *
+ * Returns the top of the stack, or NULL.
+ */
+#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
+                          ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
+                          : NULL)
+
+/* Same as previous macro, but useful when we know that the buffer stack is not
+ * NULL or when we need an lvalue. For internal use only.
+ */
+#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
+
+/* yy_hold_char holds the character lost when dcyytext is formed. */
+static char yy_hold_char;
+static int yy_n_chars;		/* number of characters read into yy_ch_buf */
+int dcyyleng;
+
+/* Points to current character in buffer. */
+static char *yy_c_buf_p = (char *) 0;
+static int yy_init = 0;		/* whether we need to initialize */
+static int yy_start = 0;	/* start state number */
+
+/* Flag which is used to allow dcyywrap()'s to do buffer switches
+ * instead of setting up a fresh dcyyin.  A bit of a hack ...
+ */
+static int yy_did_buffer_switch_on_eof;
+
+void dcyyrestart (FILE *input_file  );
+void dcyy_switch_to_buffer (YY_BUFFER_STATE new_buffer  );
+YY_BUFFER_STATE dcyy_create_buffer (FILE *file,int size  );
+void dcyy_delete_buffer (YY_BUFFER_STATE b  );
+void dcyy_flush_buffer (YY_BUFFER_STATE b  );
+void dcyypush_buffer_state (YY_BUFFER_STATE new_buffer  );
+void dcyypop_buffer_state (void );
+
+static void dcyyensure_buffer_stack (void );
+static void dcyy_load_buffer_state (void );
+static void dcyy_init_buffer (YY_BUFFER_STATE b,FILE *file  );
+
+#define YY_FLUSH_BUFFER dcyy_flush_buffer(YY_CURRENT_BUFFER )
+
+YY_BUFFER_STATE dcyy_scan_buffer (char *base,yy_size_t size  );
+YY_BUFFER_STATE dcyy_scan_string (yyconst char *yy_str  );
+YY_BUFFER_STATE dcyy_scan_bytes (yyconst char *bytes,int len  );
+
+void *dcyyalloc (yy_size_t  );
+void *dcyyrealloc (void *,yy_size_t  );
+void dcyyfree (void *  );
+
+#define yy_new_buffer dcyy_create_buffer
+
+#define yy_set_interactive(is_interactive) \
+	{ \
+	if ( ! YY_CURRENT_BUFFER ){ \
+        dcyyensure_buffer_stack (); \
+		YY_CURRENT_BUFFER_LVALUE =    \
+            dcyy_create_buffer(dcyyin,YY_BUF_SIZE ); \
+	} \
+	YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
+	}
+
+#define yy_set_bol(at_bol) \
+	{ \
+	if ( ! YY_CURRENT_BUFFER ){\
+        dcyyensure_buffer_stack (); \
+		YY_CURRENT_BUFFER_LVALUE =    \
+            dcyy_create_buffer(dcyyin,YY_BUF_SIZE ); \
+	} \
+	YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
+	}
+
+#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
+
+typedef unsigned char YY_CHAR;
+
+FILE *dcyyin = (FILE *) 0, *dcyyout = (FILE *) 0;
+
+typedef int yy_state_type;
+
+extern int dcyylineno;
+
+int dcyylineno = 1;
+
+extern char *dcyytext;
+#define yytext_ptr dcyytext
+
+static yy_state_type yy_get_previous_state (void );
+static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
+static int yy_get_next_buffer (void );
+static void yy_fatal_error (yyconst char msg[]  );
+
+/* Done after the current pattern has been matched and before the
+ * corresponding action - sets up dcyytext.
+ */
+#define YY_DO_BEFORE_ACTION \
+	(yytext_ptr) = yy_bp; \
+	dcyyleng = (size_t) (yy_cp - yy_bp); \
+	(yy_hold_char) = *yy_cp; \
+	*yy_cp = '\0'; \
+	(yy_c_buf_p) = yy_cp;
+
+#define YY_NUM_RULES 44
+#define YY_END_OF_BUFFER 45
+/* This struct is not used in this scanner,
+   but its presence is necessary. */
+struct yy_trans_info
+	{
+	flex_int32_t yy_verify;
+	flex_int32_t yy_nxt;
+	};
+static yyconst flex_int16_t yy_accept[165] =
+    {   0,
+        0,    0,   45,   43,    2,    1,   39,   40,   43,   43,
+       43,   35,   35,   41,   42,   42,   42,   42,   42,   42,
+       42,   42,   42,   42,    1,    0,   36,   38,    4,    3,
+       38,   35,   37,   42,   42,   42,   42,   42,   42,   42,
+       42,   42,   42,   42,   42,   42,   42,   42,   42,    0,
+        3,   37,   42,   42,   42,   42,   42,   42,   42,   42,
+       42,   42,   42,   42,   42,   42,   42,    0,   38,   25,
+       42,   12,   34,   42,   42,   42,    7,   42,   42,   42,
+       42,   15,   42,   42,   42,   42,   42,   42,   42,   14,
+       42,   42,   42,   42,   16,   17,   18,   42,   42,   42,
+
+       42,   42,   42,   42,   42,   42,   19,   26,    5,   42,
+       42,    8,   42,   42,   42,   42,   24,    6,   11,   42,
+       20,   21,   22,   42,   13,   23,   42,   42,   42,    9,
+       10,   42,   42,   42,   42,   42,   42,   42,   42,   42,
+       42,   42,   42,   42,   27,   42,   42,   42,   42,   28,
+       29,   42,   42,   42,   30,   31,   32,   42,   42,   42,
+       42,   42,   33,    0
+    } ;
+
+static yyconst flex_int32_t yy_ec[256] =
+    {   0,
+        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
+        1,    1,    2,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    2,    1,    4,    1,    1,    1,    1,    5,    1,
+        1,    6,    7,    1,    7,    8,    9,   10,   11,   12,
+       13,   14,   15,   16,   15,   17,   15,    1,    1,   18,
+        1,    1,    1,    1,   19,   19,   19,   19,   20,   19,
+       21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
+       21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
+        1,    1,    1,    1,   21,    1,   22,   23,   24,   25,
+
+       26,   27,   28,   29,   30,   21,   31,   32,   33,   34,
+       35,   36,   21,   37,   38,   39,   40,   21,   41,   42,
+       43,   21,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1
+    } ;
+
+static yyconst flex_int32_t yy_meta[44] =
+    {   0,
+        1,    1,    2,    1,    1,    1,    3,    4,    1,    5,
+        5,    5,    5,    5,    5,    5,    5,    1,    6,    6,
+        7,    6,    6,    6,    6,    6,    6,    7,    7,    7,
+        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
+        7,    8,    7
+    } ;
+
+static yyconst flex_int16_t yy_base[173] =
+    {   0,
+        0,    0,  209,  210,  210,    0,  210,  210,  200,    0,
+       38,   37,   38,  210,    0,   16,   27,   26,   22,   24,
+      181,   21,  163,  175,    0,    0,  196,   35,  210,    0,
+        0,    0,    0,    0,  168,  176,  163,  178,  167,  171,
+      162,  161,  159,  155,  150,  155,  161,  154,  155,  181,
+        0,    0,  164,  164,  159,  147,  161,  160,  159,  147,
+      144,   52,  137,   34,  138,  150,  136,  167,  166,  159,
+      140,    0,    0,  132,  129,  129,    0,  130,  150,  153,
+      150,  141,  127,  127,  136,  135,  133,   59,  145,    0,
+      118,  123,  138,  114,  130,  129,    0,  113,  112,  120,
+
+      108,  117,  119,  128,  131,  128,  119,    0,    0,  101,
+      125,    0,  101,  100,   99,  110,    0,    0,    0,  107,
+      111,   44,    0,   95,    0,    0,   94,   93,  107,    0,
+        0,   91,   90,   96,   88,  102,  101,   79,   84,   83,
+       85,   96,   74,   72,    0,   83,   76,   58,   43,    0,
+        0,   40,   39,   64,    0,    0,    0,   56,   40,   36,
+       49,   24,    0,  210,   84,   89,   46,   91,   95,  103,
+      107,  111
+    } ;
+
+static yyconst flex_int16_t yy_def[173] =
+    {   0,
+      164,    1,  164,  164,  164,  165,  164,  164,  166,  167,
+      164,  168,  168,  164,  169,  169,  169,  169,  169,  169,
+      169,  169,  169,  169,  165,  167,  166,  167,  164,  170,
+       28,   13,  171,  169,  169,  169,  169,  169,  169,  169,
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  172,
+      170,  171,  169,  169,  169,  169,  169,  169,  169,  169,
+      169,  169,  169,  169,  169,  169,  169,  172,  172,  169,
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
+
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
+      169,  169,  169,  169,  169,  169,  169,  169,  169,  169,
+      169,  169,  169,    0,  164,  164,  164,  164,  164,  164,
+      164,  164
+    } ;
+
+static yyconst flex_int16_t yy_nxt[254] =
+    {   0,
+        4,    5,    6,    7,    8,    4,    9,   10,   11,   12,
+       13,   13,   13,   13,   13,   13,   13,   14,   15,   15,
+       15,   15,   16,   17,   18,   15,   19,   15,   15,   20,
+       21,   15,   15,   15,   15,   15,   15,   22,   23,   24,
+       15,   15,   15,   29,   31,   31,   30,   35,   37,   39,
+       28,   40,   36,   41,   50,   38,   43,   44,   42,   46,
+       50,   47,   79,   84,   80,  133,  163,   81,   82,  104,
+      162,  105,  161,   85,  106,  107,  160,  159,   33,  164,
+      158,  157,  156,  134,   25,  155,   25,   25,   25,   25,
+       25,   25,   27,   27,   32,   32,  154,  153,   32,   34,
+
+       34,   34,   34,   51,  152,   51,   51,   51,   51,   51,
+       51,   52,   52,   69,  151,   69,  150,  149,  148,  147,
+      146,  145,  144,  143,  142,  141,  140,  139,  138,  137,
+      136,  135,  132,  131,  130,  129,  128,  127,  126,  125,
+      124,  123,  122,  121,  120,  119,  118,  117,  116,  115,
+      114,  113,  112,  111,  110,  109,  108,  103,  102,  101,
+      100,   99,   98,   97,   96,   95,   94,   93,   92,   91,
+       90,   89,  164,  164,   88,   87,   86,   83,   78,   77,
+       76,   75,   74,   73,   72,   71,   70,   68,   67,   66,
+       65,   64,   63,   62,   61,   60,   59,   58,   57,   56,
+
+       55,   54,   53,   31,   49,   48,   45,   26,  164,    3,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164
+    } ;
+
+static yyconst flex_int16_t yy_chk[254] =
+    {   0,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,   11,   12,   13,   11,   16,   17,   18,
+      167,   18,   16,   19,   28,   17,   20,   20,   19,   22,
+       28,   22,   62,   64,   62,  122,  162,   62,   62,   88,
+      161,   88,  160,   64,   88,   88,  159,  158,   12,   13,
+      154,  153,  152,  122,  165,  149,  165,  165,  165,  165,
+      165,  165,  166,  166,  168,  168,  148,  147,  168,  169,
+
+      169,  169,  169,  170,  146,  170,  170,  170,  170,  170,
+      170,  171,  171,  172,  144,  172,  143,  142,  141,  140,
+      139,  138,  137,  136,  135,  134,  133,  132,  129,  128,
+      127,  124,  121,  120,  116,  115,  114,  113,  111,  110,
+      107,  106,  105,  104,  103,  102,  101,  100,   99,   98,
+       96,   95,   94,   93,   92,   91,   89,   87,   86,   85,
+       84,   83,   82,   81,   80,   79,   78,   76,   75,   74,
+       71,   70,   69,   68,   67,   66,   65,   63,   61,   60,
+       59,   58,   57,   56,   55,   54,   53,   50,   49,   48,
+       47,   46,   45,   44,   43,   42,   41,   40,   39,   38,
+
+       37,   36,   35,   27,   24,   23,   21,    9,    3,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
+      164,  164,  164
+    } ;
+
+static yy_state_type yy_last_accepting_state;
+static char *yy_last_accepting_cpos;
+
+extern int dcyy_flex_debug;
+int dcyy_flex_debug = 0;
+
+/* The intent behind this definition is that it'll catch
+ * any uses of REJECT which flex missed.
+ */
+#define REJECT reject_used_but_not_detected
+#define yymore() yymore_used_but_not_detected
+#define YY_MORE_ADJ 0
+#define YY_RESTORE_YY_MORE_OFFSET
+char *dcyytext;
+#line 1 "dcLexer.lxx"
+/*
+// Filename: dcLexer.lxx
+// Created by:  drose (05Oct00)
+// 
+////////////////////////////////////////////////////////////////////
+*/
+#line 9 "dcLexer.lxx"
+#include "dcLexerDefs.h"
+#include "dcParserDefs.h"
+#include "dcParser.h"
+#include "dcFile.h"
+#include "dcindent.h"
+#include "pstrtod.h"
+
+
+static int yyinput(void);        // declared by flex.
+extern "C" int dcyywrap();
+
+////////////////////////////////////////////////////////////////////
+// Static variables
+////////////////////////////////////////////////////////////////////
+
+// We'll increment line_number and col_number as we parse the file, so
+// that we can report the position of an error.
+static int line_number = 0;
+static int col_number = 0;
+
+// current_line holds as much of the current line as will fit.  Its
+// only purpose is for printing it out to report an error to the user.
+static const int max_error_width = 1024;
+static char current_line[max_error_width + 1];
+
+static int error_count = 0;
+static int warning_count = 0;
+
+// This is the pointer to the current input stream.
+static istream *input_p = NULL;
+
+// This is the name of the dc file we're parsing.  We keep it so we
+// can print it out for error messages.
+static string dc_filename;
+
+// This is the initial token state returned by the lexer.  It allows
+// the yacc grammar to start from initial points.
+static int initial_token;
+
+
+////////////////////////////////////////////////////////////////////
+// Defining the interface to the lexer.
+////////////////////////////////////////////////////////////////////
+
+void
+dc_init_lexer(istream &in, const string &filename) {
+  input_p = &in;
+  dc_filename = filename;
+  line_number = 0;
+  col_number = 0;
+  error_count = 0;
+  warning_count = 0;
+  initial_token = START_DC;
+}
+
+void
+dc_start_parameter_value() {
+  /* Set the initial state to begin parsing a parameter value, instead
+     of at the beginning of the dc file. */
+  initial_token = START_PARAMETER_VALUE;
+}
+
+void
+dc_start_parameter_description() {
+  /* Set the initial state to begin parsing a parameter description, instead
+     of at the beginning of the dc file. */
+  initial_token = START_PARAMETER_DESCRIPTION;
+}
+
+int
+dc_error_count() {
+  return error_count;
+}
+
+int
+dc_warning_count() {
+  return warning_count;
+}
+
+
+////////////////////////////////////////////////////////////////////
+// Internal support functions.
+////////////////////////////////////////////////////////////////////
+
+int
+dcyywrap(void) {
+  return 1;
+}
+
+void
+dcyyerror(const string &msg) {
+  cerr << "\nError";
+  if (!dc_filename.empty()) {
+    cerr << " in " << dc_filename;
+  }
+  cerr 
+    << " at line " << line_number << ", column " << col_number << ":\n"
+    << current_line << "\n";
+  indent(cerr, col_number-1) 
+    << "^\n" << msg << "\n\n";
+  
+  error_count++;
+}
+
+void
+dcyywarning(const string &msg) {
+  cerr << "\nWarning";
+  if (!dc_filename.empty()) {
+    cerr << " in " << dc_filename;
+  }
+  cerr 
+    << " at line " << line_number << ", column " << col_number << ":\n"
+    << current_line << "\n";
+  indent(cerr, col_number-1) 
+    << "^\n" << msg << "\n\n";
+
+  warning_count++;
+}
+
+// Now define a function to take input from an istream instead of a
+// stdio FILE pointer.  This is flex-specific.
+static void
+input_chars(char *buffer, int &result, int max_size) {
+  nassertv(input_p != NULL);
+  if (*input_p) {
+    input_p->read(buffer, max_size);
+    result = input_p->gcount();
+    if (result >= 0 && result < max_size) {
+      // Truncate at the end of the read.
+      buffer[result] = '\0';
+    }
+
+    if (line_number == 0) {
+      // This is a special case.  If we are reading the very first bit
+      // from the stream, copy it into the current_line array.  This
+      // is because the \n.* rule below, which fills current_line
+      // normally, doesn't catch the first line.
+      strncpy(current_line, dcyytext, max_error_width);
+      current_line[max_error_width] = '\0';
+      line_number++;
+      col_number = 0;
+
+      // Truncate it at the newline.
+      char *end = strchr(current_line, '\n');
+      if (end != NULL) {
+        *end = '\0';
+      }
+    }
+
+  } else {
+    // End of file or I/O error.
+    result = 0;
+  }
+}
+#undef YY_INPUT
+
+// Define this macro carefully, since different flex versions call it
+// with a different type for result.
+#define YY_INPUT(buffer, result, max_size) { \
+  int int_result; \
+  input_chars((buffer), int_result, (max_size)); \
+  (result) = int_result; \
+}
+
+// read_char reads and returns a single character, incrementing the
+// supplied line and column numbers as appropriate.  A convenience
+// function for the scanning functions below.
+static int
+read_char(int &line, int &col) {
+  int c = yyinput();
+  if (c == '\n') {
+    line++;
+    col = 0;
+  } else {
+    col++;
+  }
+  return c;
+}
+
+// scan_quoted_string reads a string delimited by quotation marks and
+// returns it.
+static string
+scan_quoted_string(char quote_mark) {
+  string result;
+
+  // We don't touch the current line number and column number during
+  // scanning, so that if we detect an error while scanning the string
+  // (e.g. an unterminated string), we'll report the error as
+  // occurring at the start of the string, not at the end--somewhat
+  // more convenient for the user.
+
+  // Instead of adjusting the global line_number and col_number
+  // variables, we'll operate on our own local variables for the
+  // interim.
+  int line = line_number;
+  int col = col_number;
+
+  int c;
+  c = read_char(line, col);
+  while (c != quote_mark && c != EOF) {
+    // A newline is not allowed within a string unless it is escaped.
+    if (c == '\n') {
+      c = EOF;
+      break;
+
+    } else if (c == '\\') {
+      // Backslash escapes the following character.  We also respect
+      // some C conventions.
+      c = read_char(line, col);
+      switch (c) {
+      case 'a':
+        result += '\a';
+        c = read_char(line, col);
+        break;
+
+      case 'n':
+        result += '\n';
+        c = read_char(line, col);
+        break;
+
+      case 'r':
+        result += '\r';
+        c = read_char(line, col);
+        break;
+
+      case 't':
+        result += '\t';
+        c = read_char(line, col);
+        break;
+
+      case 'x':
+        {
+          int hex = 0;
+          c = read_char(line, col);
+          for (int i = 0; i < 2 && isxdigit(c); i++) {
+            hex = hex * 16 + (isdigit(c) ? c - '0' : tolower(c) - 'a' + 10);
+            c = read_char(line, col);
+          }
+
+          result += hex;
+        }
+        break;
+
+      case '0':
+        {
+          int oct = 0;
+          c = read_char(line, col);
+          for (int i = 0; i < 3 && (c >= '0' && c < '7'); i++) {
+            oct = oct * 8 + (c - '0');
+            c = read_char(line, col);
+          }
+
+          result += oct;
+        }
+        break;
+
+      case '1':
+      case '2':
+      case '3':
+      case '4':
+      case '5':
+      case '6':
+      case '7':
+      case '8':
+      case '9':
+        {
+          int dec = 0;
+          c = read_char(line, col);
+          for (int i = 0; i < 3 && isdigit(c); i++) {
+            dec = dec * 10 + (c - '0');
+            c = read_char(line, col);
+          }
+
+          result += dec;
+        }
+        break;
+
+      case EOF:
+        break;
+
+      default:
+        result += c;
+        c = read_char(line, col);
+      }
+
+    } else {
+      result += c;
+      c = read_char(line, col);
+    }
+  }
+
+  if (c == EOF) {
+    dcyyerror("This quotation mark is unterminated.");
+  }
+
+  line_number = line;
+  col_number = col;
+
+  return result;
+}
+
+// scan_hex_string reads a string of hexadecimal digits delimited by
+// angle brackets and returns the representative string.
+static string
+scan_hex_string() {
+  string result;
+
+  // We don't touch the current line number and column number during
+  // scanning, so that if we detect an error while scanning the string
+  // (e.g. an unterminated string), we'll report the error as
+  // occurring at the start of the string, not at the end--somewhat
+  // more convenient for the user.
+
+  // Instead of adjusting the global line_number and col_number
+  // variables, we'll operate on our own local variables for the
+  // interim.
+  int line = line_number;
+  int col = col_number;
+
+  bool odd = false;
+  int last = 0;
+  int c;
+  c = read_char(line, col);
+  while (c != '>' && c != EOF) {
+    int value;
+    if (c >= '0' && c <= '9') {
+      value = c - '0';
+    } else if (c >= 'a' && c <= 'f') {
+      value = c - 'a' + 10;
+    } else if (c >= 'A' && c <= 'F') {
+      value = c - 'A' + 10;
+    } else {
+      line_number = line;
+      col_number = col;
+      dcyyerror("Invalid hex digit.");
+      return string();
+    }
+
+    odd = !odd;
+    if (odd) {
+      last = value;
+    } else {
+      result += (char)((last << 4) | value);
+    }
+    c = read_char(line, col);
+  }
+
+  if (c == EOF) {
+    dcyyerror("This hex string is unterminated.");
+    return string();
+  } else if (odd) {
+    dcyyerror("Odd number of hex digits.");
+    return string();
+  }
+
+  line_number = line;
+  col_number = col;
+
+  return result;
+}
+
+// eat_c_comment scans past all characters up until the first */
+// encountered.
+static void
+eat_c_comment() {
+  // As above, we'll operate on our own local copies of line_number
+  // and col_number within this function.
+
+  int line = line_number;
+  int col = col_number;
+
+  int c, last_c;
+  
+  last_c = '\0';
+  c = read_char(line, col);
+  while (c != EOF && !(last_c == '*' && c == '/')) {
+    if (last_c == '/' && c == '*') {
+      dcyywarning("This comment contains a nested /* symbol--possibly unclosed?");
+    }
+    last_c = c;
+    c = read_char(line, col);
+  }
+
+  if (c == EOF) {
+    dcyyerror("This comment marker is unclosed.");
+  }
+
+  line_number = line;
+  col_number = col;
+}
+
+
+
+// accept() is called below as each piece is pulled off and
+// accepted by the lexer; it increments the current column number.
+inline void accept() {
+  col_number += dcyyleng;
+}
+
+#line 984 "lex.yy.c"
+
+#define INITIAL 0
+
+#ifndef YY_NO_UNISTD_H
+/* Special case for "unistd.h", since it is non-ANSI. We include it way
+ * down here because we want the user's section 1 to have been scanned first.
+ * The user has a chance to override it with an option.
+ */
+#endif
+
+#ifndef YY_EXTRA_TYPE
+#define YY_EXTRA_TYPE void *
+#endif
+
+static int yy_init_globals (void );
+
+/* Accessor methods to globals.
+   These are made visible to non-reentrant scanners for convenience. */
+
+int dcyylex_destroy (void );
+
+int dcyyget_debug (void );
+
+void dcyyset_debug (int debug_flag  );
+
+YY_EXTRA_TYPE dcyyget_extra (void );
+
+void dcyyset_extra (YY_EXTRA_TYPE user_defined  );
+
+FILE *dcyyget_in (void );
+
+void dcyyset_in  (FILE * in_str  );
+
+FILE *dcyyget_out (void );
+
+void dcyyset_out  (FILE * out_str  );
+
+int dcyyget_leng (void );
+
+char *dcyyget_text (void );
+
+int dcyyget_lineno (void );
+
+void dcyyset_lineno (int line_number  );
+
+/* Macros after this point can all be overridden by user definitions in
+ * section 1.
+ */
+
+#ifndef YY_SKIP_YYWRAP
+#ifdef __cplusplus
+extern "C" int dcyywrap (void );
+#else
+extern int dcyywrap (void );
+#endif
+#endif
+
+    static void yyunput (int c,char *buf_ptr  );
+    
+#ifndef yytext_ptr
+static void yy_flex_strncpy (char *,yyconst char *,int );
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen (yyconst char * );
+#endif
+
+#ifndef YY_NO_INPUT
+
+#ifdef __cplusplus
+static int yyinput (void );
+#else
+static int input (void );
+#endif
+
+#endif
+
+/* Amount of stuff to slurp up with each read. */
+#ifndef YY_READ_BUF_SIZE
+#define YY_READ_BUF_SIZE 8192
+#endif
+
+/* Copy whatever the last rule matched to the standard output. */
+#ifndef ECHO
+/* This used to be an fputs(), but since the string might contain NUL's,
+ * we now use fwrite().
+ */
+#define ECHO fwrite( dcyytext, dcyyleng, 1, dcyyout )
+#endif
+
+/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
+ * is returned in "result".
+ */
+#ifndef YY_INPUT
+#define YY_INPUT(buf,result,max_size) \
+	if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
+		{ \
+		int c = '*'; \
+		int n; \
+		for ( n = 0; n < max_size && \
+			     (c = getc( dcyyin )) != EOF && c != '\n'; ++n ) \
+			buf[n] = (char) c; \
+		if ( c == '\n' ) \
+			buf[n++] = (char) c; \
+		if ( c == EOF && ferror( dcyyin ) ) \
+			YY_FATAL_ERROR( "input in flex scanner failed" ); \
+		result = n; \
+		} \
+	else \
+		{ \
+		errno=0; \
+		while ( (result = fread(buf, 1, max_size, dcyyin))==0 && ferror(dcyyin)) \
+			{ \
+			if( errno != EINTR) \
+				{ \
+				YY_FATAL_ERROR( "input in flex scanner failed" ); \
+				break; \
+				} \
+			errno=0; \
+			clearerr(dcyyin); \
+			} \
+		}\
+\
+
+#endif
+
+/* No semi-colon after return; correct usage is to write "yyterminate();" -
+ * we don't want an extra ';' after the "return" because that will cause
+ * some compilers to complain about unreachable statements.
+ */
+#ifndef yyterminate
+#define yyterminate() return YY_NULL
+#endif
+
+/* Number of entries by which start-condition stack grows. */
+#ifndef YY_START_STACK_INCR
+#define YY_START_STACK_INCR 25
+#endif
+
+/* Report a fatal error. */
+#ifndef YY_FATAL_ERROR
+#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
+#endif
+
+/* end tables serialization structures and prototypes */
+
+/* Default declaration of generated scanner - a define so the user can
+ * easily add parameters.
+ */
+#ifndef YY_DECL
+#define YY_DECL_IS_OURS 1
+
+extern int dcyylex (void);
+
+#define YY_DECL int dcyylex (void)
+#endif /* !YY_DECL */
+
+/* Code executed at the beginning of each rule, after dcyytext and dcyyleng
+ * have been set up.
+ */
+#ifndef YY_USER_ACTION
+#define YY_USER_ACTION
+#endif
+
+/* Code executed at the end of each rule. */
+#ifndef YY_BREAK
+#define YY_BREAK break;
+#endif
+
+#define YY_RULE_SETUP \
+	YY_USER_ACTION
+
+/** The main scanner function which does all the work.
+ */
+YY_DECL
+{
+	register yy_state_type yy_current_state;
+	register char *yy_cp, *yy_bp;
+	register int yy_act;
+    
+#line 415 "dcLexer.lxx"
+
+
+
+  if (initial_token != 0) {
+    int t = initial_token;
+    initial_token = 0;
+    return t;
+  }
+
+
+#line 1177 "lex.yy.c"
+
+	if ( !(yy_init) )
+		{
+		(yy_init) = 1;
+
+#ifdef YY_USER_INIT
+		YY_USER_INIT;
+#endif
+
+		if ( ! (yy_start) )
+			(yy_start) = 1;	/* first start state */
+
+		if ( ! dcyyin )
+			dcyyin = stdin;
+
+		if ( ! dcyyout )
+			dcyyout = stdout;
+
+		if ( ! YY_CURRENT_BUFFER ) {
+			dcyyensure_buffer_stack ();
+			YY_CURRENT_BUFFER_LVALUE =
+				dcyy_create_buffer(dcyyin,YY_BUF_SIZE );
+		}
+
+		dcyy_load_buffer_state( );
+		}
+
+	while ( 1 )		/* loops until end-of-file is reached */
+		{
+		yy_cp = (yy_c_buf_p);
+
+		/* Support of dcyytext. */
+		*yy_cp = (yy_hold_char);
+
+		/* yy_bp points to the position in yy_ch_buf of the start of
+		 * the current run.
+		 */
+		yy_bp = yy_cp;
+
+		yy_current_state = (yy_start);
+yy_match:
+		do
+			{
+			register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
+			if ( yy_accept[yy_current_state] )
+				{
+				(yy_last_accepting_state) = yy_current_state;
+				(yy_last_accepting_cpos) = yy_cp;
+				}
+			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+				{
+				yy_current_state = (int) yy_def[yy_current_state];
+				if ( yy_current_state >= 165 )
+					yy_c = yy_meta[(unsigned int) yy_c];
+				}
+			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+			++yy_cp;
+			}
+		while ( yy_base[yy_current_state] != 210 );
+
+yy_find_action:
+		yy_act = yy_accept[yy_current_state];
+		if ( yy_act == 0 )
+			{ /* have to back up */
+			yy_cp = (yy_last_accepting_cpos);
+			yy_current_state = (yy_last_accepting_state);
+			yy_act = yy_accept[yy_current_state];
+			}
+
+		YY_DO_BEFORE_ACTION;
+
+do_action:	/* This label is used only to access EOF actions. */
+
+		switch ( yy_act )
+	{ /* beginning of action switch */
+			case 0: /* must back up */
+			/* undo the effects of YY_DO_BEFORE_ACTION */
+			*yy_cp = (yy_hold_char);
+			yy_cp = (yy_last_accepting_cpos);
+			yy_current_state = (yy_last_accepting_state);
+			goto yy_find_action;
+
+case 1:
+/* rule 1 can match eol */
+YY_RULE_SETUP
+#line 425 "dcLexer.lxx"
+{
+  // New line.  Save a copy of the line so we can print it out for the
+  // benefit of the user in case we get an error.
+
+  strncpy(current_line, dcyytext+1, max_error_width);
+  current_line[max_error_width] = '\0';
+  line_number++;
+  col_number=0;
+
+  // Return the whole line to the lexer, except the newline character,
+  // which we eat.
+  yyless(1);
+}
+	YY_BREAK
+case 2:
+YY_RULE_SETUP
+#line 439 "dcLexer.lxx"
+{ 
+  // Eat whitespace.
+  accept();
+}
+	YY_BREAK
+case 3:
+YY_RULE_SETUP
+#line 444 "dcLexer.lxx"
+{ 
+  // Eat C++-style comments.
+  accept();
+}
+	YY_BREAK
+case 4:
+YY_RULE_SETUP
+#line 449 "dcLexer.lxx"
+{
+  // Eat C-style comments.
+  accept();
+  eat_c_comment(); 
+}
+	YY_BREAK
+case 5:
+YY_RULE_SETUP
+#line 456 "dcLexer.lxx"
+{
+  accept();
+  return KW_DCLASS;
+}
+	YY_BREAK
+case 6:
+YY_RULE_SETUP
+#line 461 "dcLexer.lxx"
+{
+  accept();
+  return KW_STRUCT;
+}
+	YY_BREAK
+case 7:
+YY_RULE_SETUP
+#line 466 "dcLexer.lxx"
+{
+  accept();
+  return KW_FROM;
+}
+	YY_BREAK
+case 8:
+YY_RULE_SETUP
+#line 471 "dcLexer.lxx"
+{
+  accept();
+  return KW_IMPORT;
+}
+	YY_BREAK
+case 9:
+YY_RULE_SETUP
+#line 476 "dcLexer.lxx"
+{
+  accept();
+  return KW_KEYWORD;
+}
+	YY_BREAK
+case 10:
+YY_RULE_SETUP
+#line 481 "dcLexer.lxx"
+{
+  accept();
+  return KW_TYPEDEF;
+}
+	YY_BREAK
+case 11:
+YY_RULE_SETUP
+#line 486 "dcLexer.lxx"
+{
+  accept();
+  return KW_SWITCH;
+}
+	YY_BREAK
+case 12:
+YY_RULE_SETUP
+#line 491 "dcLexer.lxx"
+{
+  accept();
+  return KW_CASE;
+}
+	YY_BREAK
+case 13:
+YY_RULE_SETUP
+#line 496 "dcLexer.lxx"
+{
+  accept();
+  return KW_DEFAULT;
+}
+	YY_BREAK
+case 14:
+YY_RULE_SETUP
+#line 501 "dcLexer.lxx"
+{
+  accept();
+  return KW_BREAK;
+}
+	YY_BREAK
+case 15:
+YY_RULE_SETUP
+#line 506 "dcLexer.lxx"
+{
+  accept();
+  return KW_INT8;
+}
+	YY_BREAK
+case 16:
+YY_RULE_SETUP
+#line 511 "dcLexer.lxx"
+{
+  accept();
+  return KW_INT16;
+}
+	YY_BREAK
+case 17:
+YY_RULE_SETUP
+#line 516 "dcLexer.lxx"
+{
+  accept();
+  return KW_INT32;
+}
+	YY_BREAK
+case 18:
+YY_RULE_SETUP
+#line 521 "dcLexer.lxx"
+{
+  accept();
+  return KW_INT64;
+}
+	YY_BREAK
+case 19:
+YY_RULE_SETUP
+#line 526 "dcLexer.lxx"
+{
+  accept();
+  return KW_UINT8;
+}
+	YY_BREAK
+case 20:
+YY_RULE_SETUP
+#line 531 "dcLexer.lxx"
+{
+  accept();
+  return KW_UINT16;
+}
+	YY_BREAK
+case 21:
+YY_RULE_SETUP
+#line 536 "dcLexer.lxx"
+{
+  accept();
+  return KW_UINT32;
+}
+	YY_BREAK
+case 22:
+YY_RULE_SETUP
+#line 541 "dcLexer.lxx"
+{
+  accept();
+  return KW_UINT64;
+}
+	YY_BREAK
+case 23:
+YY_RULE_SETUP
+#line 546 "dcLexer.lxx"
+{
+  accept();
+  return KW_FLOAT64;
+}
+	YY_BREAK
+case 24:
+YY_RULE_SETUP
+#line 551 "dcLexer.lxx"
+{
+  accept();
+  return KW_STRING;
+}
+	YY_BREAK
+case 25:
+YY_RULE_SETUP
+#line 556 "dcLexer.lxx"
+{
+  accept();
+  return KW_BLOB;
+}
+	YY_BREAK
+case 26:
+YY_RULE_SETUP
+#line 561 "dcLexer.lxx"
+{
+  accept();
+  return KW_BLOB32;
+}
+	YY_BREAK
+case 27:
+YY_RULE_SETUP
+#line 566 "dcLexer.lxx"
+{
+  accept();
+  return KW_INT8ARRAY;
+}
+	YY_BREAK
+case 28:
+YY_RULE_SETUP
+#line 571 "dcLexer.lxx"
+{
+  accept();
+  return KW_INT16ARRAY;
+}
+	YY_BREAK
+case 29:
+YY_RULE_SETUP
+#line 576 "dcLexer.lxx"
+{
+  accept();
+  return KW_INT32ARRAY;
+}
+	YY_BREAK
+case 30:
+YY_RULE_SETUP
+#line 581 "dcLexer.lxx"
+{
+  accept();
+  return KW_UINT8ARRAY;
+}
+	YY_BREAK
+case 31:
+YY_RULE_SETUP
+#line 586 "dcLexer.lxx"
+{
+  accept();
+  return KW_UINT16ARRAY;
+}
+	YY_BREAK
+case 32:
+YY_RULE_SETUP
+#line 591 "dcLexer.lxx"
+{
+  accept();
+  return KW_UINT32ARRAY;
+}
+	YY_BREAK
+case 33:
+YY_RULE_SETUP
+#line 596 "dcLexer.lxx"
+{
+  accept();
+  return KW_UINT32UINT8ARRAY;
+}
+	YY_BREAK
+case 34:
+YY_RULE_SETUP
+#line 601 "dcLexer.lxx"
+{
+  accept();
+  return KW_CHAR;
+}
+	YY_BREAK
+case 35:
+YY_RULE_SETUP
+#line 606 "dcLexer.lxx"
+{ 
+  // An unsigned integer number.
+  accept();
+
+  // atoll isn't fully portable, so we'll decode the integer by hand.
+  dcyylval.str = dcyytext;
+  dcyylval.u.uint64 = 0;
+  const char *p = dcyytext;
+  while (*p != '\0') {
+    PN_uint64 next_value = dcyylval.u.uint64 * 10;
+    if (next_value < dcyylval.u.uint64) {
+      dcyyerror("Number out of range.");
+      dcyylval.u.uint64 = 1;
+      return UNSIGNED_INTEGER;
+    }
+
+    dcyylval.u.uint64 = next_value + (*p - '0');
+    ++p;
+  }
+  
+  return UNSIGNED_INTEGER;
+}
+	YY_BREAK
+case 36:
+YY_RULE_SETUP
+#line 629 "dcLexer.lxx"
+{ 
+  // A signed integer number.
+  accept();
+
+  // atoll isn't fully portable, so we'll decode the integer by hand.
+  dcyylval.str = dcyytext;
+
+  bool neg = false;
+  const char *p = dcyytext;
+  if (*p == '-') {
+    neg = true;
+    ++p;
+  } else if (*p == '+') {
+    ++p;
+  }
+
+  PN_uint64 value = 0;
+  while (*p != '\0') {
+    PN_uint64 next_value = value * 10;
+    if (next_value < value) {
+      dcyyerror("Number out of range.");
+      dcyylval.u.int64 = 1;
+      return SIGNED_INTEGER;
+    }
+
+    value = next_value + (*p - '0');
+    ++p;
+  }
+
+  if (neg) {
+    dcyylval.u.int64 = -(PN_int64)value;
+    if (dcyylval.u.int64 > 0) {
+      dcyyerror("Number out of range.");
+      dcyylval.u.int64 = 1;
+    }
+  } else {
+    dcyylval.u.int64 = (PN_int64)value;
+    if (dcyylval.u.int64 < 0) {
+      dcyyerror("Number out of range.");
+      dcyylval.u.int64 = 1;
+    }
+  }    
+  
+  return SIGNED_INTEGER;
+}
+	YY_BREAK
+case 37:
+YY_RULE_SETUP
+#line 675 "dcLexer.lxx"
+{
+  // A hexadecimal integer number.
+  accept(); 
+
+  // As above, we'll decode the hex string by hand.
+  dcyylval.str = dcyytext;
+  dcyylval.u.uint64 = 0;
+  const char *p = dcyytext + 2;
+  while (*p != '\0') {
+    PN_uint64 next_value = dcyylval.u.uint64 * 16;
+    if (next_value < dcyylval.u.uint64) {
+      dcyyerror("Number out of range.");
+      dcyylval.u.uint64 = 1;
+      return UNSIGNED_INTEGER;
+    }
+
+    if (isalpha(*p)) {
+      dcyylval.u.uint64 = next_value + (tolower(*p) - 'a' + 10);
+    } else {
+      dcyylval.u.uint64 = next_value + (*p - '0');
+    }
+    ++p;
+  }
+
+  return UNSIGNED_INTEGER; 
+}
+	YY_BREAK
+case 38:
+YY_RULE_SETUP
+#line 702 "dcLexer.lxx"
+{ 
+  // A floating-point number.
+  accept(); 
+  dcyylval.u.real = patof(dcyytext); 
+  dcyylval.str = dcyytext;
+  return REAL; 
+}
+	YY_BREAK
+case 39:
+YY_RULE_SETUP
+#line 710 "dcLexer.lxx"
+{
+  // Quoted string.
+  accept();
+  dcyylval.str = scan_quoted_string('"');
+  return STRING;
+}
+	YY_BREAK
+case 40:
+YY_RULE_SETUP
+#line 717 "dcLexer.lxx"
+{
+  // Single-quoted string.
+  accept();
+  dcyylval.str = scan_quoted_string('\'');
+  return STRING;
+}
+	YY_BREAK
+case 41:
+YY_RULE_SETUP
+#line 724 "dcLexer.lxx"
+{
+  // Long hex string.
+  accept();
+  dcyylval.str = scan_hex_string();
+  return HEX_STRING;
+}
+	YY_BREAK
+case 42:
+YY_RULE_SETUP
+#line 731 "dcLexer.lxx"
+{ 
+  // Identifier or keyword.
+  accept();
+  dcyylval.str = dcyytext;
+
+  if (dc_file != (DCFile *)NULL) {
+    const DCKeyword *keyword = dc_file->get_keyword_by_name(dcyylval.str);
+    if (keyword != (DCKeyword *)NULL) {
+      dcyylval.u.keyword = keyword;
+      return KEYWORD;
+    }
+  }
+  return IDENTIFIER;
+}
+	YY_BREAK
+case 43:
+YY_RULE_SETUP
+#line 747 "dcLexer.lxx"
+{
+  // Send any other printable character as itself.
+  accept(); 
+  return dcyytext[0];
+}
+	YY_BREAK
+case 44:
+YY_RULE_SETUP
+#line 753 "dcLexer.lxx"
+ECHO;
+	YY_BREAK
+#line 1721 "lex.yy.c"
+case YY_STATE_EOF(INITIAL):
+	yyterminate();
+
+	case YY_END_OF_BUFFER:
+		{
+		/* Amount of text matched not including the EOB char. */
+		int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
+
+		/* Undo the effects of YY_DO_BEFORE_ACTION. */
+		*yy_cp = (yy_hold_char);
+		YY_RESTORE_YY_MORE_OFFSET
+
+		if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
+			{
+			/* We're scanning a new file or input source.  It's
+			 * possible that this happened because the user
+			 * just pointed dcyyin at a new source and called
+			 * dcyylex().  If so, then we have to assure
+			 * consistency between YY_CURRENT_BUFFER and our
+			 * globals.  Here is the right place to do so, because
+			 * this is the first action (other than possibly a
+			 * back-up) that will match for the new input source.
+			 */
+			(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
+			YY_CURRENT_BUFFER_LVALUE->yy_input_file = dcyyin;
+			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
+			}
+
+		/* Note that here we test for yy_c_buf_p "<=" to the position
+		 * of the first EOB in the buffer, since yy_c_buf_p will
+		 * already have been incremented past the NUL character
+		 * (since all states make transitions on EOB to the
+		 * end-of-buffer state).  Contrast this with the test
+		 * in input().
+		 */
+		if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
+			{ /* This was really a NUL. */
+			yy_state_type yy_next_state;
+
+			(yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
+
+			yy_current_state = yy_get_previous_state(  );
+
+			/* Okay, we're now positioned to make the NUL
+			 * transition.  We couldn't have
+			 * yy_get_previous_state() go ahead and do it
+			 * for us because it doesn't know how to deal
+			 * with the possibility of jamming (and we don't
+			 * want to build jamming into it because then it
+			 * will run more slowly).
+			 */
+
+			yy_next_state = yy_try_NUL_trans( yy_current_state );
+
+			yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+
+			if ( yy_next_state )
+				{
+				/* Consume the NUL. */
+				yy_cp = ++(yy_c_buf_p);
+				yy_current_state = yy_next_state;
+				goto yy_match;
+				}
+
+			else
+				{
+				yy_cp = (yy_c_buf_p);
+				goto yy_find_action;
+				}
+			}
+
+		else switch ( yy_get_next_buffer(  ) )
+			{
+			case EOB_ACT_END_OF_FILE:
+				{
+				(yy_did_buffer_switch_on_eof) = 0;
+
+				if ( dcyywrap( ) )
+					{
+					/* Note: because we've taken care in
+					 * yy_get_next_buffer() to have set up
+					 * dcyytext, we can now set up
+					 * yy_c_buf_p so that if some total
+					 * hoser (like flex itself) wants to
+					 * call the scanner after we return the
+					 * YY_NULL, it'll still work - another
+					 * YY_NULL will get returned.
+					 */
+					(yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
+
+					yy_act = YY_STATE_EOF(YY_START);
+					goto do_action;
+					}
+
+				else
+					{
+					if ( ! (yy_did_buffer_switch_on_eof) )
+						YY_NEW_FILE;
+					}
+				break;
+				}
+
+			case EOB_ACT_CONTINUE_SCAN:
+				(yy_c_buf_p) =
+					(yytext_ptr) + yy_amount_of_matched_text;
+
+				yy_current_state = yy_get_previous_state(  );
+
+				yy_cp = (yy_c_buf_p);
+				yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+				goto yy_match;
+
+			case EOB_ACT_LAST_MATCH:
+				(yy_c_buf_p) =
+				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
+
+				yy_current_state = yy_get_previous_state(  );
+
+				yy_cp = (yy_c_buf_p);
+				yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+				goto yy_find_action;
+			}
+		break;
+		}
+
+	default:
+		YY_FATAL_ERROR(
+			"fatal flex scanner internal error--no action found" );
+	} /* end of action switch */
+		} /* end of scanning one token */
+} /* end of dcyylex */
+
+/* yy_get_next_buffer - try to read in a new buffer
+ *
+ * Returns a code representing an action:
+ *	EOB_ACT_LAST_MATCH -
+ *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position
+ *	EOB_ACT_END_OF_FILE - end of file
+ */
+static int yy_get_next_buffer (void)
+{
+    	register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
+	register char *source = (yytext_ptr);
+	register int number_to_move, i;
+	int ret_val;
+
+	if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
+		YY_FATAL_ERROR(
+		"fatal flex scanner internal error--end of buffer missed" );
+
+	if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
+		{ /* Don't try to fill the buffer, so this is an EOF. */
+		if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
+			{
+			/* We matched a single character, the EOB, so
+			 * treat this as a final EOF.
+			 */
+			return EOB_ACT_END_OF_FILE;
+			}
+
+		else
+			{
+			/* We matched some text prior to the EOB, first
+			 * process it.
+			 */
+			return EOB_ACT_LAST_MATCH;
+			}
+		}
+
+	/* Try to read more data. */
+
+	/* First move last chars to start of buffer. */
+	number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
+
+	for ( i = 0; i < number_to_move; ++i )
+		*(dest++) = *(source++);
+
+	if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
+		/* don't do the read, it's not guaranteed to return an EOF,
+		 * just force an EOF
+		 */
+		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
+
+	else
+		{
+			int num_to_read =
+			YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
+
+		while ( num_to_read <= 0 )
+			{ /* Not enough room in the buffer - grow it. */
+
+			/* just a shorter name for the current buffer */
+			YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
+
+			int yy_c_buf_p_offset =
+				(int) ((yy_c_buf_p) - b->yy_ch_buf);
+
+			if ( b->yy_is_our_buffer )
+				{
+				int new_size = b->yy_buf_size * 2;
+
+				if ( new_size <= 0 )
+					b->yy_buf_size += b->yy_buf_size / 8;
+				else
+					b->yy_buf_size *= 2;
+
+				b->yy_ch_buf = (char *)
+					/* Include room in for 2 EOB chars. */
+					dcyyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
+				}
+			else
+				/* Can't grow it, we don't own it. */
+				b->yy_ch_buf = 0;
+
+			if ( ! b->yy_ch_buf )
+				YY_FATAL_ERROR(
+				"fatal error - scanner input buffer overflow" );
+
+			(yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
+
+			num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
+						number_to_move - 1;
+
+			}
+
+		if ( num_to_read > YY_READ_BUF_SIZE )
+			num_to_read = YY_READ_BUF_SIZE;
+
+		/* Read in more data. */
+		YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
+			(yy_n_chars), (size_t) num_to_read );
+
+		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+		}
+
+	if ( (yy_n_chars) == 0 )
+		{
+		if ( number_to_move == YY_MORE_ADJ )
+			{
+			ret_val = EOB_ACT_END_OF_FILE;
+			dcyyrestart(dcyyin  );
+			}
+
+		else
+			{
+			ret_val = EOB_ACT_LAST_MATCH;
+			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
+				YY_BUFFER_EOF_PENDING;
+			}
+		}
+
+	else
+		ret_val = EOB_ACT_CONTINUE_SCAN;
+
+	if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
+		/* Extend the array by 50%, plus the number we really need. */
+		yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
+		YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) dcyyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size  );
+		if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
+			YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
+	}
+
+	(yy_n_chars) += number_to_move;
+	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
+	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
+
+	(yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
+
+	return ret_val;
+}
+
+/* yy_get_previous_state - get the state just before the EOB char was reached */
+
+    static yy_state_type yy_get_previous_state (void)
+{
+	register yy_state_type yy_current_state;
+	register char *yy_cp;
+    
+	yy_current_state = (yy_start);
+
+	for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
+		{
+		register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
+		if ( yy_accept[yy_current_state] )
+			{
+			(yy_last_accepting_state) = yy_current_state;
+			(yy_last_accepting_cpos) = yy_cp;
+			}
+		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+			{
+			yy_current_state = (int) yy_def[yy_current_state];
+			if ( yy_current_state >= 165 )
+				yy_c = yy_meta[(unsigned int) yy_c];
+			}
+		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+		}
+
+	return yy_current_state;
+}
+
+/* yy_try_NUL_trans - try to make a transition on the NUL character
+ *
+ * synopsis
+ *	next_state = yy_try_NUL_trans( current_state );
+ */
+    static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
+{
+	register int yy_is_jam;
+    	register char *yy_cp = (yy_c_buf_p);
+
+	register YY_CHAR yy_c = 1;
+	if ( yy_accept[yy_current_state] )
+		{
+		(yy_last_accepting_state) = yy_current_state;
+		(yy_last_accepting_cpos) = yy_cp;
+		}
+	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+		{
+		yy_current_state = (int) yy_def[yy_current_state];
+		if ( yy_current_state >= 165 )
+			yy_c = yy_meta[(unsigned int) yy_c];
+		}
+	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+	yy_is_jam = (yy_current_state == 164);
+
+	return yy_is_jam ? 0 : yy_current_state;
+}
+
+    static void yyunput (int c, register char * yy_bp )
+{
+	register char *yy_cp;
+    
+    yy_cp = (yy_c_buf_p);
+
+	/* undo effects of setting up dcyytext */
+	*yy_cp = (yy_hold_char);
+
+	if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
+		{ /* need to shift things up to make room */
+		/* +2 for EOB chars. */
+		register int number_to_move = (yy_n_chars) + 2;
+		register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
+					YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
+		register char *source =
+				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
+
+		while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
+			*--dest = *--source;
+
+		yy_cp += (int) (dest - source);
+		yy_bp += (int) (dest - source);
+		YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
+			(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
+
+		if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
+			YY_FATAL_ERROR( "flex scanner push-back overflow" );
+		}
+
+	*--yy_cp = (char) c;
+
+	(yytext_ptr) = yy_bp;
+	(yy_hold_char) = *yy_cp;
+	(yy_c_buf_p) = yy_cp;
+}
+
+#ifndef YY_NO_INPUT
+#ifdef __cplusplus
+    static int yyinput (void)
+#else
+    static int input  (void)
+#endif
+
+{
+	int c;
+    
+	*(yy_c_buf_p) = (yy_hold_char);
+
+	if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
+		{
+		/* yy_c_buf_p now points to the character we want to return.
+		 * If this occurs *before* the EOB characters, then it's a
+		 * valid NUL; if not, then we've hit the end of the buffer.
+		 */
+		if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
+			/* This was really a NUL. */
+			*(yy_c_buf_p) = '\0';
+
+		else
+			{ /* need more input */
+			int offset = (yy_c_buf_p) - (yytext_ptr);
+			++(yy_c_buf_p);
+
+			switch ( yy_get_next_buffer(  ) )
+				{
+				case EOB_ACT_LAST_MATCH:
+					/* This happens because yy_g_n_b()
+					 * sees that we've accumulated a
+					 * token and flags that we need to
+					 * try matching the token before
+					 * proceeding.  But for input(),
+					 * there's no matching to consider.
+					 * So convert the EOB_ACT_LAST_MATCH
+					 * to EOB_ACT_END_OF_FILE.
+					 */
+
+					/* Reset buffer status. */
+					dcyyrestart(dcyyin );
+
+					/*FALLTHROUGH*/
+
+				case EOB_ACT_END_OF_FILE:
+					{
+					if ( dcyywrap( ) )
+						return EOF;
+
+					if ( ! (yy_did_buffer_switch_on_eof) )
+						YY_NEW_FILE;
+#ifdef __cplusplus
+					return yyinput();
+#else
+					return input();
+#endif
+					}
+
+				case EOB_ACT_CONTINUE_SCAN:
+					(yy_c_buf_p) = (yytext_ptr) + offset;
+					break;
+				}
+			}
+		}
+
+	c = *(unsigned char *) (yy_c_buf_p);	/* cast for 8-bit char's */
+	*(yy_c_buf_p) = '\0';	/* preserve dcyytext */
+	(yy_hold_char) = *++(yy_c_buf_p);
+
+	return c;
+}
+#endif	/* ifndef YY_NO_INPUT */
+
+/** Immediately switch to a different input stream.
+ * @param input_file A readable stream.
+ * 
+ * @note This function does not reset the start condition to @c INITIAL .
+ */
+    void dcyyrestart  (FILE * input_file )
+{
+    
+	if ( ! YY_CURRENT_BUFFER ){
+        dcyyensure_buffer_stack ();
+		YY_CURRENT_BUFFER_LVALUE =
+            dcyy_create_buffer(dcyyin,YY_BUF_SIZE );
+	}
+
+	dcyy_init_buffer(YY_CURRENT_BUFFER,input_file );
+	dcyy_load_buffer_state( );
+}
+
+/** Switch to a different input buffer.
+ * @param new_buffer The new input buffer.
+ * 
+ */
+    void dcyy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
+{
+    
+	/* TODO. We should be able to replace this entire function body
+	 * with
+	 *		dcyypop_buffer_state();
+	 *		dcyypush_buffer_state(new_buffer);
+     */
+	dcyyensure_buffer_stack ();
+	if ( YY_CURRENT_BUFFER == new_buffer )
+		return;
+
+	if ( YY_CURRENT_BUFFER )
+		{
+		/* Flush out information for old buffer. */
+		*(yy_c_buf_p) = (yy_hold_char);
+		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
+		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+		}
+
+	YY_CURRENT_BUFFER_LVALUE = new_buffer;
+	dcyy_load_buffer_state( );
+
+	/* We don't actually know whether we did this switch during
+	 * EOF (dcyywrap()) processing, but the only time this flag
+	 * is looked at is after dcyywrap() is called, so it's safe
+	 * to go ahead and always set it.
+	 */
+	(yy_did_buffer_switch_on_eof) = 1;
+}
+
+static void dcyy_load_buffer_state  (void)
+{
+    	(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
+	(yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
+	dcyyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
+	(yy_hold_char) = *(yy_c_buf_p);
+}
+
+/** Allocate and initialize an input buffer state.
+ * @param file A readable stream.
+ * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
+ * 
+ * @return the allocated buffer state.
+ */
+    YY_BUFFER_STATE dcyy_create_buffer  (FILE * file, int  size )
+{
+	YY_BUFFER_STATE b;
+    
+	b = (YY_BUFFER_STATE) dcyyalloc(sizeof( struct yy_buffer_state )  );
+	if ( ! b )
+		YY_FATAL_ERROR( "out of dynamic memory in dcyy_create_buffer()" );
+
+	b->yy_buf_size = size;
+
+	/* yy_ch_buf has to be 2 characters longer than the size given because
+	 * we need to put in 2 end-of-buffer characters.
+	 */
+	b->yy_ch_buf = (char *) dcyyalloc(b->yy_buf_size + 2  );
+	if ( ! b->yy_ch_buf )
+		YY_FATAL_ERROR( "out of dynamic memory in dcyy_create_buffer()" );
+
+	b->yy_is_our_buffer = 1;
+
+	dcyy_init_buffer(b,file );
+
+	return b;
+}
+
+/** Destroy the buffer.
+ * @param b a buffer created with dcyy_create_buffer()
+ * 
+ */
+    void dcyy_delete_buffer (YY_BUFFER_STATE  b )
+{
+    
+	if ( ! b )
+		return;
+
+	if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
+		YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
+
+	if ( b->yy_is_our_buffer )
+		dcyyfree((void *) b->yy_ch_buf  );
+
+	dcyyfree((void *) b  );
+}
+
+#ifndef __cplusplus
+extern int isatty (int );
+#endif /* __cplusplus */
+    
+/* Initializes or reinitializes a buffer.
+ * This function is sometimes called more than once on the same buffer,
+ * such as during a dcyyrestart() or at EOF.
+ */
+    static void dcyy_init_buffer  (YY_BUFFER_STATE  b, FILE * file )
+
+{
+	int oerrno = errno;
+    
+	dcyy_flush_buffer(b );
+
+	b->yy_input_file = file;
+	b->yy_fill_buffer = 1;
+
+    /* If b is the current buffer, then dcyy_init_buffer was _probably_
+     * called from dcyyrestart() or through yy_get_next_buffer.
+     * In that case, we don't want to reset the lineno or column.
+     */
+    if (b != YY_CURRENT_BUFFER){
+        b->yy_bs_lineno = 1;
+        b->yy_bs_column = 0;
+    }
+
+        b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
+    
+	errno = oerrno;
+}
+
+/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
+ * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
+ * 
+ */
+    void dcyy_flush_buffer (YY_BUFFER_STATE  b )
+{
+    	if ( ! b )
+		return;
+
+	b->yy_n_chars = 0;
+
+	/* We always need two end-of-buffer characters.  The first causes
+	 * a transition to the end-of-buffer state.  The second causes
+	 * a jam in that state.
+	 */
+	b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
+	b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
+
+	b->yy_buf_pos = &b->yy_ch_buf[0];
+
+	b->yy_at_bol = 1;
+	b->yy_buffer_status = YY_BUFFER_NEW;
+
+	if ( b == YY_CURRENT_BUFFER )
+		dcyy_load_buffer_state( );
+}
+
+/** Pushes the new state onto the stack. The new state becomes
+ *  the current state. This function will allocate the stack
+ *  if necessary.
+ *  @param new_buffer The new state.
+ *  
+ */
+void dcyypush_buffer_state (YY_BUFFER_STATE new_buffer )
+{
+    	if (new_buffer == NULL)
+		return;
+
+	dcyyensure_buffer_stack();
+
+	/* This block is copied from dcyy_switch_to_buffer. */
+	if ( YY_CURRENT_BUFFER )
+		{
+		/* Flush out information for old buffer. */
+		*(yy_c_buf_p) = (yy_hold_char);
+		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
+		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+		}
+
+	/* Only push if top exists. Otherwise, replace top. */
+	if (YY_CURRENT_BUFFER)
+		(yy_buffer_stack_top)++;
+	YY_CURRENT_BUFFER_LVALUE = new_buffer;
+
+	/* copied from dcyy_switch_to_buffer. */
+	dcyy_load_buffer_state( );
+	(yy_did_buffer_switch_on_eof) = 1;
+}
+
+/** Removes and deletes the top of the stack, if present.
+ *  The next element becomes the new top.
+ *  
+ */
+void dcyypop_buffer_state (void)
+{
+    	if (!YY_CURRENT_BUFFER)
+		return;
+
+	dcyy_delete_buffer(YY_CURRENT_BUFFER );
+	YY_CURRENT_BUFFER_LVALUE = NULL;
+	if ((yy_buffer_stack_top) > 0)
+		--(yy_buffer_stack_top);
+
+	if (YY_CURRENT_BUFFER) {
+		dcyy_load_buffer_state( );
+		(yy_did_buffer_switch_on_eof) = 1;
+	}
+}
+
+/* Allocates the stack if it does not exist.
+ *  Guarantees space for at least one push.
+ */
+static void dcyyensure_buffer_stack (void)
+{
+	int num_to_alloc;
+    
+	if (!(yy_buffer_stack)) {
+
+		/* First allocation is just for 2 elements, since we don't know if this
+		 * scanner will even need a stack. We use 2 instead of 1 to avoid an
+		 * immediate realloc on the next call.
+         */
+		num_to_alloc = 1;
+		(yy_buffer_stack) = (struct yy_buffer_state**)dcyyalloc
+								(num_to_alloc * sizeof(struct yy_buffer_state*)
+								);
+		if ( ! (yy_buffer_stack) )
+			YY_FATAL_ERROR( "out of dynamic memory in dcyyensure_buffer_stack()" );
+								  
+		memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
+				
+		(yy_buffer_stack_max) = num_to_alloc;
+		(yy_buffer_stack_top) = 0;
+		return;
+	}
+
+	if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
+
+		/* Increase the buffer to prepare for a possible push. */
+		int grow_size = 8 /* arbitrary grow size */;
+
+		num_to_alloc = (yy_buffer_stack_max) + grow_size;
+		(yy_buffer_stack) = (struct yy_buffer_state**)dcyyrealloc
+								((yy_buffer_stack),
+								num_to_alloc * sizeof(struct yy_buffer_state*)
+								);
+		if ( ! (yy_buffer_stack) )
+			YY_FATAL_ERROR( "out of dynamic memory in dcyyensure_buffer_stack()" );
+
+		/* zero only the new slots.*/
+		memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
+		(yy_buffer_stack_max) = num_to_alloc;
+	}
+}
+
+/** Setup the input buffer state to scan directly from a user-specified character buffer.
+ * @param base the character buffer
+ * @param size the size in bytes of the character buffer
+ * 
+ * @return the newly allocated buffer state object. 
+ */
+YY_BUFFER_STATE dcyy_scan_buffer  (char * base, yy_size_t  size )
+{
+	YY_BUFFER_STATE b;
+    
+	if ( size < 2 ||
+	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
+	     base[size-1] != YY_END_OF_BUFFER_CHAR )
+		/* They forgot to leave room for the EOB's. */
+		return 0;
+
+	b = (YY_BUFFER_STATE) dcyyalloc(sizeof( struct yy_buffer_state )  );
+	if ( ! b )
+		YY_FATAL_ERROR( "out of dynamic memory in dcyy_scan_buffer()" );
+
+	b->yy_buf_size = size - 2;	/* "- 2" to take care of EOB's */
+	b->yy_buf_pos = b->yy_ch_buf = base;
+	b->yy_is_our_buffer = 0;
+	b->yy_input_file = 0;
+	b->yy_n_chars = b->yy_buf_size;
+	b->yy_is_interactive = 0;
+	b->yy_at_bol = 1;
+	b->yy_fill_buffer = 0;
+	b->yy_buffer_status = YY_BUFFER_NEW;
+
+	dcyy_switch_to_buffer(b  );
+
+	return b;
+}
+
+/** Setup the input buffer state to scan a string. The next call to dcyylex() will
+ * scan from a @e copy of @a str.
+ * @param yystr a NUL-terminated string to scan
+ * 
+ * @return the newly allocated buffer state object.
+ * @note If you want to scan bytes that may contain NUL values, then use
+ *       dcyy_scan_bytes() instead.
+ */
+YY_BUFFER_STATE dcyy_scan_string (yyconst char * yystr )
+{
+    
+	return dcyy_scan_bytes(yystr,strlen(yystr) );
+}
+
+/** Setup the input buffer state to scan the given bytes. The next call to dcyylex() will
+ * scan from a @e copy of @a bytes.
+ * @param bytes the byte buffer to scan
+ * @param len the number of bytes in the buffer pointed to by @a bytes.
+ * 
+ * @return the newly allocated buffer state object.
+ */
+YY_BUFFER_STATE dcyy_scan_bytes  (yyconst char * yybytes, int  _yybytes_len )
+{
+	YY_BUFFER_STATE b;
+	char *buf;
+	yy_size_t n;
+	int i;
+    
+	/* Get memory for full buffer, including space for trailing EOB's. */
+	n = _yybytes_len + 2;
+	buf = (char *) dcyyalloc(n  );
+	if ( ! buf )
+		YY_FATAL_ERROR( "out of dynamic memory in dcyy_scan_bytes()" );
+
+	for ( i = 0; i < _yybytes_len; ++i )
+		buf[i] = yybytes[i];
+
+	buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
+
+	b = dcyy_scan_buffer(buf,n );
+	if ( ! b )
+		YY_FATAL_ERROR( "bad buffer in dcyy_scan_bytes()" );
+
+	/* It's okay to grow etc. this buffer, and we should throw it
+	 * away when we're done.
+	 */
+	b->yy_is_our_buffer = 1;
+
+	return b;
+}
+
+#ifndef YY_EXIT_FAILURE
+#define YY_EXIT_FAILURE 2
+#endif
+
+static void yy_fatal_error (yyconst char* msg )
+{
+    	(void) fprintf( stderr, "%s\n", msg );
+	exit( YY_EXIT_FAILURE );
+}
+
+/* Redefine yyless() so it works in section 3 code. */
+
+#undef yyless
+#define yyless(n) \
+	do \
+		{ \
+		/* Undo effects of setting up dcyytext. */ \
+        int yyless_macro_arg = (n); \
+        YY_LESS_LINENO(yyless_macro_arg);\
+		dcyytext[dcyyleng] = (yy_hold_char); \
+		(yy_c_buf_p) = dcyytext + yyless_macro_arg; \
+		(yy_hold_char) = *(yy_c_buf_p); \
+		*(yy_c_buf_p) = '\0'; \
+		dcyyleng = yyless_macro_arg; \
+		} \
+	while ( 0 )
+
+/* Accessor  methods (get/set functions) to struct members. */
+
+/** Get the current line number.
+ * 
+ */
+int dcyyget_lineno  (void)
+{
+        
+    return dcyylineno;
+}
+
+/** Get the input stream.
+ * 
+ */
+FILE *dcyyget_in  (void)
+{
+        return dcyyin;
+}
+
+/** Get the output stream.
+ * 
+ */
+FILE *dcyyget_out  (void)
+{
+        return dcyyout;
+}
+
+/** Get the length of the current token.
+ * 
+ */
+int dcyyget_leng  (void)
+{
+        return dcyyleng;
+}
+
+/** Get the current token.
+ * 
+ */
+
+char *dcyyget_text  (void)
+{
+        return dcyytext;
+}
+
+/** Set the current line number.
+ * @param line_number
+ * 
+ */
+void dcyyset_lineno (int  line_number )
+{
+    
+    dcyylineno = line_number;
+}
+
+/** Set the input stream. This does not discard the current
+ * input buffer.
+ * @param in_str A readable stream.
+ * 
+ * @see dcyy_switch_to_buffer
+ */
+void dcyyset_in (FILE *  in_str )
+{
+        dcyyin = in_str ;
+}
+
+void dcyyset_out (FILE *  out_str )
+{
+        dcyyout = out_str ;
+}
+
+int dcyyget_debug  (void)
+{
+        return dcyy_flex_debug;
+}
+
+void dcyyset_debug (int  bdebug )
+{
+        dcyy_flex_debug = bdebug ;
+}
+
+static int yy_init_globals (void)
+{
+        /* Initialization is the same as for the non-reentrant scanner.
+     * This function is called from dcyylex_destroy(), so don't allocate here.
+     */
+
+    (yy_buffer_stack) = 0;
+    (yy_buffer_stack_top) = 0;
+    (yy_buffer_stack_max) = 0;
+    (yy_c_buf_p) = (char *) 0;
+    (yy_init) = 0;
+    (yy_start) = 0;
+
+/* Defined in main.c */
+#ifdef YY_STDINIT
+    dcyyin = stdin;
+    dcyyout = stdout;
+#else
+    dcyyin = (FILE *) 0;
+    dcyyout = (FILE *) 0;
+#endif
+
+    /* For future reference: Set errno on error, since we are called by
+     * dcyylex_init()
+     */
+    return 0;
+}
+
+/* dcyylex_destroy is for both reentrant and non-reentrant scanners. */
+int dcyylex_destroy  (void)
+{
+    
+    /* Pop the buffer stack, destroying each element. */
+	while(YY_CURRENT_BUFFER){
+		dcyy_delete_buffer(YY_CURRENT_BUFFER  );
+		YY_CURRENT_BUFFER_LVALUE = NULL;
+		dcyypop_buffer_state();
+	}
+
+	/* Destroy the stack itself. */
+	dcyyfree((yy_buffer_stack) );
+	(yy_buffer_stack) = NULL;
+
+    /* Reset the globals. This is important in a non-reentrant scanner so the next time
+     * dcyylex() is called, initialization will occur. */
+    yy_init_globals( );
+
+    return 0;
+}
+
+/*
+ * Internal utility routines.
+ */
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
+{
+	register int i;
+	for ( i = 0; i < n; ++i )
+		s1[i] = s2[i];
+}
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen (yyconst char * s )
+{
+	register int n;
+	for ( n = 0; s[n]; ++n )
+		;
+
+	return n;
+}
+#endif
+
+void *dcyyalloc (yy_size_t  size )
+{
+	return (void *) malloc( size );
+}
+
+void *dcyyrealloc  (void * ptr, yy_size_t  size )
+{
+	/* The cast to (char *) in the following accommodates both
+	 * implementations that use char* generic pointers, and those
+	 * that use void* generic pointers.  It works with the latter
+	 * because both ANSI C and C++ allow castless assignment from
+	 * any pointer type to void*, and deal with argument conversions
+	 * as though doing an assignment.
+	 */
+	return (void *) realloc( (char *) ptr, size );
+}
+
+void dcyyfree (void * ptr )
+{
+	free( (char *) ptr );	/* see dcyyrealloc() for (char *) cast */
+}
+
+#define YYTABLES_NAME "yytables"
+
+#line 753 "dcLexer.lxx"

+ 6 - 6
direct/src/dcparser/dcLexer.lxx

@@ -35,7 +35,7 @@ static int error_count = 0;
 static int warning_count = 0;
 
 // This is the pointer to the current input stream.
-static istream *inp = NULL;
+static istream *input_p = NULL;
 
 // This is the name of the dc file we're parsing.  We keep it so we
 // can print it out for error messages.
@@ -52,7 +52,7 @@ static int initial_token;
 
 void
 dc_init_lexer(istream &in, const string &filename) {
-  inp = &in;
+  input_p = &in;
   dc_filename = filename;
   line_number = 0;
   col_number = 0;
@@ -129,10 +129,10 @@ dcyywarning(const string &msg) {
 // stdio FILE pointer.  This is flex-specific.
 static void
 input_chars(char *buffer, int &result, int max_size) {
-  nassertv(inp != NULL);
-  if (*inp) {
-    inp->read(buffer, max_size);
-    result = inp->gcount();
+  nassertv(input_p != NULL);
+  if (*input_p) {
+    input_p->read(buffer, max_size);
+    result = input_p->gcount();
     if (result >= 0 && result < max_size) {
       // Truncate at the end of the read.
       buffer[result] = '\0';

File diff suppressed because it is too large
+ 291 - 205
direct/src/dcparser/dcParser.cxx.prebuilt


+ 15 - 16
direct/src/dcparser/dcParser.h.prebuilt

@@ -1,24 +1,22 @@
-/* A Bison parser, made by GNU Bison 2.3.  */
+/* A Bison parser, made by GNU Bison 2.4.2.  */
 
 /* Skeleton interface for Bison's Yacc-like parsers in C
-
-   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-   Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
+   
+      Copyright (C) 1984, 1989-1990, 2000-2006, 2009-2010 Free Software
+   Foundation, Inc.
+   
+   This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+   
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-
+   
    You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street, Fifth Floor,
-   Boston, MA 02110-1301, USA.  */
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 /* As a special exception, you may create a larger work that contains
    part or all of the Bison parser skeleton and distribute that work
@@ -29,10 +27,11 @@
    special exception, which will cause the skeleton and the resulting
    Bison output files to be licensed under the GNU General Public
    License without this special exception.
-
+   
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
+
 /* Tokens.  */
 #ifndef YYTOKENTYPE
 # define YYTOKENTYPE
@@ -127,11 +126,11 @@
 
 
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef int YYSTYPE;
+
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
-# define YYSTYPE_IS_TRIVIAL 1
 #endif
 
 extern YYSTYPE dcyylval;
 
+

+ 3338 - 3331
panda/src/egg/lexer.cxx.prebuilt

@@ -1,3331 +1,3338 @@
-#line 2 "lex.yy.c"
-
-#line 4 "lex.yy.c"
-
-#define  YY_INT_ALIGNED short int
-
-/* A lexical scanner generated by flex */
-
-#define yy_create_buffer eggyy_create_buffer
-#define yy_delete_buffer eggyy_delete_buffer
-#define yy_flex_debug eggyy_flex_debug
-#define yy_init_buffer eggyy_init_buffer
-#define yy_flush_buffer eggyy_flush_buffer
-#define yy_load_buffer_state eggyy_load_buffer_state
-#define yy_switch_to_buffer eggyy_switch_to_buffer
-#define yyin eggyyin
-#define yyleng eggyyleng
-#define yylex eggyylex
-#define yylineno eggyylineno
-#define yyout eggyyout
-#define yyrestart eggyyrestart
-#define yytext eggyytext
-#define yywrap eggyywrap
-#define yyalloc eggyyalloc
-#define yyrealloc eggyyrealloc
-#define yyfree eggyyfree
-
-#define FLEX_SCANNER
-#define YY_FLEX_MAJOR_VERSION 2
-#define YY_FLEX_MINOR_VERSION 5
-#define YY_FLEX_SUBMINOR_VERSION 35
-#if YY_FLEX_SUBMINOR_VERSION > 0
-#define FLEX_BETA
-#endif
-
-/* First, we deal with  platform-specific or compiler-specific issues. */
-
-/* begin standard C headers. */
-#include <stdio.h>
-#include <string.h>
-#include <errno.h>
-#include <stdlib.h>
-
-/* end standard C headers. */
-
-/* flex integer type definitions */
-
-#ifndef FLEXINT_H
-#define FLEXINT_H
-
-/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
-
-#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
-
-/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
- * if you want the limit (max/min) macros for int types. 
- */
-#ifndef __STDC_LIMIT_MACROS
-#define __STDC_LIMIT_MACROS 1
-#endif
-
-#include <inttypes.h>
-typedef int8_t flex_int8_t;
-typedef uint8_t flex_uint8_t;
-typedef int16_t flex_int16_t;
-typedef uint16_t flex_uint16_t;
-typedef int32_t flex_int32_t;
-typedef uint32_t flex_uint32_t;
-#else
-typedef signed char flex_int8_t;
-typedef short int flex_int16_t;
-typedef int flex_int32_t;
-typedef unsigned char flex_uint8_t; 
-typedef unsigned short int flex_uint16_t;
-typedef unsigned int flex_uint32_t;
-#endif /* ! C99 */
-
-/* Limits of integral types. */
-#ifndef INT8_MIN
-#define INT8_MIN               (-128)
-#endif
-#ifndef INT16_MIN
-#define INT16_MIN              (-32767-1)
-#endif
-#ifndef INT32_MIN
-#define INT32_MIN              (-2147483647-1)
-#endif
-#ifndef INT8_MAX
-#define INT8_MAX               (127)
-#endif
-#ifndef INT16_MAX
-#define INT16_MAX              (32767)
-#endif
-#ifndef INT32_MAX
-#define INT32_MAX              (2147483647)
-#endif
-#ifndef UINT8_MAX
-#define UINT8_MAX              (255U)
-#endif
-#ifndef UINT16_MAX
-#define UINT16_MAX             (65535U)
-#endif
-#ifndef UINT32_MAX
-#define UINT32_MAX             (4294967295U)
-#endif
-
-#endif /* ! FLEXINT_H */
-
-#ifdef __cplusplus
-
-/* The "const" storage-class-modifier is valid. */
-#define YY_USE_CONST
-
-#else	/* ! __cplusplus */
-
-/* C99 requires __STDC__ to be defined as 1. */
-#if defined (__STDC__)
-
-#define YY_USE_CONST
-
-#endif	/* defined (__STDC__) */
-#endif	/* ! __cplusplus */
-
-#ifdef YY_USE_CONST
-#define yyconst const
-#else
-#define yyconst
-#endif
-
-/* Returned upon end-of-file. */
-#define YY_NULL 0
-
-/* Promotes a possibly negative, possibly signed char to an unsigned
- * integer for use as an array index.  If the signed char is negative,
- * we want to instead treat it as an 8-bit unsigned char, hence the
- * double cast.
- */
-#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
-
-/* Enter a start condition.  This macro really ought to take a parameter,
- * but we do it the disgusting crufty way forced on us by the ()-less
- * definition of BEGIN.
- */
-#define BEGIN (yy_start) = 1 + 2 *
-
-/* Translate the current start state into a value that can be later handed
- * to BEGIN to return to the state.  The YYSTATE alias is for lex
- * compatibility.
- */
-#define YY_START (((yy_start) - 1) / 2)
-#define YYSTATE YY_START
-
-/* Action number for EOF rule of a given start state. */
-#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
-
-/* Special action meaning "start processing a new file". */
-#define YY_NEW_FILE eggyyrestart(eggyyin  )
-
-#define YY_END_OF_BUFFER_CHAR 0
-
-/* Size of default input buffer. */
-#ifndef YY_BUF_SIZE
-#define YY_BUF_SIZE 16384
-#endif
-
-/* The state buf must be large enough to hold one state per character in the main buffer.
- */
-#define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
-
-#ifndef YY_TYPEDEF_YY_BUFFER_STATE
-#define YY_TYPEDEF_YY_BUFFER_STATE
-typedef struct yy_buffer_state *YY_BUFFER_STATE;
-#endif
-
-extern int eggyyleng;
-
-extern FILE *eggyyin, *eggyyout;
-
-#define EOB_ACT_CONTINUE_SCAN 0
-#define EOB_ACT_END_OF_FILE 1
-#define EOB_ACT_LAST_MATCH 2
-
-    #define YY_LESS_LINENO(n)
-    
-/* Return all but the first "n" matched characters back to the input stream. */
-#define yyless(n) \
-	do \
-		{ \
-		/* Undo effects of setting up eggyytext. */ \
-        int yyless_macro_arg = (n); \
-        YY_LESS_LINENO(yyless_macro_arg);\
-		*yy_cp = (yy_hold_char); \
-		YY_RESTORE_YY_MORE_OFFSET \
-		(yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
-		YY_DO_BEFORE_ACTION; /* set up eggyytext again */ \
-		} \
-	while ( 0 )
-
-#define unput(c) yyunput( c, (yytext_ptr)  )
-
-#ifndef YY_TYPEDEF_YY_SIZE_T
-#define YY_TYPEDEF_YY_SIZE_T
-typedef size_t yy_size_t;
-#endif
-
-#ifndef YY_STRUCT_YY_BUFFER_STATE
-#define YY_STRUCT_YY_BUFFER_STATE
-struct yy_buffer_state
-	{
-	FILE *yy_input_file;
-
-	char *yy_ch_buf;		/* input buffer */
-	char *yy_buf_pos;		/* current position in input buffer */
-
-	/* Size of input buffer in bytes, not including room for EOB
-	 * characters.
-	 */
-	yy_size_t yy_buf_size;
-
-	/* Number of characters read into yy_ch_buf, not including EOB
-	 * characters.
-	 */
-	int yy_n_chars;
-
-	/* Whether we "own" the buffer - i.e., we know we created it,
-	 * and can realloc() it to grow it, and should free() it to
-	 * delete it.
-	 */
-	int yy_is_our_buffer;
-
-	/* Whether this is an "interactive" input source; if so, and
-	 * if we're using stdio for input, then we want to use getc()
-	 * instead of fread(), to make sure we stop fetching input after
-	 * each newline.
-	 */
-	int yy_is_interactive;
-
-	/* Whether we're considered to be at the beginning of a line.
-	 * If so, '^' rules will be active on the next match, otherwise
-	 * not.
-	 */
-	int yy_at_bol;
-
-    int yy_bs_lineno; /**< The line count. */
-    int yy_bs_column; /**< The column count. */
-    
-	/* Whether to try to fill the input buffer when we reach the
-	 * end of it.
-	 */
-	int yy_fill_buffer;
-
-	int yy_buffer_status;
-
-#define YY_BUFFER_NEW 0
-#define YY_BUFFER_NORMAL 1
-	/* When an EOF's been seen but there's still some text to process
-	 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
-	 * shouldn't try reading from the input source any more.  We might
-	 * still have a bunch of tokens to match, though, because of
-	 * possible backing-up.
-	 *
-	 * When we actually see the EOF, we change the status to "new"
-	 * (via eggyyrestart()), so that the user can continue scanning by
-	 * just pointing eggyyin at a new input file.
-	 */
-#define YY_BUFFER_EOF_PENDING 2
-
-	};
-#endif /* !YY_STRUCT_YY_BUFFER_STATE */
-
-/* Stack of input buffers. */
-static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
-static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
-static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
-
-/* We provide macros for accessing buffer states in case in the
- * future we want to put the buffer states in a more general
- * "scanner state".
- *
- * Returns the top of the stack, or NULL.
- */
-#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
-                          ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
-                          : NULL)
-
-/* Same as previous macro, but useful when we know that the buffer stack is not
- * NULL or when we need an lvalue. For internal use only.
- */
-#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
-
-/* yy_hold_char holds the character lost when eggyytext is formed. */
-static char yy_hold_char;
-static int yy_n_chars;		/* number of characters read into yy_ch_buf */
-int eggyyleng;
-
-/* Points to current character in buffer. */
-static char *yy_c_buf_p = (char *) 0;
-static int yy_init = 0;		/* whether we need to initialize */
-static int yy_start = 0;	/* start state number */
-
-/* Flag which is used to allow eggyywrap()'s to do buffer switches
- * instead of setting up a fresh eggyyin.  A bit of a hack ...
- */
-static int yy_did_buffer_switch_on_eof;
-
-void eggyyrestart (FILE *input_file  );
-void eggyy_switch_to_buffer (YY_BUFFER_STATE new_buffer  );
-YY_BUFFER_STATE eggyy_create_buffer (FILE *file,int size  );
-void eggyy_delete_buffer (YY_BUFFER_STATE b  );
-void eggyy_flush_buffer (YY_BUFFER_STATE b  );
-void eggyypush_buffer_state (YY_BUFFER_STATE new_buffer  );
-void eggyypop_buffer_state (void );
-
-static void eggyyensure_buffer_stack (void );
-static void eggyy_load_buffer_state (void );
-static void eggyy_init_buffer (YY_BUFFER_STATE b,FILE *file  );
-
-#define YY_FLUSH_BUFFER eggyy_flush_buffer(YY_CURRENT_BUFFER )
-
-YY_BUFFER_STATE eggyy_scan_buffer (char *base,yy_size_t size  );
-YY_BUFFER_STATE eggyy_scan_string (yyconst char *yy_str  );
-YY_BUFFER_STATE eggyy_scan_bytes (yyconst char *bytes,int len  );
-
-void *eggyyalloc (yy_size_t  );
-void *eggyyrealloc (void *,yy_size_t  );
-void eggyyfree (void *  );
-
-#define yy_new_buffer eggyy_create_buffer
-
-#define yy_set_interactive(is_interactive) \
-	{ \
-	if ( ! YY_CURRENT_BUFFER ){ \
-        eggyyensure_buffer_stack (); \
-		YY_CURRENT_BUFFER_LVALUE =    \
-            eggyy_create_buffer(eggyyin,YY_BUF_SIZE ); \
-	} \
-	YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
-	}
-
-#define yy_set_bol(at_bol) \
-	{ \
-	if ( ! YY_CURRENT_BUFFER ){\
-        eggyyensure_buffer_stack (); \
-		YY_CURRENT_BUFFER_LVALUE =    \
-            eggyy_create_buffer(eggyyin,YY_BUF_SIZE ); \
-	} \
-	YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
-	}
-
-#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
-
-typedef unsigned char YY_CHAR;
-
-FILE *eggyyin = (FILE *) 0, *eggyyout = (FILE *) 0;
-
-typedef int yy_state_type;
-
-extern int eggyylineno;
-
-int eggyylineno = 1;
-
-extern char *eggyytext;
-#define yytext_ptr eggyytext
-
-static yy_state_type yy_get_previous_state (void );
-static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
-static int yy_get_next_buffer (void );
-static void yy_fatal_error (yyconst char msg[]  );
-
-/* Done after the current pattern has been matched and before the
- * corresponding action - sets up eggyytext.
- */
-#define YY_DO_BEFORE_ACTION \
-	(yytext_ptr) = yy_bp; \
-	eggyyleng = (size_t) (yy_cp - yy_bp); \
-	(yy_hold_char) = *yy_cp; \
-	*yy_cp = '\0'; \
-	(yy_c_buf_p) = yy_cp;
-
-#define YY_NUM_RULES 99
-#define YY_END_OF_BUFFER 100
-/* This struct is not used in this scanner,
-   but its presence is necessary. */
-struct yy_trans_info
-	{
-	flex_int32_t yy_verify;
-	flex_int32_t yy_nxt;
-	};
-static yyconst flex_int16_t yy_accept[577] =
-    {   0,
-        0,    0,  100,   98,    2,    1,   97,   98,   98,   98,
-       98,   89,   89,   89,   98,   98,   98,    5,   98,    1,
-       98,   89,   89,   98,   89,    4,    3,   89,   91,   98,
-       90,   89,   98,   98,   98,   98,   98,   98,   98,   98,
-       98,   98,   98,   98,   98,   98,   98,   98,   98,   98,
-       98,   98,   98,   98,   89,   98,    3,    3,   91,   98,
-       89,   90,   98,   98,   98,   98,   98,   98,   98,   98,
-       98,   98,   98,   98,   98,   98,   98,   98,   98,   98,
-       98,   98,   98,   98,   98,   98,   98,   98,   98,   98,
-       98,   98,   98,   98,   98,   98,   98,   98,   98,   98,
-
-       98,   98,   98,   98,   98,   98,   98,   98,   98,   98,
-       98,   98,   98,   98,   98,   65,   98,   98,   98,   93,
-       98,   98,   94,   98,   98,   98,   98,   98,   98,   98,
-       98,   98,   98,   98,   98,   19,   98,   98,   98,   98,
-       98,   98,   98,   98,   98,   98,   98,   98,   98,   98,
-       98,   98,   98,   98,   98,   98,   98,   98,   98,   98,
-       98,   98,   98,   98,   98,   98,   98,   98,   98,   98,
-       98,   98,   98,   98,   98,   98,   98,   98,   98,   98,
-       98,   98,   80,   98,   98,   98,   98,   98,   98,   98,
-       98,   98,   98,   98,   98,   98,   98,   98,   98,   98,
-
-       98,   98,   98,   98,   25,   98,   98,   98,   98,   98,
-       23,   98,   98,   98,   98,   98,   98,   98,   98,   98,
-       98,   98,   98,   98,   98,   98,   98,   98,   98,   98,
-       98,   98,   51,   98,   98,   98,   98,   98,   98,   98,
-       98,   98,   98,   98,   66,   98,   98,   98,   98,   98,
-       98,   98,   98,   77,   98,   98,   98,   98,   98,   98,
-       92,   98,   95,   98,   98,   98,   98,   98,   98,   98,
-       98,   98,   98,   98,   98,   20,   98,   98,   98,   98,
-       98,   24,   98,   29,   98,   98,   98,   98,   98,   36,
-       37,   98,   98,   98,   42,   98,   98,   98,   98,   98,
-
-       98,   98,   52,   98,   54,   55,   56,   98,   98,   98,
-       98,   98,   98,   98,   98,   98,   98,   98,   98,   73,
-       98,   76,   98,   98,   98,   98,   98,   98,   92,   96,
-       98,   98,    8,   98,   98,   98,   13,   98,   98,   98,
-       98,   98,   98,   98,   98,   22,   27,   98,   30,   98,
-       98,   32,   33,   98,   98,   41,   98,   98,   98,   98,
-       47,   98,   98,   98,   98,   98,   98,   59,   98,   98,
-       98,   64,   98,   98,   98,   98,   98,   98,   98,   98,
-       98,   98,   98,   98,   98,   98,   98,   98,   98,   12,
-       14,   98,   98,   98,   98,   98,   98,   98,   98,   98,
-
-       98,   98,   98,   98,   43,   98,   98,   98,   98,   98,
-       98,   53,   57,   58,   98,   98,   62,   98,   98,   98,
-       98,   98,   98,   98,   98,   98,   98,   98,   83,   98,
-       98,   98,   98,   98,   98,   98,   98,   98,   15,   16,
-       98,   98,   98,   98,   21,   98,   34,   98,   98,   39,
-       40,   98,   98,   98,   98,   98,   50,   98,   61,   98,
-       67,   68,   69,   98,   98,   98,   98,   78,   79,   81,
-       98,   98,   98,   82,   98,   98,   98,   98,   11,   98,
-       98,   98,   26,   98,   35,   38,   98,   98,   98,   98,
-       98,   60,   98,   70,   98,   98,   98,   98,   98,   98,
-
-       98,   87,   98,   98,   98,    9,   98,   17,   98,   98,
-       98,   98,   98,   98,   98,   98,   98,   71,   72,   98,
-       98,   98,   98,   86,   98,   98,   98,   98,   98,   98,
-       98,   44,   98,   46,   48,   49,   98,   98,   98,   84,
-       85,   98,    6,    7,   98,   98,   31,   98,   98,   98,
-       74,   98,   88,   98,   98,   98,   45,   98,   98,   98,
-       98,   98,   98,   75,   98,   98,   98,   98,   10,   98,
-       98,   63,   18,   98,   28,    0
-    } ;
-
-static yyconst flex_int32_t yy_ec[256] =
-    {   0,
-        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
-        1,    1,    2,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    2,    1,    4,    5,    6,    1,    1,    1,    1,
-        1,    7,    8,    1,    9,   10,   11,   12,   13,   14,
-       15,   16,   14,   14,   14,   14,   14,    1,    1,   17,
-        1,   18,    1,    1,   19,   20,   21,   22,   23,   24,
-       25,   26,   27,   28,   29,   30,   31,   32,   33,   34,
-       35,   36,   37,   38,   39,   40,   41,   42,   43,   44,
-        1,    1,    1,    1,   45,    1,   46,   47,   48,   49,
-
-       50,   51,   52,   53,   54,   55,   56,   57,   58,   59,
-       60,   61,   62,   63,   64,   65,   66,   67,   68,   69,
-       70,   71,   72,    1,   72,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1
-    } ;
-
-static yyconst flex_int32_t yy_meta[73] =
-    {   0,
-        1,    2,    3,    2,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    2
-    } ;
-
-static yyconst flex_int16_t yy_base[582] =
-    {   0,
-        0,   71, 1210,    0, 1211,    0, 1211,    8,   23,   28,
-       18,  134,   55,   79,  203,    2,    0, 1211,    0,    0,
-       94,  101,  122,   17,  146,    0,   24,  151,   18,  174,
-      263,  276,   31,  277,  289,  338,   72,   64,   69,   71,
-       80,  146,  261,  284,  300,  108,  312,  352,  376,  293,
-      401,  129,  146,  139,  442,  151,   49,    0,   35,  179,
-      339,    0,  151,  271,  259,  286,  337,  309,  352,  349,
-      383, 1191,  354,  374,  391,  384,  390,  400,  396,  394,
-      392,  404,  407,  411,  432,  422,  427,  434,  434,  430,
-      448,  449,  437,  438,  447,  455,  440,  452,  457,  463,
-
-      446,  466,  467,  453,  470,  463,  494,  449,  475,  501,
-      465,  478, 1190,  492,  493,    0,  487,  498,  498,    0,
-     1195,  504,    0,  500,  502,  508,  515,  507,  505,  517,
-      504,  505,  513,  537,  509,    0,  514, 1188,  538,  523,
-      537,  554,  552, 1187,  532,  558,  555,  541,  551,  544,
-      551,  547,  563,  553,  570,  566,  566,  560,  572,  571,
-      573,  559,  567,  568, 1186,  596,  603,  593,  597,  589,
-      607,  592,  601, 1185,  607,  605,  602,  604,  613,  620,
-     1184,  608,    0,  609,  612,  610,  618, 1195,  611,  628,
-      641,  635,  653,  656,  661,  646,  653, 1193,  661,  658,
-
-      663,  655,  667, 1181,    0,  651,  672,  662,  675,  671,
-        0, 1180,  666, 1179,  664,  660,  681,  663,  665, 1178,
-     1177,  668,  678,  677, 1176,  695,  682,  702,  694,  714,
-      697,  711,    0, 1175,  699, 1174, 1173, 1172,  711,  720,
-      717,  715,  723,  722,    0,  724,  721,  710,  726,  715,
-     1171,  721, 1170,    0,  721,  722,  723,  735,  726,  742,
-      777,  744,    0,  741,  748, 1169,  754,  763,  779, 1168,
-      781,  783,  774,  775,  781,    0,  779,  778,  793, 1167,
-     1166,    0,  786,    0, 1165,  793,  784, 1164, 1163,    0,
-        0,  790,  776, 1147,    0,  789,  801,  782, 1146,  799,
-
-      811,  815,    0,  827,    0,    0,    0,  820,  816, 1144,
-      821,  822,  829, 1137,  824,  820,  823,  822,  837,    0,
-      837,    0,  825,  826,  828,  827,  832,  839,    0,    0,
-      849,  852,    0,  855,  857, 1132,    0, 1131,  862,  854,
-      872,  870,  866,  884,  876,    0,    0,  886,    0,  885,
-      888,    0,    0,  891,   40,    0, 1128,  872,  874,  876,
-        0,  890,  889,  885,  755,  526,  413,    0,  897,  895,
-      903,    0,  885,  887,  903,  901,  895,  911,  909,  909,
-      911,  912,  943,  919,  931,  929,  921,  927,  934,    0,
-        0,  412,  411,  933,  948,  934,  946,  410,  930,  409,
-
-      948,  942,  373,  371,    0,  938,  942,  937,  958,  957,
-      369,    0,    0,    0,  961,  367,    0,  955,  365,  361,
-      330,  956,  964,  964,  980,  322,  316,  300,    0,  978,
-      979,  990,  290,  983,  983,  981,  996,  288,    0,    0,
-      981,  983,  989,  278,    0, 1000,    0,  277,  275,    0,
-        0,  984, 1001,  992,  996, 1005,    0,  189,    0, 1000,
-        0,    0,    0,  181, 1002, 1011, 1030,    0,    0,    0,
-     1008, 1003, 1014,    0, 1024, 1028, 1016, 1050,    0,  167,
-     1034, 1027,    0, 1030,    0,    0, 1047, 1053, 1050, 1037,
-     1038,    0, 1055,    0,  159,  138, 1059, 1041, 1049, 1052,
-
-      137,    0, 1048, 1064, 1064,    0, 1065,    0, 1052, 1067,
-     1054,  134, 1074,  124,  122,  115, 1069,    0,    0, 1069,
-     1072,  105,  104,    0,  114,  101,  100, 1078, 1068,   79,
-     1095,    0, 1097,    0,    0,    0, 1083,   48, 1097,    0,
-        0,   46,    0,    0, 1087, 1089,    0, 1085,   44, 1102,
-        0, 1096,    0, 1108, 1094, 1099,    0, 1101,   42, 1100,
-     1116, 1107, 1109,    0,   40, 1111, 1110,   39,    0,   34,
-     1114,    0,    0,   27,    0, 1211, 1171,    0, 1174, 1176,
-     1178
-    } ;
-
-static yyconst flex_int16_t yy_def[582] =
-    {   0,
-      577,  577,  576,  578,  576,  579,  576,  578,  578,  578,
-      578,  578,  578,  578,  576,  578,  578,  576,  578,  579,
-      578,  578,  578,  578,  578,  578,  580,  578,  578,  578,
-      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
-      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
-      578,  578,  578,  578,  578,  578,  580,  581,  578,  578,
-      578,   31,  578,  578,  578,  578,  578,  578,  578,  578,
-      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
-      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
-      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
-
-      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
-      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
-      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
-      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
-      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
-      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
-      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
-      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
-      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
-      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
-
-      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
-      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
-      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
-      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
-      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
-      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
-      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
-      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
-      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
-      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
-
-      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
-      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
-      578,  578,  578,  578,  578,  578,  578,  578,  261,  578,
-      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
-      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
-      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
-      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
-      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
-      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
-      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
-
-      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
-      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
-      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
-      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
-      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
-      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
-      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
-      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
-      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
-      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
-
-      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
-      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
-      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
-      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
-      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
-      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
-      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
-      578,  578,  578,  578,  578,    0,  576,  576,  576,  576,
-      576
-    } ;
-
-static yyconst flex_int16_t yy_nxt[1284] =
-    {   0,
-       19,    5,    6,    7,  576,  576,  576,    8,    9,   10,
-       11,   12,   13,   14,   14,   14,   15,   21,   54,   22,
-       22,   22,   22,   22,   26,   58,   16,   58,   27,   59,
-       59,   17,   21,   53,   22,   23,   22,   22,   22,   25,
-       25,   25,   25,   25,  575,   54,   59,   59,   56,   24,
-       58,  573,   58,   16,  403,  404,  572,  569,   17,  564,
-       53,  557,   64,  553,   32,  551,   22,   22,   22,   22,
-       22,   18,    5,    6,    7,   56,   24,   30,    8,    9,
-       10,   11,   12,   13,   14,   14,   14,   15,   28,   64,
-       22,   22,   22,   22,   22,   58,  547,   16,   83,   84,
-
-       85,   30,   17,   86,   30,   25,   25,   25,   25,   25,
-       28,   87,   22,   22,   22,   22,   22,  544,  543,  542,
-       58,  541,  540,   30,   16,   83,   84,   85,   30,   17,
-       86,   55,  536,   22,   22,   22,   22,   22,   87,  535,
-       98,  534,   18,   28,   30,   22,   22,   22,   22,   22,
-       30,  532,  119,   29,  524,  519,   30,   25,   25,   25,
-       25,   25,   25,   25,   25,   25,   25,   98,   30,  120,
-      121,   30,   88,   30,  123,   31,  518,  124,   89,  119,
-       29,   60,   60,   30,  508,   61,   61,   61,   61,   61,
-       61,   61,   61,   61,   61,   30,  120,  121,  494,   88,
-
-       30,  123,   31,   19,  124,   89,  492,   19,   19,   19,
-       19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
-       19,   33,   34,   35,   36,   19,   37,   38,   19,   39,
-       40,   41,   42,   43,   44,   45,   46,   19,   47,   48,
-       49,   50,   51,   19,   52,   19,   19,   19,   33,   34,
-       35,   36,   19,   37,   38,   19,   39,   40,   41,   42,
-       43,   44,   45,   46,   19,   47,   48,   49,   50,   51,
-       19,   52,   19,   19,   62,   62,   62,   62,   62,   90,
-       63,   62,   62,   62,   62,   62,   62,   25,   25,   25,
-       25,   25,  486,   91,  485,  483,   92,  125,   30,   65,
-
-       66,  112,  126,   67,  127,  479,   90,  474,   62,   62,
-       62,   62,   62,   62,   69,   68,   93,  470,   70,   95,
-       91,   71,   94,   92,  125,   30,   65,   66,   72,  126,
-       67,  127,  113,  469,   99,   96,  100,  114,   97,  468,
-      130,   69,   68,   93,  101,   70,   95,  463,   71,   94,
-       61,   61,   61,   61,   61,   72,   73,  102,   74,  113,
-       75,   99,   96,  100,   76,   97,  128,  130,  129,   77,
-      131,  101,  103,   78,  104,   79,   80,  105,  462,   81,
-       82,  132,  461,   73,  459,   74,  457,   75,  451,  137,
-      450,   76,  106,  128,  107,  129,   77,  131,  108,  103,
-
-       78,  104,   79,   80,  105,  109,   81,   82,  132,  115,
-      138,  110,  133,  134,  139,  135,  137,  111,  116,  106,
-      140,  107,  141,  117,  142,  108,  447,  445,  440,  439,
-      414,  143,  109,  144,  145,  146,  147,  138,  110,  133,
-      134,  139,  135,  148,  111,  118,  122,  140,  151,  141,
-      117,  142,  149,   25,   25,   25,   25,   25,  143,  152,
-      144,  145,  146,  147,   30,  153,  154,  155,  150,  156,
-      148,  157,  158,  159,  160,  151,  161,  162,  163,  149,
-      165,  164,  166,  167,  168,  169,  152,  170,  171,  172,
-      176,   30,  153,  154,  155,  150,  156,  177,  157,  158,
-
-      159,  160,  181,  161,  162,  163,  182,  165,  164,  166,
-      167,  168,  169,  173,  170,  171,  172,  176,  174,  178,
-      184,  185,  186,  179,  177,  175,  187,  180,  188,  181,
-      190,  191,  192,  182,  193,  194,  195,  196,  197,  198,
-      173,  199,  200,  413,  203,  174,  178,  184,  185,  186,
-      179,  204,  175,  187,  180,  188,  206,  190,  191,  192,
-      207,  193,  194,  195,  196,  197,  198,  201,  199,  200,
-      202,  203,  208,  209,  210,  212,  213,  214,  204,  215,
-      216,  217,  218,  206,  219,  220,  221,  207,  224,  225,
-      226,  227,  222,  228,  201,  229,  230,  202,  231,  208,
-
-      209,  210,  212,  213,  214,  223,  215,  216,  217,  218,
-      232,  219,  220,  221,  234,  224,  225,  226,  227,  222,
-      228,  235,  229,  230,  239,  231,  240,  241,  242,  243,
-      244,  246,  223,  249,  247,  250,  251,  232,  252,  255,
-      256,  234,  248,  257,  236,  237,  238,  258,  235,  259,
-      253,  239,  261,  240,  241,  242,  243,  244,  246,  262,
-      249,  247,  250,  251,  263,  252,  255,  256,  264,  248,
-      257,  236,  237,  238,  258,  265,  259,  253,  266,  261,
-      267,  268,  269,  271,  272,  273,  262,  274,  275,  277,
-      278,  263,  279,  280,  281,  264,  283,  285,  286,  287,
-
-      288,  289,  265,  292,  293,  266,  294,  267,  268,  269,
-      271,  272,  273,  296,  274,  275,  277,  278,  297,  279,
-      280,  281,  298,  283,  285,  286,  287,  288,  289,  299,
-      292,  293,  300,  294,  301,  302,  304,  308,  309,  311,
-      296,  312,  310,  313,  314,  297,  315,  316,  317,  298,
-      318,  319,  321,  323,  324,  325,  299,  326,  327,  300,
-      328,  301,  302,  304,  308,  309,  311,  330,  312,  310,
-      313,  314,  412,  315,  316,  317,  331,  318,  319,  321,
-      323,  324,  325,  332,  326,  327,  334,  328,  329,  329,
-      329,  329,  329,  335,  330,  329,  329,  329,  329,  329,
-
-      329,  336,  338,  331,  339,  340,  341,  342,  343,  344,
-      332,  345,  348,  334,  350,  351,  354,  355,  357,  360,
-      335,  358,  329,  329,  329,  329,  329,  329,  336,  338,
-      362,  339,  340,  341,  342,  343,  344,  359,  345,  348,
-      363,  350,  351,  354,  355,  357,  360,  364,  358,  365,
-      366,  367,  369,  370,  371,  373,  374,  362,  375,  376,
-      377,  379,  380,  381,  359,  382,  378,  363,  383,  384,
-      385,  386,  387,  388,  364,  389,  365,  366,  367,  369,
-      370,  371,  373,  374,  392,  375,  376,  377,  379,  380,
-      381,  393,  382,  378,  394,  383,  384,  385,  386,  387,
-
-      388,  395,  389,  396,  397,  398,  399,  400,  401,  402,
-      406,  392,  407,  408,  409,  410,  411,  415,  393,  416,
-      417,  394,  419,  418,  420,  421,  422,  423,  395,  424,
-      396,  397,  398,  399,  400,  401,  402,  406,  425,  407,
-      408,  409,  410,  411,  415,  426,  416,  427,  428,  419,
-      418,  420,  421,  422,  423,  433,  424,  434,  435,  436,
-      429,  430,  437,  438,  441,  425,  442,  443,  444,  446,
-      448,  449,  426,  452,  427,  428,  431,  453,  432,  454,
-      455,  456,  433,  458,  434,  435,  436,  460,  430,  437,
-      438,  441,  464,  442,  443,  444,  446,  448,  449,  465,
-
-      452,  466,  467,  431,  453,  432,  454,  455,  456,  471,
-      458,  472,  473,  475,  460,  476,  477,  478,  480,  464,
-      481,  482,  484,  487,  488,  489,  465,  490,  466,  467,
-      491,  493,  495,  496,  499,  500,  471,  501,  472,  473,
-      475,  502,  476,  477,  478,  480,  504,  481,  482,  484,
-      487,  488,  489,  497,  490,  505,  509,  491,  493,  495,
-      496,  499,  500,  510,  501,  511,  498,  506,  503,  512,
-      507,  513,  514,  504,  515,  516,  517,  520,  521,  522,
-      497,  523,  505,  509,  525,  526,  527,  528,  529,  530,
-      510,  531,  511,  498,  533,  537,  512,  507,  513,  514,
-
-      538,  515,  516,  517,  520,  521,  522,  539,  523,  545,
-      546,  525,  526,  527,  528,  529,  530,  548,  531,  549,
-      550,  533,  537,  552,  554,  555,  556,  538,  558,  559,
-      560,  561,  562,  563,  539,  565,  545,  546,  566,  567,
-      568,  570,  571,  574,  548,  405,  549,  550,  391,  390,
-      552,  554,  555,  556,  372,  558,  559,  560,  561,  562,
-      563,  368,  565,  361,  356,  566,  567,  568,  570,  571,
-      574,    4,    4,    4,   20,   20,   57,   57,   58,   58,
-      353,  352,  349,  347,  346,  337,  333,  322,  320,  307,
-      306,  305,  303,  295,  291,  290,  284,  282,  276,  270,
-
-      260,  254,  245,  233,  211,  205,  189,  183,  136,  576,
-        3,  576,  576,  576,  576,  576,  576,  576,  576,  576,
-      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
-      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
-      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
-      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
-      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
-      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
-      576,  576,  576
-    } ;
-
-static yyconst flex_int16_t yy_chk[1284] =
-    {   0,
-      578,    1,    1,    1,    0,    0,    0,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    8,   17,    8,
-        8,    8,    8,    8,   11,   27,    1,   27,   11,   29,
-       29,    1,    9,   16,    9,    9,    9,    9,    9,   10,
-       10,   10,   10,   10,  574,   17,   59,   59,   24,    9,
-       57,  570,   57,    1,  355,  355,  568,  565,    1,  559,
-       16,  549,   33,  542,   13,  538,   13,   13,   13,   13,
-       13,    1,    2,    2,    2,   24,    9,   13,    2,    2,
-        2,    2,    2,    2,    2,    2,    2,    2,   14,   33,
-       14,   14,   14,   14,   14,   27,  530,    2,   37,   38,
-
-       39,   14,    2,   40,   13,   21,   21,   21,   21,   21,
-       22,   41,   22,   22,   22,   22,   22,  527,  526,  525,
-       57,  523,  522,   22,    2,   37,   38,   39,   14,    2,
-       40,   23,  516,   23,   23,   23,   23,   23,   41,  515,
-       46,  514,    2,   12,   23,   12,   12,   12,   12,   12,
-       22,  512,   52,   12,  501,  496,   12,   25,   25,   25,
-       25,   25,   28,   28,   28,   28,   28,   46,   25,   53,
-       54,   23,   42,   28,   56,   12,  495,   63,   42,   52,
-       12,   30,   30,   12,  480,   30,   30,   30,   30,   30,
-       60,   60,   60,   60,   60,   25,   53,   54,  464,   42,
-
-       28,   56,   12,   15,   63,   42,  458,   15,   15,   15,
-       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
-       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
-       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
-       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
-       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
-       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
-       15,   15,   15,   15,   31,   31,   31,   31,   31,   43,
-       32,   31,   31,   31,   31,   31,   31,   32,   32,   32,
-       32,   32,  449,   43,  448,  444,   43,   64,   32,   34,
-
-       34,   50,   65,   34,   66,  438,   43,  433,   31,   31,
-       31,   31,   31,   31,   35,   34,   44,  428,   35,   45,
-       43,   35,   44,   43,   64,   32,   34,   34,   35,   65,
-       34,   66,   50,  427,   47,   45,   47,   50,   45,  426,
-       68,   35,   34,   44,   47,   35,   45,  421,   35,   44,
-       61,   61,   61,   61,   61,   35,   36,   48,   36,   50,
-       36,   47,   45,   47,   36,   45,   67,   68,   67,   36,
-       69,   47,   48,   36,   48,   36,   36,   48,  420,   36,
-       36,   70,  419,   36,  416,   36,  411,   36,  404,   73,
-      403,   36,   48,   67,   49,   67,   36,   69,   49,   48,
-
-       36,   48,   36,   36,   48,   49,   36,   36,   70,   51,
-       74,   49,   71,   71,   75,   71,   73,   49,   51,   48,
-       76,   49,   77,   51,   78,   49,  400,  398,  393,  392,
-      367,   79,   49,   80,   81,   82,   83,   74,   49,   71,
-       71,   75,   71,   84,   49,   51,   55,   76,   86,   77,
-       51,   78,   85,   55,   55,   55,   55,   55,   79,   87,
-       80,   81,   82,   83,   55,   88,   89,   90,   85,   91,
-       84,   92,   93,   94,   95,   86,   96,   97,   98,   85,
-       99,   98,  100,  101,  102,  103,   87,  104,  105,  106,
-      108,   55,   88,   89,   90,   85,   91,  109,   92,   93,
-
-       94,   95,  111,   96,   97,   98,  112,   99,   98,  100,
-      101,  102,  103,  107,  104,  105,  106,  108,  107,  110,
-      114,  115,  117,  110,  109,  107,  118,  110,  119,  111,
-      122,  124,  125,  112,  126,  127,  128,  129,  130,  131,
-      107,  132,  133,  366,  135,  107,  110,  114,  115,  117,
-      110,  137,  107,  118,  110,  119,  139,  122,  124,  125,
-      140,  126,  127,  128,  129,  130,  131,  134,  132,  133,
-      134,  135,  141,  142,  143,  145,  146,  147,  137,  148,
-      149,  150,  151,  139,  152,  153,  154,  140,  156,  157,
-      158,  159,  155,  160,  134,  161,  162,  134,  163,  141,
-
-      142,  143,  145,  146,  147,  155,  148,  149,  150,  151,
-      164,  152,  153,  154,  166,  156,  157,  158,  159,  155,
-      160,  167,  161,  162,  168,  163,  169,  170,  171,  172,
-      173,  175,  155,  177,  176,  178,  179,  164,  180,  182,
-      184,  166,  176,  185,  167,  167,  167,  186,  167,  187,
-      180,  168,  189,  169,  170,  171,  172,  173,  175,  190,
-      177,  176,  178,  179,  191,  180,  182,  184,  192,  176,
-      185,  167,  167,  167,  186,  193,  187,  180,  194,  189,
-      195,  196,  197,  199,  200,  201,  190,  202,  203,  206,
-      207,  191,  208,  209,  210,  192,  213,  215,  216,  217,
-
-      218,  219,  193,  222,  223,  194,  224,  195,  196,  197,
-      199,  200,  201,  226,  202,  203,  206,  207,  227,  208,
-      209,  210,  228,  213,  215,  216,  217,  218,  219,  229,
-      222,  223,  230,  224,  231,  232,  235,  239,  240,  241,
-      226,  242,  240,  243,  244,  227,  246,  247,  248,  228,
-      249,  250,  252,  255,  256,  257,  229,  258,  259,  230,
-      260,  231,  232,  235,  239,  240,  241,  262,  242,  240,
-      243,  244,  365,  246,  247,  248,  264,  249,  250,  252,
-      255,  256,  257,  265,  258,  259,  267,  260,  261,  261,
-      261,  261,  261,  268,  262,  261,  261,  261,  261,  261,
-
-      261,  269,  271,  264,  272,  273,  274,  275,  277,  278,
-      265,  279,  283,  267,  286,  287,  292,  293,  296,  298,
-      268,  297,  261,  261,  261,  261,  261,  261,  269,  271,
-      300,  272,  273,  274,  275,  277,  278,  297,  279,  283,
-      301,  286,  287,  292,  293,  296,  298,  302,  297,  304,
-      308,  309,  311,  312,  313,  315,  316,  300,  317,  318,
-      319,  321,  323,  324,  297,  325,  319,  301,  326,  327,
-      328,  331,  332,  334,  302,  335,  304,  308,  309,  311,
-      312,  313,  315,  316,  339,  317,  318,  319,  321,  323,
-      324,  340,  325,  319,  341,  326,  327,  328,  331,  332,
-
-      334,  342,  335,  343,  344,  345,  348,  350,  351,  354,
-      358,  339,  359,  360,  362,  363,  364,  369,  340,  370,
-      371,  341,  373,  371,  374,  375,  376,  377,  342,  378,
-      343,  344,  345,  348,  350,  351,  354,  358,  379,  359,
-      360,  362,  363,  364,  369,  380,  370,  381,  382,  373,
-      371,  374,  375,  376,  377,  384,  378,  385,  386,  387,
-      383,  383,  388,  389,  394,  379,  395,  396,  397,  399,
-      401,  402,  380,  406,  381,  382,  383,  407,  383,  408,
-      409,  410,  384,  415,  385,  386,  387,  418,  383,  388,
-      389,  394,  422,  395,  396,  397,  399,  401,  402,  423,
-
-      406,  424,  425,  383,  407,  383,  408,  409,  410,  430,
-      415,  431,  432,  434,  418,  435,  436,  437,  441,  422,
-      442,  443,  446,  452,  453,  454,  423,  455,  424,  425,
-      456,  460,  465,  466,  471,  472,  430,  473,  431,  432,
-      434,  475,  435,  436,  437,  441,  476,  442,  443,  446,
-      452,  453,  454,  467,  455,  477,  481,  456,  460,  465,
-      466,  471,  472,  482,  473,  484,  467,  478,  475,  487,
-      478,  488,  489,  476,  490,  491,  493,  497,  498,  499,
-      467,  500,  477,  481,  503,  504,  505,  507,  509,  510,
-      482,  511,  484,  467,  513,  517,  487,  478,  488,  489,
-
-      520,  490,  491,  493,  497,  498,  499,  521,  500,  528,
-      529,  503,  504,  505,  507,  509,  510,  531,  511,  533,
-      537,  513,  517,  539,  545,  546,  548,  520,  550,  552,
-      554,  555,  556,  558,  521,  560,  528,  529,  561,  562,
-      563,  566,  567,  571,  531,  357,  533,  537,  338,  336,
-      539,  545,  546,  548,  314,  550,  552,  554,  555,  556,
-      558,  310,  560,  299,  294,  561,  562,  563,  566,  567,
-      571,  577,  577,  577,  579,  579,  580,  580,  581,  581,
-      289,  288,  285,  281,  280,  270,  266,  253,  251,  238,
-      237,  236,  234,  225,  221,  220,  214,  212,  204,  198,
-
-      188,  181,  174,  165,  144,  138,  121,  113,   72,    3,
-      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
-      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
-      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
-      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
-      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
-      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
-      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
-      576,  576,  576
-    } ;
-
-static yy_state_type yy_last_accepting_state;
-static char *yy_last_accepting_cpos;
-
-extern int eggyy_flex_debug;
-int eggyy_flex_debug = 0;
-
-/* The intent behind this definition is that it'll catch
- * any uses of REJECT which flex missed.
- */
-#define REJECT reject_used_but_not_detected
-#define yymore() yymore_used_but_not_detected
-#define YY_MORE_ADJ 0
-#define YY_RESTORE_YY_MORE_OFFSET
-char *eggyytext;
-#line 1 "lexer.lxx"
-/*
-// Filename: lexer.l
-// Created by:  drose (16Jan99)
-// 
-////////////////////////////////////////////////////////////////////
-*/
-#line 9 "lexer.lxx"
-#include "pandabase.h"
-#include "lexerDefs.h"
-#include "parserDefs.h"
-#include "config_egg.h"
-#include "parser.h"
-#include "indent.h"
-#include "pnotify.h"
-#include "lightMutex.h"
-#include "thread.h"
-#include "pstrtod.h"
-
-#include <math.h>
-
-extern "C" int eggyywrap(void);  // declared below.
-
-static int yyinput(void);        // declared by flex.
-
-
-////////////////////////////////////////////////////////////////////
-// Static variables
-////////////////////////////////////////////////////////////////////
-
-// This mutex protects all of these global variables. 
-LightMutex egg_lock; 
-
-// We'll increment line_number and col_number as we parse the file, so
-// that we can report the position of an error.
-static int line_number = 0;
-static int col_number = 0;
-
-// current_line holds as much of the current line as will fit.  Its
-// only purpose is for printing it out to report an error to the user.
-static const int max_error_width = 1024;
-static char current_line[max_error_width + 1];
-
-static int error_count = 0;
-static int warning_count = 0;
-
-// This is the pointer to the current input stream.
-static istream *inp = NULL;
-
-// This is the name of the egg file we're parsing.  We keep it so we
-// can print it out for error messages.
-static string egg_filename;
-
-// This is the initial token state returned by the lexer.  It allows
-// the yacc grammar to start from initial points.
-static int initial_token;
-
-////////////////////////////////////////////////////////////////////
-// Defining the interface to the lexer.
-////////////////////////////////////////////////////////////////////
-
-void
-egg_init_lexer(istream &in, const string &filename) {
-  inp = &in;
-  egg_filename = filename;
-  line_number = 0;
-  col_number = 0;
-  error_count = 0;
-  warning_count = 0;
-  initial_token = START_EGG;
-}
-
-void
-egg_start_group_body() {
-  /* Set the initial state to begin within a group_body context,
-     instead of at the beginning of the egg file. */
-  initial_token = START_GROUP_BODY;
-}
-
-void
-egg_start_texture_body() {
-  initial_token = START_TEXTURE_BODY;
-}
-
-void
-egg_start_primitive_body() {
-  initial_token = START_PRIMITIVE_BODY;
-}
-
-int
-egg_error_count() {
-  return error_count;
-}
-
-int
-egg_warning_count() {
-  return warning_count;
-}
-
-
-////////////////////////////////////////////////////////////////////
-// Internal support functions.
-////////////////////////////////////////////////////////////////////
-
-int
-eggyywrap(void) {
-  return 1;
-}
-
-void
-eggyyerror(const string &msg) {
-  if (egg_cat.is_error()) {
-    ostream &out = egg_cat.error(false);
-
-    out << "\nError";
-    if (!egg_filename.empty()) {
-      out << " in " << egg_filename;
-    }
-    out 
-      << " at line " << line_number << ", column " << col_number << ":\n"
-      << setiosflags(Notify::get_literal_flag())
-      << current_line << "\n";
-    indent(out, col_number-1) 
-      << "^\n" << msg << "\n\n" 
-      << resetiosflags(Notify::get_literal_flag()) << flush;
-  }
-  error_count++;
-}
-
-void
-eggyyerror(ostringstream &strm) {
-  string s = strm.str();
-  eggyyerror(s);
-}
-
-void
-eggyywarning(const string &msg) {
-  if (egg_cat.is_warning()) {
-    ostream &out = egg_cat.warning(false);
-
-    out << "\nWarning";
-    if (!egg_filename.empty()) {
-      out << " in " << egg_filename;
-    }
-    out 
-      << " at line " << line_number << ", column " << col_number << ":\n"
-      << setiosflags(Notify::get_literal_flag())
-      << current_line << "\n";
-    indent(out, col_number-1) 
-      << "^\n" << msg << "\n\n" 
-      << resetiosflags(Notify::get_literal_flag()) << flush;
-  }
-  warning_count++;
-}
-
-void
-eggyywarning(ostringstream &strm) {
-  string s = strm.str();
-  eggyywarning(s);
-}
-
-// Now define a function to take input from an istream instead of a
-// stdio FILE pointer.  This is flex-specific.
-static void
-input_chars(char *buffer, int &result, int max_size) {
-  nassertv(inp != NULL);
-  if (*inp) {
-    inp->read(buffer, max_size);
-    result = inp->gcount();
-
-    if (line_number == 0) {
-      // This is a special case.  If we are reading the very first bit
-      // from the stream, copy it into the current_line array.  This
-      // is because the \n.* rule below, which fills current_line
-      // normally, doesn't catch the first line.
-      int length = min(max_error_width, result);
-      strncpy(current_line, buffer, length);
-      current_line[length] = '\0';
-      line_number++;
-      col_number = 0;
-
-      // Truncate it at the newline.
-      char *end = strchr(current_line, '\n');
-      if (end != NULL) {
-        *end = '\0';
-      }
-    }
-
-  } else {
-    // End of file or I/O error.
-    result = 0;
-  }
-  Thread::consider_yield();
-}
-#undef YY_INPUT
-#define YY_INPUT(buffer, result, max_size) input_chars(buffer, result, max_size)
-
-// read_char reads and returns a single character, incrementing the
-// supplied line and column numbers as appropriate.  A convenience
-// function for the scanning functions below.
-static int
-read_char(int &line, int &col) {
-  int c = yyinput();
-  if (c == '\n') {
-    line++;
-    col = 0;
-  } else {
-    col++;
-  }
-  return c;
-}
-
-// scan_quoted_string reads a string delimited by quotation marks and
-// returns it.
-static string
-scan_quoted_string() {
-  string result;
-
-  // We don't touch the current line number and column number during
-  // scanning, so that if we detect an error while scanning the string
-  // (e.g. an unterminated string), we'll report the error as
-  // occurring at the start of the string, not at the end--somewhat
-  // more convenient for the user.
-
-  // Instead of adjusting the global line_number and col_number
-  // variables, we'll operate on our own local variables for the
-  // interim.
-  int line = line_number;
-  int col = col_number;
-
-  int c;
-  c = read_char(line, col);
-  while (c != '"' && c != EOF) {
-    result += c;
-    c = read_char(line, col);
-  }
-
-  if (c == EOF) {
-    eggyyerror("This quotation mark is unterminated.");
-  }
-
-  line_number = line;
-  col_number = col;
-
-  return result;
-}
-
-// eat_c_comment scans past all characters up until the first */
-// encountered.
-static void
-eat_c_comment() {
-  // As above, we'll operate on our own local copies of line_number
-  // and col_number within this function.
-
-  int line = line_number;
-  int col = col_number;
-
-  int c, last_c;
-  
-  last_c = '\0';
-  c = read_char(line, col);
-  while (c != EOF && !(last_c == '*' && c == '/')) {
-    if (last_c == '/' && c == '*') {
-      ostringstream errmsg;
-      errmsg << "This comment contains a nested /* symbol at line "
-             << line << ", column " << col-1 << "--possibly unclosed?"
-             << ends;
-      eggyywarning(errmsg);
-    }
-    last_c = c;
-    c = read_char(line, col);
-  }
-
-  if (c == EOF) {
-    eggyyerror("This comment marker is unclosed.");
-  }
-
-  line_number = line;
-  col_number = col;
-}
-
-
-// accept() is called below as each piece is pulled off and
-// accepted by the lexer; it increments the current column number.
-INLINE void accept() {
-  col_number += eggyyleng;
-}
-
-#line 1229 "lex.yy.c"
-
-#define INITIAL 0
-
-#ifndef YY_NO_UNISTD_H
-/* Special case for "unistd.h", since it is non-ANSI. We include it way
- * down here because we want the user's section 1 to have been scanned first.
- * The user has a chance to override it with an option.
- */
-#endif
-
-#ifndef YY_EXTRA_TYPE
-#define YY_EXTRA_TYPE void *
-#endif
-
-static int yy_init_globals (void );
-
-/* Accessor methods to globals.
-   These are made visible to non-reentrant scanners for convenience. */
-
-int eggyylex_destroy (void );
-
-int eggyyget_debug (void );
-
-void eggyyset_debug (int debug_flag  );
-
-YY_EXTRA_TYPE eggyyget_extra (void );
-
-void eggyyset_extra (YY_EXTRA_TYPE user_defined  );
-
-FILE *eggyyget_in (void );
-
-void eggyyset_in  (FILE * in_str  );
-
-FILE *eggyyget_out (void );
-
-void eggyyset_out  (FILE * out_str  );
-
-int eggyyget_leng (void );
-
-char *eggyyget_text (void );
-
-int eggyyget_lineno (void );
-
-void eggyyset_lineno (int line_number  );
-
-/* Macros after this point can all be overridden by user definitions in
- * section 1.
- */
-
-#ifndef YY_SKIP_YYWRAP
-#ifdef __cplusplus
-extern "C" int eggyywrap (void );
-#else
-extern int eggyywrap (void );
-#endif
-#endif
-
-    static void yyunput (int c,char *buf_ptr  );
-    
-#ifndef yytext_ptr
-static void yy_flex_strncpy (char *,yyconst char *,int );
-#endif
-
-#ifdef YY_NEED_STRLEN
-static int yy_flex_strlen (yyconst char * );
-#endif
-
-#ifndef YY_NO_INPUT
-
-#ifdef __cplusplus
-static int yyinput (void );
-#else
-static int input (void );
-#endif
-
-#endif
-
-/* Amount of stuff to slurp up with each read. */
-#ifndef YY_READ_BUF_SIZE
-#define YY_READ_BUF_SIZE 8192
-#endif
-
-/* Copy whatever the last rule matched to the standard output. */
-#ifndef ECHO
-/* This used to be an fputs(), but since the string might contain NUL's,
- * we now use fwrite().
- */
-#define ECHO fwrite( eggyytext, eggyyleng, 1, eggyyout )
-#endif
-
-/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
- * is returned in "result".
- */
-#ifndef YY_INPUT
-#define YY_INPUT(buf,result,max_size) \
-	if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
-		{ \
-		int c = '*'; \
-		int n; \
-		for ( n = 0; n < max_size && \
-			     (c = getc( eggyyin )) != EOF && c != '\n'; ++n ) \
-			buf[n] = (char) c; \
-		if ( c == '\n' ) \
-			buf[n++] = (char) c; \
-		if ( c == EOF && ferror( eggyyin ) ) \
-			YY_FATAL_ERROR( "input in flex scanner failed" ); \
-		result = n; \
-		} \
-	else \
-		{ \
-		errno=0; \
-		while ( (result = fread(buf, 1, max_size, eggyyin))==0 && ferror(eggyyin)) \
-			{ \
-			if( errno != EINTR) \
-				{ \
-				YY_FATAL_ERROR( "input in flex scanner failed" ); \
-				break; \
-				} \
-			errno=0; \
-			clearerr(eggyyin); \
-			} \
-		}\
-\
-
-#endif
-
-/* No semi-colon after return; correct usage is to write "yyterminate();" -
- * we don't want an extra ';' after the "return" because that will cause
- * some compilers to complain about unreachable statements.
- */
-#ifndef yyterminate
-#define yyterminate() return YY_NULL
-#endif
-
-/* Number of entries by which start-condition stack grows. */
-#ifndef YY_START_STACK_INCR
-#define YY_START_STACK_INCR 25
-#endif
-
-/* Report a fatal error. */
-#ifndef YY_FATAL_ERROR
-#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
-#endif
-
-/* end tables serialization structures and prototypes */
-
-/* Default declaration of generated scanner - a define so the user can
- * easily add parameters.
- */
-#ifndef YY_DECL
-#define YY_DECL_IS_OURS 1
-
-extern int eggyylex (void);
-
-#define YY_DECL int eggyylex (void)
-#endif /* !YY_DECL */
-
-/* Code executed at the beginning of each rule, after eggyytext and eggyyleng
- * have been set up.
- */
-#ifndef YY_USER_ACTION
-#define YY_USER_ACTION
-#endif
-
-/* Code executed at the end of each rule. */
-#ifndef YY_BREAK
-#define YY_BREAK break;
-#endif
-
-#define YY_RULE_SETUP \
-	YY_USER_ACTION
-
-/** The main scanner function which does all the work.
- */
-YY_DECL
-{
-	register yy_state_type yy_current_state;
-	register char *yy_cp, *yy_bp;
-	register int yy_act;
-    
-#line 295 "lexer.lxx"
-
-
-
-  if (initial_token != 0) {
-    int t = initial_token;
-    initial_token = 0;
-    return t;
-  }
-
-
-#line 1422 "lex.yy.c"
-
-	if ( !(yy_init) )
-		{
-		(yy_init) = 1;
-
-#ifdef YY_USER_INIT
-		YY_USER_INIT;
-#endif
-
-		if ( ! (yy_start) )
-			(yy_start) = 1;	/* first start state */
-
-		if ( ! eggyyin )
-			eggyyin = stdin;
-
-		if ( ! eggyyout )
-			eggyyout = stdout;
-
-		if ( ! YY_CURRENT_BUFFER ) {
-			eggyyensure_buffer_stack ();
-			YY_CURRENT_BUFFER_LVALUE =
-				eggyy_create_buffer(eggyyin,YY_BUF_SIZE );
-		}
-
-		eggyy_load_buffer_state( );
-		}
-
-	while ( 1 )		/* loops until end-of-file is reached */
-		{
-		yy_cp = (yy_c_buf_p);
-
-		/* Support of eggyytext. */
-		*yy_cp = (yy_hold_char);
-
-		/* yy_bp points to the position in yy_ch_buf of the start of
-		 * the current run.
-		 */
-		yy_bp = yy_cp;
-
-		yy_current_state = (yy_start);
-yy_match:
-		do
-			{
-			register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
-			if ( yy_accept[yy_current_state] )
-				{
-				(yy_last_accepting_state) = yy_current_state;
-				(yy_last_accepting_cpos) = yy_cp;
-				}
-			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
-				{
-				yy_current_state = (int) yy_def[yy_current_state];
-				if ( yy_current_state >= 577 )
-					yy_c = yy_meta[(unsigned int) yy_c];
-				}
-			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-			++yy_cp;
-			}
-		while ( yy_base[yy_current_state] != 1211 );
-
-yy_find_action:
-		yy_act = yy_accept[yy_current_state];
-		if ( yy_act == 0 )
-			{ /* have to back up */
-			yy_cp = (yy_last_accepting_cpos);
-			yy_current_state = (yy_last_accepting_state);
-			yy_act = yy_accept[yy_current_state];
-			}
-
-		YY_DO_BEFORE_ACTION;
-
-do_action:	/* This label is used only to access EOF actions. */
-
-		switch ( yy_act )
-	{ /* beginning of action switch */
-			case 0: /* must back up */
-			/* undo the effects of YY_DO_BEFORE_ACTION */
-			*yy_cp = (yy_hold_char);
-			yy_cp = (yy_last_accepting_cpos);
-			yy_current_state = (yy_last_accepting_state);
-			goto yy_find_action;
-
-case 1:
-/* rule 1 can match eol */
-YY_RULE_SETUP
-#line 305 "lexer.lxx"
-{
-  // New line.  Save a copy of the line so we can print it out for the
-  // benefit of the user in case we get an error.
-
-  strncpy(current_line, eggyytext+1, max_error_width);
-  current_line[max_error_width] = '\0';
-  line_number++;
-  col_number=0;
-
-  // Return the whole line to the lexer, except the newline character,
-  // which we eat.
-  yyless(1);
-}
-	YY_BREAK
-case 2:
-YY_RULE_SETUP
-#line 319 "lexer.lxx"
-{ 
-  // Eat whitespace.
-  accept();
-}
-	YY_BREAK
-case 3:
-YY_RULE_SETUP
-#line 324 "lexer.lxx"
-{ 
-  // Eat C++-style comments.
-  accept();
-}
-	YY_BREAK
-case 4:
-YY_RULE_SETUP
-#line 329 "lexer.lxx"
-{
-  // Eat C-style comments.
-  accept();
-  eat_c_comment(); 
-}
-	YY_BREAK
-case 5:
-YY_RULE_SETUP
-#line 335 "lexer.lxx"
-{
-  // Send curly braces as themselves.
-  accept(); 
-  return eggyytext[0];
-}
-	YY_BREAK
-case 6:
-YY_RULE_SETUP
-#line 343 "lexer.lxx"
-{
-  accept();
-  return ANIMPRELOAD;
-}
-	YY_BREAK
-case 7:
-YY_RULE_SETUP
-#line 347 "lexer.lxx"
-{
-  accept();
-  return BEZIERCURVE;
-}
-	YY_BREAK
-case 8:
-YY_RULE_SETUP
-#line 351 "lexer.lxx"
-{
-  accept();
-  return BFACE;
-}
-	YY_BREAK
-case 9:
-YY_RULE_SETUP
-#line 355 "lexer.lxx"
-{
-  accept();
-  return BILLBOARD;
-}
-	YY_BREAK
-case 10:
-YY_RULE_SETUP
-#line 359 "lexer.lxx"
-{
-  accept();
-  return BILLBOARDCENTER;
-}
-	YY_BREAK
-case 11:
-YY_RULE_SETUP
-#line 363 "lexer.lxx"
-{
-  accept();
-  return BINORMAL;
-}
-	YY_BREAK
-case 12:
-YY_RULE_SETUP
-#line 367 "lexer.lxx"
-{
-  accept();
-  return BUNDLE;
-}
-	YY_BREAK
-case 13:
-YY_RULE_SETUP
-#line 371 "lexer.lxx"
-{
-  accept();
-  return SCALAR;
-}
-	YY_BREAK
-case 14:
-YY_RULE_SETUP
-#line 375 "lexer.lxx"
-{
-  accept();
-  return CLOSED;
-}
-	YY_BREAK
-case 15:
-YY_RULE_SETUP
-#line 379 "lexer.lxx"
-{
-  accept();
-  return COLLIDE;
-}
-	YY_BREAK
-case 16:
-YY_RULE_SETUP
-#line 383 "lexer.lxx"
-{
-  accept();
-  return COMMENT;
-}
-	YY_BREAK
-case 17:
-YY_RULE_SETUP
-#line 387 "lexer.lxx"
-{
-  accept();
-  return COMPONENT;
-}
-	YY_BREAK
-case 18:
-YY_RULE_SETUP
-#line 391 "lexer.lxx"
-{
-  accept();
-  return COORDSYSTEM;
-}
-	YY_BREAK
-case 19:
-YY_RULE_SETUP
-#line 395 "lexer.lxx"
-{
-  accept();
-  return CV;
-}
-	YY_BREAK
-case 20:
-YY_RULE_SETUP
-#line 399 "lexer.lxx"
-{
-  accept();
-  return DART;
-}
-	YY_BREAK
-case 21:
-YY_RULE_SETUP
-#line 403 "lexer.lxx"
-{
-  accept();
-  return DNORMAL;
-}
-	YY_BREAK
-case 22:
-YY_RULE_SETUP
-#line 407 "lexer.lxx"
-{
-  accept();
-  return DRGBA;
-}
-	YY_BREAK
-case 23:
-YY_RULE_SETUP
-#line 411 "lexer.lxx"
-{
-  accept();
-  return DUV;
-}
-	YY_BREAK
-case 24:
-YY_RULE_SETUP
-#line 415 "lexer.lxx"
-{
-  accept();
-  return DXYZ;
-}
-	YY_BREAK
-case 25:
-YY_RULE_SETUP
-#line 419 "lexer.lxx"
-{
-  accept();
-  return DCS;
-}
-	YY_BREAK
-case 26:
-YY_RULE_SETUP
-#line 423 "lexer.lxx"
-{
-  accept();
-  return DISTANCE;
-}
-	YY_BREAK
-case 27:
-YY_RULE_SETUP
-#line 427 "lexer.lxx"
-{
-  accept();
-  return DTREF;
-}
-	YY_BREAK
-case 28:
-YY_RULE_SETUP
-#line 431 "lexer.lxx"
-{
-  accept();
-  return DYNAMICVERTEXPOOL;
-}
-	YY_BREAK
-case 29:
-YY_RULE_SETUP
-#line 435 "lexer.lxx"
-{
-  accept();
-  return EXTERNAL_FILE;
-}
-	YY_BREAK
-case 30:
-YY_RULE_SETUP
-#line 439 "lexer.lxx"
-{
-  accept();
-  return GROUP;
-}
-	YY_BREAK
-case 31:
-YY_RULE_SETUP
-#line 443 "lexer.lxx"
-{
-  accept();
-  return DEFAULTPOSE;
-}
-	YY_BREAK
-case 32:
-YY_RULE_SETUP
-#line 447 "lexer.lxx"
-{
-  accept();
-  return JOINT;
-}
-	YY_BREAK
-case 33:
-YY_RULE_SETUP
-#line 451 "lexer.lxx"
-{
-  accept();
-  return KNOTS;
-}
-	YY_BREAK
-case 34:
-YY_RULE_SETUP
-#line 455 "lexer.lxx"
-{
-  accept();
-  return INCLUDE;
-}
-	YY_BREAK
-case 35:
-YY_RULE_SETUP
-#line 459 "lexer.lxx"
-{
-  accept();
-  return INSTANCE;
-}
-	YY_BREAK
-case 36:
-YY_RULE_SETUP
-#line 463 "lexer.lxx"
-{
-  accept();
-  return LINE;
-}
-	YY_BREAK
-case 37:
-YY_RULE_SETUP
-#line 467 "lexer.lxx"
-{
-  accept();
-  return LOOP;
-}
-	YY_BREAK
-case 38:
-YY_RULE_SETUP
-#line 471 "lexer.lxx"
-{
-  accept();
-  return MATERIAL;
-}
-	YY_BREAK
-case 39:
-YY_RULE_SETUP
-#line 475 "lexer.lxx"
-{
-  accept();
-  return MATRIX3;
-}
-	YY_BREAK
-case 40:
-YY_RULE_SETUP
-#line 479 "lexer.lxx"
-{
-  accept();
-  return MATRIX4;
-}
-	YY_BREAK
-case 41:
-YY_RULE_SETUP
-#line 483 "lexer.lxx"
-{
-  accept();
-  return MODEL;
-}
-	YY_BREAK
-case 42:
-YY_RULE_SETUP
-#line 487 "lexer.lxx"
-{
-  accept();
-  return MREF;
-}
-	YY_BREAK
-case 43:
-YY_RULE_SETUP
-#line 491 "lexer.lxx"
-{
-  accept();
-  return NORMAL;
-}
-	YY_BREAK
-case 44:
-YY_RULE_SETUP
-#line 495 "lexer.lxx"
-{
-  accept();
-  return NURBSCURVE;
-}
-	YY_BREAK
-case 45:
-YY_RULE_SETUP
-#line 499 "lexer.lxx"
-{
-  accept();
-  return NURBSSURFACE;
-}
-	YY_BREAK
-case 46:
-YY_RULE_SETUP
-#line 503 "lexer.lxx"
-{
-  accept();
-  return OBJECTTYPE;
-}
-	YY_BREAK
-case 47:
-YY_RULE_SETUP
-#line 507 "lexer.lxx"
-{
-  accept();
-  return ORDER;
-}
-	YY_BREAK
-case 48:
-YY_RULE_SETUP
-#line 511 "lexer.lxx"
-{
-  accept();
-  return OUTTANGENT;
-}
-	YY_BREAK
-case 49:
-YY_RULE_SETUP
-#line 515 "lexer.lxx"
-{
-  accept();
-  return POINTLIGHT;
-}
-	YY_BREAK
-case 50:
-YY_RULE_SETUP
-#line 519 "lexer.lxx"
-{
-  accept();
-  return POLYGON;
-}
-	YY_BREAK
-case 51:
-YY_RULE_SETUP
-#line 523 "lexer.lxx"
-{
-  accept();
-  return REF;
-}
-	YY_BREAK
-case 52:
-YY_RULE_SETUP
-#line 527 "lexer.lxx"
-{
-  accept();
-  return RGBA;
-}
-	YY_BREAK
-case 53:
-YY_RULE_SETUP
-#line 531 "lexer.lxx"
-{
-  accept();
-  return ROTATE;
-}
-	YY_BREAK
-case 54:
-YY_RULE_SETUP
-#line 535 "lexer.lxx"
-{
-  accept();
-  return ROTX;
-}
-	YY_BREAK
-case 55:
-YY_RULE_SETUP
-#line 539 "lexer.lxx"
-{
-  accept();
-  return ROTY;
-}
-	YY_BREAK
-case 56:
-YY_RULE_SETUP
-#line 543 "lexer.lxx"
-{
-  accept();
-  return ROTZ;
-}
-	YY_BREAK
-case 57:
-YY_RULE_SETUP
-#line 547 "lexer.lxx"
-{
-  accept();
-  return SANIM;
-}
-	YY_BREAK
-case 58:
-YY_RULE_SETUP
-#line 551 "lexer.lxx"
-{
-  accept();
-  return SCALAR;
-}
-	YY_BREAK
-case 59:
-YY_RULE_SETUP
-#line 555 "lexer.lxx"
-{
-  accept();
-  return SCALE;
-}
-	YY_BREAK
-case 60:
-YY_RULE_SETUP
-#line 559 "lexer.lxx"
-{
-  accept();
-  return SEQUENCE;
-}
-	YY_BREAK
-case 61:
-YY_RULE_SETUP
-#line 563 "lexer.lxx"
-{
-  accept();
-  return SHADING;
-}
-	YY_BREAK
-case 62:
-YY_RULE_SETUP
-#line 567 "lexer.lxx"
-{
-  accept();
-  return SWITCH;
-}
-	YY_BREAK
-case 63:
-YY_RULE_SETUP
-#line 571 "lexer.lxx"
-{
-  accept();
-  return SWITCHCONDITION;
-}
-	YY_BREAK
-case 64:
-YY_RULE_SETUP
-#line 575 "lexer.lxx"
-{
-  accept();
-  return TABLE;
-}
-	YY_BREAK
-case 65:
-YY_RULE_SETUP
-#line 579 "lexer.lxx"
-{
-  accept();
-  return TABLE_V;
-}
-	YY_BREAK
-case 66:
-YY_RULE_SETUP
-#line 583 "lexer.lxx"
-{
-  accept();
-  return TAG;
-}
-	YY_BREAK
-case 67:
-YY_RULE_SETUP
-#line 587 "lexer.lxx"
-{
-  accept();
-  return TANGENT;
-}
-	YY_BREAK
-case 68:
-YY_RULE_SETUP
-#line 591 "lexer.lxx"
-{
-  accept();
-  return TEXLIST;
-}
-	YY_BREAK
-case 69:
-YY_RULE_SETUP
-#line 595 "lexer.lxx"
-{
-  accept();
-  return TEXTURE;
-}
-	YY_BREAK
-case 70:
-YY_RULE_SETUP
-#line 599 "lexer.lxx"
-{
-  accept();
-  return TLENGTHS;
-}
-	YY_BREAK
-case 71:
-YY_RULE_SETUP
-#line 603 "lexer.lxx"
-{
-  accept();
-  return TRANSFORM;
-}
-	YY_BREAK
-case 72:
-YY_RULE_SETUP
-#line 607 "lexer.lxx"
-{
-  accept();
-  return TRANSLATE;
-}
-	YY_BREAK
-case 73:
-YY_RULE_SETUP
-#line 611 "lexer.lxx"
-{
-  accept();
-  return TREF;
-}
-	YY_BREAK
-case 74:
-YY_RULE_SETUP
-#line 615 "lexer.lxx"
-{
-  accept();
-  return TRIANGLEFAN;
-}
-	YY_BREAK
-case 75:
-YY_RULE_SETUP
-#line 619 "lexer.lxx"
-{
-  accept();
-  return TRIANGLESTRIP;
-}
-	YY_BREAK
-case 76:
-YY_RULE_SETUP
-#line 623 "lexer.lxx"
-{
-  accept();
-  return TRIM;
-}
-	YY_BREAK
-case 77:
-YY_RULE_SETUP
-#line 627 "lexer.lxx"
-{
-  accept();
-  return TXT;
-}
-	YY_BREAK
-case 78:
-YY_RULE_SETUP
-#line 631 "lexer.lxx"
-{
-  accept();
-  return UKNOTS;
-}
-	YY_BREAK
-case 79:
-YY_RULE_SETUP
-#line 635 "lexer.lxx"
-{
-  accept();
-  return UKNOTS;
-}
-	YY_BREAK
-case 80:
-YY_RULE_SETUP
-#line 639 "lexer.lxx"
-{
-  accept();
-  return UV;
-}
-	YY_BREAK
-case 81:
-YY_RULE_SETUP
-#line 643 "lexer.lxx"
-{
-  accept();
-  return VKNOTS;
-}
-	YY_BREAK
-case 82:
-YY_RULE_SETUP
-#line 647 "lexer.lxx"
-{
-  accept();
-  return VKNOTS;
-}
-	YY_BREAK
-case 83:
-YY_RULE_SETUP
-#line 651 "lexer.lxx"
-{
-  accept();
-  return VERTEX;
-}
-	YY_BREAK
-case 84:
-YY_RULE_SETUP
-#line 655 "lexer.lxx"
-{
-  accept();
-  return VERTEXANIM;
-}
-	YY_BREAK
-case 85:
-YY_RULE_SETUP
-#line 659 "lexer.lxx"
-{
-  accept();
-  return VERTEXPOOL;
-}
-	YY_BREAK
-case 86:
-YY_RULE_SETUP
-#line 663 "lexer.lxx"
-{
-  accept();
-  return VERTEXREF;
-}
-	YY_BREAK
-case 87:
-YY_RULE_SETUP
-#line 667 "lexer.lxx"
-{
-  accept();
-  return XFMANIM;
-}
-	YY_BREAK
-case 88:
-YY_RULE_SETUP
-#line 671 "lexer.lxx"
-{
-  accept();
-  return XFMSANIM;
-}
-	YY_BREAK
-case 89:
-YY_RULE_SETUP
-#line 678 "lexer.lxx"
-{ 
-  // An integer or floating-point number.
-  accept(); 
-  eggyylval._number = patof(eggyytext); 
-  eggyylval._string = eggyytext;
-  return EGG_NUMBER; 
-}
-	YY_BREAK
-case 90:
-YY_RULE_SETUP
-#line 686 "lexer.lxx"
-{
-  // A hexadecimal integer number.
-  accept(); 
-  eggyylval._ulong = strtoul(eggyytext+2, NULL, 16);
-  eggyylval._string = eggyytext;
-  return EGG_ULONG; 
-}
-	YY_BREAK
-case 91:
-YY_RULE_SETUP
-#line 694 "lexer.lxx"
-{
-  // A binary integer number.
-  accept(); 
-  eggyylval._ulong = strtoul(eggyytext+2, NULL, 2);
-  eggyylval._string = eggyytext;
-  return EGG_ULONG; 
-}
-	YY_BREAK
-case 92:
-YY_RULE_SETUP
-#line 702 "lexer.lxx"
-{
-  // not-a-number.  These sometimes show up in egg files accidentally.
-  accept(); 
-  memset(&eggyylval._number, 0, sizeof(eggyylval._number));
-  *(unsigned long *)&eggyylval._number = strtoul(eggyytext+3, NULL, 0);
-  eggyylval._string = eggyytext;
-  return EGG_NUMBER;
-}
-	YY_BREAK
-case 93:
-YY_RULE_SETUP
-#line 711 "lexer.lxx"
-{ 
-  // infinity.  As above.
-  accept(); 
-  eggyylval._number = HUGE_VAL;
-  eggyylval._string = eggyytext;
-  return EGG_NUMBER; 
-}
-	YY_BREAK
-case 94:
-YY_RULE_SETUP
-#line 719 "lexer.lxx"
-{
-  // minus infinity.  As above.
-  accept(); 
-  eggyylval._number = -HUGE_VAL;
-  eggyylval._string = eggyytext;
-  return EGG_NUMBER; 
-}
-	YY_BREAK
-case 95:
-YY_RULE_SETUP
-#line 727 "lexer.lxx"
-{ 
-  // infinity, on Win32.  As above.
-  accept(); 
-  eggyylval._number = HUGE_VAL;
-  eggyylval._string = eggyytext;
-  return EGG_NUMBER; 
-}
-	YY_BREAK
-case 96:
-YY_RULE_SETUP
-#line 735 "lexer.lxx"
-{
-  // minus infinity, on Win32.  As above.
-  accept(); 
-  eggyylval._number = -HUGE_VAL;
-  eggyylval._string = eggyytext;
-  return EGG_NUMBER; 
-}
-	YY_BREAK
-case 97:
-YY_RULE_SETUP
-#line 744 "lexer.lxx"
-{
-  // Quoted string.
-  accept();
-  eggyylval._string = scan_quoted_string();
-  return EGG_STRING;
-}
-	YY_BREAK
-case 98:
-YY_RULE_SETUP
-#line 751 "lexer.lxx"
-{ 
-  // Unquoted string.
-  accept();
-  eggyylval._string = eggyytext;
-  return EGG_STRING;
-}
-	YY_BREAK
-case 99:
-YY_RULE_SETUP
-#line 757 "lexer.lxx"
-ECHO;
-	YY_BREAK
-#line 2335 "lex.yy.c"
-case YY_STATE_EOF(INITIAL):
-	yyterminate();
-
-	case YY_END_OF_BUFFER:
-		{
-		/* Amount of text matched not including the EOB char. */
-		int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
-
-		/* Undo the effects of YY_DO_BEFORE_ACTION. */
-		*yy_cp = (yy_hold_char);
-		YY_RESTORE_YY_MORE_OFFSET
-
-		if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
-			{
-			/* We're scanning a new file or input source.  It's
-			 * possible that this happened because the user
-			 * just pointed eggyyin at a new source and called
-			 * eggyylex().  If so, then we have to assure
-			 * consistency between YY_CURRENT_BUFFER and our
-			 * globals.  Here is the right place to do so, because
-			 * this is the first action (other than possibly a
-			 * back-up) that will match for the new input source.
-			 */
-			(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
-			YY_CURRENT_BUFFER_LVALUE->yy_input_file = eggyyin;
-			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
-			}
-
-		/* Note that here we test for yy_c_buf_p "<=" to the position
-		 * of the first EOB in the buffer, since yy_c_buf_p will
-		 * already have been incremented past the NUL character
-		 * (since all states make transitions on EOB to the
-		 * end-of-buffer state).  Contrast this with the test
-		 * in input().
-		 */
-		if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
-			{ /* This was really a NUL. */
-			yy_state_type yy_next_state;
-
-			(yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
-
-			yy_current_state = yy_get_previous_state(  );
-
-			/* Okay, we're now positioned to make the NUL
-			 * transition.  We couldn't have
-			 * yy_get_previous_state() go ahead and do it
-			 * for us because it doesn't know how to deal
-			 * with the possibility of jamming (and we don't
-			 * want to build jamming into it because then it
-			 * will run more slowly).
-			 */
-
-			yy_next_state = yy_try_NUL_trans( yy_current_state );
-
-			yy_bp = (yytext_ptr) + YY_MORE_ADJ;
-
-			if ( yy_next_state )
-				{
-				/* Consume the NUL. */
-				yy_cp = ++(yy_c_buf_p);
-				yy_current_state = yy_next_state;
-				goto yy_match;
-				}
-
-			else
-				{
-				yy_cp = (yy_c_buf_p);
-				goto yy_find_action;
-				}
-			}
-
-		else switch ( yy_get_next_buffer(  ) )
-			{
-			case EOB_ACT_END_OF_FILE:
-				{
-				(yy_did_buffer_switch_on_eof) = 0;
-
-				if ( eggyywrap( ) )
-					{
-					/* Note: because we've taken care in
-					 * yy_get_next_buffer() to have set up
-					 * eggyytext, we can now set up
-					 * yy_c_buf_p so that if some total
-					 * hoser (like flex itself) wants to
-					 * call the scanner after we return the
-					 * YY_NULL, it'll still work - another
-					 * YY_NULL will get returned.
-					 */
-					(yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
-
-					yy_act = YY_STATE_EOF(YY_START);
-					goto do_action;
-					}
-
-				else
-					{
-					if ( ! (yy_did_buffer_switch_on_eof) )
-						YY_NEW_FILE;
-					}
-				break;
-				}
-
-			case EOB_ACT_CONTINUE_SCAN:
-				(yy_c_buf_p) =
-					(yytext_ptr) + yy_amount_of_matched_text;
-
-				yy_current_state = yy_get_previous_state(  );
-
-				yy_cp = (yy_c_buf_p);
-				yy_bp = (yytext_ptr) + YY_MORE_ADJ;
-				goto yy_match;
-
-			case EOB_ACT_LAST_MATCH:
-				(yy_c_buf_p) =
-				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
-
-				yy_current_state = yy_get_previous_state(  );
-
-				yy_cp = (yy_c_buf_p);
-				yy_bp = (yytext_ptr) + YY_MORE_ADJ;
-				goto yy_find_action;
-			}
-		break;
-		}
-
-	default:
-		YY_FATAL_ERROR(
-			"fatal flex scanner internal error--no action found" );
-	} /* end of action switch */
-		} /* end of scanning one token */
-} /* end of eggyylex */
-
-/* yy_get_next_buffer - try to read in a new buffer
- *
- * Returns a code representing an action:
- *	EOB_ACT_LAST_MATCH -
- *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position
- *	EOB_ACT_END_OF_FILE - end of file
- */
-static int yy_get_next_buffer (void)
-{
-    	register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
-	register char *source = (yytext_ptr);
-	register int number_to_move, i;
-	int ret_val;
-
-	if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
-		YY_FATAL_ERROR(
-		"fatal flex scanner internal error--end of buffer missed" );
-
-	if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
-		{ /* Don't try to fill the buffer, so this is an EOF. */
-		if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
-			{
-			/* We matched a single character, the EOB, so
-			 * treat this as a final EOF.
-			 */
-			return EOB_ACT_END_OF_FILE;
-			}
-
-		else
-			{
-			/* We matched some text prior to the EOB, first
-			 * process it.
-			 */
-			return EOB_ACT_LAST_MATCH;
-			}
-		}
-
-	/* Try to read more data. */
-
-	/* First move last chars to start of buffer. */
-	number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
-
-	for ( i = 0; i < number_to_move; ++i )
-		*(dest++) = *(source++);
-
-	if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
-		/* don't do the read, it's not guaranteed to return an EOF,
-		 * just force an EOF
-		 */
-		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
-
-	else
-		{
-			int num_to_read =
-			YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
-
-		while ( num_to_read <= 0 )
-			{ /* Not enough room in the buffer - grow it. */
-
-			/* just a shorter name for the current buffer */
-			YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
-
-			int yy_c_buf_p_offset =
-				(int) ((yy_c_buf_p) - b->yy_ch_buf);
-
-			if ( b->yy_is_our_buffer )
-				{
-				int new_size = b->yy_buf_size * 2;
-
-				if ( new_size <= 0 )
-					b->yy_buf_size += b->yy_buf_size / 8;
-				else
-					b->yy_buf_size *= 2;
-
-				b->yy_ch_buf = (char *)
-					/* Include room in for 2 EOB chars. */
-					eggyyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
-				}
-			else
-				/* Can't grow it, we don't own it. */
-				b->yy_ch_buf = 0;
-
-			if ( ! b->yy_ch_buf )
-				YY_FATAL_ERROR(
-				"fatal error - scanner input buffer overflow" );
-
-			(yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
-
-			num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
-						number_to_move - 1;
-
-			}
-
-		if ( num_to_read > YY_READ_BUF_SIZE )
-			num_to_read = YY_READ_BUF_SIZE;
-
-		/* Read in more data. */
-		YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
-			(yy_n_chars), (size_t) num_to_read );
-
-		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
-		}
-
-	if ( (yy_n_chars) == 0 )
-		{
-		if ( number_to_move == YY_MORE_ADJ )
-			{
-			ret_val = EOB_ACT_END_OF_FILE;
-			eggyyrestart(eggyyin  );
-			}
-
-		else
-			{
-			ret_val = EOB_ACT_LAST_MATCH;
-			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
-				YY_BUFFER_EOF_PENDING;
-			}
-		}
-
-	else
-		ret_val = EOB_ACT_CONTINUE_SCAN;
-
-	if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
-		/* Extend the array by 50%, plus the number we really need. */
-		yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
-		YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) eggyyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size  );
-		if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
-			YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
-	}
-
-	(yy_n_chars) += number_to_move;
-	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
-	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
-
-	(yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
-
-	return ret_val;
-}
-
-/* yy_get_previous_state - get the state just before the EOB char was reached */
-
-    static yy_state_type yy_get_previous_state (void)
-{
-	register yy_state_type yy_current_state;
-	register char *yy_cp;
-    
-	yy_current_state = (yy_start);
-
-	for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
-		{
-		register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
-		if ( yy_accept[yy_current_state] )
-			{
-			(yy_last_accepting_state) = yy_current_state;
-			(yy_last_accepting_cpos) = yy_cp;
-			}
-		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
-			{
-			yy_current_state = (int) yy_def[yy_current_state];
-			if ( yy_current_state >= 577 )
-				yy_c = yy_meta[(unsigned int) yy_c];
-			}
-		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-		}
-
-	return yy_current_state;
-}
-
-/* yy_try_NUL_trans - try to make a transition on the NUL character
- *
- * synopsis
- *	next_state = yy_try_NUL_trans( current_state );
- */
-    static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
-{
-	register int yy_is_jam;
-    	register char *yy_cp = (yy_c_buf_p);
-
-	register YY_CHAR yy_c = 1;
-	if ( yy_accept[yy_current_state] )
-		{
-		(yy_last_accepting_state) = yy_current_state;
-		(yy_last_accepting_cpos) = yy_cp;
-		}
-	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
-		{
-		yy_current_state = (int) yy_def[yy_current_state];
-		if ( yy_current_state >= 577 )
-			yy_c = yy_meta[(unsigned int) yy_c];
-		}
-	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-	yy_is_jam = (yy_current_state == 576);
-
-	return yy_is_jam ? 0 : yy_current_state;
-}
-
-    static void yyunput (int c, register char * yy_bp )
-{
-	register char *yy_cp;
-    
-    yy_cp = (yy_c_buf_p);
-
-	/* undo effects of setting up eggyytext */
-	*yy_cp = (yy_hold_char);
-
-	if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
-		{ /* need to shift things up to make room */
-		/* +2 for EOB chars. */
-		register int number_to_move = (yy_n_chars) + 2;
-		register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
-					YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
-		register char *source =
-				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
-
-		while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
-			*--dest = *--source;
-
-		yy_cp += (int) (dest - source);
-		yy_bp += (int) (dest - source);
-		YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
-			(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
-
-		if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
-			YY_FATAL_ERROR( "flex scanner push-back overflow" );
-		}
-
-	*--yy_cp = (char) c;
-
-	(yytext_ptr) = yy_bp;
-	(yy_hold_char) = *yy_cp;
-	(yy_c_buf_p) = yy_cp;
-}
-
-#ifndef YY_NO_INPUT
-#ifdef __cplusplus
-    static int yyinput (void)
-#else
-    static int input  (void)
-#endif
-
-{
-	int c;
-    
-	*(yy_c_buf_p) = (yy_hold_char);
-
-	if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
-		{
-		/* yy_c_buf_p now points to the character we want to return.
-		 * If this occurs *before* the EOB characters, then it's a
-		 * valid NUL; if not, then we've hit the end of the buffer.
-		 */
-		if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
-			/* This was really a NUL. */
-			*(yy_c_buf_p) = '\0';
-
-		else
-			{ /* need more input */
-			int offset = (yy_c_buf_p) - (yytext_ptr);
-			++(yy_c_buf_p);
-
-			switch ( yy_get_next_buffer(  ) )
-				{
-				case EOB_ACT_LAST_MATCH:
-					/* This happens because yy_g_n_b()
-					 * sees that we've accumulated a
-					 * token and flags that we need to
-					 * try matching the token before
-					 * proceeding.  But for input(),
-					 * there's no matching to consider.
-					 * So convert the EOB_ACT_LAST_MATCH
-					 * to EOB_ACT_END_OF_FILE.
-					 */
-
-					/* Reset buffer status. */
-					eggyyrestart(eggyyin );
-
-					/*FALLTHROUGH*/
-
-				case EOB_ACT_END_OF_FILE:
-					{
-					if ( eggyywrap( ) )
-						return EOF;
-
-					if ( ! (yy_did_buffer_switch_on_eof) )
-						YY_NEW_FILE;
-#ifdef __cplusplus
-					return yyinput();
-#else
-					return input();
-#endif
-					}
-
-				case EOB_ACT_CONTINUE_SCAN:
-					(yy_c_buf_p) = (yytext_ptr) + offset;
-					break;
-				}
-			}
-		}
-
-	c = *(unsigned char *) (yy_c_buf_p);	/* cast for 8-bit char's */
-	*(yy_c_buf_p) = '\0';	/* preserve eggyytext */
-	(yy_hold_char) = *++(yy_c_buf_p);
-
-	return c;
-}
-#endif	/* ifndef YY_NO_INPUT */
-
-/** Immediately switch to a different input stream.
- * @param input_file A readable stream.
- * 
- * @note This function does not reset the start condition to @c INITIAL .
- */
-    void eggyyrestart  (FILE * input_file )
-{
-    
-	if ( ! YY_CURRENT_BUFFER ){
-        eggyyensure_buffer_stack ();
-		YY_CURRENT_BUFFER_LVALUE =
-            eggyy_create_buffer(eggyyin,YY_BUF_SIZE );
-	}
-
-	eggyy_init_buffer(YY_CURRENT_BUFFER,input_file );
-	eggyy_load_buffer_state( );
-}
-
-/** Switch to a different input buffer.
- * @param new_buffer The new input buffer.
- * 
- */
-    void eggyy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
-{
-    
-	/* TODO. We should be able to replace this entire function body
-	 * with
-	 *		eggyypop_buffer_state();
-	 *		eggyypush_buffer_state(new_buffer);
-     */
-	eggyyensure_buffer_stack ();
-	if ( YY_CURRENT_BUFFER == new_buffer )
-		return;
-
-	if ( YY_CURRENT_BUFFER )
-		{
-		/* Flush out information for old buffer. */
-		*(yy_c_buf_p) = (yy_hold_char);
-		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
-		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
-		}
-
-	YY_CURRENT_BUFFER_LVALUE = new_buffer;
-	eggyy_load_buffer_state( );
-
-	/* We don't actually know whether we did this switch during
-	 * EOF (eggyywrap()) processing, but the only time this flag
-	 * is looked at is after eggyywrap() is called, so it's safe
-	 * to go ahead and always set it.
-	 */
-	(yy_did_buffer_switch_on_eof) = 1;
-}
-
-static void eggyy_load_buffer_state  (void)
-{
-    	(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
-	(yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
-	eggyyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
-	(yy_hold_char) = *(yy_c_buf_p);
-}
-
-/** Allocate and initialize an input buffer state.
- * @param file A readable stream.
- * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
- * 
- * @return the allocated buffer state.
- */
-    YY_BUFFER_STATE eggyy_create_buffer  (FILE * file, int  size )
-{
-	YY_BUFFER_STATE b;
-    
-	b = (YY_BUFFER_STATE) eggyyalloc(sizeof( struct yy_buffer_state )  );
-	if ( ! b )
-		YY_FATAL_ERROR( "out of dynamic memory in eggyy_create_buffer()" );
-
-	b->yy_buf_size = size;
-
-	/* yy_ch_buf has to be 2 characters longer than the size given because
-	 * we need to put in 2 end-of-buffer characters.
-	 */
-	b->yy_ch_buf = (char *) eggyyalloc(b->yy_buf_size + 2  );
-	if ( ! b->yy_ch_buf )
-		YY_FATAL_ERROR( "out of dynamic memory in eggyy_create_buffer()" );
-
-	b->yy_is_our_buffer = 1;
-
-	eggyy_init_buffer(b,file );
-
-	return b;
-}
-
-/** Destroy the buffer.
- * @param b a buffer created with eggyy_create_buffer()
- * 
- */
-    void eggyy_delete_buffer (YY_BUFFER_STATE  b )
-{
-    
-	if ( ! b )
-		return;
-
-	if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
-		YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
-
-	if ( b->yy_is_our_buffer )
-		eggyyfree((void *) b->yy_ch_buf  );
-
-	eggyyfree((void *) b  );
-}
-
-#ifndef __cplusplus
-extern int isatty (int );
-#endif /* __cplusplus */
-    
-/* Initializes or reinitializes a buffer.
- * This function is sometimes called more than once on the same buffer,
- * such as during a eggyyrestart() or at EOF.
- */
-    static void eggyy_init_buffer  (YY_BUFFER_STATE  b, FILE * file )
-
-{
-	int oerrno = errno;
-    
-	eggyy_flush_buffer(b );
-
-	b->yy_input_file = file;
-	b->yy_fill_buffer = 1;
-
-    /* If b is the current buffer, then eggyy_init_buffer was _probably_
-     * called from eggyyrestart() or through yy_get_next_buffer.
-     * In that case, we don't want to reset the lineno or column.
-     */
-    if (b != YY_CURRENT_BUFFER){
-        b->yy_bs_lineno = 1;
-        b->yy_bs_column = 0;
-    }
-
-        b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
-    
-	errno = oerrno;
-}
-
-/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
- * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
- * 
- */
-    void eggyy_flush_buffer (YY_BUFFER_STATE  b )
-{
-    	if ( ! b )
-		return;
-
-	b->yy_n_chars = 0;
-
-	/* We always need two end-of-buffer characters.  The first causes
-	 * a transition to the end-of-buffer state.  The second causes
-	 * a jam in that state.
-	 */
-	b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
-	b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
-
-	b->yy_buf_pos = &b->yy_ch_buf[0];
-
-	b->yy_at_bol = 1;
-	b->yy_buffer_status = YY_BUFFER_NEW;
-
-	if ( b == YY_CURRENT_BUFFER )
-		eggyy_load_buffer_state( );
-}
-
-/** Pushes the new state onto the stack. The new state becomes
- *  the current state. This function will allocate the stack
- *  if necessary.
- *  @param new_buffer The new state.
- *  
- */
-void eggyypush_buffer_state (YY_BUFFER_STATE new_buffer )
-{
-    	if (new_buffer == NULL)
-		return;
-
-	eggyyensure_buffer_stack();
-
-	/* This block is copied from eggyy_switch_to_buffer. */
-	if ( YY_CURRENT_BUFFER )
-		{
-		/* Flush out information for old buffer. */
-		*(yy_c_buf_p) = (yy_hold_char);
-		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
-		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
-		}
-
-	/* Only push if top exists. Otherwise, replace top. */
-	if (YY_CURRENT_BUFFER)
-		(yy_buffer_stack_top)++;
-	YY_CURRENT_BUFFER_LVALUE = new_buffer;
-
-	/* copied from eggyy_switch_to_buffer. */
-	eggyy_load_buffer_state( );
-	(yy_did_buffer_switch_on_eof) = 1;
-}
-
-/** Removes and deletes the top of the stack, if present.
- *  The next element becomes the new top.
- *  
- */
-void eggyypop_buffer_state (void)
-{
-    	if (!YY_CURRENT_BUFFER)
-		return;
-
-	eggyy_delete_buffer(YY_CURRENT_BUFFER );
-	YY_CURRENT_BUFFER_LVALUE = NULL;
-	if ((yy_buffer_stack_top) > 0)
-		--(yy_buffer_stack_top);
-
-	if (YY_CURRENT_BUFFER) {
-		eggyy_load_buffer_state( );
-		(yy_did_buffer_switch_on_eof) = 1;
-	}
-}
-
-/* Allocates the stack if it does not exist.
- *  Guarantees space for at least one push.
- */
-static void eggyyensure_buffer_stack (void)
-{
-	int num_to_alloc;
-    
-	if (!(yy_buffer_stack)) {
-
-		/* First allocation is just for 2 elements, since we don't know if this
-		 * scanner will even need a stack. We use 2 instead of 1 to avoid an
-		 * immediate realloc on the next call.
-         */
-		num_to_alloc = 1;
-		(yy_buffer_stack) = (struct yy_buffer_state**)eggyyalloc
-								(num_to_alloc * sizeof(struct yy_buffer_state*)
-								);
-		if ( ! (yy_buffer_stack) )
-			YY_FATAL_ERROR( "out of dynamic memory in eggyyensure_buffer_stack()" );
-								  
-		memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
-				
-		(yy_buffer_stack_max) = num_to_alloc;
-		(yy_buffer_stack_top) = 0;
-		return;
-	}
-
-	if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
-
-		/* Increase the buffer to prepare for a possible push. */
-		int grow_size = 8 /* arbitrary grow size */;
-
-		num_to_alloc = (yy_buffer_stack_max) + grow_size;
-		(yy_buffer_stack) = (struct yy_buffer_state**)eggyyrealloc
-								((yy_buffer_stack),
-								num_to_alloc * sizeof(struct yy_buffer_state*)
-								);
-		if ( ! (yy_buffer_stack) )
-			YY_FATAL_ERROR( "out of dynamic memory in eggyyensure_buffer_stack()" );
-
-		/* zero only the new slots.*/
-		memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
-		(yy_buffer_stack_max) = num_to_alloc;
-	}
-}
-
-/** Setup the input buffer state to scan directly from a user-specified character buffer.
- * @param base the character buffer
- * @param size the size in bytes of the character buffer
- * 
- * @return the newly allocated buffer state object. 
- */
-YY_BUFFER_STATE eggyy_scan_buffer  (char * base, yy_size_t  size )
-{
-	YY_BUFFER_STATE b;
-    
-	if ( size < 2 ||
-	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
-	     base[size-1] != YY_END_OF_BUFFER_CHAR )
-		/* They forgot to leave room for the EOB's. */
-		return 0;
-
-	b = (YY_BUFFER_STATE) eggyyalloc(sizeof( struct yy_buffer_state )  );
-	if ( ! b )
-		YY_FATAL_ERROR( "out of dynamic memory in eggyy_scan_buffer()" );
-
-	b->yy_buf_size = size - 2;	/* "- 2" to take care of EOB's */
-	b->yy_buf_pos = b->yy_ch_buf = base;
-	b->yy_is_our_buffer = 0;
-	b->yy_input_file = 0;
-	b->yy_n_chars = b->yy_buf_size;
-	b->yy_is_interactive = 0;
-	b->yy_at_bol = 1;
-	b->yy_fill_buffer = 0;
-	b->yy_buffer_status = YY_BUFFER_NEW;
-
-	eggyy_switch_to_buffer(b  );
-
-	return b;
-}
-
-/** Setup the input buffer state to scan a string. The next call to eggyylex() will
- * scan from a @e copy of @a str.
- * @param yystr a NUL-terminated string to scan
- * 
- * @return the newly allocated buffer state object.
- * @note If you want to scan bytes that may contain NUL values, then use
- *       eggyy_scan_bytes() instead.
- */
-YY_BUFFER_STATE eggyy_scan_string (yyconst char * yystr )
-{
-    
-	return eggyy_scan_bytes(yystr,strlen(yystr) );
-}
-
-/** Setup the input buffer state to scan the given bytes. The next call to eggyylex() will
- * scan from a @e copy of @a bytes.
- * @param bytes the byte buffer to scan
- * @param len the number of bytes in the buffer pointed to by @a bytes.
- * 
- * @return the newly allocated buffer state object.
- */
-YY_BUFFER_STATE eggyy_scan_bytes  (yyconst char * yybytes, int  _yybytes_len )
-{
-	YY_BUFFER_STATE b;
-	char *buf;
-	yy_size_t n;
-	int i;
-    
-	/* Get memory for full buffer, including space for trailing EOB's. */
-	n = _yybytes_len + 2;
-	buf = (char *) eggyyalloc(n  );
-	if ( ! buf )
-		YY_FATAL_ERROR( "out of dynamic memory in eggyy_scan_bytes()" );
-
-	for ( i = 0; i < _yybytes_len; ++i )
-		buf[i] = yybytes[i];
-
-	buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
-
-	b = eggyy_scan_buffer(buf,n );
-	if ( ! b )
-		YY_FATAL_ERROR( "bad buffer in eggyy_scan_bytes()" );
-
-	/* It's okay to grow etc. this buffer, and we should throw it
-	 * away when we're done.
-	 */
-	b->yy_is_our_buffer = 1;
-
-	return b;
-}
-
-#ifndef YY_EXIT_FAILURE
-#define YY_EXIT_FAILURE 2
-#endif
-
-static void yy_fatal_error (yyconst char* msg )
-{
-    	(void) fprintf( stderr, "%s\n", msg );
-	exit( YY_EXIT_FAILURE );
-}
-
-/* Redefine yyless() so it works in section 3 code. */
-
-#undef yyless
-#define yyless(n) \
-	do \
-		{ \
-		/* Undo effects of setting up eggyytext. */ \
-        int yyless_macro_arg = (n); \
-        YY_LESS_LINENO(yyless_macro_arg);\
-		eggyytext[eggyyleng] = (yy_hold_char); \
-		(yy_c_buf_p) = eggyytext + yyless_macro_arg; \
-		(yy_hold_char) = *(yy_c_buf_p); \
-		*(yy_c_buf_p) = '\0'; \
-		eggyyleng = yyless_macro_arg; \
-		} \
-	while ( 0 )
-
-/* Accessor  methods (get/set functions) to struct members. */
-
-/** Get the current line number.
- * 
- */
-int eggyyget_lineno  (void)
-{
-        
-    return eggyylineno;
-}
-
-/** Get the input stream.
- * 
- */
-FILE *eggyyget_in  (void)
-{
-        return eggyyin;
-}
-
-/** Get the output stream.
- * 
- */
-FILE *eggyyget_out  (void)
-{
-        return eggyyout;
-}
-
-/** Get the length of the current token.
- * 
- */
-int eggyyget_leng  (void)
-{
-        return eggyyleng;
-}
-
-/** Get the current token.
- * 
- */
-
-char *eggyyget_text  (void)
-{
-        return eggyytext;
-}
-
-/** Set the current line number.
- * @param line_number
- * 
- */
-void eggyyset_lineno (int  line_number )
-{
-    
-    eggyylineno = line_number;
-}
-
-/** Set the input stream. This does not discard the current
- * input buffer.
- * @param in_str A readable stream.
- * 
- * @see eggyy_switch_to_buffer
- */
-void eggyyset_in (FILE *  in_str )
-{
-        eggyyin = in_str ;
-}
-
-void eggyyset_out (FILE *  out_str )
-{
-        eggyyout = out_str ;
-}
-
-int eggyyget_debug  (void)
-{
-        return eggyy_flex_debug;
-}
-
-void eggyyset_debug (int  bdebug )
-{
-        eggyy_flex_debug = bdebug ;
-}
-
-static int yy_init_globals (void)
-{
-        /* Initialization is the same as for the non-reentrant scanner.
-     * This function is called from eggyylex_destroy(), so don't allocate here.
-     */
-
-    (yy_buffer_stack) = 0;
-    (yy_buffer_stack_top) = 0;
-    (yy_buffer_stack_max) = 0;
-    (yy_c_buf_p) = (char *) 0;
-    (yy_init) = 0;
-    (yy_start) = 0;
-
-/* Defined in main.c */
-#ifdef YY_STDINIT
-    eggyyin = stdin;
-    eggyyout = stdout;
-#else
-    eggyyin = (FILE *) 0;
-    eggyyout = (FILE *) 0;
-#endif
-
-    /* For future reference: Set errno on error, since we are called by
-     * eggyylex_init()
-     */
-    return 0;
-}
-
-/* eggyylex_destroy is for both reentrant and non-reentrant scanners. */
-int eggyylex_destroy  (void)
-{
-    
-    /* Pop the buffer stack, destroying each element. */
-	while(YY_CURRENT_BUFFER){
-		eggyy_delete_buffer(YY_CURRENT_BUFFER  );
-		YY_CURRENT_BUFFER_LVALUE = NULL;
-		eggyypop_buffer_state();
-	}
-
-	/* Destroy the stack itself. */
-	eggyyfree((yy_buffer_stack) );
-	(yy_buffer_stack) = NULL;
-
-    /* Reset the globals. This is important in a non-reentrant scanner so the next time
-     * eggyylex() is called, initialization will occur. */
-    yy_init_globals( );
-
-    return 0;
-}
-
-/*
- * Internal utility routines.
- */
-
-#ifndef yytext_ptr
-static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
-{
-	register int i;
-	for ( i = 0; i < n; ++i )
-		s1[i] = s2[i];
-}
-#endif
-
-#ifdef YY_NEED_STRLEN
-static int yy_flex_strlen (yyconst char * s )
-{
-	register int n;
-	for ( n = 0; s[n]; ++n )
-		;
-
-	return n;
-}
-#endif
-
-void *eggyyalloc (yy_size_t  size )
-{
-	return (void *) malloc( size );
-}
-
-void *eggyyrealloc  (void * ptr, yy_size_t  size )
-{
-	/* The cast to (char *) in the following accommodates both
-	 * implementations that use char* generic pointers, and those
-	 * that use void* generic pointers.  It works with the latter
-	 * because both ANSI C and C++ allow castless assignment from
-	 * any pointer type to void*, and deal with argument conversions
-	 * as though doing an assignment.
-	 */
-	return (void *) realloc( (char *) ptr, size );
-}
-
-void eggyyfree (void * ptr )
-{
-	free( (char *) ptr );	/* see eggyyrealloc() for (char *) cast */
-}
-
-#define YYTABLES_NAME "yytables"
-
-#line 757 "lexer.lxx"
+#line 2 "lex.yy.c"
+
+#line 4 "lex.yy.c"
+
+#define  YY_INT_ALIGNED short int
+
+/* A lexical scanner generated by flex */
+
+#define yy_create_buffer eggyy_create_buffer
+#define yy_delete_buffer eggyy_delete_buffer
+#define yy_flex_debug eggyy_flex_debug
+#define yy_init_buffer eggyy_init_buffer
+#define yy_flush_buffer eggyy_flush_buffer
+#define yy_load_buffer_state eggyy_load_buffer_state
+#define yy_switch_to_buffer eggyy_switch_to_buffer
+#define yyin eggyyin
+#define yyleng eggyyleng
+#define yylex eggyylex
+#define yylineno eggyylineno
+#define yyout eggyyout
+#define yyrestart eggyyrestart
+#define yytext eggyytext
+#define yywrap eggyywrap
+#define yyalloc eggyyalloc
+#define yyrealloc eggyyrealloc
+#define yyfree eggyyfree
+
+#define FLEX_SCANNER
+#define YY_FLEX_MAJOR_VERSION 2
+#define YY_FLEX_MINOR_VERSION 5
+#define YY_FLEX_SUBMINOR_VERSION 35
+#if YY_FLEX_SUBMINOR_VERSION > 0
+#define FLEX_BETA
+#endif
+
+/* First, we deal with  platform-specific or compiler-specific issues. */
+
+/* begin standard C headers. */
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <stdlib.h>
+
+/* end standard C headers. */
+
+/* flex integer type definitions */
+
+#ifndef FLEXINT_H
+#define FLEXINT_H
+
+/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
+
+#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+
+/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
+ * if you want the limit (max/min) macros for int types. 
+ */
+#ifndef __STDC_LIMIT_MACROS
+#define __STDC_LIMIT_MACROS 1
+#endif
+
+#include <inttypes.h>
+typedef int8_t flex_int8_t;
+typedef uint8_t flex_uint8_t;
+typedef int16_t flex_int16_t;
+typedef uint16_t flex_uint16_t;
+typedef int32_t flex_int32_t;
+typedef uint32_t flex_uint32_t;
+#else
+typedef signed char flex_int8_t;
+typedef short int flex_int16_t;
+typedef int flex_int32_t;
+typedef unsigned char flex_uint8_t; 
+typedef unsigned short int flex_uint16_t;
+typedef unsigned int flex_uint32_t;
+#endif /* ! C99 */
+
+/* Limits of integral types. */
+#ifndef INT8_MIN
+#define INT8_MIN               (-128)
+#endif
+#ifndef INT16_MIN
+#define INT16_MIN              (-32767-1)
+#endif
+#ifndef INT32_MIN
+#define INT32_MIN              (-2147483647-1)
+#endif
+#ifndef INT8_MAX
+#define INT8_MAX               (127)
+#endif
+#ifndef INT16_MAX
+#define INT16_MAX              (32767)
+#endif
+#ifndef INT32_MAX
+#define INT32_MAX              (2147483647)
+#endif
+#ifndef UINT8_MAX
+#define UINT8_MAX              (255U)
+#endif
+#ifndef UINT16_MAX
+#define UINT16_MAX             (65535U)
+#endif
+#ifndef UINT32_MAX
+#define UINT32_MAX             (4294967295U)
+#endif
+
+#endif /* ! FLEXINT_H */
+
+#ifdef __cplusplus
+
+/* The "const" storage-class-modifier is valid. */
+#define YY_USE_CONST
+
+#else	/* ! __cplusplus */
+
+/* C99 requires __STDC__ to be defined as 1. */
+#if defined (__STDC__)
+
+#define YY_USE_CONST
+
+#endif	/* defined (__STDC__) */
+#endif	/* ! __cplusplus */
+
+#ifdef YY_USE_CONST
+#define yyconst const
+#else
+#define yyconst
+#endif
+
+/* Returned upon end-of-file. */
+#define YY_NULL 0
+
+/* Promotes a possibly negative, possibly signed char to an unsigned
+ * integer for use as an array index.  If the signed char is negative,
+ * we want to instead treat it as an 8-bit unsigned char, hence the
+ * double cast.
+ */
+#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
+
+/* Enter a start condition.  This macro really ought to take a parameter,
+ * but we do it the disgusting crufty way forced on us by the ()-less
+ * definition of BEGIN.
+ */
+#define BEGIN (yy_start) = 1 + 2 *
+
+/* Translate the current start state into a value that can be later handed
+ * to BEGIN to return to the state.  The YYSTATE alias is for lex
+ * compatibility.
+ */
+#define YY_START (((yy_start) - 1) / 2)
+#define YYSTATE YY_START
+
+/* Action number for EOF rule of a given start state. */
+#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
+
+/* Special action meaning "start processing a new file". */
+#define YY_NEW_FILE eggyyrestart(eggyyin  )
+
+#define YY_END_OF_BUFFER_CHAR 0
+
+/* Size of default input buffer. */
+#ifndef YY_BUF_SIZE
+#define YY_BUF_SIZE 16384
+#endif
+
+/* The state buf must be large enough to hold one state per character in the main buffer.
+ */
+#define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
+
+#ifndef YY_TYPEDEF_YY_BUFFER_STATE
+#define YY_TYPEDEF_YY_BUFFER_STATE
+typedef struct yy_buffer_state *YY_BUFFER_STATE;
+#endif
+
+extern int eggyyleng;
+
+extern FILE *eggyyin, *eggyyout;
+
+#define EOB_ACT_CONTINUE_SCAN 0
+#define EOB_ACT_END_OF_FILE 1
+#define EOB_ACT_LAST_MATCH 2
+
+    #define YY_LESS_LINENO(n)
+    
+/* Return all but the first "n" matched characters back to the input stream. */
+#define yyless(n) \
+	do \
+		{ \
+		/* Undo effects of setting up eggyytext. */ \
+        int yyless_macro_arg = (n); \
+        YY_LESS_LINENO(yyless_macro_arg);\
+		*yy_cp = (yy_hold_char); \
+		YY_RESTORE_YY_MORE_OFFSET \
+		(yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
+		YY_DO_BEFORE_ACTION; /* set up eggyytext again */ \
+		} \
+	while ( 0 )
+
+#define unput(c) yyunput( c, (yytext_ptr)  )
+
+#ifndef YY_TYPEDEF_YY_SIZE_T
+#define YY_TYPEDEF_YY_SIZE_T
+typedef size_t yy_size_t;
+#endif
+
+#ifndef YY_STRUCT_YY_BUFFER_STATE
+#define YY_STRUCT_YY_BUFFER_STATE
+struct yy_buffer_state
+	{
+	FILE *yy_input_file;
+
+	char *yy_ch_buf;		/* input buffer */
+	char *yy_buf_pos;		/* current position in input buffer */
+
+	/* Size of input buffer in bytes, not including room for EOB
+	 * characters.
+	 */
+	yy_size_t yy_buf_size;
+
+	/* Number of characters read into yy_ch_buf, not including EOB
+	 * characters.
+	 */
+	int yy_n_chars;
+
+	/* Whether we "own" the buffer - i.e., we know we created it,
+	 * and can realloc() it to grow it, and should free() it to
+	 * delete it.
+	 */
+	int yy_is_our_buffer;
+
+	/* Whether this is an "interactive" input source; if so, and
+	 * if we're using stdio for input, then we want to use getc()
+	 * instead of fread(), to make sure we stop fetching input after
+	 * each newline.
+	 */
+	int yy_is_interactive;
+
+	/* Whether we're considered to be at the beginning of a line.
+	 * If so, '^' rules will be active on the next match, otherwise
+	 * not.
+	 */
+	int yy_at_bol;
+
+    int yy_bs_lineno; /**< The line count. */
+    int yy_bs_column; /**< The column count. */
+    
+	/* Whether to try to fill the input buffer when we reach the
+	 * end of it.
+	 */
+	int yy_fill_buffer;
+
+	int yy_buffer_status;
+
+#define YY_BUFFER_NEW 0
+#define YY_BUFFER_NORMAL 1
+	/* When an EOF's been seen but there's still some text to process
+	 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
+	 * shouldn't try reading from the input source any more.  We might
+	 * still have a bunch of tokens to match, though, because of
+	 * possible backing-up.
+	 *
+	 * When we actually see the EOF, we change the status to "new"
+	 * (via eggyyrestart()), so that the user can continue scanning by
+	 * just pointing eggyyin at a new input file.
+	 */
+#define YY_BUFFER_EOF_PENDING 2
+
+	};
+#endif /* !YY_STRUCT_YY_BUFFER_STATE */
+
+/* Stack of input buffers. */
+static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
+static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
+static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
+
+/* We provide macros for accessing buffer states in case in the
+ * future we want to put the buffer states in a more general
+ * "scanner state".
+ *
+ * Returns the top of the stack, or NULL.
+ */
+#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
+                          ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
+                          : NULL)
+
+/* Same as previous macro, but useful when we know that the buffer stack is not
+ * NULL or when we need an lvalue. For internal use only.
+ */
+#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
+
+/* yy_hold_char holds the character lost when eggyytext is formed. */
+static char yy_hold_char;
+static int yy_n_chars;		/* number of characters read into yy_ch_buf */
+int eggyyleng;
+
+/* Points to current character in buffer. */
+static char *yy_c_buf_p = (char *) 0;
+static int yy_init = 0;		/* whether we need to initialize */
+static int yy_start = 0;	/* start state number */
+
+/* Flag which is used to allow eggyywrap()'s to do buffer switches
+ * instead of setting up a fresh eggyyin.  A bit of a hack ...
+ */
+static int yy_did_buffer_switch_on_eof;
+
+void eggyyrestart (FILE *input_file  );
+void eggyy_switch_to_buffer (YY_BUFFER_STATE new_buffer  );
+YY_BUFFER_STATE eggyy_create_buffer (FILE *file,int size  );
+void eggyy_delete_buffer (YY_BUFFER_STATE b  );
+void eggyy_flush_buffer (YY_BUFFER_STATE b  );
+void eggyypush_buffer_state (YY_BUFFER_STATE new_buffer  );
+void eggyypop_buffer_state (void );
+
+static void eggyyensure_buffer_stack (void );
+static void eggyy_load_buffer_state (void );
+static void eggyy_init_buffer (YY_BUFFER_STATE b,FILE *file  );
+
+#define YY_FLUSH_BUFFER eggyy_flush_buffer(YY_CURRENT_BUFFER )
+
+YY_BUFFER_STATE eggyy_scan_buffer (char *base,yy_size_t size  );
+YY_BUFFER_STATE eggyy_scan_string (yyconst char *yy_str  );
+YY_BUFFER_STATE eggyy_scan_bytes (yyconst char *bytes,int len  );
+
+void *eggyyalloc (yy_size_t  );
+void *eggyyrealloc (void *,yy_size_t  );
+void eggyyfree (void *  );
+
+#define yy_new_buffer eggyy_create_buffer
+
+#define yy_set_interactive(is_interactive) \
+	{ \
+	if ( ! YY_CURRENT_BUFFER ){ \
+        eggyyensure_buffer_stack (); \
+		YY_CURRENT_BUFFER_LVALUE =    \
+            eggyy_create_buffer(eggyyin,YY_BUF_SIZE ); \
+	} \
+	YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
+	}
+
+#define yy_set_bol(at_bol) \
+	{ \
+	if ( ! YY_CURRENT_BUFFER ){\
+        eggyyensure_buffer_stack (); \
+		YY_CURRENT_BUFFER_LVALUE =    \
+            eggyy_create_buffer(eggyyin,YY_BUF_SIZE ); \
+	} \
+	YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
+	}
+
+#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
+
+typedef unsigned char YY_CHAR;
+
+FILE *eggyyin = (FILE *) 0, *eggyyout = (FILE *) 0;
+
+typedef int yy_state_type;
+
+extern int eggyylineno;
+
+int eggyylineno = 1;
+
+extern char *eggyytext;
+#define yytext_ptr eggyytext
+
+static yy_state_type yy_get_previous_state (void );
+static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
+static int yy_get_next_buffer (void );
+static void yy_fatal_error (yyconst char msg[]  );
+
+/* Done after the current pattern has been matched and before the
+ * corresponding action - sets up eggyytext.
+ */
+#define YY_DO_BEFORE_ACTION \
+	(yytext_ptr) = yy_bp; \
+	eggyyleng = (size_t) (yy_cp - yy_bp); \
+	(yy_hold_char) = *yy_cp; \
+	*yy_cp = '\0'; \
+	(yy_c_buf_p) = yy_cp;
+
+#define YY_NUM_RULES 99
+#define YY_END_OF_BUFFER 100
+/* This struct is not used in this scanner,
+   but its presence is necessary. */
+struct yy_trans_info
+	{
+	flex_int32_t yy_verify;
+	flex_int32_t yy_nxt;
+	};
+static yyconst flex_int16_t yy_accept[577] =
+    {   0,
+        0,    0,  100,   98,    2,    1,   97,   98,   98,   98,
+       98,   89,   89,   89,   98,   98,   98,    5,   98,    1,
+       98,   89,   89,   98,   89,    4,    3,   89,   91,   98,
+       90,   89,   98,   98,   98,   98,   98,   98,   98,   98,
+       98,   98,   98,   98,   98,   98,   98,   98,   98,   98,
+       98,   98,   98,   98,   89,   98,    3,    3,   91,   98,
+       89,   90,   98,   98,   98,   98,   98,   98,   98,   98,
+       98,   98,   98,   98,   98,   98,   98,   98,   98,   98,
+       98,   98,   98,   98,   98,   98,   98,   98,   98,   98,
+       98,   98,   98,   98,   98,   98,   98,   98,   98,   98,
+
+       98,   98,   98,   98,   98,   98,   98,   98,   98,   98,
+       98,   98,   98,   98,   98,   65,   98,   98,   98,   93,
+       98,   98,   94,   98,   98,   98,   98,   98,   98,   98,
+       98,   98,   98,   98,   98,   19,   98,   98,   98,   98,
+       98,   98,   98,   98,   98,   98,   98,   98,   98,   98,
+       98,   98,   98,   98,   98,   98,   98,   98,   98,   98,
+       98,   98,   98,   98,   98,   98,   98,   98,   98,   98,
+       98,   98,   98,   98,   98,   98,   98,   98,   98,   98,
+       98,   98,   80,   98,   98,   98,   98,   98,   98,   98,
+       98,   98,   98,   98,   98,   98,   98,   98,   98,   98,
+
+       98,   98,   98,   98,   25,   98,   98,   98,   98,   98,
+       23,   98,   98,   98,   98,   98,   98,   98,   98,   98,
+       98,   98,   98,   98,   98,   98,   98,   98,   98,   98,
+       98,   98,   51,   98,   98,   98,   98,   98,   98,   98,
+       98,   98,   98,   98,   66,   98,   98,   98,   98,   98,
+       98,   98,   98,   77,   98,   98,   98,   98,   98,   98,
+       92,   98,   95,   98,   98,   98,   98,   98,   98,   98,
+       98,   98,   98,   98,   98,   20,   98,   98,   98,   98,
+       98,   24,   98,   29,   98,   98,   98,   98,   98,   36,
+       37,   98,   98,   98,   42,   98,   98,   98,   98,   98,
+
+       98,   98,   52,   98,   54,   55,   56,   98,   98,   98,
+       98,   98,   98,   98,   98,   98,   98,   98,   98,   73,
+       98,   76,   98,   98,   98,   98,   98,   98,   92,   96,
+       98,   98,    8,   98,   98,   98,   13,   98,   98,   98,
+       98,   98,   98,   98,   98,   22,   27,   98,   30,   98,
+       98,   32,   33,   98,   98,   41,   98,   98,   98,   98,
+       47,   98,   98,   98,   98,   98,   98,   59,   98,   98,
+       98,   64,   98,   98,   98,   98,   98,   98,   98,   98,
+       98,   98,   98,   98,   98,   98,   98,   98,   98,   12,
+       14,   98,   98,   98,   98,   98,   98,   98,   98,   98,
+
+       98,   98,   98,   98,   43,   98,   98,   98,   98,   98,
+       98,   53,   57,   58,   98,   98,   62,   98,   98,   98,
+       98,   98,   98,   98,   98,   98,   98,   98,   83,   98,
+       98,   98,   98,   98,   98,   98,   98,   98,   15,   16,
+       98,   98,   98,   98,   21,   98,   34,   98,   98,   39,
+       40,   98,   98,   98,   98,   98,   50,   98,   61,   98,
+       67,   68,   69,   98,   98,   98,   98,   78,   79,   81,
+       98,   98,   98,   82,   98,   98,   98,   98,   11,   98,
+       98,   98,   26,   98,   35,   38,   98,   98,   98,   98,
+       98,   60,   98,   70,   98,   98,   98,   98,   98,   98,
+
+       98,   87,   98,   98,   98,    9,   98,   17,   98,   98,
+       98,   98,   98,   98,   98,   98,   98,   71,   72,   98,
+       98,   98,   98,   86,   98,   98,   98,   98,   98,   98,
+       98,   44,   98,   46,   48,   49,   98,   98,   98,   84,
+       85,   98,    6,    7,   98,   98,   31,   98,   98,   98,
+       74,   98,   88,   98,   98,   98,   45,   98,   98,   98,
+       98,   98,   98,   75,   98,   98,   98,   98,   10,   98,
+       98,   63,   18,   98,   28,    0
+    } ;
+
+static yyconst flex_int32_t yy_ec[256] =
+    {   0,
+        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
+        1,    1,    2,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    2,    1,    4,    5,    6,    1,    1,    1,    1,
+        1,    7,    8,    1,    9,   10,   11,   12,   13,   14,
+       15,   16,   14,   14,   14,   14,   14,    1,    1,   17,
+        1,   18,    1,    1,   19,   20,   21,   22,   23,   24,
+       25,   26,   27,   28,   29,   30,   31,   32,   33,   34,
+       35,   36,   37,   38,   39,   40,   41,   42,   43,   44,
+        1,    1,    1,    1,   45,    1,   46,   47,   48,   49,
+
+       50,   51,   52,   53,   54,   55,   56,   57,   58,   59,
+       60,   61,   62,   63,   64,   65,   66,   67,   68,   69,
+       70,   71,   72,    1,   72,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1
+    } ;
+
+static yyconst flex_int32_t yy_meta[73] =
+    {   0,
+        1,    2,    3,    2,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    2
+    } ;
+
+static yyconst flex_int16_t yy_base[582] =
+    {   0,
+        0,   71, 1210,    0, 1211,    0, 1211,    8,   23,   28,
+       18,  134,   55,   79,  203,    2,    0, 1211,    0,    0,
+       94,  101,  122,   17,  146,    0,   24,  151,   18,  174,
+      263,  276,   31,  277,  289,  338,   72,   64,   69,   71,
+       80,  146,  261,  284,  300,  108,  312,  352,  376,  293,
+      401,  129,  146,  139,  442,  151,   49,    0,   35,  179,
+      339,    0,  151,  271,  259,  286,  337,  309,  352,  349,
+      383, 1191,  354,  374,  391,  384,  390,  400,  396,  394,
+      392,  404,  407,  411,  432,  422,  427,  434,  434,  430,
+      448,  449,  437,  438,  447,  455,  440,  452,  457,  463,
+
+      446,  466,  467,  453,  470,  463,  494,  449,  475,  501,
+      465,  478, 1190,  492,  493,    0,  487,  498,  498,    0,
+     1195,  504,    0,  500,  502,  508,  515,  507,  505,  517,
+      504,  505,  513,  537,  509,    0,  514, 1188,  538,  523,
+      537,  554,  552, 1187,  532,  558,  555,  541,  551,  544,
+      551,  547,  563,  553,  570,  566,  566,  560,  572,  571,
+      573,  559,  567,  568, 1186,  596,  603,  593,  597,  589,
+      607,  592,  601, 1185,  607,  605,  602,  604,  613,  620,
+     1184,  608,    0,  609,  612,  610,  618, 1195,  611,  628,
+      641,  635,  653,  656,  661,  646,  653, 1193,  661,  658,
+
+      663,  655,  667, 1181,    0,  651,  672,  662,  675,  671,
+        0, 1180,  666, 1179,  664,  660,  681,  663,  665, 1178,
+     1177,  668,  678,  677, 1176,  695,  682,  702,  694,  714,
+      697,  711,    0, 1175,  699, 1174, 1173, 1172,  711,  720,
+      717,  715,  723,  722,    0,  724,  721,  710,  726,  715,
+     1171,  721, 1170,    0,  721,  722,  723,  735,  726,  742,
+      777,  744,    0,  741,  748, 1169,  754,  763,  779, 1168,
+      781,  783,  774,  775,  781,    0,  779,  778,  793, 1167,
+     1166,    0,  786,    0, 1165,  793,  784, 1164, 1163,    0,
+        0,  790,  776, 1147,    0,  789,  801,  782, 1146,  799,
+
+      811,  815,    0,  827,    0,    0,    0,  820,  816, 1144,
+      821,  822,  829, 1137,  824,  820,  823,  822,  837,    0,
+      837,    0,  825,  826,  828,  827,  832,  839,    0,    0,
+      849,  852,    0,  855,  857, 1132,    0, 1131,  862,  854,
+      872,  870,  866,  884,  876,    0,    0,  886,    0,  885,
+      888,    0,    0,  891,   40,    0, 1128,  872,  874,  876,
+        0,  890,  889,  885,  755,  526,  413,    0,  897,  895,
+      903,    0,  885,  887,  903,  901,  895,  911,  909,  909,
+      911,  912,  943,  919,  931,  929,  921,  927,  934,    0,
+        0,  412,  411,  933,  948,  934,  946,  410,  930,  409,
+
+      948,  942,  373,  371,    0,  938,  942,  937,  958,  957,
+      369,    0,    0,    0,  961,  367,    0,  955,  365,  361,
+      330,  956,  964,  964,  980,  322,  316,  300,    0,  978,
+      979,  990,  290,  983,  983,  981,  996,  288,    0,    0,
+      981,  983,  989,  278,    0, 1000,    0,  277,  275,    0,
+        0,  984, 1001,  992,  996, 1005,    0,  189,    0, 1000,
+        0,    0,    0,  181, 1002, 1011, 1030,    0,    0,    0,
+     1008, 1003, 1014,    0, 1024, 1028, 1016, 1050,    0,  167,
+     1034, 1027,    0, 1030,    0,    0, 1047, 1053, 1050, 1037,
+     1038,    0, 1055,    0,  159,  138, 1059, 1041, 1049, 1052,
+
+      137,    0, 1048, 1064, 1064,    0, 1065,    0, 1052, 1067,
+     1054,  134, 1074,  124,  122,  115, 1069,    0,    0, 1069,
+     1072,  105,  104,    0,  114,  101,  100, 1078, 1068,   79,
+     1095,    0, 1097,    0,    0,    0, 1083,   48, 1097,    0,
+        0,   46,    0,    0, 1087, 1089,    0, 1085,   44, 1102,
+        0, 1096,    0, 1108, 1094, 1099,    0, 1101,   42, 1100,
+     1116, 1107, 1109,    0,   40, 1111, 1110,   39,    0,   34,
+     1114,    0,    0,   27,    0, 1211, 1171,    0, 1174, 1176,
+     1178
+    } ;
+
+static yyconst flex_int16_t yy_def[582] =
+    {   0,
+      577,  577,  576,  578,  576,  579,  576,  578,  578,  578,
+      578,  578,  578,  578,  576,  578,  578,  576,  578,  579,
+      578,  578,  578,  578,  578,  578,  580,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  580,  581,  578,  578,
+      578,   31,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  261,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
+      578,  578,  578,  578,  578,    0,  576,  576,  576,  576,
+      576
+    } ;
+
+static yyconst flex_int16_t yy_nxt[1284] =
+    {   0,
+       19,    5,    6,    7,  576,  576,  576,    8,    9,   10,
+       11,   12,   13,   14,   14,   14,   15,   21,   54,   22,
+       22,   22,   22,   22,   26,   58,   16,   58,   27,   59,
+       59,   17,   21,   53,   22,   23,   22,   22,   22,   25,
+       25,   25,   25,   25,  575,   54,   59,   59,   56,   24,
+       58,  573,   58,   16,  403,  404,  572,  569,   17,  564,
+       53,  557,   64,  553,   32,  551,   22,   22,   22,   22,
+       22,   18,    5,    6,    7,   56,   24,   30,    8,    9,
+       10,   11,   12,   13,   14,   14,   14,   15,   28,   64,
+       22,   22,   22,   22,   22,   58,  547,   16,   83,   84,
+
+       85,   30,   17,   86,   30,   25,   25,   25,   25,   25,
+       28,   87,   22,   22,   22,   22,   22,  544,  543,  542,
+       58,  541,  540,   30,   16,   83,   84,   85,   30,   17,
+       86,   55,  536,   22,   22,   22,   22,   22,   87,  535,
+       98,  534,   18,   28,   30,   22,   22,   22,   22,   22,
+       30,  532,  119,   29,  524,  519,   30,   25,   25,   25,
+       25,   25,   25,   25,   25,   25,   25,   98,   30,  120,
+      121,   30,   88,   30,  123,   31,  518,  124,   89,  119,
+       29,   60,   60,   30,  508,   61,   61,   61,   61,   61,
+       61,   61,   61,   61,   61,   30,  120,  121,  494,   88,
+
+       30,  123,   31,   19,  124,   89,  492,   19,   19,   19,
+       19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
+       19,   33,   34,   35,   36,   19,   37,   38,   19,   39,
+       40,   41,   42,   43,   44,   45,   46,   19,   47,   48,
+       49,   50,   51,   19,   52,   19,   19,   19,   33,   34,
+       35,   36,   19,   37,   38,   19,   39,   40,   41,   42,
+       43,   44,   45,   46,   19,   47,   48,   49,   50,   51,
+       19,   52,   19,   19,   62,   62,   62,   62,   62,   90,
+       63,   62,   62,   62,   62,   62,   62,   25,   25,   25,
+       25,   25,  486,   91,  485,  483,   92,  125,   30,   65,
+
+       66,  112,  126,   67,  127,  479,   90,  474,   62,   62,
+       62,   62,   62,   62,   69,   68,   93,  470,   70,   95,
+       91,   71,   94,   92,  125,   30,   65,   66,   72,  126,
+       67,  127,  113,  469,   99,   96,  100,  114,   97,  468,
+      130,   69,   68,   93,  101,   70,   95,  463,   71,   94,
+       61,   61,   61,   61,   61,   72,   73,  102,   74,  113,
+       75,   99,   96,  100,   76,   97,  128,  130,  129,   77,
+      131,  101,  103,   78,  104,   79,   80,  105,  462,   81,
+       82,  132,  461,   73,  459,   74,  457,   75,  451,  137,
+      450,   76,  106,  128,  107,  129,   77,  131,  108,  103,
+
+       78,  104,   79,   80,  105,  109,   81,   82,  132,  115,
+      138,  110,  133,  134,  139,  135,  137,  111,  116,  106,
+      140,  107,  141,  117,  142,  108,  447,  445,  440,  439,
+      414,  143,  109,  144,  145,  146,  147,  138,  110,  133,
+      134,  139,  135,  148,  111,  118,  122,  140,  151,  141,
+      117,  142,  149,   25,   25,   25,   25,   25,  143,  152,
+      144,  145,  146,  147,   30,  153,  154,  155,  150,  156,
+      148,  157,  158,  159,  160,  151,  161,  162,  163,  149,
+      165,  164,  166,  167,  168,  169,  152,  170,  171,  172,
+      176,   30,  153,  154,  155,  150,  156,  177,  157,  158,
+
+      159,  160,  181,  161,  162,  163,  182,  165,  164,  166,
+      167,  168,  169,  173,  170,  171,  172,  176,  174,  178,
+      184,  185,  186,  179,  177,  175,  187,  180,  188,  181,
+      190,  191,  192,  182,  193,  194,  195,  196,  197,  198,
+      173,  199,  200,  413,  203,  174,  178,  184,  185,  186,
+      179,  204,  175,  187,  180,  188,  206,  190,  191,  192,
+      207,  193,  194,  195,  196,  197,  198,  201,  199,  200,
+      202,  203,  208,  209,  210,  212,  213,  214,  204,  215,
+      216,  217,  218,  206,  219,  220,  221,  207,  224,  225,
+      226,  227,  222,  228,  201,  229,  230,  202,  231,  208,
+
+      209,  210,  212,  213,  214,  223,  215,  216,  217,  218,
+      232,  219,  220,  221,  234,  224,  225,  226,  227,  222,
+      228,  235,  229,  230,  239,  231,  240,  241,  242,  243,
+      244,  246,  223,  249,  247,  250,  251,  232,  252,  255,
+      256,  234,  248,  257,  236,  237,  238,  258,  235,  259,
+      253,  239,  261,  240,  241,  242,  243,  244,  246,  262,
+      249,  247,  250,  251,  263,  252,  255,  256,  264,  248,
+      257,  236,  237,  238,  258,  265,  259,  253,  266,  261,
+      267,  268,  269,  271,  272,  273,  262,  274,  275,  277,
+      278,  263,  279,  280,  281,  264,  283,  285,  286,  287,
+
+      288,  289,  265,  292,  293,  266,  294,  267,  268,  269,
+      271,  272,  273,  296,  274,  275,  277,  278,  297,  279,
+      280,  281,  298,  283,  285,  286,  287,  288,  289,  299,
+      292,  293,  300,  294,  301,  302,  304,  308,  309,  311,
+      296,  312,  310,  313,  314,  297,  315,  316,  317,  298,
+      318,  319,  321,  323,  324,  325,  299,  326,  327,  300,
+      328,  301,  302,  304,  308,  309,  311,  330,  312,  310,
+      313,  314,  412,  315,  316,  317,  331,  318,  319,  321,
+      323,  324,  325,  332,  326,  327,  334,  328,  329,  329,
+      329,  329,  329,  335,  330,  329,  329,  329,  329,  329,
+
+      329,  336,  338,  331,  339,  340,  341,  342,  343,  344,
+      332,  345,  348,  334,  350,  351,  354,  355,  357,  360,
+      335,  358,  329,  329,  329,  329,  329,  329,  336,  338,
+      362,  339,  340,  341,  342,  343,  344,  359,  345,  348,
+      363,  350,  351,  354,  355,  357,  360,  364,  358,  365,
+      366,  367,  369,  370,  371,  373,  374,  362,  375,  376,
+      377,  379,  380,  381,  359,  382,  378,  363,  383,  384,
+      385,  386,  387,  388,  364,  389,  365,  366,  367,  369,
+      370,  371,  373,  374,  392,  375,  376,  377,  379,  380,
+      381,  393,  382,  378,  394,  383,  384,  385,  386,  387,
+
+      388,  395,  389,  396,  397,  398,  399,  400,  401,  402,
+      406,  392,  407,  408,  409,  410,  411,  415,  393,  416,
+      417,  394,  419,  418,  420,  421,  422,  423,  395,  424,
+      396,  397,  398,  399,  400,  401,  402,  406,  425,  407,
+      408,  409,  410,  411,  415,  426,  416,  427,  428,  419,
+      418,  420,  421,  422,  423,  433,  424,  434,  435,  436,
+      429,  430,  437,  438,  441,  425,  442,  443,  444,  446,
+      448,  449,  426,  452,  427,  428,  431,  453,  432,  454,
+      455,  456,  433,  458,  434,  435,  436,  460,  430,  437,
+      438,  441,  464,  442,  443,  444,  446,  448,  449,  465,
+
+      452,  466,  467,  431,  453,  432,  454,  455,  456,  471,
+      458,  472,  473,  475,  460,  476,  477,  478,  480,  464,
+      481,  482,  484,  487,  488,  489,  465,  490,  466,  467,
+      491,  493,  495,  496,  499,  500,  471,  501,  472,  473,
+      475,  502,  476,  477,  478,  480,  504,  481,  482,  484,
+      487,  488,  489,  497,  490,  505,  509,  491,  493,  495,
+      496,  499,  500,  510,  501,  511,  498,  506,  503,  512,
+      507,  513,  514,  504,  515,  516,  517,  520,  521,  522,
+      497,  523,  505,  509,  525,  526,  527,  528,  529,  530,
+      510,  531,  511,  498,  533,  537,  512,  507,  513,  514,
+
+      538,  515,  516,  517,  520,  521,  522,  539,  523,  545,
+      546,  525,  526,  527,  528,  529,  530,  548,  531,  549,
+      550,  533,  537,  552,  554,  555,  556,  538,  558,  559,
+      560,  561,  562,  563,  539,  565,  545,  546,  566,  567,
+      568,  570,  571,  574,  548,  405,  549,  550,  391,  390,
+      552,  554,  555,  556,  372,  558,  559,  560,  561,  562,
+      563,  368,  565,  361,  356,  566,  567,  568,  570,  571,
+      574,    4,    4,    4,   20,   20,   57,   57,   58,   58,
+      353,  352,  349,  347,  346,  337,  333,  322,  320,  307,
+      306,  305,  303,  295,  291,  290,  284,  282,  276,  270,
+
+      260,  254,  245,  233,  211,  205,  189,  183,  136,  576,
+        3,  576,  576,  576,  576,  576,  576,  576,  576,  576,
+      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
+      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
+      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
+      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
+      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
+      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
+      576,  576,  576
+    } ;
+
+static yyconst flex_int16_t yy_chk[1284] =
+    {   0,
+      578,    1,    1,    1,    0,    0,    0,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    8,   17,    8,
+        8,    8,    8,    8,   11,   27,    1,   27,   11,   29,
+       29,    1,    9,   16,    9,    9,    9,    9,    9,   10,
+       10,   10,   10,   10,  574,   17,   59,   59,   24,    9,
+       57,  570,   57,    1,  355,  355,  568,  565,    1,  559,
+       16,  549,   33,  542,   13,  538,   13,   13,   13,   13,
+       13,    1,    2,    2,    2,   24,    9,   13,    2,    2,
+        2,    2,    2,    2,    2,    2,    2,    2,   14,   33,
+       14,   14,   14,   14,   14,   27,  530,    2,   37,   38,
+
+       39,   14,    2,   40,   13,   21,   21,   21,   21,   21,
+       22,   41,   22,   22,   22,   22,   22,  527,  526,  525,
+       57,  523,  522,   22,    2,   37,   38,   39,   14,    2,
+       40,   23,  516,   23,   23,   23,   23,   23,   41,  515,
+       46,  514,    2,   12,   23,   12,   12,   12,   12,   12,
+       22,  512,   52,   12,  501,  496,   12,   25,   25,   25,
+       25,   25,   28,   28,   28,   28,   28,   46,   25,   53,
+       54,   23,   42,   28,   56,   12,  495,   63,   42,   52,
+       12,   30,   30,   12,  480,   30,   30,   30,   30,   30,
+       60,   60,   60,   60,   60,   25,   53,   54,  464,   42,
+
+       28,   56,   12,   15,   63,   42,  458,   15,   15,   15,
+       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
+       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
+       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
+       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
+       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
+       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
+       15,   15,   15,   15,   31,   31,   31,   31,   31,   43,
+       32,   31,   31,   31,   31,   31,   31,   32,   32,   32,
+       32,   32,  449,   43,  448,  444,   43,   64,   32,   34,
+
+       34,   50,   65,   34,   66,  438,   43,  433,   31,   31,
+       31,   31,   31,   31,   35,   34,   44,  428,   35,   45,
+       43,   35,   44,   43,   64,   32,   34,   34,   35,   65,
+       34,   66,   50,  427,   47,   45,   47,   50,   45,  426,
+       68,   35,   34,   44,   47,   35,   45,  421,   35,   44,
+       61,   61,   61,   61,   61,   35,   36,   48,   36,   50,
+       36,   47,   45,   47,   36,   45,   67,   68,   67,   36,
+       69,   47,   48,   36,   48,   36,   36,   48,  420,   36,
+       36,   70,  419,   36,  416,   36,  411,   36,  404,   73,
+      403,   36,   48,   67,   49,   67,   36,   69,   49,   48,
+
+       36,   48,   36,   36,   48,   49,   36,   36,   70,   51,
+       74,   49,   71,   71,   75,   71,   73,   49,   51,   48,
+       76,   49,   77,   51,   78,   49,  400,  398,  393,  392,
+      367,   79,   49,   80,   81,   82,   83,   74,   49,   71,
+       71,   75,   71,   84,   49,   51,   55,   76,   86,   77,
+       51,   78,   85,   55,   55,   55,   55,   55,   79,   87,
+       80,   81,   82,   83,   55,   88,   89,   90,   85,   91,
+       84,   92,   93,   94,   95,   86,   96,   97,   98,   85,
+       99,   98,  100,  101,  102,  103,   87,  104,  105,  106,
+      108,   55,   88,   89,   90,   85,   91,  109,   92,   93,
+
+       94,   95,  111,   96,   97,   98,  112,   99,   98,  100,
+      101,  102,  103,  107,  104,  105,  106,  108,  107,  110,
+      114,  115,  117,  110,  109,  107,  118,  110,  119,  111,
+      122,  124,  125,  112,  126,  127,  128,  129,  130,  131,
+      107,  132,  133,  366,  135,  107,  110,  114,  115,  117,
+      110,  137,  107,  118,  110,  119,  139,  122,  124,  125,
+      140,  126,  127,  128,  129,  130,  131,  134,  132,  133,
+      134,  135,  141,  142,  143,  145,  146,  147,  137,  148,
+      149,  150,  151,  139,  152,  153,  154,  140,  156,  157,
+      158,  159,  155,  160,  134,  161,  162,  134,  163,  141,
+
+      142,  143,  145,  146,  147,  155,  148,  149,  150,  151,
+      164,  152,  153,  154,  166,  156,  157,  158,  159,  155,
+      160,  167,  161,  162,  168,  163,  169,  170,  171,  172,
+      173,  175,  155,  177,  176,  178,  179,  164,  180,  182,
+      184,  166,  176,  185,  167,  167,  167,  186,  167,  187,
+      180,  168,  189,  169,  170,  171,  172,  173,  175,  190,
+      177,  176,  178,  179,  191,  180,  182,  184,  192,  176,
+      185,  167,  167,  167,  186,  193,  187,  180,  194,  189,
+      195,  196,  197,  199,  200,  201,  190,  202,  203,  206,
+      207,  191,  208,  209,  210,  192,  213,  215,  216,  217,
+
+      218,  219,  193,  222,  223,  194,  224,  195,  196,  197,
+      199,  200,  201,  226,  202,  203,  206,  207,  227,  208,
+      209,  210,  228,  213,  215,  216,  217,  218,  219,  229,
+      222,  223,  230,  224,  231,  232,  235,  239,  240,  241,
+      226,  242,  240,  243,  244,  227,  246,  247,  248,  228,
+      249,  250,  252,  255,  256,  257,  229,  258,  259,  230,
+      260,  231,  232,  235,  239,  240,  241,  262,  242,  240,
+      243,  244,  365,  246,  247,  248,  264,  249,  250,  252,
+      255,  256,  257,  265,  258,  259,  267,  260,  261,  261,
+      261,  261,  261,  268,  262,  261,  261,  261,  261,  261,
+
+      261,  269,  271,  264,  272,  273,  274,  275,  277,  278,
+      265,  279,  283,  267,  286,  287,  292,  293,  296,  298,
+      268,  297,  261,  261,  261,  261,  261,  261,  269,  271,
+      300,  272,  273,  274,  275,  277,  278,  297,  279,  283,
+      301,  286,  287,  292,  293,  296,  298,  302,  297,  304,
+      308,  309,  311,  312,  313,  315,  316,  300,  317,  318,
+      319,  321,  323,  324,  297,  325,  319,  301,  326,  327,
+      328,  331,  332,  334,  302,  335,  304,  308,  309,  311,
+      312,  313,  315,  316,  339,  317,  318,  319,  321,  323,
+      324,  340,  325,  319,  341,  326,  327,  328,  331,  332,
+
+      334,  342,  335,  343,  344,  345,  348,  350,  351,  354,
+      358,  339,  359,  360,  362,  363,  364,  369,  340,  370,
+      371,  341,  373,  371,  374,  375,  376,  377,  342,  378,
+      343,  344,  345,  348,  350,  351,  354,  358,  379,  359,
+      360,  362,  363,  364,  369,  380,  370,  381,  382,  373,
+      371,  374,  375,  376,  377,  384,  378,  385,  386,  387,
+      383,  383,  388,  389,  394,  379,  395,  396,  397,  399,
+      401,  402,  380,  406,  381,  382,  383,  407,  383,  408,
+      409,  410,  384,  415,  385,  386,  387,  418,  383,  388,
+      389,  394,  422,  395,  396,  397,  399,  401,  402,  423,
+
+      406,  424,  425,  383,  407,  383,  408,  409,  410,  430,
+      415,  431,  432,  434,  418,  435,  436,  437,  441,  422,
+      442,  443,  446,  452,  453,  454,  423,  455,  424,  425,
+      456,  460,  465,  466,  471,  472,  430,  473,  431,  432,
+      434,  475,  435,  436,  437,  441,  476,  442,  443,  446,
+      452,  453,  454,  467,  455,  477,  481,  456,  460,  465,
+      466,  471,  472,  482,  473,  484,  467,  478,  475,  487,
+      478,  488,  489,  476,  490,  491,  493,  497,  498,  499,
+      467,  500,  477,  481,  503,  504,  505,  507,  509,  510,
+      482,  511,  484,  467,  513,  517,  487,  478,  488,  489,
+
+      520,  490,  491,  493,  497,  498,  499,  521,  500,  528,
+      529,  503,  504,  505,  507,  509,  510,  531,  511,  533,
+      537,  513,  517,  539,  545,  546,  548,  520,  550,  552,
+      554,  555,  556,  558,  521,  560,  528,  529,  561,  562,
+      563,  566,  567,  571,  531,  357,  533,  537,  338,  336,
+      539,  545,  546,  548,  314,  550,  552,  554,  555,  556,
+      558,  310,  560,  299,  294,  561,  562,  563,  566,  567,
+      571,  577,  577,  577,  579,  579,  580,  580,  581,  581,
+      289,  288,  285,  281,  280,  270,  266,  253,  251,  238,
+      237,  236,  234,  225,  221,  220,  214,  212,  204,  198,
+
+      188,  181,  174,  165,  144,  138,  121,  113,   72,    3,
+      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
+      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
+      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
+      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
+      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
+      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
+      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
+      576,  576,  576
+    } ;
+
+static yy_state_type yy_last_accepting_state;
+static char *yy_last_accepting_cpos;
+
+extern int eggyy_flex_debug;
+int eggyy_flex_debug = 0;
+
+/* The intent behind this definition is that it'll catch
+ * any uses of REJECT which flex missed.
+ */
+#define REJECT reject_used_but_not_detected
+#define yymore() yymore_used_but_not_detected
+#define YY_MORE_ADJ 0
+#define YY_RESTORE_YY_MORE_OFFSET
+char *eggyytext;
+#line 1 "lexer.lxx"
+/*
+// Filename: lexer.l
+// Created by:  drose (16Jan99)
+// 
+////////////////////////////////////////////////////////////////////
+*/
+#line 9 "lexer.lxx"
+#include "pandabase.h"
+#include "lexerDefs.h"
+#include "parserDefs.h"
+#include "config_egg.h"
+#include "parser.h"
+#include "indent.h"
+#include "pnotify.h"
+#include "lightMutex.h"
+#include "thread.h"
+#include "pstrtod.h"
+
+#include <math.h>
+
+extern "C" int eggyywrap(void);  // declared below.
+
+static int yyinput(void);        // declared by flex.
+
+
+////////////////////////////////////////////////////////////////////
+// Static variables
+////////////////////////////////////////////////////////////////////
+
+// This mutex protects all of these global variables. 
+LightMutex egg_lock; 
+
+// We'll increment line_number and col_number as we parse the file, so
+// that we can report the position of an error.
+static int line_number = 0;
+static int col_number = 0;
+
+// current_line holds as much of the current line as will fit.  Its
+// only purpose is for printing it out to report an error to the user.
+static const int max_error_width = 1024;
+static char current_line[max_error_width + 1];
+
+static int error_count = 0;
+static int warning_count = 0;
+
+// This is the pointer to the current input stream.
+static istream *input_p = NULL;
+
+// This is the name of the egg file we're parsing.  We keep it so we
+// can print it out for error messages.
+static string egg_filename;
+
+// This is the initial token state returned by the lexer.  It allows
+// the yacc grammar to start from initial points.
+static int initial_token;
+
+////////////////////////////////////////////////////////////////////
+// Defining the interface to the lexer.
+////////////////////////////////////////////////////////////////////
+
+void
+egg_init_lexer(istream &in, const string &filename) {
+  input_p = &in;
+  egg_filename = filename;
+  line_number = 0;
+  col_number = 0;
+  error_count = 0;
+  warning_count = 0;
+  initial_token = START_EGG;
+}
+
+void
+egg_start_group_body() {
+  /* Set the initial state to begin within a group_body context,
+     instead of at the beginning of the egg file. */
+  initial_token = START_GROUP_BODY;
+}
+
+void
+egg_start_texture_body() {
+  initial_token = START_TEXTURE_BODY;
+}
+
+void
+egg_start_primitive_body() {
+  initial_token = START_PRIMITIVE_BODY;
+}
+
+int
+egg_error_count() {
+  return error_count;
+}
+
+int
+egg_warning_count() {
+  return warning_count;
+}
+
+
+////////////////////////////////////////////////////////////////////
+// Internal support functions.
+////////////////////////////////////////////////////////////////////
+
+int
+eggyywrap(void) {
+  return 1;
+}
+
+void
+eggyyerror(const string &msg) {
+  if (egg_cat.is_error()) {
+    ostream &out = egg_cat.error(false);
+
+    out << "\nError";
+    if (!egg_filename.empty()) {
+      out << " in " << egg_filename;
+    }
+    out 
+      << " at line " << line_number << ", column " << col_number << ":\n"
+      << setiosflags(Notify::get_literal_flag())
+      << current_line << "\n";
+    indent(out, col_number-1) 
+      << "^\n" << msg << "\n\n" 
+      << resetiosflags(Notify::get_literal_flag()) << flush;
+  }
+  error_count++;
+}
+
+void
+eggyyerror(ostringstream &strm) {
+  string s = strm.str();
+  eggyyerror(s);
+}
+
+void
+eggyywarning(const string &msg) {
+  if (egg_cat.is_warning()) {
+    ostream &out = egg_cat.warning(false);
+
+    out << "\nWarning";
+    if (!egg_filename.empty()) {
+      out << " in " << egg_filename;
+    }
+    out 
+      << " at line " << line_number << ", column " << col_number << ":\n"
+      << setiosflags(Notify::get_literal_flag())
+      << current_line << "\n";
+    indent(out, col_number-1) 
+      << "^\n" << msg << "\n\n" 
+      << resetiosflags(Notify::get_literal_flag()) << flush;
+  }
+  warning_count++;
+}
+
+void
+eggyywarning(ostringstream &strm) {
+  string s = strm.str();
+  eggyywarning(s);
+}
+
+// Now define a function to take input from an istream instead of a
+// stdio FILE pointer.  This is flex-specific.
+static void
+input_chars(char *buffer, int &result, int max_size) {
+  nassertv(input_p != NULL);
+  if (*input_p) {
+    input_p->read(buffer, max_size);
+    result = input_p->gcount();
+
+    if (line_number == 0) {
+      // This is a special case.  If we are reading the very first bit
+      // from the stream, copy it into the current_line array.  This
+      // is because the \n.* rule below, which fills current_line
+      // normally, doesn't catch the first line.
+      int length = min(max_error_width, result);
+      strncpy(current_line, buffer, length);
+      current_line[length] = '\0';
+      line_number++;
+      col_number = 0;
+
+      // Truncate it at the newline.
+      char *end = strchr(current_line, '\n');
+      if (end != NULL) {
+        *end = '\0';
+      }
+    }
+
+  } else {
+    // End of file or I/O error.
+    result = 0;
+  }
+  Thread::consider_yield();
+}
+#undef YY_INPUT
+
+// Define this macro carefully, since different flex versions call it
+// with a different type for result.
+#define YY_INPUT(buffer, result, max_size) { \
+  int int_result; \
+  input_chars((buffer), int_result, (max_size)); \
+  (result) = int_result; \
+}
+
+// read_char reads and returns a single character, incrementing the
+// supplied line and column numbers as appropriate.  A convenience
+// function for the scanning functions below.
+static int
+read_char(int &line, int &col) {
+  int c = yyinput();
+  if (c == '\n') {
+    line++;
+    col = 0;
+  } else {
+    col++;
+  }
+  return c;
+}
+
+// scan_quoted_string reads a string delimited by quotation marks and
+// returns it.
+static string
+scan_quoted_string() {
+  string result;
+
+  // We don't touch the current line number and column number during
+  // scanning, so that if we detect an error while scanning the string
+  // (e.g. an unterminated string), we'll report the error as
+  // occurring at the start of the string, not at the end--somewhat
+  // more convenient for the user.
+
+  // Instead of adjusting the global line_number and col_number
+  // variables, we'll operate on our own local variables for the
+  // interim.
+  int line = line_number;
+  int col = col_number;
+
+  int c;
+  c = read_char(line, col);
+  while (c != '"' && c != EOF) {
+    result += c;
+    c = read_char(line, col);
+  }
+
+  if (c == EOF) {
+    eggyyerror("This quotation mark is unterminated.");
+  }
+
+  line_number = line;
+  col_number = col;
+
+  return result;
+}
+
+// eat_c_comment scans past all characters up until the first */
+// encountered.
+static void
+eat_c_comment() {
+  // As above, we'll operate on our own local copies of line_number
+  // and col_number within this function.
+
+  int line = line_number;
+  int col = col_number;
+
+  int c, last_c;
+  
+  last_c = '\0';
+  c = read_char(line, col);
+  while (c != EOF && !(last_c == '*' && c == '/')) {
+    if (last_c == '/' && c == '*') {
+      ostringstream errmsg;
+      errmsg << "This comment contains a nested /* symbol at line "
+             << line << ", column " << col-1 << "--possibly unclosed?"
+             << ends;
+      eggyywarning(errmsg);
+    }
+    last_c = c;
+    c = read_char(line, col);
+  }
+
+  if (c == EOF) {
+    eggyyerror("This comment marker is unclosed.");
+  }
+
+  line_number = line;
+  col_number = col;
+}
+
+
+// accept() is called below as each piece is pulled off and
+// accepted by the lexer; it increments the current column number.
+INLINE void accept() {
+  col_number += eggyyleng;
+}
+
+#line 1236 "lex.yy.c"
+
+#define INITIAL 0
+
+#ifndef YY_NO_UNISTD_H
+/* Special case for "unistd.h", since it is non-ANSI. We include it way
+ * down here because we want the user's section 1 to have been scanned first.
+ * The user has a chance to override it with an option.
+ */
+#endif
+
+#ifndef YY_EXTRA_TYPE
+#define YY_EXTRA_TYPE void *
+#endif
+
+static int yy_init_globals (void );
+
+/* Accessor methods to globals.
+   These are made visible to non-reentrant scanners for convenience. */
+
+int eggyylex_destroy (void );
+
+int eggyyget_debug (void );
+
+void eggyyset_debug (int debug_flag  );
+
+YY_EXTRA_TYPE eggyyget_extra (void );
+
+void eggyyset_extra (YY_EXTRA_TYPE user_defined  );
+
+FILE *eggyyget_in (void );
+
+void eggyyset_in  (FILE * in_str  );
+
+FILE *eggyyget_out (void );
+
+void eggyyset_out  (FILE * out_str  );
+
+int eggyyget_leng (void );
+
+char *eggyyget_text (void );
+
+int eggyyget_lineno (void );
+
+void eggyyset_lineno (int line_number  );
+
+/* Macros after this point can all be overridden by user definitions in
+ * section 1.
+ */
+
+#ifndef YY_SKIP_YYWRAP
+#ifdef __cplusplus
+extern "C" int eggyywrap (void );
+#else
+extern int eggyywrap (void );
+#endif
+#endif
+
+    static void yyunput (int c,char *buf_ptr  );
+    
+#ifndef yytext_ptr
+static void yy_flex_strncpy (char *,yyconst char *,int );
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen (yyconst char * );
+#endif
+
+#ifndef YY_NO_INPUT
+
+#ifdef __cplusplus
+static int yyinput (void );
+#else
+static int input (void );
+#endif
+
+#endif
+
+/* Amount of stuff to slurp up with each read. */
+#ifndef YY_READ_BUF_SIZE
+#define YY_READ_BUF_SIZE 8192
+#endif
+
+/* Copy whatever the last rule matched to the standard output. */
+#ifndef ECHO
+/* This used to be an fputs(), but since the string might contain NUL's,
+ * we now use fwrite().
+ */
+#define ECHO fwrite( eggyytext, eggyyleng, 1, eggyyout )
+#endif
+
+/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
+ * is returned in "result".
+ */
+#ifndef YY_INPUT
+#define YY_INPUT(buf,result,max_size) \
+	if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
+		{ \
+		int c = '*'; \
+		int n; \
+		for ( n = 0; n < max_size && \
+			     (c = getc( eggyyin )) != EOF && c != '\n'; ++n ) \
+			buf[n] = (char) c; \
+		if ( c == '\n' ) \
+			buf[n++] = (char) c; \
+		if ( c == EOF && ferror( eggyyin ) ) \
+			YY_FATAL_ERROR( "input in flex scanner failed" ); \
+		result = n; \
+		} \
+	else \
+		{ \
+		errno=0; \
+		while ( (result = fread(buf, 1, max_size, eggyyin))==0 && ferror(eggyyin)) \
+			{ \
+			if( errno != EINTR) \
+				{ \
+				YY_FATAL_ERROR( "input in flex scanner failed" ); \
+				break; \
+				} \
+			errno=0; \
+			clearerr(eggyyin); \
+			} \
+		}\
+\
+
+#endif
+
+/* No semi-colon after return; correct usage is to write "yyterminate();" -
+ * we don't want an extra ';' after the "return" because that will cause
+ * some compilers to complain about unreachable statements.
+ */
+#ifndef yyterminate
+#define yyterminate() return YY_NULL
+#endif
+
+/* Number of entries by which start-condition stack grows. */
+#ifndef YY_START_STACK_INCR
+#define YY_START_STACK_INCR 25
+#endif
+
+/* Report a fatal error. */
+#ifndef YY_FATAL_ERROR
+#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
+#endif
+
+/* end tables serialization structures and prototypes */
+
+/* Default declaration of generated scanner - a define so the user can
+ * easily add parameters.
+ */
+#ifndef YY_DECL
+#define YY_DECL_IS_OURS 1
+
+extern int eggyylex (void);
+
+#define YY_DECL int eggyylex (void)
+#endif /* !YY_DECL */
+
+/* Code executed at the beginning of each rule, after eggyytext and eggyyleng
+ * have been set up.
+ */
+#ifndef YY_USER_ACTION
+#define YY_USER_ACTION
+#endif
+
+/* Code executed at the end of each rule. */
+#ifndef YY_BREAK
+#define YY_BREAK break;
+#endif
+
+#define YY_RULE_SETUP \
+	YY_USER_ACTION
+
+/** The main scanner function which does all the work.
+ */
+YY_DECL
+{
+	register yy_state_type yy_current_state;
+	register char *yy_cp, *yy_bp;
+	register int yy_act;
+    
+#line 302 "lexer.lxx"
+
+
+
+  if (initial_token != 0) {
+    int t = initial_token;
+    initial_token = 0;
+    return t;
+  }
+
+
+#line 1429 "lex.yy.c"
+
+	if ( !(yy_init) )
+		{
+		(yy_init) = 1;
+
+#ifdef YY_USER_INIT
+		YY_USER_INIT;
+#endif
+
+		if ( ! (yy_start) )
+			(yy_start) = 1;	/* first start state */
+
+		if ( ! eggyyin )
+			eggyyin = stdin;
+
+		if ( ! eggyyout )
+			eggyyout = stdout;
+
+		if ( ! YY_CURRENT_BUFFER ) {
+			eggyyensure_buffer_stack ();
+			YY_CURRENT_BUFFER_LVALUE =
+				eggyy_create_buffer(eggyyin,YY_BUF_SIZE );
+		}
+
+		eggyy_load_buffer_state( );
+		}
+
+	while ( 1 )		/* loops until end-of-file is reached */
+		{
+		yy_cp = (yy_c_buf_p);
+
+		/* Support of eggyytext. */
+		*yy_cp = (yy_hold_char);
+
+		/* yy_bp points to the position in yy_ch_buf of the start of
+		 * the current run.
+		 */
+		yy_bp = yy_cp;
+
+		yy_current_state = (yy_start);
+yy_match:
+		do
+			{
+			register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
+			if ( yy_accept[yy_current_state] )
+				{
+				(yy_last_accepting_state) = yy_current_state;
+				(yy_last_accepting_cpos) = yy_cp;
+				}
+			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+				{
+				yy_current_state = (int) yy_def[yy_current_state];
+				if ( yy_current_state >= 577 )
+					yy_c = yy_meta[(unsigned int) yy_c];
+				}
+			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+			++yy_cp;
+			}
+		while ( yy_base[yy_current_state] != 1211 );
+
+yy_find_action:
+		yy_act = yy_accept[yy_current_state];
+		if ( yy_act == 0 )
+			{ /* have to back up */
+			yy_cp = (yy_last_accepting_cpos);
+			yy_current_state = (yy_last_accepting_state);
+			yy_act = yy_accept[yy_current_state];
+			}
+
+		YY_DO_BEFORE_ACTION;
+
+do_action:	/* This label is used only to access EOF actions. */
+
+		switch ( yy_act )
+	{ /* beginning of action switch */
+			case 0: /* must back up */
+			/* undo the effects of YY_DO_BEFORE_ACTION */
+			*yy_cp = (yy_hold_char);
+			yy_cp = (yy_last_accepting_cpos);
+			yy_current_state = (yy_last_accepting_state);
+			goto yy_find_action;
+
+case 1:
+/* rule 1 can match eol */
+YY_RULE_SETUP
+#line 312 "lexer.lxx"
+{
+  // New line.  Save a copy of the line so we can print it out for the
+  // benefit of the user in case we get an error.
+
+  strncpy(current_line, eggyytext+1, max_error_width);
+  current_line[max_error_width] = '\0';
+  line_number++;
+  col_number=0;
+
+  // Return the whole line to the lexer, except the newline character,
+  // which we eat.
+  yyless(1);
+}
+	YY_BREAK
+case 2:
+YY_RULE_SETUP
+#line 326 "lexer.lxx"
+{ 
+  // Eat whitespace.
+  accept();
+}
+	YY_BREAK
+case 3:
+YY_RULE_SETUP
+#line 331 "lexer.lxx"
+{ 
+  // Eat C++-style comments.
+  accept();
+}
+	YY_BREAK
+case 4:
+YY_RULE_SETUP
+#line 336 "lexer.lxx"
+{
+  // Eat C-style comments.
+  accept();
+  eat_c_comment(); 
+}
+	YY_BREAK
+case 5:
+YY_RULE_SETUP
+#line 342 "lexer.lxx"
+{
+  // Send curly braces as themselves.
+  accept(); 
+  return eggyytext[0];
+}
+	YY_BREAK
+case 6:
+YY_RULE_SETUP
+#line 350 "lexer.lxx"
+{
+  accept();
+  return ANIMPRELOAD;
+}
+	YY_BREAK
+case 7:
+YY_RULE_SETUP
+#line 354 "lexer.lxx"
+{
+  accept();
+  return BEZIERCURVE;
+}
+	YY_BREAK
+case 8:
+YY_RULE_SETUP
+#line 358 "lexer.lxx"
+{
+  accept();
+  return BFACE;
+}
+	YY_BREAK
+case 9:
+YY_RULE_SETUP
+#line 362 "lexer.lxx"
+{
+  accept();
+  return BILLBOARD;
+}
+	YY_BREAK
+case 10:
+YY_RULE_SETUP
+#line 366 "lexer.lxx"
+{
+  accept();
+  return BILLBOARDCENTER;
+}
+	YY_BREAK
+case 11:
+YY_RULE_SETUP
+#line 370 "lexer.lxx"
+{
+  accept();
+  return BINORMAL;
+}
+	YY_BREAK
+case 12:
+YY_RULE_SETUP
+#line 374 "lexer.lxx"
+{
+  accept();
+  return BUNDLE;
+}
+	YY_BREAK
+case 13:
+YY_RULE_SETUP
+#line 378 "lexer.lxx"
+{
+  accept();
+  return SCALAR;
+}
+	YY_BREAK
+case 14:
+YY_RULE_SETUP
+#line 382 "lexer.lxx"
+{
+  accept();
+  return CLOSED;
+}
+	YY_BREAK
+case 15:
+YY_RULE_SETUP
+#line 386 "lexer.lxx"
+{
+  accept();
+  return COLLIDE;
+}
+	YY_BREAK
+case 16:
+YY_RULE_SETUP
+#line 390 "lexer.lxx"
+{
+  accept();
+  return COMMENT;
+}
+	YY_BREAK
+case 17:
+YY_RULE_SETUP
+#line 394 "lexer.lxx"
+{
+  accept();
+  return COMPONENT;
+}
+	YY_BREAK
+case 18:
+YY_RULE_SETUP
+#line 398 "lexer.lxx"
+{
+  accept();
+  return COORDSYSTEM;
+}
+	YY_BREAK
+case 19:
+YY_RULE_SETUP
+#line 402 "lexer.lxx"
+{
+  accept();
+  return CV;
+}
+	YY_BREAK
+case 20:
+YY_RULE_SETUP
+#line 406 "lexer.lxx"
+{
+  accept();
+  return DART;
+}
+	YY_BREAK
+case 21:
+YY_RULE_SETUP
+#line 410 "lexer.lxx"
+{
+  accept();
+  return DNORMAL;
+}
+	YY_BREAK
+case 22:
+YY_RULE_SETUP
+#line 414 "lexer.lxx"
+{
+  accept();
+  return DRGBA;
+}
+	YY_BREAK
+case 23:
+YY_RULE_SETUP
+#line 418 "lexer.lxx"
+{
+  accept();
+  return DUV;
+}
+	YY_BREAK
+case 24:
+YY_RULE_SETUP
+#line 422 "lexer.lxx"
+{
+  accept();
+  return DXYZ;
+}
+	YY_BREAK
+case 25:
+YY_RULE_SETUP
+#line 426 "lexer.lxx"
+{
+  accept();
+  return DCS;
+}
+	YY_BREAK
+case 26:
+YY_RULE_SETUP
+#line 430 "lexer.lxx"
+{
+  accept();
+  return DISTANCE;
+}
+	YY_BREAK
+case 27:
+YY_RULE_SETUP
+#line 434 "lexer.lxx"
+{
+  accept();
+  return DTREF;
+}
+	YY_BREAK
+case 28:
+YY_RULE_SETUP
+#line 438 "lexer.lxx"
+{
+  accept();
+  return DYNAMICVERTEXPOOL;
+}
+	YY_BREAK
+case 29:
+YY_RULE_SETUP
+#line 442 "lexer.lxx"
+{
+  accept();
+  return EXTERNAL_FILE;
+}
+	YY_BREAK
+case 30:
+YY_RULE_SETUP
+#line 446 "lexer.lxx"
+{
+  accept();
+  return GROUP;
+}
+	YY_BREAK
+case 31:
+YY_RULE_SETUP
+#line 450 "lexer.lxx"
+{
+  accept();
+  return DEFAULTPOSE;
+}
+	YY_BREAK
+case 32:
+YY_RULE_SETUP
+#line 454 "lexer.lxx"
+{
+  accept();
+  return JOINT;
+}
+	YY_BREAK
+case 33:
+YY_RULE_SETUP
+#line 458 "lexer.lxx"
+{
+  accept();
+  return KNOTS;
+}
+	YY_BREAK
+case 34:
+YY_RULE_SETUP
+#line 462 "lexer.lxx"
+{
+  accept();
+  return INCLUDE;
+}
+	YY_BREAK
+case 35:
+YY_RULE_SETUP
+#line 466 "lexer.lxx"
+{
+  accept();
+  return INSTANCE;
+}
+	YY_BREAK
+case 36:
+YY_RULE_SETUP
+#line 470 "lexer.lxx"
+{
+  accept();
+  return LINE;
+}
+	YY_BREAK
+case 37:
+YY_RULE_SETUP
+#line 474 "lexer.lxx"
+{
+  accept();
+  return LOOP;
+}
+	YY_BREAK
+case 38:
+YY_RULE_SETUP
+#line 478 "lexer.lxx"
+{
+  accept();
+  return MATERIAL;
+}
+	YY_BREAK
+case 39:
+YY_RULE_SETUP
+#line 482 "lexer.lxx"
+{
+  accept();
+  return MATRIX3;
+}
+	YY_BREAK
+case 40:
+YY_RULE_SETUP
+#line 486 "lexer.lxx"
+{
+  accept();
+  return MATRIX4;
+}
+	YY_BREAK
+case 41:
+YY_RULE_SETUP
+#line 490 "lexer.lxx"
+{
+  accept();
+  return MODEL;
+}
+	YY_BREAK
+case 42:
+YY_RULE_SETUP
+#line 494 "lexer.lxx"
+{
+  accept();
+  return MREF;
+}
+	YY_BREAK
+case 43:
+YY_RULE_SETUP
+#line 498 "lexer.lxx"
+{
+  accept();
+  return NORMAL;
+}
+	YY_BREAK
+case 44:
+YY_RULE_SETUP
+#line 502 "lexer.lxx"
+{
+  accept();
+  return NURBSCURVE;
+}
+	YY_BREAK
+case 45:
+YY_RULE_SETUP
+#line 506 "lexer.lxx"
+{
+  accept();
+  return NURBSSURFACE;
+}
+	YY_BREAK
+case 46:
+YY_RULE_SETUP
+#line 510 "lexer.lxx"
+{
+  accept();
+  return OBJECTTYPE;
+}
+	YY_BREAK
+case 47:
+YY_RULE_SETUP
+#line 514 "lexer.lxx"
+{
+  accept();
+  return ORDER;
+}
+	YY_BREAK
+case 48:
+YY_RULE_SETUP
+#line 518 "lexer.lxx"
+{
+  accept();
+  return OUTTANGENT;
+}
+	YY_BREAK
+case 49:
+YY_RULE_SETUP
+#line 522 "lexer.lxx"
+{
+  accept();
+  return POINTLIGHT;
+}
+	YY_BREAK
+case 50:
+YY_RULE_SETUP
+#line 526 "lexer.lxx"
+{
+  accept();
+  return POLYGON;
+}
+	YY_BREAK
+case 51:
+YY_RULE_SETUP
+#line 530 "lexer.lxx"
+{
+  accept();
+  return REF;
+}
+	YY_BREAK
+case 52:
+YY_RULE_SETUP
+#line 534 "lexer.lxx"
+{
+  accept();
+  return RGBA;
+}
+	YY_BREAK
+case 53:
+YY_RULE_SETUP
+#line 538 "lexer.lxx"
+{
+  accept();
+  return ROTATE;
+}
+	YY_BREAK
+case 54:
+YY_RULE_SETUP
+#line 542 "lexer.lxx"
+{
+  accept();
+  return ROTX;
+}
+	YY_BREAK
+case 55:
+YY_RULE_SETUP
+#line 546 "lexer.lxx"
+{
+  accept();
+  return ROTY;
+}
+	YY_BREAK
+case 56:
+YY_RULE_SETUP
+#line 550 "lexer.lxx"
+{
+  accept();
+  return ROTZ;
+}
+	YY_BREAK
+case 57:
+YY_RULE_SETUP
+#line 554 "lexer.lxx"
+{
+  accept();
+  return SANIM;
+}
+	YY_BREAK
+case 58:
+YY_RULE_SETUP
+#line 558 "lexer.lxx"
+{
+  accept();
+  return SCALAR;
+}
+	YY_BREAK
+case 59:
+YY_RULE_SETUP
+#line 562 "lexer.lxx"
+{
+  accept();
+  return SCALE;
+}
+	YY_BREAK
+case 60:
+YY_RULE_SETUP
+#line 566 "lexer.lxx"
+{
+  accept();
+  return SEQUENCE;
+}
+	YY_BREAK
+case 61:
+YY_RULE_SETUP
+#line 570 "lexer.lxx"
+{
+  accept();
+  return SHADING;
+}
+	YY_BREAK
+case 62:
+YY_RULE_SETUP
+#line 574 "lexer.lxx"
+{
+  accept();
+  return SWITCH;
+}
+	YY_BREAK
+case 63:
+YY_RULE_SETUP
+#line 578 "lexer.lxx"
+{
+  accept();
+  return SWITCHCONDITION;
+}
+	YY_BREAK
+case 64:
+YY_RULE_SETUP
+#line 582 "lexer.lxx"
+{
+  accept();
+  return TABLE;
+}
+	YY_BREAK
+case 65:
+YY_RULE_SETUP
+#line 586 "lexer.lxx"
+{
+  accept();
+  return TABLE_V;
+}
+	YY_BREAK
+case 66:
+YY_RULE_SETUP
+#line 590 "lexer.lxx"
+{
+  accept();
+  return TAG;
+}
+	YY_BREAK
+case 67:
+YY_RULE_SETUP
+#line 594 "lexer.lxx"
+{
+  accept();
+  return TANGENT;
+}
+	YY_BREAK
+case 68:
+YY_RULE_SETUP
+#line 598 "lexer.lxx"
+{
+  accept();
+  return TEXLIST;
+}
+	YY_BREAK
+case 69:
+YY_RULE_SETUP
+#line 602 "lexer.lxx"
+{
+  accept();
+  return TEXTURE;
+}
+	YY_BREAK
+case 70:
+YY_RULE_SETUP
+#line 606 "lexer.lxx"
+{
+  accept();
+  return TLENGTHS;
+}
+	YY_BREAK
+case 71:
+YY_RULE_SETUP
+#line 610 "lexer.lxx"
+{
+  accept();
+  return TRANSFORM;
+}
+	YY_BREAK
+case 72:
+YY_RULE_SETUP
+#line 614 "lexer.lxx"
+{
+  accept();
+  return TRANSLATE;
+}
+	YY_BREAK
+case 73:
+YY_RULE_SETUP
+#line 618 "lexer.lxx"
+{
+  accept();
+  return TREF;
+}
+	YY_BREAK
+case 74:
+YY_RULE_SETUP
+#line 622 "lexer.lxx"
+{
+  accept();
+  return TRIANGLEFAN;
+}
+	YY_BREAK
+case 75:
+YY_RULE_SETUP
+#line 626 "lexer.lxx"
+{
+  accept();
+  return TRIANGLESTRIP;
+}
+	YY_BREAK
+case 76:
+YY_RULE_SETUP
+#line 630 "lexer.lxx"
+{
+  accept();
+  return TRIM;
+}
+	YY_BREAK
+case 77:
+YY_RULE_SETUP
+#line 634 "lexer.lxx"
+{
+  accept();
+  return TXT;
+}
+	YY_BREAK
+case 78:
+YY_RULE_SETUP
+#line 638 "lexer.lxx"
+{
+  accept();
+  return UKNOTS;
+}
+	YY_BREAK
+case 79:
+YY_RULE_SETUP
+#line 642 "lexer.lxx"
+{
+  accept();
+  return UKNOTS;
+}
+	YY_BREAK
+case 80:
+YY_RULE_SETUP
+#line 646 "lexer.lxx"
+{
+  accept();
+  return UV;
+}
+	YY_BREAK
+case 81:
+YY_RULE_SETUP
+#line 650 "lexer.lxx"
+{
+  accept();
+  return VKNOTS;
+}
+	YY_BREAK
+case 82:
+YY_RULE_SETUP
+#line 654 "lexer.lxx"
+{
+  accept();
+  return VKNOTS;
+}
+	YY_BREAK
+case 83:
+YY_RULE_SETUP
+#line 658 "lexer.lxx"
+{
+  accept();
+  return VERTEX;
+}
+	YY_BREAK
+case 84:
+YY_RULE_SETUP
+#line 662 "lexer.lxx"
+{
+  accept();
+  return VERTEXANIM;
+}
+	YY_BREAK
+case 85:
+YY_RULE_SETUP
+#line 666 "lexer.lxx"
+{
+  accept();
+  return VERTEXPOOL;
+}
+	YY_BREAK
+case 86:
+YY_RULE_SETUP
+#line 670 "lexer.lxx"
+{
+  accept();
+  return VERTEXREF;
+}
+	YY_BREAK
+case 87:
+YY_RULE_SETUP
+#line 674 "lexer.lxx"
+{
+  accept();
+  return XFMANIM;
+}
+	YY_BREAK
+case 88:
+YY_RULE_SETUP
+#line 678 "lexer.lxx"
+{
+  accept();
+  return XFMSANIM;
+}
+	YY_BREAK
+case 89:
+YY_RULE_SETUP
+#line 685 "lexer.lxx"
+{ 
+  // An integer or floating-point number.
+  accept(); 
+  eggyylval._number = patof(eggyytext); 
+  eggyylval._string = eggyytext;
+  return EGG_NUMBER; 
+}
+	YY_BREAK
+case 90:
+YY_RULE_SETUP
+#line 693 "lexer.lxx"
+{
+  // A hexadecimal integer number.
+  accept(); 
+  eggyylval._ulong = strtoul(eggyytext+2, NULL, 16);
+  eggyylval._string = eggyytext;
+  return EGG_ULONG; 
+}
+	YY_BREAK
+case 91:
+YY_RULE_SETUP
+#line 701 "lexer.lxx"
+{
+  // A binary integer number.
+  accept(); 
+  eggyylval._ulong = strtoul(eggyytext+2, NULL, 2);
+  eggyylval._string = eggyytext;
+  return EGG_ULONG; 
+}
+	YY_BREAK
+case 92:
+YY_RULE_SETUP
+#line 709 "lexer.lxx"
+{
+  // not-a-number.  These sometimes show up in egg files accidentally.
+  accept(); 
+  memset(&eggyylval._number, 0, sizeof(eggyylval._number));
+  *(unsigned long *)&eggyylval._number = strtoul(eggyytext+3, NULL, 0);
+  eggyylval._string = eggyytext;
+  return EGG_NUMBER;
+}
+	YY_BREAK
+case 93:
+YY_RULE_SETUP
+#line 718 "lexer.lxx"
+{ 
+  // infinity.  As above.
+  accept(); 
+  eggyylval._number = HUGE_VAL;
+  eggyylval._string = eggyytext;
+  return EGG_NUMBER; 
+}
+	YY_BREAK
+case 94:
+YY_RULE_SETUP
+#line 726 "lexer.lxx"
+{
+  // minus infinity.  As above.
+  accept(); 
+  eggyylval._number = -HUGE_VAL;
+  eggyylval._string = eggyytext;
+  return EGG_NUMBER; 
+}
+	YY_BREAK
+case 95:
+YY_RULE_SETUP
+#line 734 "lexer.lxx"
+{ 
+  // infinity, on Win32.  As above.
+  accept(); 
+  eggyylval._number = HUGE_VAL;
+  eggyylval._string = eggyytext;
+  return EGG_NUMBER; 
+}
+	YY_BREAK
+case 96:
+YY_RULE_SETUP
+#line 742 "lexer.lxx"
+{
+  // minus infinity, on Win32.  As above.
+  accept(); 
+  eggyylval._number = -HUGE_VAL;
+  eggyylval._string = eggyytext;
+  return EGG_NUMBER; 
+}
+	YY_BREAK
+case 97:
+YY_RULE_SETUP
+#line 751 "lexer.lxx"
+{
+  // Quoted string.
+  accept();
+  eggyylval._string = scan_quoted_string();
+  return EGG_STRING;
+}
+	YY_BREAK
+case 98:
+YY_RULE_SETUP
+#line 758 "lexer.lxx"
+{ 
+  // Unquoted string.
+  accept();
+  eggyylval._string = eggyytext;
+  return EGG_STRING;
+}
+	YY_BREAK
+case 99:
+YY_RULE_SETUP
+#line 764 "lexer.lxx"
+ECHO;
+	YY_BREAK
+#line 2342 "lex.yy.c"
+case YY_STATE_EOF(INITIAL):
+	yyterminate();
+
+	case YY_END_OF_BUFFER:
+		{
+		/* Amount of text matched not including the EOB char. */
+		int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
+
+		/* Undo the effects of YY_DO_BEFORE_ACTION. */
+		*yy_cp = (yy_hold_char);
+		YY_RESTORE_YY_MORE_OFFSET
+
+		if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
+			{
+			/* We're scanning a new file or input source.  It's
+			 * possible that this happened because the user
+			 * just pointed eggyyin at a new source and called
+			 * eggyylex().  If so, then we have to assure
+			 * consistency between YY_CURRENT_BUFFER and our
+			 * globals.  Here is the right place to do so, because
+			 * this is the first action (other than possibly a
+			 * back-up) that will match for the new input source.
+			 */
+			(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
+			YY_CURRENT_BUFFER_LVALUE->yy_input_file = eggyyin;
+			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
+			}
+
+		/* Note that here we test for yy_c_buf_p "<=" to the position
+		 * of the first EOB in the buffer, since yy_c_buf_p will
+		 * already have been incremented past the NUL character
+		 * (since all states make transitions on EOB to the
+		 * end-of-buffer state).  Contrast this with the test
+		 * in input().
+		 */
+		if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
+			{ /* This was really a NUL. */
+			yy_state_type yy_next_state;
+
+			(yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
+
+			yy_current_state = yy_get_previous_state(  );
+
+			/* Okay, we're now positioned to make the NUL
+			 * transition.  We couldn't have
+			 * yy_get_previous_state() go ahead and do it
+			 * for us because it doesn't know how to deal
+			 * with the possibility of jamming (and we don't
+			 * want to build jamming into it because then it
+			 * will run more slowly).
+			 */
+
+			yy_next_state = yy_try_NUL_trans( yy_current_state );
+
+			yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+
+			if ( yy_next_state )
+				{
+				/* Consume the NUL. */
+				yy_cp = ++(yy_c_buf_p);
+				yy_current_state = yy_next_state;
+				goto yy_match;
+				}
+
+			else
+				{
+				yy_cp = (yy_c_buf_p);
+				goto yy_find_action;
+				}
+			}
+
+		else switch ( yy_get_next_buffer(  ) )
+			{
+			case EOB_ACT_END_OF_FILE:
+				{
+				(yy_did_buffer_switch_on_eof) = 0;
+
+				if ( eggyywrap( ) )
+					{
+					/* Note: because we've taken care in
+					 * yy_get_next_buffer() to have set up
+					 * eggyytext, we can now set up
+					 * yy_c_buf_p so that if some total
+					 * hoser (like flex itself) wants to
+					 * call the scanner after we return the
+					 * YY_NULL, it'll still work - another
+					 * YY_NULL will get returned.
+					 */
+					(yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
+
+					yy_act = YY_STATE_EOF(YY_START);
+					goto do_action;
+					}
+
+				else
+					{
+					if ( ! (yy_did_buffer_switch_on_eof) )
+						YY_NEW_FILE;
+					}
+				break;
+				}
+
+			case EOB_ACT_CONTINUE_SCAN:
+				(yy_c_buf_p) =
+					(yytext_ptr) + yy_amount_of_matched_text;
+
+				yy_current_state = yy_get_previous_state(  );
+
+				yy_cp = (yy_c_buf_p);
+				yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+				goto yy_match;
+
+			case EOB_ACT_LAST_MATCH:
+				(yy_c_buf_p) =
+				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
+
+				yy_current_state = yy_get_previous_state(  );
+
+				yy_cp = (yy_c_buf_p);
+				yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+				goto yy_find_action;
+			}
+		break;
+		}
+
+	default:
+		YY_FATAL_ERROR(
+			"fatal flex scanner internal error--no action found" );
+	} /* end of action switch */
+		} /* end of scanning one token */
+} /* end of eggyylex */
+
+/* yy_get_next_buffer - try to read in a new buffer
+ *
+ * Returns a code representing an action:
+ *	EOB_ACT_LAST_MATCH -
+ *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position
+ *	EOB_ACT_END_OF_FILE - end of file
+ */
+static int yy_get_next_buffer (void)
+{
+    	register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
+	register char *source = (yytext_ptr);
+	register int number_to_move, i;
+	int ret_val;
+
+	if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
+		YY_FATAL_ERROR(
+		"fatal flex scanner internal error--end of buffer missed" );
+
+	if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
+		{ /* Don't try to fill the buffer, so this is an EOF. */
+		if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
+			{
+			/* We matched a single character, the EOB, so
+			 * treat this as a final EOF.
+			 */
+			return EOB_ACT_END_OF_FILE;
+			}
+
+		else
+			{
+			/* We matched some text prior to the EOB, first
+			 * process it.
+			 */
+			return EOB_ACT_LAST_MATCH;
+			}
+		}
+
+	/* Try to read more data. */
+
+	/* First move last chars to start of buffer. */
+	number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
+
+	for ( i = 0; i < number_to_move; ++i )
+		*(dest++) = *(source++);
+
+	if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
+		/* don't do the read, it's not guaranteed to return an EOF,
+		 * just force an EOF
+		 */
+		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
+
+	else
+		{
+			int num_to_read =
+			YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
+
+		while ( num_to_read <= 0 )
+			{ /* Not enough room in the buffer - grow it. */
+
+			/* just a shorter name for the current buffer */
+			YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
+
+			int yy_c_buf_p_offset =
+				(int) ((yy_c_buf_p) - b->yy_ch_buf);
+
+			if ( b->yy_is_our_buffer )
+				{
+				int new_size = b->yy_buf_size * 2;
+
+				if ( new_size <= 0 )
+					b->yy_buf_size += b->yy_buf_size / 8;
+				else
+					b->yy_buf_size *= 2;
+
+				b->yy_ch_buf = (char *)
+					/* Include room in for 2 EOB chars. */
+					eggyyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
+				}
+			else
+				/* Can't grow it, we don't own it. */
+				b->yy_ch_buf = 0;
+
+			if ( ! b->yy_ch_buf )
+				YY_FATAL_ERROR(
+				"fatal error - scanner input buffer overflow" );
+
+			(yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
+
+			num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
+						number_to_move - 1;
+
+			}
+
+		if ( num_to_read > YY_READ_BUF_SIZE )
+			num_to_read = YY_READ_BUF_SIZE;
+
+		/* Read in more data. */
+		YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
+			(yy_n_chars), (size_t) num_to_read );
+
+		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+		}
+
+	if ( (yy_n_chars) == 0 )
+		{
+		if ( number_to_move == YY_MORE_ADJ )
+			{
+			ret_val = EOB_ACT_END_OF_FILE;
+			eggyyrestart(eggyyin  );
+			}
+
+		else
+			{
+			ret_val = EOB_ACT_LAST_MATCH;
+			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
+				YY_BUFFER_EOF_PENDING;
+			}
+		}
+
+	else
+		ret_val = EOB_ACT_CONTINUE_SCAN;
+
+	if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
+		/* Extend the array by 50%, plus the number we really need. */
+		yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
+		YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) eggyyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size  );
+		if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
+			YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
+	}
+
+	(yy_n_chars) += number_to_move;
+	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
+	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
+
+	(yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
+
+	return ret_val;
+}
+
+/* yy_get_previous_state - get the state just before the EOB char was reached */
+
+    static yy_state_type yy_get_previous_state (void)
+{
+	register yy_state_type yy_current_state;
+	register char *yy_cp;
+    
+	yy_current_state = (yy_start);
+
+	for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
+		{
+		register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
+		if ( yy_accept[yy_current_state] )
+			{
+			(yy_last_accepting_state) = yy_current_state;
+			(yy_last_accepting_cpos) = yy_cp;
+			}
+		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+			{
+			yy_current_state = (int) yy_def[yy_current_state];
+			if ( yy_current_state >= 577 )
+				yy_c = yy_meta[(unsigned int) yy_c];
+			}
+		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+		}
+
+	return yy_current_state;
+}
+
+/* yy_try_NUL_trans - try to make a transition on the NUL character
+ *
+ * synopsis
+ *	next_state = yy_try_NUL_trans( current_state );
+ */
+    static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
+{
+	register int yy_is_jam;
+    	register char *yy_cp = (yy_c_buf_p);
+
+	register YY_CHAR yy_c = 1;
+	if ( yy_accept[yy_current_state] )
+		{
+		(yy_last_accepting_state) = yy_current_state;
+		(yy_last_accepting_cpos) = yy_cp;
+		}
+	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+		{
+		yy_current_state = (int) yy_def[yy_current_state];
+		if ( yy_current_state >= 577 )
+			yy_c = yy_meta[(unsigned int) yy_c];
+		}
+	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+	yy_is_jam = (yy_current_state == 576);
+
+	return yy_is_jam ? 0 : yy_current_state;
+}
+
+    static void yyunput (int c, register char * yy_bp )
+{
+	register char *yy_cp;
+    
+    yy_cp = (yy_c_buf_p);
+
+	/* undo effects of setting up eggyytext */
+	*yy_cp = (yy_hold_char);
+
+	if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
+		{ /* need to shift things up to make room */
+		/* +2 for EOB chars. */
+		register int number_to_move = (yy_n_chars) + 2;
+		register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
+					YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
+		register char *source =
+				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
+
+		while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
+			*--dest = *--source;
+
+		yy_cp += (int) (dest - source);
+		yy_bp += (int) (dest - source);
+		YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
+			(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
+
+		if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
+			YY_FATAL_ERROR( "flex scanner push-back overflow" );
+		}
+
+	*--yy_cp = (char) c;
+
+	(yytext_ptr) = yy_bp;
+	(yy_hold_char) = *yy_cp;
+	(yy_c_buf_p) = yy_cp;
+}
+
+#ifndef YY_NO_INPUT
+#ifdef __cplusplus
+    static int yyinput (void)
+#else
+    static int input  (void)
+#endif
+
+{
+	int c;
+    
+	*(yy_c_buf_p) = (yy_hold_char);
+
+	if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
+		{
+		/* yy_c_buf_p now points to the character we want to return.
+		 * If this occurs *before* the EOB characters, then it's a
+		 * valid NUL; if not, then we've hit the end of the buffer.
+		 */
+		if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
+			/* This was really a NUL. */
+			*(yy_c_buf_p) = '\0';
+
+		else
+			{ /* need more input */
+			int offset = (yy_c_buf_p) - (yytext_ptr);
+			++(yy_c_buf_p);
+
+			switch ( yy_get_next_buffer(  ) )
+				{
+				case EOB_ACT_LAST_MATCH:
+					/* This happens because yy_g_n_b()
+					 * sees that we've accumulated a
+					 * token and flags that we need to
+					 * try matching the token before
+					 * proceeding.  But for input(),
+					 * there's no matching to consider.
+					 * So convert the EOB_ACT_LAST_MATCH
+					 * to EOB_ACT_END_OF_FILE.
+					 */
+
+					/* Reset buffer status. */
+					eggyyrestart(eggyyin );
+
+					/*FALLTHROUGH*/
+
+				case EOB_ACT_END_OF_FILE:
+					{
+					if ( eggyywrap( ) )
+						return EOF;
+
+					if ( ! (yy_did_buffer_switch_on_eof) )
+						YY_NEW_FILE;
+#ifdef __cplusplus
+					return yyinput();
+#else
+					return input();
+#endif
+					}
+
+				case EOB_ACT_CONTINUE_SCAN:
+					(yy_c_buf_p) = (yytext_ptr) + offset;
+					break;
+				}
+			}
+		}
+
+	c = *(unsigned char *) (yy_c_buf_p);	/* cast for 8-bit char's */
+	*(yy_c_buf_p) = '\0';	/* preserve eggyytext */
+	(yy_hold_char) = *++(yy_c_buf_p);
+
+	return c;
+}
+#endif	/* ifndef YY_NO_INPUT */
+
+/** Immediately switch to a different input stream.
+ * @param input_file A readable stream.
+ * 
+ * @note This function does not reset the start condition to @c INITIAL .
+ */
+    void eggyyrestart  (FILE * input_file )
+{
+    
+	if ( ! YY_CURRENT_BUFFER ){
+        eggyyensure_buffer_stack ();
+		YY_CURRENT_BUFFER_LVALUE =
+            eggyy_create_buffer(eggyyin,YY_BUF_SIZE );
+	}
+
+	eggyy_init_buffer(YY_CURRENT_BUFFER,input_file );
+	eggyy_load_buffer_state( );
+}
+
+/** Switch to a different input buffer.
+ * @param new_buffer The new input buffer.
+ * 
+ */
+    void eggyy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
+{
+    
+	/* TODO. We should be able to replace this entire function body
+	 * with
+	 *		eggyypop_buffer_state();
+	 *		eggyypush_buffer_state(new_buffer);
+     */
+	eggyyensure_buffer_stack ();
+	if ( YY_CURRENT_BUFFER == new_buffer )
+		return;
+
+	if ( YY_CURRENT_BUFFER )
+		{
+		/* Flush out information for old buffer. */
+		*(yy_c_buf_p) = (yy_hold_char);
+		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
+		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+		}
+
+	YY_CURRENT_BUFFER_LVALUE = new_buffer;
+	eggyy_load_buffer_state( );
+
+	/* We don't actually know whether we did this switch during
+	 * EOF (eggyywrap()) processing, but the only time this flag
+	 * is looked at is after eggyywrap() is called, so it's safe
+	 * to go ahead and always set it.
+	 */
+	(yy_did_buffer_switch_on_eof) = 1;
+}
+
+static void eggyy_load_buffer_state  (void)
+{
+    	(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
+	(yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
+	eggyyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
+	(yy_hold_char) = *(yy_c_buf_p);
+}
+
+/** Allocate and initialize an input buffer state.
+ * @param file A readable stream.
+ * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
+ * 
+ * @return the allocated buffer state.
+ */
+    YY_BUFFER_STATE eggyy_create_buffer  (FILE * file, int  size )
+{
+	YY_BUFFER_STATE b;
+    
+	b = (YY_BUFFER_STATE) eggyyalloc(sizeof( struct yy_buffer_state )  );
+	if ( ! b )
+		YY_FATAL_ERROR( "out of dynamic memory in eggyy_create_buffer()" );
+
+	b->yy_buf_size = size;
+
+	/* yy_ch_buf has to be 2 characters longer than the size given because
+	 * we need to put in 2 end-of-buffer characters.
+	 */
+	b->yy_ch_buf = (char *) eggyyalloc(b->yy_buf_size + 2  );
+	if ( ! b->yy_ch_buf )
+		YY_FATAL_ERROR( "out of dynamic memory in eggyy_create_buffer()" );
+
+	b->yy_is_our_buffer = 1;
+
+	eggyy_init_buffer(b,file );
+
+	return b;
+}
+
+/** Destroy the buffer.
+ * @param b a buffer created with eggyy_create_buffer()
+ * 
+ */
+    void eggyy_delete_buffer (YY_BUFFER_STATE  b )
+{
+    
+	if ( ! b )
+		return;
+
+	if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
+		YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
+
+	if ( b->yy_is_our_buffer )
+		eggyyfree((void *) b->yy_ch_buf  );
+
+	eggyyfree((void *) b  );
+}
+
+#ifndef __cplusplus
+extern int isatty (int );
+#endif /* __cplusplus */
+    
+/* Initializes or reinitializes a buffer.
+ * This function is sometimes called more than once on the same buffer,
+ * such as during a eggyyrestart() or at EOF.
+ */
+    static void eggyy_init_buffer  (YY_BUFFER_STATE  b, FILE * file )
+
+{
+	int oerrno = errno;
+    
+	eggyy_flush_buffer(b );
+
+	b->yy_input_file = file;
+	b->yy_fill_buffer = 1;
+
+    /* If b is the current buffer, then eggyy_init_buffer was _probably_
+     * called from eggyyrestart() or through yy_get_next_buffer.
+     * In that case, we don't want to reset the lineno or column.
+     */
+    if (b != YY_CURRENT_BUFFER){
+        b->yy_bs_lineno = 1;
+        b->yy_bs_column = 0;
+    }
+
+        b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
+    
+	errno = oerrno;
+}
+
+/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
+ * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
+ * 
+ */
+    void eggyy_flush_buffer (YY_BUFFER_STATE  b )
+{
+    	if ( ! b )
+		return;
+
+	b->yy_n_chars = 0;
+
+	/* We always need two end-of-buffer characters.  The first causes
+	 * a transition to the end-of-buffer state.  The second causes
+	 * a jam in that state.
+	 */
+	b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
+	b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
+
+	b->yy_buf_pos = &b->yy_ch_buf[0];
+
+	b->yy_at_bol = 1;
+	b->yy_buffer_status = YY_BUFFER_NEW;
+
+	if ( b == YY_CURRENT_BUFFER )
+		eggyy_load_buffer_state( );
+}
+
+/** Pushes the new state onto the stack. The new state becomes
+ *  the current state. This function will allocate the stack
+ *  if necessary.
+ *  @param new_buffer The new state.
+ *  
+ */
+void eggyypush_buffer_state (YY_BUFFER_STATE new_buffer )
+{
+    	if (new_buffer == NULL)
+		return;
+
+	eggyyensure_buffer_stack();
+
+	/* This block is copied from eggyy_switch_to_buffer. */
+	if ( YY_CURRENT_BUFFER )
+		{
+		/* Flush out information for old buffer. */
+		*(yy_c_buf_p) = (yy_hold_char);
+		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
+		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+		}
+
+	/* Only push if top exists. Otherwise, replace top. */
+	if (YY_CURRENT_BUFFER)
+		(yy_buffer_stack_top)++;
+	YY_CURRENT_BUFFER_LVALUE = new_buffer;
+
+	/* copied from eggyy_switch_to_buffer. */
+	eggyy_load_buffer_state( );
+	(yy_did_buffer_switch_on_eof) = 1;
+}
+
+/** Removes and deletes the top of the stack, if present.
+ *  The next element becomes the new top.
+ *  
+ */
+void eggyypop_buffer_state (void)
+{
+    	if (!YY_CURRENT_BUFFER)
+		return;
+
+	eggyy_delete_buffer(YY_CURRENT_BUFFER );
+	YY_CURRENT_BUFFER_LVALUE = NULL;
+	if ((yy_buffer_stack_top) > 0)
+		--(yy_buffer_stack_top);
+
+	if (YY_CURRENT_BUFFER) {
+		eggyy_load_buffer_state( );
+		(yy_did_buffer_switch_on_eof) = 1;
+	}
+}
+
+/* Allocates the stack if it does not exist.
+ *  Guarantees space for at least one push.
+ */
+static void eggyyensure_buffer_stack (void)
+{
+	int num_to_alloc;
+    
+	if (!(yy_buffer_stack)) {
+
+		/* First allocation is just for 2 elements, since we don't know if this
+		 * scanner will even need a stack. We use 2 instead of 1 to avoid an
+		 * immediate realloc on the next call.
+         */
+		num_to_alloc = 1;
+		(yy_buffer_stack) = (struct yy_buffer_state**)eggyyalloc
+								(num_to_alloc * sizeof(struct yy_buffer_state*)
+								);
+		if ( ! (yy_buffer_stack) )
+			YY_FATAL_ERROR( "out of dynamic memory in eggyyensure_buffer_stack()" );
+								  
+		memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
+				
+		(yy_buffer_stack_max) = num_to_alloc;
+		(yy_buffer_stack_top) = 0;
+		return;
+	}
+
+	if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
+
+		/* Increase the buffer to prepare for a possible push. */
+		int grow_size = 8 /* arbitrary grow size */;
+
+		num_to_alloc = (yy_buffer_stack_max) + grow_size;
+		(yy_buffer_stack) = (struct yy_buffer_state**)eggyyrealloc
+								((yy_buffer_stack),
+								num_to_alloc * sizeof(struct yy_buffer_state*)
+								);
+		if ( ! (yy_buffer_stack) )
+			YY_FATAL_ERROR( "out of dynamic memory in eggyyensure_buffer_stack()" );
+
+		/* zero only the new slots.*/
+		memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
+		(yy_buffer_stack_max) = num_to_alloc;
+	}
+}
+
+/** Setup the input buffer state to scan directly from a user-specified character buffer.
+ * @param base the character buffer
+ * @param size the size in bytes of the character buffer
+ * 
+ * @return the newly allocated buffer state object. 
+ */
+YY_BUFFER_STATE eggyy_scan_buffer  (char * base, yy_size_t  size )
+{
+	YY_BUFFER_STATE b;
+    
+	if ( size < 2 ||
+	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
+	     base[size-1] != YY_END_OF_BUFFER_CHAR )
+		/* They forgot to leave room for the EOB's. */
+		return 0;
+
+	b = (YY_BUFFER_STATE) eggyyalloc(sizeof( struct yy_buffer_state )  );
+	if ( ! b )
+		YY_FATAL_ERROR( "out of dynamic memory in eggyy_scan_buffer()" );
+
+	b->yy_buf_size = size - 2;	/* "- 2" to take care of EOB's */
+	b->yy_buf_pos = b->yy_ch_buf = base;
+	b->yy_is_our_buffer = 0;
+	b->yy_input_file = 0;
+	b->yy_n_chars = b->yy_buf_size;
+	b->yy_is_interactive = 0;
+	b->yy_at_bol = 1;
+	b->yy_fill_buffer = 0;
+	b->yy_buffer_status = YY_BUFFER_NEW;
+
+	eggyy_switch_to_buffer(b  );
+
+	return b;
+}
+
+/** Setup the input buffer state to scan a string. The next call to eggyylex() will
+ * scan from a @e copy of @a str.
+ * @param yystr a NUL-terminated string to scan
+ * 
+ * @return the newly allocated buffer state object.
+ * @note If you want to scan bytes that may contain NUL values, then use
+ *       eggyy_scan_bytes() instead.
+ */
+YY_BUFFER_STATE eggyy_scan_string (yyconst char * yystr )
+{
+    
+	return eggyy_scan_bytes(yystr,strlen(yystr) );
+}
+
+/** Setup the input buffer state to scan the given bytes. The next call to eggyylex() will
+ * scan from a @e copy of @a bytes.
+ * @param bytes the byte buffer to scan
+ * @param len the number of bytes in the buffer pointed to by @a bytes.
+ * 
+ * @return the newly allocated buffer state object.
+ */
+YY_BUFFER_STATE eggyy_scan_bytes  (yyconst char * yybytes, int  _yybytes_len )
+{
+	YY_BUFFER_STATE b;
+	char *buf;
+	yy_size_t n;
+	int i;
+    
+	/* Get memory for full buffer, including space for trailing EOB's. */
+	n = _yybytes_len + 2;
+	buf = (char *) eggyyalloc(n  );
+	if ( ! buf )
+		YY_FATAL_ERROR( "out of dynamic memory in eggyy_scan_bytes()" );
+
+	for ( i = 0; i < _yybytes_len; ++i )
+		buf[i] = yybytes[i];
+
+	buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
+
+	b = eggyy_scan_buffer(buf,n );
+	if ( ! b )
+		YY_FATAL_ERROR( "bad buffer in eggyy_scan_bytes()" );
+
+	/* It's okay to grow etc. this buffer, and we should throw it
+	 * away when we're done.
+	 */
+	b->yy_is_our_buffer = 1;
+
+	return b;
+}
+
+#ifndef YY_EXIT_FAILURE
+#define YY_EXIT_FAILURE 2
+#endif
+
+static void yy_fatal_error (yyconst char* msg )
+{
+    	(void) fprintf( stderr, "%s\n", msg );
+	exit( YY_EXIT_FAILURE );
+}
+
+/* Redefine yyless() so it works in section 3 code. */
+
+#undef yyless
+#define yyless(n) \
+	do \
+		{ \
+		/* Undo effects of setting up eggyytext. */ \
+        int yyless_macro_arg = (n); \
+        YY_LESS_LINENO(yyless_macro_arg);\
+		eggyytext[eggyyleng] = (yy_hold_char); \
+		(yy_c_buf_p) = eggyytext + yyless_macro_arg; \
+		(yy_hold_char) = *(yy_c_buf_p); \
+		*(yy_c_buf_p) = '\0'; \
+		eggyyleng = yyless_macro_arg; \
+		} \
+	while ( 0 )
+
+/* Accessor  methods (get/set functions) to struct members. */
+
+/** Get the current line number.
+ * 
+ */
+int eggyyget_lineno  (void)
+{
+        
+    return eggyylineno;
+}
+
+/** Get the input stream.
+ * 
+ */
+FILE *eggyyget_in  (void)
+{
+        return eggyyin;
+}
+
+/** Get the output stream.
+ * 
+ */
+FILE *eggyyget_out  (void)
+{
+        return eggyyout;
+}
+
+/** Get the length of the current token.
+ * 
+ */
+int eggyyget_leng  (void)
+{
+        return eggyyleng;
+}
+
+/** Get the current token.
+ * 
+ */
+
+char *eggyyget_text  (void)
+{
+        return eggyytext;
+}
+
+/** Set the current line number.
+ * @param line_number
+ * 
+ */
+void eggyyset_lineno (int  line_number )
+{
+    
+    eggyylineno = line_number;
+}
+
+/** Set the input stream. This does not discard the current
+ * input buffer.
+ * @param in_str A readable stream.
+ * 
+ * @see eggyy_switch_to_buffer
+ */
+void eggyyset_in (FILE *  in_str )
+{
+        eggyyin = in_str ;
+}
+
+void eggyyset_out (FILE *  out_str )
+{
+        eggyyout = out_str ;
+}
+
+int eggyyget_debug  (void)
+{
+        return eggyy_flex_debug;
+}
+
+void eggyyset_debug (int  bdebug )
+{
+        eggyy_flex_debug = bdebug ;
+}
+
+static int yy_init_globals (void)
+{
+        /* Initialization is the same as for the non-reentrant scanner.
+     * This function is called from eggyylex_destroy(), so don't allocate here.
+     */
+
+    (yy_buffer_stack) = 0;
+    (yy_buffer_stack_top) = 0;
+    (yy_buffer_stack_max) = 0;
+    (yy_c_buf_p) = (char *) 0;
+    (yy_init) = 0;
+    (yy_start) = 0;
+
+/* Defined in main.c */
+#ifdef YY_STDINIT
+    eggyyin = stdin;
+    eggyyout = stdout;
+#else
+    eggyyin = (FILE *) 0;
+    eggyyout = (FILE *) 0;
+#endif
+
+    /* For future reference: Set errno on error, since we are called by
+     * eggyylex_init()
+     */
+    return 0;
+}
+
+/* eggyylex_destroy is for both reentrant and non-reentrant scanners. */
+int eggyylex_destroy  (void)
+{
+    
+    /* Pop the buffer stack, destroying each element. */
+	while(YY_CURRENT_BUFFER){
+		eggyy_delete_buffer(YY_CURRENT_BUFFER  );
+		YY_CURRENT_BUFFER_LVALUE = NULL;
+		eggyypop_buffer_state();
+	}
+
+	/* Destroy the stack itself. */
+	eggyyfree((yy_buffer_stack) );
+	(yy_buffer_stack) = NULL;
+
+    /* Reset the globals. This is important in a non-reentrant scanner so the next time
+     * eggyylex() is called, initialization will occur. */
+    yy_init_globals( );
+
+    return 0;
+}
+
+/*
+ * Internal utility routines.
+ */
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
+{
+	register int i;
+	for ( i = 0; i < n; ++i )
+		s1[i] = s2[i];
+}
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen (yyconst char * s )
+{
+	register int n;
+	for ( n = 0; s[n]; ++n )
+		;
+
+	return n;
+}
+#endif
+
+void *eggyyalloc (yy_size_t  size )
+{
+	return (void *) malloc( size );
+}
+
+void *eggyyrealloc  (void * ptr, yy_size_t  size )
+{
+	/* The cast to (char *) in the following accommodates both
+	 * implementations that use char* generic pointers, and those
+	 * that use void* generic pointers.  It works with the latter
+	 * because both ANSI C and C++ allow castless assignment from
+	 * any pointer type to void*, and deal with argument conversions
+	 * as though doing an assignment.
+	 */
+	return (void *) realloc( (char *) ptr, size );
+}
+
+void eggyyfree (void * ptr )
+{
+	free( (char *) ptr );	/* see eggyyrealloc() for (char *) cast */
+}
+
+#define YYTABLES_NAME "yytables"
+
+#line 764 "lexer.lxx"

+ 6 - 6
panda/src/egg/lexer.lxx

@@ -45,7 +45,7 @@ static int error_count = 0;
 static int warning_count = 0;
 
 // This is the pointer to the current input stream.
-static istream *inp = NULL;
+static istream *input_p = NULL;
 
 // This is the name of the egg file we're parsing.  We keep it so we
 // can print it out for error messages.
@@ -61,7 +61,7 @@ static int initial_token;
 
 void
 egg_init_lexer(istream &in, const string &filename) {
-  inp = &in;
+  input_p = &in;
   egg_filename = filename;
   line_number = 0;
   col_number = 0;
@@ -163,10 +163,10 @@ eggyywarning(ostringstream &strm) {
 // stdio FILE pointer.  This is flex-specific.
 static void
 input_chars(char *buffer, int &result, int max_size) {
-  nassertv(inp != NULL);
-  if (*inp) {
-    inp->read(buffer, max_size);
-    result = inp->gcount();
+  nassertv(input_p != NULL);
+  if (*input_p) {
+    input_p->read(buffer, max_size);
+    result = input_p->gcount();
 
     if (line_number == 0) {
       // This is a special case.  If we are reading the very first bit

File diff suppressed because it is too large
+ 356 - 323
panda/src/egg/parser.cxx.prebuilt


+ 15 - 16
panda/src/egg/parser.h.prebuilt

@@ -1,24 +1,22 @@
-/* A Bison parser, made by GNU Bison 2.3.  */
+/* A Bison parser, made by GNU Bison 2.4.2.  */
 
 /* Skeleton interface for Bison's Yacc-like parsers in C
-
-   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-   Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
+   
+      Copyright (C) 1984, 1989-1990, 2000-2006, 2009-2010 Free Software
+   Foundation, Inc.
+   
+   This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+   
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-
+   
    You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street, Fifth Floor,
-   Boston, MA 02110-1301, USA.  */
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 /* As a special exception, you may create a larger work that contains
    part or all of the Bison parser skeleton and distribute that work
@@ -29,10 +27,11 @@
    special exception, which will cause the skeleton and the resulting
    Bison output files to be licensed under the GNU General Public
    License without this special exception.
-
+   
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
+
 /* Tokens.  */
 #ifndef YYTOKENTYPE
 # define YYTOKENTYPE
@@ -221,11 +220,11 @@
 
 
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef int YYSTYPE;
+
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
-# define YYSTYPE_IS_TRIVIAL 1
 #endif
 
 extern YYSTYPE eggyylval;
 
+

+ 7 - 6
panda/src/windisplay/winGraphicsWindow.cxx

@@ -2689,9 +2689,13 @@ static HCURSOR get_cursor(const Filename &filename);
 ////////////////////////////////////////////////////////////////////
 const WinGraphicsWindow::WindowClass &WinGraphicsWindow::
 register_window_class(const WindowProperties &props) {
-  pair<WindowClasses::iterator, bool> found = 
-    _window_classes.insert(WindowClass(props));
-  WindowClass &wclass = (*found.first);
+  WindowClass wcreg(props);
+  ostringstream wclass_name;
+  wclass_name << "WinGraphicsWindow" << _window_class_index;
+  wcreg._name = wclass_name.str();
+
+  pair<WindowClasses::iterator, bool> found = _window_classes.insert(wcreg);
+  const WindowClass &wclass = (*found.first);
 
   if (!found.second) {
     // We have already created a window class.
@@ -2699,10 +2703,7 @@ register_window_class(const WindowProperties &props) {
   }
 
   // We have not yet created this window class.
-  ostringstream wclass_name;
-  wclass_name << "WinGraphicsWindow" << _window_class_index;
   _window_class_index++;
-  wclass._name = wclass_name.str();
 
   WNDCLASS wc;
 

+ 4765 - 4758
pandatool/src/vrml/vrmlLexer.cxx.prebuilt

@@ -1,4758 +1,4765 @@
-#line 2 "lex.yy.c"
-
-#line 4 "lex.yy.c"
-
-#define  YY_INT_ALIGNED short int
-
-/* A lexical scanner generated by flex */
-
-#define yy_create_buffer vrmlyy_create_buffer
-#define yy_delete_buffer vrmlyy_delete_buffer
-#define yy_flex_debug vrmlyy_flex_debug
-#define yy_init_buffer vrmlyy_init_buffer
-#define yy_flush_buffer vrmlyy_flush_buffer
-#define yy_load_buffer_state vrmlyy_load_buffer_state
-#define yy_switch_to_buffer vrmlyy_switch_to_buffer
-#define yyin vrmlyyin
-#define yyleng vrmlyyleng
-#define yylex vrmlyylex
-#define yylineno vrmlyylineno
-#define yyout vrmlyyout
-#define yyrestart vrmlyyrestart
-#define yytext vrmlyytext
-#define yywrap vrmlyywrap
-#define yyalloc vrmlyyalloc
-#define yyrealloc vrmlyyrealloc
-#define yyfree vrmlyyfree
-
-#define FLEX_SCANNER
-#define YY_FLEX_MAJOR_VERSION 2
-#define YY_FLEX_MINOR_VERSION 5
-#define YY_FLEX_SUBMINOR_VERSION 35
-#if YY_FLEX_SUBMINOR_VERSION > 0
-#define FLEX_BETA
-#endif
-
-/* First, we deal with  platform-specific or compiler-specific issues. */
-
-/* begin standard C headers. */
-#include <stdio.h>
-#include <string.h>
-#include <errno.h>
-#include <stdlib.h>
-
-/* end standard C headers. */
-
-/* flex integer type definitions */
-
-#ifndef FLEXINT_H
-#define FLEXINT_H
-
-/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
-
-#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
-
-/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
- * if you want the limit (max/min) macros for int types. 
- */
-#ifndef __STDC_LIMIT_MACROS
-#define __STDC_LIMIT_MACROS 1
-#endif
-
-#include <inttypes.h>
-typedef int8_t flex_int8_t;
-typedef uint8_t flex_uint8_t;
-typedef int16_t flex_int16_t;
-typedef uint16_t flex_uint16_t;
-typedef int32_t flex_int32_t;
-typedef uint32_t flex_uint32_t;
-#else
-typedef signed char flex_int8_t;
-typedef short int flex_int16_t;
-typedef int flex_int32_t;
-typedef unsigned char flex_uint8_t; 
-typedef unsigned short int flex_uint16_t;
-typedef unsigned int flex_uint32_t;
-#endif /* ! C99 */
-
-/* Limits of integral types. */
-#ifndef INT8_MIN
-#define INT8_MIN               (-128)
-#endif
-#ifndef INT16_MIN
-#define INT16_MIN              (-32767-1)
-#endif
-#ifndef INT32_MIN
-#define INT32_MIN              (-2147483647-1)
-#endif
-#ifndef INT8_MAX
-#define INT8_MAX               (127)
-#endif
-#ifndef INT16_MAX
-#define INT16_MAX              (32767)
-#endif
-#ifndef INT32_MAX
-#define INT32_MAX              (2147483647)
-#endif
-#ifndef UINT8_MAX
-#define UINT8_MAX              (255U)
-#endif
-#ifndef UINT16_MAX
-#define UINT16_MAX             (65535U)
-#endif
-#ifndef UINT32_MAX
-#define UINT32_MAX             (4294967295U)
-#endif
-
-#endif /* ! FLEXINT_H */
-
-#ifdef __cplusplus
-
-/* The "const" storage-class-modifier is valid. */
-#define YY_USE_CONST
-
-#else	/* ! __cplusplus */
-
-/* C99 requires __STDC__ to be defined as 1. */
-#if defined (__STDC__)
-
-#define YY_USE_CONST
-
-#endif	/* defined (__STDC__) */
-#endif	/* ! __cplusplus */
-
-#ifdef YY_USE_CONST
-#define yyconst const
-#else
-#define yyconst
-#endif
-
-/* Returned upon end-of-file. */
-#define YY_NULL 0
-
-/* Promotes a possibly negative, possibly signed char to an unsigned
- * integer for use as an array index.  If the signed char is negative,
- * we want to instead treat it as an 8-bit unsigned char, hence the
- * double cast.
- */
-#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
-
-/* Enter a start condition.  This macro really ought to take a parameter,
- * but we do it the disgusting crufty way forced on us by the ()-less
- * definition of BEGIN.
- */
-#define BEGIN (yy_start) = 1 + 2 *
-
-/* Translate the current start state into a value that can be later handed
- * to BEGIN to return to the state.  The YYSTATE alias is for lex
- * compatibility.
- */
-#define YY_START (((yy_start) - 1) / 2)
-#define YYSTATE YY_START
-
-/* Action number for EOF rule of a given start state. */
-#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
-
-/* Special action meaning "start processing a new file". */
-#define YY_NEW_FILE vrmlyyrestart(vrmlyyin  )
-
-#define YY_END_OF_BUFFER_CHAR 0
-
-/* Size of default input buffer. */
-#ifndef YY_BUF_SIZE
-#define YY_BUF_SIZE 16384
-#endif
-
-/* The state buf must be large enough to hold one state per character in the main buffer.
- */
-#define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
-
-#ifndef YY_TYPEDEF_YY_BUFFER_STATE
-#define YY_TYPEDEF_YY_BUFFER_STATE
-typedef struct yy_buffer_state *YY_BUFFER_STATE;
-#endif
-
-extern int vrmlyyleng;
-
-extern FILE *vrmlyyin, *vrmlyyout;
-
-#define EOB_ACT_CONTINUE_SCAN 0
-#define EOB_ACT_END_OF_FILE 1
-#define EOB_ACT_LAST_MATCH 2
-
-    #define YY_LESS_LINENO(n)
-    
-/* Return all but the first "n" matched characters back to the input stream. */
-#define yyless(n) \
-	do \
-		{ \
-		/* Undo effects of setting up vrmlyytext. */ \
-        int yyless_macro_arg = (n); \
-        YY_LESS_LINENO(yyless_macro_arg);\
-		*yy_cp = (yy_hold_char); \
-		YY_RESTORE_YY_MORE_OFFSET \
-		(yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
-		YY_DO_BEFORE_ACTION; /* set up vrmlyytext again */ \
-		} \
-	while ( 0 )
-
-#define unput(c) yyunput( c, (yytext_ptr)  )
-
-#ifndef YY_TYPEDEF_YY_SIZE_T
-#define YY_TYPEDEF_YY_SIZE_T
-typedef size_t yy_size_t;
-#endif
-
-#ifndef YY_STRUCT_YY_BUFFER_STATE
-#define YY_STRUCT_YY_BUFFER_STATE
-struct yy_buffer_state
-	{
-	FILE *yy_input_file;
-
-	char *yy_ch_buf;		/* input buffer */
-	char *yy_buf_pos;		/* current position in input buffer */
-
-	/* Size of input buffer in bytes, not including room for EOB
-	 * characters.
-	 */
-	yy_size_t yy_buf_size;
-
-	/* Number of characters read into yy_ch_buf, not including EOB
-	 * characters.
-	 */
-	int yy_n_chars;
-
-	/* Whether we "own" the buffer - i.e., we know we created it,
-	 * and can realloc() it to grow it, and should free() it to
-	 * delete it.
-	 */
-	int yy_is_our_buffer;
-
-	/* Whether this is an "interactive" input source; if so, and
-	 * if we're using stdio for input, then we want to use getc()
-	 * instead of fread(), to make sure we stop fetching input after
-	 * each newline.
-	 */
-	int yy_is_interactive;
-
-	/* Whether we're considered to be at the beginning of a line.
-	 * If so, '^' rules will be active on the next match, otherwise
-	 * not.
-	 */
-	int yy_at_bol;
-
-    int yy_bs_lineno; /**< The line count. */
-    int yy_bs_column; /**< The column count. */
-    
-	/* Whether to try to fill the input buffer when we reach the
-	 * end of it.
-	 */
-	int yy_fill_buffer;
-
-	int yy_buffer_status;
-
-#define YY_BUFFER_NEW 0
-#define YY_BUFFER_NORMAL 1
-	/* When an EOF's been seen but there's still some text to process
-	 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
-	 * shouldn't try reading from the input source any more.  We might
-	 * still have a bunch of tokens to match, though, because of
-	 * possible backing-up.
-	 *
-	 * When we actually see the EOF, we change the status to "new"
-	 * (via vrmlyyrestart()), so that the user can continue scanning by
-	 * just pointing vrmlyyin at a new input file.
-	 */
-#define YY_BUFFER_EOF_PENDING 2
-
-	};
-#endif /* !YY_STRUCT_YY_BUFFER_STATE */
-
-/* Stack of input buffers. */
-static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
-static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
-static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
-
-/* We provide macros for accessing buffer states in case in the
- * future we want to put the buffer states in a more general
- * "scanner state".
- *
- * Returns the top of the stack, or NULL.
- */
-#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
-                          ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
-                          : NULL)
-
-/* Same as previous macro, but useful when we know that the buffer stack is not
- * NULL or when we need an lvalue. For internal use only.
- */
-#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
-
-/* yy_hold_char holds the character lost when vrmlyytext is formed. */
-static char yy_hold_char;
-static int yy_n_chars;		/* number of characters read into yy_ch_buf */
-int vrmlyyleng;
-
-/* Points to current character in buffer. */
-static char *yy_c_buf_p = (char *) 0;
-static int yy_init = 0;		/* whether we need to initialize */
-static int yy_start = 0;	/* start state number */
-
-/* Flag which is used to allow vrmlyywrap()'s to do buffer switches
- * instead of setting up a fresh vrmlyyin.  A bit of a hack ...
- */
-static int yy_did_buffer_switch_on_eof;
-
-void vrmlyyrestart (FILE *input_file  );
-void vrmlyy_switch_to_buffer (YY_BUFFER_STATE new_buffer  );
-YY_BUFFER_STATE vrmlyy_create_buffer (FILE *file,int size  );
-void vrmlyy_delete_buffer (YY_BUFFER_STATE b  );
-void vrmlyy_flush_buffer (YY_BUFFER_STATE b  );
-void vrmlyypush_buffer_state (YY_BUFFER_STATE new_buffer  );
-void vrmlyypop_buffer_state (void );
-
-static void vrmlyyensure_buffer_stack (void );
-static void vrmlyy_load_buffer_state (void );
-static void vrmlyy_init_buffer (YY_BUFFER_STATE b,FILE *file  );
-
-#define YY_FLUSH_BUFFER vrmlyy_flush_buffer(YY_CURRENT_BUFFER )
-
-YY_BUFFER_STATE vrmlyy_scan_buffer (char *base,yy_size_t size  );
-YY_BUFFER_STATE vrmlyy_scan_string (yyconst char *yy_str  );
-YY_BUFFER_STATE vrmlyy_scan_bytes (yyconst char *bytes,int len  );
-
-void *vrmlyyalloc (yy_size_t  );
-void *vrmlyyrealloc (void *,yy_size_t  );
-void vrmlyyfree (void *  );
-
-#define yy_new_buffer vrmlyy_create_buffer
-
-#define yy_set_interactive(is_interactive) \
-	{ \
-	if ( ! YY_CURRENT_BUFFER ){ \
-        vrmlyyensure_buffer_stack (); \
-		YY_CURRENT_BUFFER_LVALUE =    \
-            vrmlyy_create_buffer(vrmlyyin,YY_BUF_SIZE ); \
-	} \
-	YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
-	}
-
-#define yy_set_bol(at_bol) \
-	{ \
-	if ( ! YY_CURRENT_BUFFER ){\
-        vrmlyyensure_buffer_stack (); \
-		YY_CURRENT_BUFFER_LVALUE =    \
-            vrmlyy_create_buffer(vrmlyyin,YY_BUF_SIZE ); \
-	} \
-	YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
-	}
-
-#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
-
-typedef unsigned char YY_CHAR;
-
-FILE *vrmlyyin = (FILE *) 0, *vrmlyyout = (FILE *) 0;
-
-typedef int yy_state_type;
-
-extern int vrmlyylineno;
-
-int vrmlyylineno = 1;
-
-extern char *vrmlyytext;
-#define yytext_ptr vrmlyytext
-
-static yy_state_type yy_get_previous_state (void );
-static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
-static int yy_get_next_buffer (void );
-static void yy_fatal_error (yyconst char msg[]  );
-
-/* Done after the current pattern has been matched and before the
- * corresponding action - sets up vrmlyytext.
- */
-#define YY_DO_BEFORE_ACTION \
-	(yytext_ptr) = yy_bp; \
-	vrmlyyleng = (size_t) (yy_cp - yy_bp); \
-	(yy_hold_char) = *yy_cp; \
-	*yy_cp = '\0'; \
-	(yy_c_buf_p) = yy_cp;
-
-#define YY_NUM_RULES 48
-#define YY_END_OF_BUFFER 49
-/* This struct is not used in this scanner,
-   but its presence is necessary. */
-struct yy_trans_info
-	{
-	flex_int32_t yy_verify;
-	flex_int32_t yy_nxt;
-	};
-static yyconst flex_int16_t yy_accept[977] =
-    {   0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   49,   47,   45,   46,   45,   14,
-       45,   15,   14,   14,   14,   14,   14,   14,   14,   14,
-       14,   14,   47,   47,   47,   47,   47,   47,   47,   47,
-       24,   47,   47,   47,   47,   22,   22,   47,   47,   47,
-       37,   35,   37,   37,   47,   47,   34,   47,   47,   47,
-       47,   47,   47,   47,   47,   47,   47,   18,   19,   47,
-
-       47,   25,   47,   23,   23,   47,   47,   47,   38,   36,
-       38,   38,   47,   47,   47,   47,   47,   47,   40,   40,
-       41,   40,   40,   42,   47,   44,   44,   45,   45,   46,
-       45,   45,   45,   14,   15,   14,   14,    7,   14,   14,
-       14,    6,   14,   14,   14,   14,    0,   16,    0,    0,
-        0,    0,    0,    0,    0,    0,   24,   24,    0,    0,
-        0,    0,    0,   22,   22,    0,    0,    0,    0,    0,
-        0,   37,   37,   37,   16,    0,   34,   34,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   17,    0,   25,
-
-       25,    0,   23,   23,    0,    0,    0,    0,    0,    0,
-       38,   38,   38,   17,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   40,   40,   40,   40,
-       40,   39,   44,   44,   45,    4,   14,   14,   14,   14,
-        5,   14,   14,   14,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   24,    0,
-       43,   43,    0,    0,    0,    0,   43,   43,    0,   22,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   34,    0,    0,   26,    0,    0,    0,    0,
-        0,   26,    0,    0,    0,    0,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   25,   23,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   27,    0,    0,    0,    0,    0,   27,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   44,   45,   14,    9,   14,   14,   14,   14,
-       14,    0,   20,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   43,   43,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   26,    0,   26,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   27,    0,   27,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   45,   14,    2,
-        8,   14,   14,   12,   21,    0,    0,   32,    0,    0,
-        0,    0,    0,   32,    0,    0,    0,    0,   32,    0,
-        0,    0,   32,    0,    0,    0,    0,    0,   32,    0,
-        0,    0,   43,   43,   43,   43,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   26,    0,    0,   26,    0,    0,
-
-       28,    0,    0,    0,    0,    0,   28,    0,    0,    0,
-        0,   28,    0,    0,    0,   28,    0,    0,    0,    0,
-        0,   28,    0,    0,    0,    0,    0,   33,    0,    0,
-        0,    0,    0,   33,    0,    0,    0,    0,   33,    0,
-        0,    0,   33,    0,    0,    0,    0,    0,   33,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       27,    0,    0,   27,    0,    0,   29,    0,    0,    0,
-        0,    0,   29,    0,    0,    0,    0,   29,    0,    0,
-
-        0,   29,    0,    0,    0,    0,    0,   29,    0,    0,
-        0,   45,   14,   14,   14,   14,   32,    0,   32,    0,
-       32,    0,   32,    0,   32,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   28,    0,   28,
-        0,   28,    0,   28,    0,   28,    0,   33,    0,   33,
-        0,   33,    0,   33,    0,   33,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   29,    0,
-       29,    0,   29,    0,   29,    0,   29,    0,   45,   14,
-
-       10,   14,   14,    0,   32,    0,    0,   32,    0,    0,
-       32,    0,   32,    0,    0,   32,    0,    0,   30,    0,
-        0,    0,    0,    0,   30,    0,    0,    0,    0,   30,
-        0,    0,   30,    0,    0,    0,    0,    0,   30,    0,
-        0,    0,    0,    0,   30,    0,    0,    0,   30,    0,
-        0,    0,    0,    0,   30,    0,    0,    0,    0,    0,
-        0,    0,   30,    0,    0,    0,    0,   28,    0,    0,
-       28,    0,    0,   28,    0,   28,    0,    0,   28,    0,
-       33,    0,    0,   33,    0,    0,   33,    0,   33,    0,
-        0,   33,    0,    0,   31,    0,    0,    0,    0,    0,
-
-       31,    0,    0,    0,    0,   31,    0,    0,   31,    0,
-        0,    0,    0,    0,   31,    0,    0,    0,    0,    0,
-       31,    0,    0,    0,   31,    0,    0,    0,    0,    0,
-       31,    0,    0,    0,    0,    0,    0,    0,   31,    0,
-        0,    0,    0,   29,    0,    0,   29,    0,    0,   29,
-        0,   29,    0,    0,   29,   45,   14,   11,   14,   30,
-        0,   30,    0,   30,    0,   30,    0,   30,    0,   30,
-        0,   30,    0,   30,    0,   30,    0,   31,    0,   31,
-        0,   31,    0,   31,    0,   31,    0,   31,    0,   31,
-        0,   31,    0,   31,    0,   45,   14,   14,    0,   30,
-
-        0,    0,   30,    0,    0,   30,    0,   30,    0,    0,
-       30,    0,    0,   30,    0,   30,    0,    0,   30,    0,
-        0,   30,    0,   31,    0,    0,   31,    0,    0,   31,
-        0,   31,    0,    0,   31,    0,    0,   31,    0,   31,
-        0,    0,   31,    0,    0,   31,   45,   14,   14,   45,
-        3,   14,   45,   13,   45,   45,   45,   45,    1,    1,
-       45,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    0
-    } ;
-
-static yyconst flex_int32_t yy_ec[256] =
-    {   0,
-        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
-        1,    1,    4,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    5,    6,    7,    8,    6,    6,    6,    1,    6,
-        6,    6,    9,    2,   10,   11,    6,   12,   13,   14,
-       13,   13,   13,   13,   13,   15,   13,    6,    6,    6,
-        6,    6,    6,    6,   16,   17,   17,   18,   19,   20,
-        6,    6,   21,    6,    6,   22,   23,   24,   25,   26,
-        6,   27,   28,   29,   30,   31,    6,   32,    6,    6,
-       33,   34,   35,    6,    6,    6,   17,   17,   17,   36,
-
-       37,   38,    6,    6,   39,    6,    6,   40,    6,   41,
-       42,   43,    6,    6,   44,   45,   46,   47,    6,   48,
-        6,    6,    1,    6,    1,    6,    6,    6,    6,    6,
-        6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
-        6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
-        6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
-        6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
-        6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
-        6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
-        6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
-
-        6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
-        6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
-        6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
-        6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
-        6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
-        6,    6,    6,    6,    6
-    } ;
-
-static yyconst flex_int32_t yy_meta[49] =
-    {   0,
-        1,    2,    3,    2,    2,    4,    5,    6,    1,    4,
-        1,    7,    7,    7,    7,    7,    7,    7,    7,    7,
-        4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
-        4,    4,    8,    1,    8,    7,    7,    7,    4,    4,
-        4,    4,    4,    4,    4,    4,    4,    4
-    } ;
-
-static yyconst flex_int16_t yy_base[1120] =
-    {   0,
-        0,    7,   15,    0,   62,   90,  118,    0,   61,   74,
-       89,  102,  130,  136,  142,  148,  162,  169,  174,  181,
-      187,  193,  199,  205,  211,  237,  263,  289,  315,  341,
-      367,  393,  427,  461,  487,  513,  539,  565,  226,  233,
-      261,  278,  328,  354, 1038, 8632,  251,    0,  231,    0,
-     1019,    0, 1006,  992,  985,  981,  983,  974,  972,  968,
-       21,  946,  967,  954,  944,   66,   93,  599,  123,  166,
-      278,  293,  635,   77,  304,  377,  319,  346,  332,  682,
-        0, 8632,  391,  941,  372,  358,  404,  425,  398,  718,
-      431,  437,  754,  442,  458,  790,  940, 8632, 8632,  463,
-
-      471,  476,  491,  497,  502,  524,  518,  826,    0, 8632,
-      554,  929,  529,  551,  862,  556,  569,  898,    0,  586,
-     8632,    6,  947, 8632,  607,  612,  616,  591,  935,    0,
-      933,  932,  234,    0,    0,  914,  900,    0,  892,  883,
-      877,    0,  886,  867,  855,  847,  857, 8632,  848,  620,
-        0,  640,  934,  948,  649,  656,  661,  690,  698,    0,
-      726,  962,  740,  702,    0,  737,    0,  763,  976,  990,
-      770,    0,  806,  813,    0,  774,  835,  843,  873,  810,
-        0,  878, 1004, 1018,  906,  882,    0,  911, 1032, 1046,
-      918, 1050,    0, 1055, 1069, 1083, 1090, 8632, 1094, 1099,
-
-     1107, 1115, 1119,    0, 1125,    0, 1134, 1148, 1162, 1169,
-        0, 1183, 1190,    0, 1187, 1224, 1192, 1260, 1274, 1199,
-     1207, 1288, 1233, 1324, 1338, 1240,    0, 1304,   89,  280,
-      306, 8632, 1244,    0,  271,    0,  852,  847,  839,  830,
-        0,  811,  794,  792,  791,  797, 1302, 1306, 1352, 1388,
-     1402,    0,    0, 1360, 1416, 1364, 1452, 1368, 1372, 1413,
-     1426, 1417, 1473, 1487,    0,    0,  195,    0, 1440,    0,
-     1457, 1437, 1501, 1537, 1551,    0,    0, 1509, 1565, 1513,
-     1601, 1517, 1521, 1563, 1567, 1574, 1615,    0,    0,    0,
-     1582,  442, 1586, 1629, 1634, 1638, 1652, 1688,    0,    0,
-
-        0, 1660, 1675, 1672, 1711, 1693, 1715, 1729, 1765,    0,
-        0,    0, 1737, 1752, 1749, 1788, 1769, 1773,    0, 1793,
-     1797, 1811, 1847,    0,    0,    0, 1819, 1834, 1831, 1870,
-     1852, 1874, 1879, 1915,    0,    0,    0, 1887,  536, 1891,
-     1929, 1896, 1900, 1943, 1979,    0,    0,    0, 1951, 1966,
-     1963, 2002,    0,  160,  785,    0,  782,  787,  755,  755,
-      760,  728, 8632, 1984, 2016, 2030, 2037, 2051, 2079, 2115,
-     2129, 2059,    0, 2133, 2064, 2170, 2184, 2071, 2198, 2226,
-     2262, 2276, 2290, 2087, 2095, 2326, 2362, 2376, 2412, 2426,
-     2145, 2440, 2476, 2490, 2504, 2518, 2532, 2568, 2582, 2152,
-
-     2596, 2632, 2646, 2660, 2674, 2688, 2724, 2738, 2206, 2752,
-     2788, 2802, 2816, 2830, 2210, 2218, 2844, 2880, 2894, 2930,
-     2944, 2239, 2958, 2994, 3008, 3022, 3036,  119,  694,    0,
-        0,  376,  652,    0, 8632, 2100, 2243, 2305, 3050, 3064,
-        0,    0, 2247,  578, 2298, 3078, 3092, 3106, 3120, 3156,
-     2335, 2339, 3170, 3206,    0,    0,    0, 2343,  586, 2347,
-     2384, 3185,    0, 3222,  289,  560, 2389, 2393, 3269, 3305,
-     3319,    0,    0, 2397, 2867, 2448, 3333, 3347, 3361, 3375,
-     3411, 2453, 2457, 3425, 3461,    0,    0,    0, 2461, 3143,
-     2540, 2544, 3475, 2548, 2552, 3511, 3525,  662, 2605, 2609,
-
-     3530, 3566, 3580,    0,    0, 2613,  663, 2617, 3594, 3608,
-     3622, 3636, 3672, 2697, 2701, 3686, 3722,    0,    0,    0,
-     2705,  669, 2709, 2760, 3701, 2765, 2769, 3728, 3764, 3778,
-        0,    0, 2773,  709, 2852, 3792, 3806, 3820, 3834, 3870,
-     2865, 2902, 3884, 3920,    0,    0,    0, 2906,  716, 2910,
-     2914, 3899, 2967, 2971, 3935, 3971, 3985,    0,    0, 2975,
-     3398, 2979, 3999, 4013, 4027, 4041, 4077, 3129, 3140, 4091,
-     4127,    0,    0,    0, 3178, 3448, 3277, 3281, 4141, 3285,
-     3289, 4177, 4191,  735, 3384, 3395, 4196, 4232, 4246,    0,
-        0, 3433,  744, 3445, 4260, 4274, 4288, 4302, 4338, 3484,
-
-     3488, 4352, 4388,    0,    0,    0, 3492,  807, 3496, 3538,
-     4367,  416,  653,  601,  560,  549, 3644, 3545, 4403, 4439,
-     4453, 4489, 4503, 3652, 4539, 4575, 4589, 4625, 4639, 3694,
-     4653, 4689, 4703, 4717, 4731, 4745, 4781, 4795, 4809, 4823,
-     4837, 4873, 3736, 4887, 4923, 4937, 4951, 3842, 3743, 4965,
-     5001, 5015, 5051, 5065, 3850, 5101, 5137, 3943, 3892, 5151,
-     5187, 5201, 5237, 5251, 3951, 5287, 5323, 5337, 5373, 5387,
-     4049, 5401, 5437, 5451, 5465, 5479, 5493, 5529, 5543, 5557,
-     5571, 5585, 5621, 4056, 5635, 5671, 5685, 5699, 4099, 4107,
-     5713, 5749, 5763, 5799, 5813, 4149, 5849, 5885,  413,  530,
-
-        0,  502,  501, 3549, 3656, 5899, 5913,  814, 5927, 5941,
-     4325, 3747, 5955, 5969, 5983,  816, 3855, 3955, 4518, 5997,
-     6011,    0,    0, 4060,  823, 4111, 6025, 6039, 6053, 6067,
-     4154, 4158, 6103, 6139, 6153,    0,    0, 4162,  824, 4204,
-     4208, 5080, 6167, 6181, 6195, 6231, 4213, 4217, 6245, 6281,
-        0,    0,    0, 4310,  936, 4322, 4360, 5266, 4411, 6295,
-     6309, 6323, 6337, 4415, 4419, 5828, 4423, 4461, 6373, 6387,
-     1098, 6401, 6415, 4476, 4473, 6429, 6443, 6457, 1104, 4511,
-     4547, 6471, 6485, 1149, 6499, 6513, 4562, 4559, 6527, 6541,
-     6555, 1152, 4598, 4602, 6076, 6569, 6583,    0,    0, 4606,
-
-     1196, 4610, 6597, 6611, 6625, 6639, 4662, 4666, 6675, 6711,
-     6725,    0,    0, 4670, 1205, 4674, 4753, 6648, 6739, 6753,
-     6767, 6803, 4758, 4762, 6817, 6853,    0,    0,    0, 4766,
-     1232, 4845, 4849, 6832, 4853, 6868, 6882, 6896, 6910, 4857,
-     4895, 6919, 4899, 4903, 6955, 6969, 1261, 6983, 6997, 5038,
-     4907, 7011, 7025, 7039, 1285,  246,  482,    0,  428, 5345,
-     4973, 7053, 7089, 7103, 7139, 7153, 4980, 7189, 7225, 7239,
-     7275, 7289, 5023, 7325, 7361, 7375, 7411, 5409, 5035, 5501,
-     5073, 4985, 5109, 5114, 5121, 5593, 5159, 5164, 5171, 5210,
-     5217, 5643, 5259, 5222, 5295,  633,  404,  385, 5299, 5303,
-
-      449,  471, 1701,  483,  509, 7425, 5307, 7461,  607,  647,
-     1860,  656,  668, 7475, 5353, 7511,  682,  715, 1930,  751,
-      761, 7525, 5357, 5417, 5421, 5509, 6084, 5513, 5601, 7168,
-     5605, 7561, 5651, 5655, 6111, 5721, 5725, 7304, 5729, 5733,
-     5771, 5775, 6203, 5779, 5783, 7434,  315,  395,  354,  263,
-        0,  327,  601,    0,  726,  782, 1476, 1490, 5829, 5867,
-     1604, 5872, 5877, 6127, 6221, 6261, 6268, 6355, 6273, 6360,
-     6365, 6666, 6693, 6700, 6785, 8632, 7576, 7584, 7592, 7600,
-     7608, 7616, 7621, 7625, 7632, 7640, 7648, 7655, 7663, 7671,
-     7679, 7687, 7694,  328, 7701, 7709, 7717, 7725,  304, 7733,
-
-     7741, 7749, 7757, 7765, 7773,  238, 7781, 7786, 7793, 7801,
-     7808,  168, 7815,  111, 7823, 7831,   83, 7839, 7847, 7855,
-     7863, 7871, 7879, 7887, 7895, 7903, 7911, 7919, 7927, 7935,
-     7943, 7951, 7959, 7967, 7972, 7979, 7987, 7995,    0, 8003,
-     8011, 8019, 8027, 8035, 8043, 8051, 8059, 8067, 8075, 8083,
-     8091, 8099, 8107, 8115, 8123, 8131, 8139, 8144, 8151, 8159,
-     8167, 8175, 8183, 8191, 8199, 8207, 8215, 8223, 8231, 8239,
-     8247, 8255, 8263, 8271, 8279, 8287, 8295, 8303, 8311, 8319,
-     8327, 8335, 8343, 8348, 8355, 8363, 8371, 8379, 8387, 8395,
-     8403, 8411, 8419, 8427, 8435, 8443, 8451, 8459, 8467, 8475,
-
-     8483, 8491, 8499, 8507, 8515, 8523, 8531, 8539, 8547, 8552,
-     8559, 8567, 8575, 8583, 8591, 8599, 8607, 8615, 8623
-    } ;
-
-static yyconst flex_int16_t yy_def[1120] =
-    {   0,
-      977,  977,  976,    3,  977,  977,  977,    7,    7,    7,
-        7,    7,    7,    7,    7,    7,  978,  978,    7,    7,
-        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
-        7,    7,  979,  979,    7,    7,    7,    7,  980,  980,
-      980,  980,    7,    7,  976,  976,  976,  981,  982,  983,
-      982,  984,  983,  983,  983,  983,  983,  983,  983,  983,
-      983,  983,  976,  976,  976,  976,  976,  976,  976,  976,
-      976,  976,  976,   73,  976,  976,  976,  976,  976,  976,
-      985,  976,  986,  985,  976,  976,  976,  976,  976,  976,
-      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
-
-      976,  976,  976,  976,  976,  976,  976,  976,  987,  976,
-      988,  987,  976,  976,  976,  976,  976,  976,  989,  989,
-      976,  990,  989,  976,  976,  976,  976,  976,  982,  981,
-      982,  982,  982,  983,  984,  983,  983,  983,  983,  983,
-      983,  983,  983,  983,  983,  983,  976,  976,  976,  976,
-       68,   68,  976,  991,  976,  976,  976,  976,  976,   74,
-       74,  992,  993,  976,  994,  976,   80,   80,  976,  995,
-      976,  985,  986,  986,  985,  976,  976,  976,  976,  976,
-       90,   90,  976,  996,  976,  976,   93,   93,  976,  997,
-      976,  976,   96,   96,  976,  998,  976,  976,  976,  976,
-
-      976,  976,  976,  999,  976,  108,  108,  976, 1000,  976,
-      987, 1001, 1001,  987,  976,  976,  216,  976, 1002,  976,
-      976,  976,  222,  976, 1003,  976, 1004, 1004, 1005, 1005,
-     1005,  976,  976, 1006, 1007, 1008, 1008, 1008, 1008, 1008,
-     1008, 1008, 1008, 1008,  976,  976,  976,  976,  976, 1009,
-     1009,  251,  251,  251,  251,  976,  976,  976,  976,  976,
-      976,  976, 1010, 1010,  264,  264,  264,  264, 1011, 1012,
-      976,  976,  976, 1013, 1013,  275,  275,  275,  275,  976,
-      976,  976,  976,  976,  976,  976,  996,  287,  287,  287,
-      287,  287,  976,  976,  976,  976,  976,  997,  298,  298,
-
-      298,  298,  298,  976,  976,  976,  976,  976,  998,  309,
-      309,  309,  309,  309,  976,  976,  976,  976, 1014,  976,
-      976,  976, 1000,  323,  323,  323,  323,  323,  976,  976,
-      976,  976,  976, 1002,  334,  334,  334,  334,  334,  976,
-      976,  976,  976,  976, 1003,  345,  345,  345,  345,  345,
-      976,  976, 1006, 1007, 1008, 1008, 1008, 1008, 1008, 1008,
-     1008,  976,  976,  249,  976, 1015,  976,  251,  368,  976,
-     1016,  251, 1017,  264,  273,  976, 1018,  976,  275,  379,
-      976, 1019,  379,  976,  976, 1020, 1020,  976,  976, 1021,
-      976, 1022, 1022,  976, 1023, 1022,  976,  976, 1024,  976,
-
-     1025, 1025,  976, 1026, 1025,  976,  976, 1027,  976, 1028,
-     1028,  976, 1029, 1028,  976,  976, 1030, 1030,  976,  976,
-     1031,  976, 1032, 1032,  976, 1033, 1032, 1034, 1035, 1035,
-     1035, 1035, 1035, 1035,  976,  976,  976,  976, 1036, 1036,
-      440,  440,  440,  440,  976,  976, 1037, 1037,  448, 1038,
-      976,  976,  976, 1038,  454,  454,  454,  454,  454,  448,
-      448,  449, 1039,  976,  464,  464,  976,  976,  976, 1040,
-     1040,  471,  471,  471,  471,  976,  976, 1041, 1041,  479,
-     1042,  976,  976,  976, 1042,  485,  485,  485,  485,  485,
-      479,  479,  479,  976,  976, 1043, 1043,  497,  976,  976,
-
-      976, 1044, 1044,  503,  503,  503,  503,  976,  976, 1045,
-     1045,  511, 1046,  976,  976,  976, 1046,  517,  517,  517,
-      517,  517,  511,  511,  512,  976,  976,  976, 1047, 1047,
-      530,  530,  530,  530,  976,  976, 1048, 1048,  538, 1049,
-      976,  976,  976, 1049,  544,  544,  544,  544,  544,  538,
-      538,  539,  976,  976,  976, 1050, 1050,  557,  557,  557,
-      557,  976,  976, 1051, 1051,  565, 1052,  976,  976,  976,
-     1052,  571,  571,  571,  571,  571,  565,  565,  565,  976,
-      976, 1053, 1053,  583,  976,  976,  976, 1054, 1054,  589,
-      589,  589,  589,  976,  976, 1055, 1055,  597, 1056,  976,
-
-      976,  976, 1056,  603,  603,  603,  603,  603,  597,  597,
-      598, 1057, 1058, 1058, 1058, 1058,  976,  976, 1059, 1059,
-     1060, 1060,  976,  976, 1061, 1061,  976,  976, 1062,  976,
-     1063, 1063,  976, 1064, 1063, 1065, 1065,  976, 1066, 1065,
-      976, 1064,  976, 1067, 1067, 1066, 1067,  976,  976, 1068,
-     1068, 1069, 1069,  976,  976, 1070, 1070,  976,  976, 1071,
-     1071, 1072, 1072,  976,  976, 1073, 1073,  976,  976, 1074,
-      976, 1075, 1075,  976, 1076, 1075, 1077, 1077,  976, 1078,
-     1077,  976, 1076,  976, 1079, 1079, 1078, 1079,  976,  976,
-     1080, 1080, 1081, 1081,  976,  976, 1082, 1082, 1083, 1084,
-
-     1084, 1084, 1084,  976,  976, 1085, 1085,  707, 1086, 1086,
-      710,  976,  976, 1087, 1087,  715,  976,  976,  976, 1088,
-     1088,  721,  721,  721,  721,  976,  976, 1089, 1089,  729,
-      976,  976,  976, 1090, 1090,  735,  735,  735,  735,  729,
-      729,  730, 1091, 1091,  744, 1092,  976,  976,  976, 1092,
-      750,  750,  750,  750,  750,  744,  744,  745,  976,  976,
-     1093, 1093,  762,  762,  762,  763,  976,  976, 1094, 1094,
-      770, 1095, 1095,  773,  976,  976, 1096, 1096,  778,  976,
-      976, 1097, 1097,  783, 1098, 1098,  786,  976,  976, 1099,
-     1099,  791,  976,  976,  976, 1100, 1100,  797,  797,  797,
-
-      797,  976,  976, 1101, 1101,  805,  976,  976,  976, 1102,
-     1102,  811,  811,  811,  811,  805,  805,  806, 1103, 1103,
-      820, 1104,  976,  976,  976, 1104,  826,  826,  826,  826,
-      826,  820,  820,  821,  976,  976, 1105, 1105,  838,  838,
-      838,  839,  976,  976, 1106, 1106,  846, 1107, 1107,  849,
-      976,  976, 1108, 1108,  854, 1109, 1110, 1110, 1110,  976,
-      976, 1111, 1111, 1112, 1112,  976,  976, 1113, 1113, 1114,
-     1114,  976,  976, 1115, 1115, 1116, 1116,  976,  976,  797,
-      797,  806,  805,  809,  976,  811,  811,  821,  820,  825,
-      976,  826,  826,  839,  838, 1109, 1110, 1110,  976,  976,
-
-      863,  863,  863,  865,  865,  865,  976,  976,  869,  869,
-      869,  871,  871,  871,  976,  976,  875,  875,  875,  877,
-      877,  877,  976,  976,  797,  797,  797,  805,  805,  806,
-      976,  976,  811,  811,  811,  820,  820,  821,  976,  836,
-      826,  826,  826,  838,  838,  839, 1109, 1110, 1110, 1109,
-     1110, 1110, 1109, 1110, 1109, 1109, 1117, 1117,  976, 1117,
-     1117,  976,  976, 1118, 1117,  976, 1117, 1119, 1118, 1118,
-     1118, 1119, 1119, 1119, 1119,    0,  976,  976,  976,  976,
-      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
-      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
-
-      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
-      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
-      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
-      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
-      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
-      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
-      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
-      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
-      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
-      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
-
-      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
-      976,  976,  976,  976,  976,  976,  976,  976,  976
-    } ;
-
-static yyconst flex_int16_t yy_nxt[8681] =
-    {   0,
-      976,   47,   48,   47,   47,  976,  463,   49,   47,   48,
-       47,   47,  131,  231,   49,   46,   47,   48,   47,   47,
-       50,   46,   51,   46,   46,   46,   52,   52,   52,   52,
-       50,   50,   53,   54,   50,   55,   50,   50,   56,   50,
-       57,   58,   50,   59,   60,   50,   50,   46,   46,   46,
-       50,   61,   62,   50,   50,   50,   50,   50,   50,   50,
-       50,   50,   50,   47,   48,   47,   47,  144,  145,   51,
-       69,   70,   71,   71,   71,   71,  150,  151,  151,  151,
-      151,   63,   64,   69,   70,   71,   71,   71,   71,  463,
-       65,   47,   48,   47,   47,  131,  231,   51,   72,   46,
-
-       73,   74,   74,   74,  152,  152,  152,  152,  976,   63,
-       64,   72,   46,   73,   74,   74,   74,  319,   65,   47,
-       48,   47,   47,  612,  976,   51,  132,   66,   67,   68,
-       68,   68,   68,  156,  157,  157,  157,  157,   64,   75,
-       46,   76,   77,   77,   77,   75,   46,   76,   77,   77,
-       77,   78,   79,   80,   80,   80,   80,   78,   79,   80,
-       80,   80,   80,   47,   48,   47,   47,  132,   82,   83,
-       47,   48,   47,   47,  270,   82,   83,  158,  158,  158,
-      158,  428,   84,   85,   86,   87,   87,   87,   87,   84,
-       85,   86,   87,   87,   87,   87,   88,   89,   90,   90,
-
-       90,   90,   88,   89,   90,   90,   90,   90,   91,   92,
-       93,   93,   93,   93,   91,   92,   93,   93,   93,   93,
-       94,   95,   96,   96,   96,   96,  374,  120,   48,  120,
-      120,   97,  121,  122,  120,   48,  120,  120,  132,  121,
-      122,  132,  374,   98,  353,   99,   94,   95,   96,   96,
-       96,   96,  128,  132,  128,  128,  896,   97,  129,  123,
-      235,  133,  120,   48,  120,  120,  123,  124,  122,   98,
-      132,   99,  100,  101,  102,  102,  102,  102,  132,  120,
-       48,  120,  120,   97,  124,  122,  131,  231,  156,  157,
-      157,  157,  157,  354,  123,   98,  159,   99,  100,  101,
-
-      102,  102,  102,  102,  160,  160,  160,  160,  953,   97,
-      319,  123,  131,  231,  159,  164,  164,  164,  164,  950,
-      263,   98,  132,   99,  103,   46,  104,  105,  105,  105,
-      164,  164,  164,  164,  270,   97,  263,  125,   46,  126,
-      127,  127,  127,  168,  168,  168,  168,   98,   46,   99,
-      103,   46,  104,  105,  105,  105,  166,  167,  167,  167,
-      167,   97,  954,  125,   46,  126,  127,  127,  127,  178,
-      178,  178,  178,   98,   46,   99,  106,  107,  108,  108,
-      108,  108,  176,  177,  177,  177,  177,   97,  164,  164,
-      164,  164,  131,  952,  131,  131,  614,  131,  174,   98,
-
-      615,   99,  106,  107,  108,  108,  108,  108,  165,  182,
-      182,  182,  182,   97,  176,  177,  177,  177,  177,  951,
-      132,  949,  179,  132,  165,   98,  856,   99,   47,   48,
-       47,   47,  948,  110,  111,  180,  181,  181,  181,  181,
-      179,  186,  187,  187,  187,  187,  699,  112,  188,  188,
-      188,  188,  192,  193,  193,  193,  193,  720,  723,   98,
-      387,   99,   47,   48,   47,   47,  898,  110,  111,  194,
-      194,  194,  194,  199,  200,  200,  200,  200,  387,  720,
-      723,  112,  201,  201,  201,  201,  199,  200,  200,  200,
-      200,  470,  473,   98,  202,   99,  113,  114,  115,  115,
-
-      115,  115,  203,  203,  203,  203,  897,   97,  203,  203,
-      203,  203,  202,  203,  203,  203,  203,  470,  473,   98,
-      859,   99,  113,  114,  115,  115,  115,  115,  204,  207,
-      207,  207,  207,   97,  205,  206,  206,  206,  206,  215,
-      216,  216,  216,  216,  204,   98,  858,   99,  116,  117,
-      118,  118,  118,  118,  418,  131,  857,  131,  131,   97,
-      131,  213,  217,  217,  217,  217,  221,  222,  222,  222,
-      222,   98,  418,   99,  116,  117,  118,  118,  118,  118,
-      223,  223,  223,  223,  703,   97,  131,  228,  131,  228,
-      228,  263,  128,  229,  128,  128,  620,   98,  129,   99,
-
-      153,  153,  153,  153,  626,  702,  154,  263,  132,  150,
-      151,  151,  151,  151,  620,  734,  737,  155,  233,  233,
-      233,  233,  626,  233,  233,  233,  233,  233,  233,  233,
-      233,  152,  152,  152,  152,  155,  161,  161,  161,  161,
-      132,  701,  162,  234,  947,  955,  160,  160,  160,  160,
-      976,  152,  152,  152,  152,  734,  737,  256,  256,  234,
-      257,  257,  257,  257,  274,  277,  163,  158,  158,  158,
-      158,  156,  157,  157,  157,  157,  274,  277,  700,  159,
-      387,  651,  163,  169,  169,  169,  169,  657,  616,  170,
-      750,  753,  166,  167,  167,  167,  167,  159,  387,  651,
-
-      171,  158,  158,  158,  158,  657,  258,  258,  159,  259,
-      259,  259,  259,  164,  164,  164,  164,  613,  171,  183,
-      183,  183,  183,  750,  753,  184,  159,  661,  180,  181,
-      181,  181,  181,  132,  667,  260,  185,  261,  262,  262,
-      262,  161,  161,  161,  161,  661,  435,  162,  168,  168,
-      168,  168,  667,  418,  185,  189,  189,  189,  189,  485,
-      488,  190,  692,  956,  186,  187,  187,  187,  187,  485,
-      488,  418,  191,  976,  168,  168,  168,  168,  280,  280,
-      692,  281,  281,  281,  281,  178,  178,  178,  178,  132,
-      191,  195,  195,  195,  195,  434,  957,  196,  433,  432,
-
-      192,  193,  193,  193,  193,  431,  430,  131,  197,  131,
-      131,  429,  131,  174,  131,  363,  131,  131,  362,  131,
-      174,  182,  182,  182,  182,  698,  197,  208,  208,  208,
-      208,  361,  620,  209,  626,  360,  205,  206,  206,  206,
-      206,  863,  869,  698,  210,  176,  177,  177,  177,  177,
-      620,  359,  626,  179,  178,  178,  178,  178,  358,  863,
-      869,  179,  210,  218,  218,  218,  218,  357,  356,  219,
-      355,  179,  215,  216,  216,  216,  216,  246,  245,  179,
-      220,  282,  282,  244,  283,  283,  283,  283,  976,  182,
-      182,  182,  182,  188,  188,  188,  188,  243,  220,  224,
-
-      224,  224,  224,  242,  241,  225,  240,  239,  221,  222,
-      222,  222,  222,  238,  293,  293,  226,  294,  294,  294,
-      294,  976,  188,  188,  188,  188,  304,  304,  237,  305,
-      305,  305,  305,  236,  226,  153,  153,  153,  153,  132,
-      132,  154,  132,  247,  248,  249,  249,  249,  249,  251,
-      153,  251,  251,  232,  875,  252,  214,  253,  254,  255,
-      255,  255,  255,  264,  161,  264,  264,  198,  175,  265,
-      149,  266,  875,  267,  268,  268,  268,  169,  169,  169,
-      169,  148,  147,  170,  146,  271,  272,  273,  273,  273,
-      273,  275,  169,  275,  275,  143,  142,  276,  141,  277,
-
-      278,  279,  279,  279,  279,  183,  183,  183,  183,  140,
-      139,  184,  138,  284,  285,  286,  286,  286,  286,  288,
-      183,  288,  288,  137,  136,  289,  132,  290,  291,  292,
-      292,  292,  292,  189,  189,  189,  189,  976,  976,  190,
-      976,  295,  296,  297,  297,  297,  297,  299,  189,  299,
-      299,  976,  976,  300,  976,  301,  302,  303,  303,  303,
-      303,  194,  194,  194,  194,  976,  194,  194,  194,  194,
-      195,  195,  195,  195,  976,  976,  196,  976,  306,  307,
-      308,  308,  308,  308,  310,  195,  310,  310,  976,  976,
-      311,  976,  312,  313,  314,  314,  314,  314,  315,  315,
-
-      976,  316,  316,  316,  316,  201,  201,  201,  201,  199,
-      200,  200,  200,  200,  976,  976,  651,  202,  201,  201,
-      201,  201,  657,  317,  317,  202,  318,  318,  318,  318,
-      203,  203,  203,  203,  651,  202,  207,  207,  207,  207,
-      657,  976,  976,  202,  976,  207,  207,  207,  207,  208,
-      208,  208,  208,  976,  976,  209,  976,  320,  321,  322,
-      322,  322,  322,  324,  208,  324,  324,  661,  976,  325,
-      667,  326,  327,  328,  328,  328,  328,  329,  329,  976,
-      330,  330,  330,  330,  131,  661,  131,  131,  667,  131,
-      213,  131,  976,  131,  131,  976,  131,  213,  217,  217,
-
-      217,  217,  976,  217,  217,  217,  217,  340,  340,  976,
-      341,  341,  341,  341,  881,  131,  976,  131,  223,  223,
-      223,  223,  131,  887,  131,  218,  218,  218,  218,  976,
-      976,  219,  881,  976,  215,  216,  216,  216,  216,  976,
-      976,  887,  220,  976,  223,  223,  223,  223,  351,  351,
-      893,  352,  352,  352,  352,  233,  233,  233,  233,  976,
-      220,  218,  218,  218,  218,  976,  976,  219,  893,  331,
-      332,  333,  333,  333,  333,  335,  218,  335,  335,  692,
-      976,  336,  976,  337,  338,  339,  339,  339,  339,  224,
-      224,  224,  224,  976,  976,  225,  976,  692,  221,  222,
-
-      222,  222,  222,  698,  976,  228,  226,  228,  228,  976,
-      976,  229,  248,  249,  249,  249,  249,  364,  364,  364,
-      364,  698,  976,  976,  226,  224,  224,  224,  224,  976,
-      976,  225,  976,  342,  343,  344,  344,  344,  344,  346,
-      224,  346,  346,  976,  976,  347,  976,  348,  349,  350,
-      350,  350,  350,  365,  365,  365,  365,  976,  976,  366,
-      976,  976,  248,  249,  249,  249,  249,  976,  976,  976,
-      367,  368,  368,  368,  368,  257,  257,  257,  257,  259,
-      259,  259,  259,  259,  259,  259,  259,  976,  367,  251,
-      153,  251,  251,  976,  976,  252,  976,  253,  254,  255,
-
-      255,  255,  255,  251,  153,  251,  251,  976,  976,  252,
-      976,  253,  254,  255,  255,  255,  255,  369,  370,  369,
-      369,  976,  976,  371,  262,  262,  262,  262,  262,  262,
-      262,  262,  976,  976,  372,  976,  976,  262,  262,  262,
-      262,  161,  161,  161,  161,  976,  976,  162,  375,  375,
-      375,  375,  372,  153,  153,  153,  153,  373,  976,  154,
-      976,  976,  976,  257,  257,  257,  257,  272,  273,  273,
-      273,  273,  976,  373,  264,  161,  264,  264,  959,  960,
-      265,  976,  266,  961,  267,  268,  268,  268,  264,  161,
-      264,  264,  959,  960,  265,  976,  266,  961,  267,  268,
-
-      268,  268,  376,  376,  376,  376,  976,  976,  377,  976,
-      976,  272,  273,  273,  273,  273,  976,  976,  976,  378,
-      379,  379,  379,  379,  281,  281,  281,  281,  283,  283,
-      283,  283,  283,  283,  283,  283,  976,  378,  275,  169,
-      275,  275,  976,  976,  276,  976,  277,  278,  279,  279,
-      279,  279,  275,  169,  275,  275,  976,  976,  276,  976,
-      277,  278,  279,  279,  279,  279,  380,  381,  380,  380,
-      976,  976,  382,  285,  286,  286,  286,  286,  384,  384,
-      384,  384,  976,  383,  285,  286,  286,  286,  286,  976,
-      976,  976,  385,  386,  386,  386,  386,  294,  294,  294,
-
-      294,  383,  169,  169,  169,  169,  959,  960,  170,  976,
-      385,  961,  281,  281,  281,  281,  288,  183,  288,  288,
-      976,  976,  289,  976,  290,  291,  292,  292,  292,  292,
-      183,  183,  183,  183,  976,  976,  184,  976,  976,  976,
-      294,  294,  294,  294,  296,  297,  297,  297,  297,  388,
-      388,  388,  388,  389,  389,  389,  389,  976,  976,  390,
-      976,  976,  296,  297,  297,  297,  297,  976,  976,  976,
-      391,  392,  392,  392,  392,  976,  393,  394,  393,  393,
-      976,  976,  395,  305,  305,  305,  305,  976,  391,  299,
-      189,  299,  299,  396,  976,  300,  976,  301,  302,  303,
-
-      303,  303,  303,  307,  308,  308,  308,  308,  976,  720,
-      723,  396,  189,  189,  189,  189,  976,  976,  190,  863,
-      976,  976,  305,  305,  305,  305,  397,  397,  397,  397,
-      398,  398,  398,  398,  976,  976,  399,  863,  976,  307,
-      308,  308,  308,  308,  976,  976,  976,  400,  401,  401,
-      401,  401,  976,  402,  403,  402,  402,  976,  976,  404,
-      316,  316,  316,  316,  976,  400,  310,  195,  310,  310,
-      405,  976,  311,  976,  312,  313,  314,  314,  314,  314,
-      318,  318,  318,  318,  318,  318,  318,  318,  405,  195,
-      195,  195,  195,  976,  976,  196,  976,  976,  976,  316,
-
-      316,  316,  316,  321,  322,  322,  322,  322,  406,  406,
-      406,  406,  407,  407,  407,  407,  976,  976,  408,  976,
-      976,  321,  322,  322,  322,  322,  976,  976,  976,  409,
-      410,  410,  410,  410,  976,  411,  412,  411,  411,  976,
-      976,  413,  330,  330,  330,  330,  976,  409,  324,  208,
-      324,  324,  414,  976,  325,  976,  326,  327,  328,  328,
-      328,  328,  332,  333,  333,  333,  333,  976,  734,  737,
-      414,  208,  208,  208,  208,  976,  976,  209,  869,  976,
-      976,  330,  330,  330,  330,  415,  415,  415,  415,  332,
-      333,  333,  333,  333,  976,  976,  869,  416,  417,  417,
-
-      417,  417,  341,  341,  341,  341,  343,  344,  344,  344,
-      344,  419,  419,  419,  419,  416,  335,  218,  335,  335,
-      976,  976,  336,  976,  337,  338,  339,  339,  339,  339,
-      218,  218,  218,  218,  976,  976,  219,  976,  750,  753,
-      341,  341,  341,  341,  420,  420,  420,  420,  875,  976,
-      421,  976,  976,  343,  344,  344,  344,  344,  976,  976,
-      976,  422,  423,  423,  423,  423,  875,  424,  425,  424,
-      424,  976,  976,  426,  352,  352,  352,  352,  976,  422,
-      346,  224,  346,  346,  427,  976,  347,  976,  348,  349,
-      350,  350,  350,  350,  976,  364,  364,  364,  364,  976,
-
-      976,  976,  427,  224,  224,  224,  224,  976,  976,  225,
-      976,  976,  976,  352,  352,  352,  352,  365,  365,  365,
-      365,  976,  976,  366,  976,  436,  437,  438,  438,  438,
-      438,  440,  365,  440,  440,  976,  976,  441,  976,  442,
-      443,  444,  444,  444,  444,  445,  445,  976,  446,  446,
-      446,  446,  369,  370,  369,  369,  976,  976,  371,  976,
-      976,  976,  368,  368,  368,  368,  976,  460,  461,  372,
-      462,  462,  462,  462,  976,  375,  375,  375,  375,  476,
-      476,  976,  477,  477,  477,  477,  976,  372,  447,  448,
-      449,  449,  449,  449,  976,  976,  976,  250,  384,  384,
-
-      384,  384,  976,  494,  494,  385,  495,  495,  495,  495,
-      437,  438,  438,  438,  438,  250,  370,  370,  370,  370,
-      976,  976,  450,  385,  451,  452,  453,  453,  453,  453,
-      455,  370,  455,  455,  976,  976,  456,  976,  457,  458,
-      459,  459,  459,  459,  464,  465,  465,  465,  466,  466,
-      466,  466,  466,  508,  508,  976,  509,  509,  509,  509,
-      535,  535,  976,  536,  536,  536,  536,  976,  466,  466,
-      466,  376,  376,  376,  376,  976,  976,  377,  976,  467,
-      468,  469,  469,  469,  469,  471,  376,  471,  471,  976,
-      976,  472,  976,  473,  474,  475,  475,  475,  475,  380,
-
-      381,  380,  380,  976,  976,  382,  976,  976,  976,  379,
-      379,  379,  379,  976,  562,  562,  383,  563,  563,  563,
-      563,  415,  415,  415,  415,  976,  580,  580,  416,  581,
-      581,  581,  581,  976,  383,  478,  479,  480,  480,  480,
-      480,  976,  976,  976,  274,  976,  416,  594,  594,  976,
-      595,  595,  595,  595,  617,  617,  617,  617,  619,  619,
-      619,  619,  274,  381,  381,  381,  381,  976,  976,  481,
-      976,  482,  483,  484,  484,  484,  484,  486,  381,  486,
-      486,  976,  976,  487,  976,  488,  489,  490,  490,  490,
-      490,  275,  169,  275,  275,  976,  976,  276,  491,  492,
-
-      976,  493,  493,  493,  493,  976,  976,  976,  274,  446,
-      446,  446,  446,  976,  976,  437,  438,  438,  438,  438,
-      976,  976,  976,  618,  976,  976,  274,  288,  183,  288,
-      288,  976,  976,  289,  976,  290,  291,  386,  386,  386,
-      386,  618,  976,  976,  387,  452,  453,  453,  453,  453,
-      623,  623,  623,  623,  625,  625,  625,  625,  462,  462,
-      462,  462,  387,  288,  183,  288,  288,  976,  976,  289,
-      496,  497,  291,  498,  498,  498,  498,  389,  389,  389,
-      389,  976,  976,  390,  976,  976,  976,  388,  388,  388,
-      388,  976,  976,  976,  391,  462,  462,  462,  462,  468,
-
-      469,  469,  469,  469,  627,  627,  627,  627,  631,  631,
-      631,  631,  391,  389,  389,  389,  389,  976,  976,  390,
-      976,  499,  500,  501,  501,  501,  501,  503,  389,  503,
-      503,  976,  976,  504,  976,  505,  506,  507,  507,  507,
-      507,  393,  394,  393,  393,  976,  976,  395,  976,  301,
-      302,  392,  392,  392,  392,  976,  976,  976,  396,  477,
-      477,  477,  477,  483,  484,  484,  484,  484,  641,  641,
-      641,  641,  644,  644,  644,  644,  396,  393,  394,  393,
-      393,  976,  976,  395,  976,  510,  511,  512,  512,  512,
-      512,  394,  394,  394,  394,  976,  976,  513,  976,  514,
-
-      515,  516,  516,  516,  516,  518,  394,  518,  518,  976,
-      976,  519,  976,  520,  521,  522,  522,  522,  522,  299,
-      189,  299,  299,  976,  976,  300,  523,  524,  302,  525,
-      525,  525,  525,  398,  398,  398,  398,  976,  976,  399,
-      976,  976,  976,  397,  397,  397,  397,  976,  976,  976,
-      400,  493,  493,  493,  493,  493,  493,  493,  493,  495,
-      495,  495,  495,  495,  495,  495,  495,  976,  400,  398,
-      398,  398,  398,  976,  976,  399,  976,  526,  527,  528,
-      528,  528,  528,  530,  398,  530,  530,  976,  976,  531,
-      976,  532,  533,  534,  534,  534,  534,  402,  403,  402,
-
-      402,  976,  976,  404,  976,  312,  313,  401,  401,  401,
-      401,  976,  976,  976,  405,  500,  501,  501,  501,  501,
-      648,  648,  648,  648,  650,  650,  650,  650,  509,  509,
-      509,  509,  405,  402,  403,  402,  402,  976,  976,  404,
-      976,  537,  538,  539,  539,  539,  539,  403,  403,  403,
-      403,  976,  976,  540,  976,  541,  542,  543,  543,  543,
-      543,  545,  403,  545,  545,  976,  976,  546,  976,  547,
-      548,  549,  549,  549,  549,  310,  195,  310,  310,  976,
-      976,  311,  550,  551,  313,  552,  552,  552,  552,  407,
-      407,  407,  407,  976,  976,  408,  976,  976,  976,  406,
-
-      406,  406,  406,  976,  976,  976,  409,  515,  516,  516,
-      516,  516,  654,  654,  654,  654,  656,  656,  656,  656,
-      525,  525,  525,  525,  409,  407,  407,  407,  407,  976,
-      976,  408,  976,  553,  554,  555,  555,  555,  555,  557,
-      407,  557,  557,  976,  976,  558,  976,  559,  560,  561,
-      561,  561,  561,  411,  412,  411,  411,  976,  976,  413,
-      976,  326,  327,  410,  410,  410,  410,  976,  976,  976,
-      414,  525,  525,  525,  525,  527,  528,  528,  528,  528,
-      658,  658,  658,  658,  660,  660,  660,  660,  414,  411,
-      412,  411,  411,  976,  976,  413,  976,  564,  565,  566,
-
-      566,  566,  566,  412,  412,  412,  412,  976,  976,  567,
-      976,  568,  569,  570,  570,  570,  570,  572,  412,  572,
-      572,  976,  976,  573,  976,  574,  575,  576,  576,  576,
-      576,  324,  208,  324,  324,  976,  976,  325,  577,  578,
-      327,  579,  579,  579,  579,  335,  218,  335,  335,  976,
-      976,  336,  976,  337,  338,  417,  417,  417,  417,  976,
-      976,  976,  418,  536,  536,  536,  536,  976,  632,  633,
-      632,  632,  976,  976,  634,  542,  543,  543,  543,  543,
-      418,  335,  218,  335,  335,  635,  976,  336,  582,  583,
-      338,  584,  584,  584,  584,  420,  420,  420,  420,  976,
-
-      976,  421,  976,  635,  976,  419,  419,  419,  419,  976,
-      976,  976,  422,  664,  664,  664,  664,  666,  666,  666,
-      666,  552,  552,  552,  552,  552,  552,  552,  552,  976,
-      422,  420,  420,  420,  420,  976,  976,  421,  976,  585,
-      586,  587,  587,  587,  587,  589,  420,  589,  589,  976,
-      976,  590,  976,  591,  592,  593,  593,  593,  593,  424,
-      425,  424,  424,  976,  976,  426,  976,  348,  349,  423,
-      423,  423,  423,  976,  976,  976,  427,  554,  555,  555,
-      555,  555,  668,  668,  668,  668,  672,  672,  672,  672,
-      563,  563,  563,  563,  427,  424,  425,  424,  424,  976,
-
-      976,  426,  976,  596,  597,  598,  598,  598,  598,  425,
-      425,  425,  425,  976,  976,  599,  976,  600,  601,  602,
-      602,  602,  602,  604,  425,  604,  604,  976,  976,  605,
-      976,  606,  607,  608,  608,  608,  608,  346,  224,  346,
-      346,  976,  976,  347,  609,  610,  349,  611,  611,  611,
-      611,  440,  365,  440,  440,  976,  976,  441,  976,  442,
-      443,  444,  444,  444,  444,  440,  365,  440,  440,  976,
-      976,  441,  976,  442,  443,  444,  444,  444,  444,  365,
-      365,  365,  365,  976,  976,  366,  976,  976,  976,  446,
-      446,  446,  446,  251,  153,  251,  251,  976,  976,  252,
-
-      976,  253,  448,  449,  449,  449,  449,  251,  153,  251,
-      251,  976,  976,  252,  976,  253,  254,  621,  621,  621,
-      621,  369,  370,  369,  369,  976,  976,  371,  976,  976,
-      448,  449,  449,  449,  449,  976,  976,  976,  622,  569,
-      570,  570,  570,  570,  645,  638,  645,  645,  976,  976,
-      646,  682,  682,  682,  682,  976,  622,  455,  370,  455,
-      455,  647,  976,  456,  976,  457,  458,  459,  459,  459,
-      459,  365,  365,  365,  365,  976,  976,  366,  976,  647,
-      452,  453,  453,  453,  453,  976,  976,  976,  624,  685,
-      685,  685,  685,  976,  976,  254,  462,  462,  462,  462,
-
-      976,  976,  976,  372,  976,  976,  624,  455,  370,  455,
-      455,  976,  976,  456,  976,  457,  458,  459,  459,  459,
-      459,  372,  263,  264,  161,  264,  264,  263,  263,  265,
-      263,  266,  263,  464,  465,  465,  465,  466,  466,  466,
-      466,  466,  263,  263,  263,  263,  263,  263,  263,  263,
-      263,  263,  263,  374,  263,  263,  263,  466,  466,  466,
-      263,  263,  263,  263,  263,  263,  263,  263,  263,  374,
-      628,  628,  628,  628,  976,  976,  629,  976,  976,  468,
-      469,  469,  469,  469,  976,  976,  976,  630,  579,  579,
-      579,  579,  579,  579,  579,  579,  581,  581,  581,  581,
-
-      581,  581,  581,  581,  976,  630,  471,  376,  471,  471,
-      976,  976,  472,  976,  473,  474,  475,  475,  475,  475,
-      471,  376,  471,  471,  976,  976,  472,  976,  473,  474,
-      475,  475,  475,  475,  376,  376,  376,  376,  976,  976,
-      377,  976,  976,  976,  477,  477,  477,  477,  275,  169,
-      275,  275,  976,  976,  276,  976,  277,  479,  480,  480,
-      480,  480,  275,  169,  275,  275,  976,  976,  276,  976,
-      277,  278,  636,  636,  636,  636,  637,  638,  637,  637,
-      976,  976,  639,  976,  976,  479,  480,  480,  480,  480,
-      976,  976,  976,  640,  586,  587,  587,  587,  587,  673,
-
-      674,  673,  673,  976,  976,  675,  689,  689,  689,  689,
-      976,  640,  486,  381,  486,  486,  676,  976,  487,  976,
-      488,  489,  490,  490,  490,  490,  633,  633,  633,  633,
-      976,  976,  642,  976,  676,  483,  484,  484,  484,  484,
-      976,  976,  976,  643,  691,  691,  691,  691,  976,  686,
-      679,  686,  686,  976,  976,  687,  595,  595,  595,  595,
-      976,  643,  486,  381,  486,  486,  688,  976,  487,  976,
-      488,  489,  490,  490,  490,  490,  380,  381,  380,  380,
-      976,  976,  382,  976,  688,  976,  493,  493,  493,  493,
-      976,  976,  976,  383,  601,  602,  602,  602,  602,  695,
-
-      695,  695,  695,  697,  697,  697,  697,  611,  611,  611,
-      611,  383,  288,  183,  288,  288,  976,  976,  289,  976,
-      290,  291,  498,  498,  498,  498,  288,  183,  288,  288,
-      976,  976,  289,  976,  290,  291,  498,  498,  498,  498,
-      500,  501,  501,  501,  501,  976,  976,  976,  649,  611,
-      611,  611,  611,  704,  704,  976,  705,  705,  705,  705,
-      705,  705,  705,  705,  976,  976,  649,  503,  389,  503,
-      503,  976,  976,  504,  976,  505,  506,  507,  507,  507,
-      507,  503,  389,  503,  503,  976,  976,  504,  976,  505,
-      506,  507,  507,  507,  507,  389,  389,  389,  389,  976,
-
-      976,  390,  976,  976,  976,  509,  509,  509,  509,  299,
-      189,  299,  299,  976,  976,  300,  976,  301,  511,  512,
-      512,  512,  512,  299,  189,  299,  299,  976,  976,  300,
-      976,  301,  302,  652,  652,  652,  652,  393,  394,  393,
-      393,  976,  976,  395,  976,  976,  511,  512,  512,  512,
-      512,  976,  976,  976,  653,  617,  617,  617,  617,  976,
-      712,  712,  618,  713,  713,  713,  713,  705,  705,  705,
-      705,  976,  653,  518,  394,  518,  518,  976,  976,  519,
-      618,  520,  521,  522,  522,  522,  522,  389,  389,  389,
-      389,  976,  976,  390,  976,  976,  515,  516,  516,  516,
-
-      516,  976,  726,  726,  655,  727,  727,  727,  727,  976,
-      976,  302,  525,  525,  525,  525,  976,  976,  976,  396,
-      976,  976,  655,  518,  394,  518,  518,  976,  976,  519,
-      976,  520,  521,  522,  522,  522,  522,  396,  527,  528,
-      528,  528,  528,  976,  759,  759,  659,  760,  760,  760,
-      760,  767,  767,  976,  768,  768,  768,  768,  713,  713,
-      713,  713,  976,  976,  659,  530,  398,  530,  530,  976,
-      976,  531,  976,  532,  533,  534,  534,  534,  534,  530,
-      398,  530,  530,  976,  976,  531,  976,  532,  533,  534,
-      534,  534,  534,  398,  398,  398,  398,  976,  976,  399,
-
-      976,  976,  976,  536,  536,  536,  536,  310,  195,  310,
-      310,  976,  976,  311,  976,  312,  538,  539,  539,  539,
-      539,  310,  195,  310,  310,  976,  976,  311,  976,  312,
-      313,  662,  662,  662,  662,  402,  403,  402,  402,  976,
-      976,  404,  976,  976,  538,  539,  539,  539,  539,  976,
-      976,  976,  663,  648,  648,  648,  648,  976,  775,  775,
-      649,  776,  776,  776,  776,  718,  719,  719,  719,  719,
-      663,  545,  403,  545,  545,  976,  976,  546,  649,  547,
-      548,  549,  549,  549,  549,  398,  398,  398,  398,  976,
-      976,  399,  976,  976,  542,  543,  543,  543,  543,  976,
-
-      780,  780,  665,  781,  781,  781,  781,  976,  976,  313,
-      552,  552,  552,  552,  976,  976,  976,  405,  976,  976,
-      665,  545,  403,  545,  545,  976,  976,  546,  976,  547,
-      548,  549,  549,  549,  549,  405,  669,  669,  669,  669,
-      976,  976,  670,  976,  976,  554,  555,  555,  555,  555,
-      976,  976,  976,  671,  658,  658,  658,  658,  976,  788,
-      788,  659,  789,  789,  789,  789,  860,  860,  860,  860,
-      976,  671,  557,  407,  557,  557,  976,  976,  558,  659,
-      559,  560,  561,  561,  561,  561,  557,  407,  557,  557,
-      976,  976,  558,  976,  559,  560,  561,  561,  561,  561,
-
-      407,  407,  407,  407,  976,  976,  408,  976,  976,  976,
-      563,  563,  563,  563,  324,  208,  324,  324,  976,  976,
-      325,  976,  326,  565,  566,  566,  566,  566,  324,  208,
-      324,  324,  976,  976,  325,  976,  326,  327,  677,  677,
-      677,  677,  678,  679,  678,  678,  976,  976,  680,  976,
-      976,  565,  566,  566,  566,  566,  976,  802,  802,  681,
-      803,  803,  803,  803,  835,  835,  976,  836,  836,  836,
-      836,  862,  862,  862,  862,  976,  976,  681,  572,  412,
-      572,  572,  976,  976,  573,  976,  574,  575,  576,  576,
-      576,  576,  674,  674,  674,  674,  976,  976,  683,  976,
-
-      976,  569,  570,  570,  570,  570,  976,  976,  976,  684,
-      689,  689,  689,  689,  976,  843,  843,  690,  844,  844,
-      844,  844,  727,  727,  727,  727,  976,  684,  572,  412,
-      572,  572,  976,  976,  573,  690,  574,  575,  576,  576,
-      576,  576,  411,  412,  411,  411,  976,  976,  413,  976,
-      976,  976,  579,  579,  579,  579,  976,  851,  851,  414,
-      852,  852,  852,  852,  732,  733,  733,  733,  733,  866,
-      866,  866,  866,  868,  868,  868,  868,  414,  335,  218,
-      335,  335,  976,  976,  336,  976,  337,  338,  584,  584,
-      584,  584,  335,  218,  335,  335,  976,  976,  336,  976,
-
-      337,  338,  584,  584,  584,  584,  586,  587,  587,  587,
-      587,  976,  976,  976,  690,  742,  742,  742,  742,  742,
-      742,  742,  742,  748,  749,  749,  749,  749,  872,  872,
-      872,  872,  690,  589,  420,  589,  589,  976,  976,  590,
-      976,  591,  592,  593,  593,  593,  593,  589,  420,  589,
-      589,  976,  976,  590,  976,  591,  592,  593,  593,  593,
-      593,  420,  420,  420,  420,  976,  976,  421,  976,  976,
-      976,  595,  595,  595,  595,  346,  224,  346,  346,  976,
-      976,  347,  976,  348,  597,  598,  598,  598,  598,  346,
-      224,  346,  346,  976,  976,  347,  976,  348,  349,  693,
-
-      693,  693,  693,  424,  425,  424,  424,  976,  976,  426,
-      976,  976,  597,  598,  598,  598,  598,  976,  976,  976,
-      694,  874,  874,  874,  874,  976,  369,  370,  369,  369,
-      976,  976,  371,  758,  758,  758,  758,  976,  694,  604,
-      425,  604,  604,  372,  976,  605,  976,  606,  607,  608,
-      608,  608,  608,  420,  420,  420,  420,  976,  976,  421,
-      976,  372,  601,  602,  602,  602,  602,  976,  976,  976,
-      696,  758,  758,  758,  758,  976,  976,  349,  611,  611,
-      611,  611,  976,  976,  976,  427,  976,  976,  696,  604,
-      425,  604,  604,  976,  976,  605,  976,  606,  607,  608,
-
-      608,  608,  608,  427,  440,  365,  440,  440,  976,  976,
-      441,  976,  442,  443,  619,  619,  619,  619,  976,  976,
-      976,  620,  760,  760,  760,  760,  766,  766,  766,  766,
-      766,  766,  766,  766,  768,  768,  768,  768,  976,  620,
-      440,  365,  440,  440,  976,  976,  441,  706,  707,  443,
-      708,  708,  708,  708,  369,  370,  369,  369,  976,  976,
-      371,  976,  253,  254,  621,  621,  621,  621,  976,  976,
-      976,  622,  768,  768,  768,  768,  976,  393,  394,  393,
-      393,  976,  976,  395,  776,  776,  776,  776,  976,  622,
-      251,  153,  251,  251,  396,  976,  252,  709,  710,  254,
-
-      711,  711,  711,  711,  365,  365,  365,  365,  976,  976,
-      366,  976,  396,  976,  623,  623,  623,  623,  976,  976,
-      976,  624,  781,  781,  781,  781,  976,  976,  718,  719,
-      719,  719,  719,  976,  976,  976,  861,  976,  976,  624,
-      455,  370,  455,  455,  976,  976,  456,  976,  457,  458,
-      625,  625,  625,  625,  861,  976,  976,  626,  781,  781,
-      781,  781,  976,  402,  403,  402,  402,  976,  976,  404,
-      789,  789,  789,  789,  976,  626,  455,  370,  455,  455,
-      405,  976,  456,  714,  715,  458,  716,  716,  716,  716,
-      628,  628,  628,  628,  976,  976,  629,  976,  405,  976,
-
-      627,  627,  627,  627,  976,  976,  976,  630,  794,  795,
-      795,  795,  795,  878,  878,  878,  878,  880,  880,  880,
-      880,  803,  803,  803,  803,  630,  628,  628,  628,  628,
-      976,  976,  629,  976,  717,  718,  719,  719,  719,  719,
-      721,  628,  721,  721,  976,  976,  722,  976,  723,  724,
-      725,  725,  725,  725,  632,  633,  632,  632,  976,  976,
-      634,  976,  473,  474,  631,  631,  631,  631,  976,  976,
-      976,  635,  808,  809,  809,  809,  809,  884,  884,  884,
-      884,  886,  886,  886,  886,  818,  818,  818,  818,  635,
-      632,  633,  632,  632,  976,  976,  634,  976,  728,  729,
-
-      730,  730,  730,  730,  633,  633,  633,  633,  976,  976,
-      642,  976,  731,  732,  733,  733,  733,  733,  735,  633,
-      735,  735,  976,  976,  736,  976,  737,  738,  739,  739,
-      739,  739,  471,  376,  471,  471,  976,  976,  472,  740,
-      741,  474,  742,  742,  742,  742,  637,  638,  637,  637,
-      976,  976,  639,  976,  277,  278,  636,  636,  636,  636,
-      976,  976,  976,  640,  818,  818,  818,  818,  824,  825,
-      825,  825,  825,  890,  890,  890,  890,  892,  892,  892,
-      892,  640,  637,  638,  637,  637,  976,  976,  639,  976,
-      743,  744,  745,  745,  745,  745,  638,  638,  638,  638,
-
-      976,  976,  746,  976,  747,  748,  749,  749,  749,  749,
-      751,  638,  751,  751,  976,  976,  752,  976,  753,  754,
-      755,  755,  755,  755,  275,  169,  275,  275,  976,  976,
-      276,  756,  757,  278,  758,  758,  758,  758,  633,  633,
-      633,  633,  976,  976,  642,  976,  976,  976,  641,  641,
-      641,  641,  976,  976,  976,  643,  834,  834,  834,  834,
-      834,  834,  834,  834,  836,  836,  836,  836,  842,  842,
-      842,  842,  976,  643,  735,  633,  735,  735,  976,  976,
-      736,  976,  737,  738,  739,  739,  739,  739,  645,  638,
-      645,  645,  976,  976,  646,  976,  488,  489,  644,  644,
-
-      644,  644,  976,  976,  976,  647,  842,  842,  842,  842,
-      844,  844,  844,  844,  844,  844,  844,  844,  852,  852,
-      852,  852,  976,  647,  645,  638,  645,  645,  976,  976,
-      646,  976,  761,  762,  763,  763,  763,  763,  751,  638,
-      751,  751,  976,  976,  752,  976,  753,  754,  755,  755,
-      755,  755,  486,  381,  486,  486,  976,  976,  487,  764,
-      765,  489,  766,  766,  766,  766,  503,  389,  503,  503,
-      976,  976,  504,  976,  505,  506,  650,  650,  650,  650,
-      976,  899,  899,  651,  900,  900,  900,  900,  907,  907,
-      976,  908,  908,  908,  908,  560,  882,  882,  882,  882,
-
-      976,  651,  503,  389,  503,  503,  976,  976,  504,  769,
-      770,  506,  771,  771,  771,  771,  393,  394,  393,  393,
-      976,  976,  395,  976,  301,  302,  652,  652,  652,  652,
-      976,  915,  915,  653,  916,  916,  916,  916,  976,  424,
-      425,  424,  424,  923,  923,  426,  924,  924,  924,  924,
-      976,  653,  299,  189,  299,  299,  427,  976,  300,  772,
-      773,  302,  774,  774,  774,  774,  389,  389,  389,  389,
-      976,  976,  390,  976,  427,  976,  654,  654,  654,  654,
-      976,  925,  926,  655,  927,  927,  927,  927,  976,  976,
-      474,  742,  742,  742,  742,  976,  976,  976,  635,  976,
-
-      976,  655,  518,  394,  518,  518,  976,  976,  519,  976,
-      520,  521,  656,  656,  656,  656,  635,  928,  929,  657,
-      930,  930,  930,  930,  976,  884,  884,  884,  884,  931,
-      931,  976,  932,  932,  932,  932,  976,  657,  518,  394,
-      518,  518,  976,  976,  519,  777,  778,  521,  779,  779,
-      779,  779,  530,  398,  530,  530,  976,  976,  531,  976,
-      532,  533,  660,  660,  660,  660,  976,  933,  934,  661,
-      935,  935,  935,  935,  327,  888,  888,  888,  888,  936,
-      937,  976,  938,  938,  938,  938,  976,  661,  530,  398,
-      530,  530,  976,  976,  531,  782,  783,  533,  784,  784,
-
-      784,  784,  402,  403,  402,  402,  976,  976,  404,  976,
-      312,  313,  662,  662,  662,  662,  976,  976,  976,  663,
-      976,  890,  890,  890,  890,  939,  939,  976,  940,  940,
-      940,  940,  575,  894,  894,  894,  894,  663,  310,  195,
-      310,  310,  976,  976,  311,  785,  786,  313,  787,  787,
-      787,  787,  398,  398,  398,  398,  976,  976,  399,  976,
-      976,  976,  664,  664,  664,  664,  976,  941,  942,  665,
-      943,  943,  943,  943,  976,  976,  278,  758,  758,  758,
-      758,  976,  976,  976,  383,  976,  976,  665,  545,  403,
-      545,  545,  976,  976,  546,  976,  547,  548,  666,  666,
-
-      666,  666,  383,  944,  945,  667,  946,  946,  946,  946,
-      900,  900,  900,  900,  900,  900,  900,  900,  908,  908,
-      908,  908,  976,  667,  545,  403,  545,  545,  976,  976,
-      546,  790,  791,  548,  792,  792,  792,  792,  669,  669,
-      669,  669,  976,  976,  670,  976,  976,  976,  668,  668,
-      668,  668,  976,  976,  976,  671,  860,  860,  860,  860,
-      976,  976,  976,  861,  916,  916,  916,  916,  924,  924,
-      924,  924,  976,  671,  669,  669,  669,  669,  976,  976,
-      670,  861,  793,  794,  795,  795,  795,  795,  797,  669,
-      797,  797,  976,  976,  798,  976,  799,  800,  801,  801,
-
-      801,  801,  673,  674,  673,  673,  976,  976,  675,  976,
-      559,  560,  672,  672,  672,  672,  976,  976,  976,  676,
-      878,  878,  878,  878,  976,  976,  976,  879,  924,  924,
-      924,  924,  927,  927,  927,  927,  976,  676,  673,  674,
-      673,  673,  976,  976,  675,  879,  804,  805,  806,  806,
-      806,  806,  674,  674,  674,  674,  976,  976,  683,  976,
-      807,  808,  809,  809,  809,  809,  811,  674,  811,  811,
-      976,  976,  812,  976,  813,  814,  815,  815,  815,  815,
-      557,  407,  557,  557,  976,  976,  558,  816,  817,  560,
-      818,  818,  818,  818,  678,  679,  678,  678,  976,  976,
-
-      680,  976,  326,  327,  677,  677,  677,  677,  976,  976,
-      976,  681,  880,  880,  880,  880,  976,  976,  976,  881,
-      927,  927,  927,  927,  930,  930,  930,  930,  976,  681,
-      678,  679,  678,  678,  976,  976,  680,  881,  819,  820,
-      821,  821,  821,  821,  679,  679,  679,  679,  976,  976,
-      822,  976,  823,  824,  825,  825,  825,  825,  827,  679,
-      827,  827,  976,  976,  828,  976,  829,  830,  831,  831,
-      831,  831,  324,  208,  324,  324,  976,  976,  325,  832,
-      833,  327,  834,  834,  834,  834,  674,  674,  674,  674,
-      976,  976,  683,  976,  976,  976,  682,  682,  682,  682,
-
-      976,  976,  976,  684,  886,  886,  886,  886,  976,  976,
-      976,  887,  930,  930,  930,  930,  932,  932,  932,  932,
-      976,  684,  811,  674,  811,  811,  976,  976,  812,  887,
-      813,  814,  815,  815,  815,  815,  686,  679,  686,  686,
-      976,  976,  687,  976,  574,  575,  685,  685,  685,  685,
-      976,  976,  976,  688,  892,  892,  892,  892,  976,  976,
-      976,  893,  935,  935,  935,  935,  935,  935,  935,  935,
-      976,  688,  686,  679,  686,  686,  976,  976,  687,  893,
-      837,  838,  839,  839,  839,  839,  827,  679,  827,  827,
-      976,  976,  828,  976,  829,  830,  831,  831,  831,  831,
-
-      572,  412,  572,  572,  976,  976,  573,  840,  841,  575,
-      842,  842,  842,  842,  589,  420,  589,  589,  976,  976,
-      590,  976,  591,  592,  691,  691,  691,  691,  976,  976,
-      976,  692,  938,  938,  938,  938,  938,  938,  938,  938,
-      940,  940,  940,  940,  940,  940,  940,  940,  976,  692,
-      589,  420,  589,  589,  976,  976,  590,  845,  846,  592,
-      847,  847,  847,  847,  424,  425,  424,  424,  976,  976,
-      426,  976,  348,  349,  693,  693,  693,  693,  976,  976,
-      976,  694,  943,  943,  943,  943,  943,  943,  943,  943,
-      946,  946,  946,  946,  946,  946,  946,  946,  976,  694,
-
-      346,  224,  346,  346,  976,  976,  347,  848,  849,  349,
-      850,  850,  850,  850,  420,  420,  420,  420,  976,  976,
-      421,  976,  976,  976,  695,  695,  695,  695,  976,  976,
-      962,  696,  963,  962,  976,  976,  964,  976,  489,  766,
-      766,  766,  766,  976,  976,  976,  647,  976,  976,  696,
-      604,  425,  604,  604,  976,  976,  605,  976,  606,  607,
-      697,  697,  697,  697,  647,  976,  976,  698,  965,  966,
-      967,  965,  976,  962,  968,  962,  962,  976,  962,  964,
-      962,  962,  976,  976,  964,  698,  604,  425,  604,  604,
-      976,  976,  605,  853,  854,  607,  855,  855,  855,  855,
-
-      440,  365,  440,  440,  976,  976,  441,  976,  442,  443,
-      708,  708,  708,  708,  440,  365,  440,  440,  976,  976,
-      441,  976,  442,  443,  708,  708,  708,  708,  251,  153,
-      251,  251,  976,  976,  252,  976,  253,  254,  711,  711,
-      711,  711,  251,  153,  251,  251,  976,  976,  252,  976,
-      253,  254,  711,  711,  711,  711,  365,  365,  365,  365,
-      976,  976,  366,  976,  976,  976,  713,  713,  713,  713,
-      455,  370,  455,  455,  976,  976,  456,  976,  457,  458,
-      716,  716,  716,  716,  455,  370,  455,  455,  976,  976,
-      456,  976,  457,  458,  716,  716,  716,  716,  721,  628,
-
-      721,  721,  976,  976,  722,  976,  723,  724,  725,  725,
-      725,  725,  721,  628,  721,  721,  976,  976,  722,  976,
-      723,  724,  725,  725,  725,  725,  628,  628,  628,  628,
-      976,  976,  629,  976,  976,  976,  727,  727,  727,  727,
-      471,  376,  471,  471,  976,  976,  472,  976,  473,  729,
-      730,  730,  730,  730,  471,  376,  471,  471,  976,  976,
-      472,  976,  473,  474,  864,  864,  864,  864,  632,  633,
-      632,  632,  976,  976,  634,  976,  976,  729,  730,  730,
-      730,  730,  976,  976,  976,  865,  794,  795,  795,  795,
-      795,  976,  976,  976,  879,  927,  927,  927,  927,  976,
-
-      976,  976,  881,  865,  628,  628,  628,  628,  976,  976,
-      629,  976,  879,  732,  733,  733,  733,  733,  976,  976,
-      881,  867,  935,  935,  935,  935,  976,  976,  970,  887,
-      970,  970,  976,  976,  971,  976,  976,  976,  976,  867,
-      735,  633,  735,  735,  976,  976,  736,  887,  737,  738,
-      739,  739,  739,  739,  735,  633,  735,  735,  976,  976,
-      736,  976,  737,  738,  739,  739,  739,  739,  275,  169,
-      275,  275,  976,  976,  276,  976,  277,  744,  745,  745,
-      745,  745,  275,  169,  275,  275,  976,  976,  276,  976,
-      277,  278,  870,  870,  870,  870,  637,  638,  637,  637,
-
-      976,  976,  639,  976,  976,  744,  745,  745,  745,  745,
-      976,  976,  976,  871,  943,  943,  943,  943,  976,  976,
-      976,  893,  965,  959,  967,  965,  976,  976,  968,  976,
-      976,  871,  751,  638,  751,  751,  976,  976,  752,  893,
-      753,  754,  755,  755,  755,  755,  633,  633,  633,  633,
-      976,  976,  642,  976,  976,  748,  749,  749,  749,  749,
-      976,  976,  962,  873,  963,  962,  976,  976,  964,  965,
-      966,  967,  965,  976,  970,  968,  970,  970,  976,  976,
-      971,  873,  751,  638,  751,  751,  976,  976,  752,  976,
-      753,  754,  755,  755,  755,  755,  633,  633,  633,  633,
-
-      976,  976,  642,  976,  976,  976,  760,  760,  760,  760,
-      486,  381,  486,  486,  976,  976,  487,  976,  488,  762,
-      763,  763,  763,  763,  486,  381,  486,  486,  976,  976,
-      487,  976,  488,  489,  876,  876,  876,  876,  645,  638,
-      645,  645,  976,  976,  646,  976,  976,  762,  763,  763,
-      763,  763,  976,  976,  976,  877,  973,  959,  974,  973,
-      976,  970,  975,  970,  970,  976,  970,  971,  970,  970,
-      976,  976,  971,  877,  503,  389,  503,  503,  976,  976,
-      504,  976,  505,  506,  771,  771,  771,  771,  503,  389,
-      503,  503,  976,  976,  504,  976,  505,  506,  771,  771,
-
-      771,  771,  299,  189,  299,  299,  976,  976,  300,  976,
-      301,  302,  774,  774,  774,  774,  299,  189,  299,  299,
-      976,  976,  300,  976,  301,  302,  774,  774,  774,  774,
-      389,  389,  389,  389,  976,  976,  390,  976,  976,  976,
-      776,  776,  776,  776,  518,  394,  518,  518,  976,  976,
-      519,  976,  520,  521,  779,  779,  779,  779,  518,  394,
-      518,  518,  976,  976,  519,  976,  520,  521,  779,  779,
-      779,  779,  530,  398,  530,  530,  976,  976,  531,  976,
-      532,  533,  784,  784,  784,  784,  530,  398,  530,  530,
-      976,  976,  531,  976,  532,  533,  784,  784,  784,  784,
-
-      310,  195,  310,  310,  976,  976,  311,  976,  312,  313,
-      787,  787,  787,  787,  310,  195,  310,  310,  976,  976,
-      311,  976,  312,  313,  787,  787,  787,  787,  398,  398,
-      398,  398,  976,  976,  399,  976,  976,  976,  789,  789,
-      789,  789,  545,  403,  545,  545,  976,  976,  546,  976,
-      547,  548,  792,  792,  792,  792,  545,  403,  545,  545,
-      976,  976,  546,  976,  547,  548,  792,  792,  792,  792,
-      797,  669,  797,  797,  976,  976,  798,  976,  799,  800,
-      801,  801,  801,  801,  797,  669,  797,  797,  976,  976,
-      798,  976,  799,  800,  801,  801,  801,  801,  669,  669,
-
-      669,  669,  976,  976,  670,  976,  976,  976,  803,  803,
-      803,  803,  557,  407,  557,  557,  976,  976,  558,  976,
-      559,  805,  806,  806,  806,  806,  557,  407,  557,  557,
-      976,  976,  558,  976,  559,  560,  882,  882,  882,  882,
-      673,  674,  673,  673,  976,  976,  675,  976,  976,  805,
-      806,  806,  806,  806,  976,  976,  976,  883,  560,  818,
-      818,  818,  818,  976,  976,  976,  676,  973,  959,  974,
-      973,  976,  976,  975,  976,  883,  669,  669,  669,  669,
-      976,  976,  670,  976,  676,  808,  809,  809,  809,  809,
-      976,  976,  976,  885,  973,  959,  974,  973,  976,  976,
-
-      975,  973,  966,  974,  973,  976,  976,  975,  976,  976,
-      976,  885,  811,  674,  811,  811,  976,  976,  812,  976,
-      813,  814,  815,  815,  815,  815,  811,  674,  811,  811,
-      976,  976,  812,  976,  813,  814,  815,  815,  815,  815,
-      324,  208,  324,  324,  976,  976,  325,  976,  326,  820,
-      821,  821,  821,  821,  324,  208,  324,  324,  976,  976,
-      325,  976,  326,  327,  888,  888,  888,  888,  678,  679,
-      678,  678,  976,  976,  680,  976,  976,  820,  821,  821,
-      821,  821,  976,  976,  976,  889,  973,  959,  974,  973,
-      976,  976,  975,  976,  976,  976,  976,  976,  976,  976,
-
-      976,  976,  976,  889,  827,  679,  827,  827,  976,  976,
-      828,  976,  829,  830,  831,  831,  831,  831,  674,  674,
-      674,  674,  976,  976,  683,  976,  976,  824,  825,  825,
-      825,  825,  976,  976,  976,  891,  976,  976,  976,  976,
-      976,  976,  327,  834,  834,  834,  834,  976,  976,  976,
-      414,  976,  976,  891,  827,  679,  827,  827,  976,  976,
-      828,  976,  829,  830,  831,  831,  831,  831,  414,  674,
-      674,  674,  674,  976,  976,  683,  976,  976,  976,  836,
-      836,  836,  836,  572,  412,  572,  572,  976,  976,  573,
-      976,  574,  838,  839,  839,  839,  839,  572,  412,  572,
-
-      572,  976,  976,  573,  976,  574,  575,  894,  894,  894,
-      894,  686,  679,  686,  686,  976,  976,  687,  976,  976,
-      838,  839,  839,  839,  839,  976,  976,  976,  895,  575,
-      842,  842,  842,  842,  976,  976,  976,  688,  976,  976,
-      976,  976,  976,  976,  976,  976,  895,  976,  976,  976,
-      976,  976,  976,  976,  976,  688,  589,  420,  589,  589,
-      976,  976,  590,  976,  591,  592,  847,  847,  847,  847,
-      589,  420,  589,  589,  976,  976,  590,  976,  591,  592,
-      847,  847,  847,  847,  346,  224,  346,  346,  976,  976,
-      347,  976,  348,  349,  850,  850,  850,  850,  346,  224,
-
-      346,  346,  976,  976,  347,  976,  348,  349,  850,  850,
-      850,  850,  420,  420,  420,  420,  976,  976,  421,  976,
-      976,  976,  852,  852,  852,  852,  604,  425,  604,  604,
-      976,  976,  605,  976,  606,  607,  855,  855,  855,  855,
-      604,  425,  604,  604,  976,  976,  605,  976,  606,  607,
-      855,  855,  855,  855,  721,  628,  721,  721,  976,  976,
-      722,  976,  723,  724,  862,  862,  862,  862,  976,  976,
-      976,  863,  976,  976,  976,  976,  976,  976,  976,  976,
-      976,  976,  976,  976,  976,  976,  976,  976,  976,  863,
-      721,  628,  721,  721,  976,  976,  722,  901,  902,  724,
-
-      903,  903,  903,  903,  632,  633,  632,  632,  976,  976,
-      634,  976,  473,  474,  864,  864,  864,  864,  976,  976,
-      976,  865,  976,  976,  976,  976,  976,  976,  976,  976,
-      976,  976,  976,  976,  976,  976,  976,  976,  976,  865,
-      471,  376,  471,  471,  976,  976,  472,  904,  905,  474,
-      906,  906,  906,  906,  628,  628,  628,  628,  976,  976,
-      629,  976,  976,  976,  866,  866,  866,  866,  976,  976,
-      976,  867,  976,  976,  976,  976,  976,  976,  560,  930,
-      930,  930,  930,  976,  976,  976,  676,  976,  976,  867,
-      735,  633,  735,  735,  976,  976,  736,  976,  737,  738,
-
-      868,  868,  868,  868,  676,  976,  976,  869,  976,  976,
-      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
-      976,  976,  976,  976,  976,  869,  735,  633,  735,  735,
-      976,  976,  736,  909,  910,  738,  911,  911,  911,  911,
-      637,  638,  637,  637,  976,  976,  639,  976,  277,  278,
-      870,  870,  870,  870,  976,  976,  976,  871,  976,  976,
-      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
-      976,  976,  976,  976,  976,  871,  275,  169,  275,  275,
-      976,  976,  276,  912,  913,  278,  914,  914,  914,  914,
-      633,  633,  633,  633,  976,  976,  642,  976,  976,  976,
-
-      872,  872,  872,  872,  976,  976,  976,  873,  976,  976,
-      976,  976,  976,  976,  327,  938,  938,  938,  938,  976,
-      976,  976,  414,  976,  976,  873,  751,  638,  751,  751,
-      976,  976,  752,  976,  753,  754,  874,  874,  874,  874,
-      414,  976,  976,  875,  976,  976,  976,  976,  976,  976,
-      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
-      976,  875,  751,  638,  751,  751,  976,  976,  752,  917,
-      918,  754,  919,  919,  919,  919,  645,  638,  645,  645,
-      976,  976,  646,  976,  488,  489,  876,  876,  876,  876,
-      976,  976,  976,  877,  976,  976,  976,  976,  976,  976,
-
-      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
-      976,  877,  486,  381,  486,  486,  976,  976,  487,  920,
-      921,  489,  922,  922,  922,  922,  632,  633,  632,  632,
-      976,  976,  634,  470,  473,  976,  976,  976,  976,  976,
-      976,  976,  976,  635,  575,  946,  946,  946,  946,  976,
-      976,  976,  688,  976,  976,  976,  976,  976,  976,  976,
-      976,  635,  628,  628,  628,  628,  976,  976,  629,  976,
-      688,  976,  908,  908,  908,  908,  637,  638,  637,  637,
-      976,  976,  639,  274,  277,  976,  976,  976,  976,  976,
-      976,  976,  976,  383,  976,  976,  976,  976,  976,  976,
-
-      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
-      976,  383,  633,  633,  633,  633,  976,  976,  642,  976,
-      976,  976,  916,  916,  916,  916,  645,  638,  645,  645,
-      976,  976,  646,  485,  488,  976,  976,  976,  976,  976,
-      976,  976,  976,  647,  976,  976,  976,  976,  976,  976,
-      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
-      976,  647,  669,  669,  669,  669,  976,  976,  670,  976,
-      976,  976,  932,  932,  932,  932,   46,   46,   46,   46,
-       46,   46,   46,   46,   81,   81,   81,   81,   81,   81,
-       81,   81,  109,  109,  109,  109,  109,  109,  109,  109,
-
-      119,  119,  119,  119,  119,  119,  119,  119,  130,  130,
-      976,  130,  130,  130,  130,  130,  131,  131,  976,  131,
-      131,  131,  131,  131,  134,  976,  976,  134,  135,  976,
-      976,  135,  172,  976,  976,  172,  976,  172,  172,  172,
-      173,  173,  976,  173,  173,  173,  173,  173,  211,  976,
-      976,  211,  976,  211,  211,  212,  212,  976,  212,  212,
-      212,  212,  212,  227,  227,  976,  227,  976,  227,  227,
-      227,  230,  230,  976,  230,  230,  230,  230,  230,  250,
-      250,  250,  250,  250,  250,  250,  250,  263,  263,  263,
-      263,  263,  263,  263,  263,  269,  269,  976,  976,  269,
-
-      269,  274,  274,  274,  274,  274,  274,  274,  274,  287,
-      287,  287,  287,  287,  287,  287,  287,  298,  298,  298,
-      298,  298,  298,  298,  298,  309,  309,  309,  309,  309,
-      309,  309,  309,  323,  323,  323,  323,  323,  323,  323,
-      323,  212,  212,  976,  212,  212,  212,  212,  212,  334,
-      334,  334,  334,  334,  334,  334,  334,  345,  345,  345,
-      345,  345,  345,  345,  345,  227,  227,  976,  227,  976,
-      227,  227,  227,  230,  230,  976,  230,  230,  230,  230,
-      230,  131,  131,  976,  131,  131,  131,  131,  131,  134,
-      976,  976,  134,  250,  250,  250,  250,  250,  250,  250,
-
-      250,  263,  263,  263,  263,  263,  263,  263,  263,  269,
-      269,  976,  976,  269,  269,  274,  274,  274,  274,  274,
-      274,  274,  274,  439,  439,  439,  439,  439,  439,  439,
-      439,  454,  454,  454,  454,  454,  454,  454,  454,  470,
-      470,  470,  470,  470,  470,  470,  470,  485,  485,  485,
-      485,  485,  485,  485,  485,  287,  287,  287,  287,  287,
-      287,  287,  287,  502,  502,  502,  502,  502,  502,  502,
-      502,  298,  298,  298,  298,  298,  298,  298,  298,  517,
-      517,  517,  517,  517,  517,  517,  517,  529,  529,  529,
-      529,  529,  529,  529,  529,  309,  309,  309,  309,  309,
-
-      309,  309,  309,  544,  544,  544,  544,  544,  544,  544,
-      544,  556,  556,  556,  556,  556,  556,  556,  556,  323,
-      323,  323,  323,  323,  323,  323,  323,  571,  571,  571,
-      571,  571,  571,  571,  571,  334,  334,  334,  334,  334,
-      334,  334,  334,  588,  588,  588,  588,  588,  588,  588,
-      588,  345,  345,  345,  345,  345,  345,  345,  345,  603,
-      603,  603,  603,  603,  603,  603,  603,  131,  131,  976,
-      131,  131,  131,  131,  131,  134,  976,  976,  134,  439,
-      439,  439,  439,  439,  439,  439,  439,  250,  250,  250,
-      250,  250,  250,  250,  250,  454,  454,  454,  454,  454,
-
-      454,  454,  454,  470,  470,  470,  470,  470,  470,  470,
-      470,  274,  274,  274,  274,  274,  274,  274,  274,  485,
-      485,  485,  485,  485,  485,  485,  485,  287,  287,  287,
-      287,  287,  287,  287,  287,  502,  502,  502,  502,  502,
-      502,  502,  502,  298,  298,  298,  298,  298,  298,  298,
-      298,  517,  517,  517,  517,  517,  517,  517,  517,  529,
-      529,  529,  529,  529,  529,  529,  529,  309,  309,  309,
-      309,  309,  309,  309,  309,  544,  544,  544,  544,  544,
-      544,  544,  544,  556,  556,  556,  556,  556,  556,  556,
-      556,  323,  323,  323,  323,  323,  323,  323,  323,  571,
-
-      571,  571,  571,  571,  571,  571,  571,  334,  334,  334,
-      334,  334,  334,  334,  334,  588,  588,  588,  588,  588,
-      588,  588,  588,  345,  345,  345,  345,  345,  345,  345,
-      345,  603,  603,  603,  603,  603,  603,  603,  603,  131,
-      131,  976,  131,  131,  131,  131,  131,  134,  976,  976,
-      134,  439,  439,  439,  439,  439,  439,  439,  439,  250,
-      250,  250,  250,  250,  250,  250,  250,  454,  454,  454,
-      454,  454,  454,  454,  454,  720,  720,  720,  720,  720,
-      720,  720,  720,  470,  470,  470,  470,  470,  470,  470,
-      470,  734,  734,  734,  734,  734,  734,  734,  734,  274,
-
-      274,  274,  274,  274,  274,  274,  274,  750,  750,  750,
-      750,  750,  750,  750,  750,  485,  485,  485,  485,  485,
-      485,  485,  485,  502,  502,  502,  502,  502,  502,  502,
-      502,  298,  298,  298,  298,  298,  298,  298,  298,  517,
-      517,  517,  517,  517,  517,  517,  517,  529,  529,  529,
-      529,  529,  529,  529,  529,  309,  309,  309,  309,  309,
-      309,  309,  309,  544,  544,  544,  544,  544,  544,  544,
-      544,  796,  796,  796,  796,  796,  796,  796,  796,  556,
-      556,  556,  556,  556,  556,  556,  556,  810,  810,  810,
-      810,  810,  810,  810,  810,  323,  323,  323,  323,  323,
-
-      323,  323,  323,  826,  826,  826,  826,  826,  826,  826,
-      826,  571,  571,  571,  571,  571,  571,  571,  571,  588,
-      588,  588,  588,  588,  588,  588,  588,  345,  345,  345,
-      345,  345,  345,  345,  345,  603,  603,  603,  603,  603,
-      603,  603,  603,  131,  131,  976,  131,  131,  131,  131,
-      131,  134,  976,  976,  134,  439,  439,  439,  439,  439,
-      439,  439,  439,  250,  250,  250,  250,  250,  250,  250,
-      250,  454,  454,  454,  454,  454,  454,  454,  454,  720,
-      720,  720,  720,  720,  720,  720,  720,  470,  470,  470,
-      470,  470,  470,  470,  470,  734,  734,  734,  734,  734,
-
-      734,  734,  734,  274,  274,  274,  274,  274,  274,  274,
-      274,  750,  750,  750,  750,  750,  750,  750,  750,  485,
-      485,  485,  485,  485,  485,  485,  485,  502,  502,  502,
-      502,  502,  502,  502,  502,  298,  298,  298,  298,  298,
-      298,  298,  298,  517,  517,  517,  517,  517,  517,  517,
-      517,  529,  529,  529,  529,  529,  529,  529,  529,  309,
-      309,  309,  309,  309,  309,  309,  309,  544,  544,  544,
-      544,  544,  544,  544,  544,  796,  796,  796,  796,  796,
-      796,  796,  796,  556,  556,  556,  556,  556,  556,  556,
-      556,  810,  810,  810,  810,  810,  810,  810,  810,  323,
-
-      323,  323,  323,  323,  323,  323,  323,  826,  826,  826,
-      826,  826,  826,  826,  826,  571,  571,  571,  571,  571,
-      571,  571,  571,  588,  588,  588,  588,  588,  588,  588,
-      588,  345,  345,  345,  345,  345,  345,  345,  345,  603,
-      603,  603,  603,  603,  603,  603,  603,  131,  131,  976,
-      131,  131,  131,  131,  131,  134,  976,  976,  134,  720,
-      720,  720,  720,  720,  720,  720,  720,  470,  470,  470,
-      470,  470,  470,  470,  470,  734,  734,  734,  734,  734,
-      734,  734,  734,  274,  274,  274,  274,  274,  274,  274,
-      274,  750,  750,  750,  750,  750,  750,  750,  750,  485,
-
-      485,  485,  485,  485,  485,  485,  485,  958,  958,  958,
-      958,  958,  958,  958,  958,  969,  969,  976,  969,  969,
-      969,  969,  969,  972,  972,  972,  972,  972,  972,  972,
-      972,   45,  976,  976,  976,  976,  976,  976,  976,  976,
-      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
-      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
-      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
-      976,  976,  976,  976,  976,  976,  976,  976,  976,  976
-    } ;
-
-static yyconst flex_int16_t yy_chk[8681] =
-    {   0,
-        0,    1,    1,    1,    1,    0, 1039,    1,    2,    2,
-        2,    2,  122,  122,    2,    3,    3,    3,    3,    3,
-        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-        3,    3,    3,    5,    5,    5,    5,   61,   61,    5,
-        9,    9,    9,    9,    9,    9,   66,   66,   66,   66,
-       66,    5,    5,   10,   10,   10,   10,   10,   10, 1017,
-        5,    6,    6,    6,    6,  229,  229,    6,   11,   11,
-
-       11,   11,   11,   11,   67,   67,   67,   67,   74,    6,
-        6,   12,   12,   12,   12,   12,   12, 1014,    6,    7,
-        7,    7,    7,  428,   74,    7,  428,    7,    7,    7,
-        7,    7,    7,   69,   69,   69,   69,   69,    7,   13,
-       13,   13,   13,   13,   13,   14,   14,   14,   14,   14,
-       14,   15,   15,   15,   15,   15,   15,   16,   16,   16,
-       16,   16,   16,   17,   17,   17,   17,  354,   17,   17,
-       18,   18,   18,   18, 1012,   18,   18,   70,   70,   70,
-       70,  354,   17,   19,   19,   19,   19,   19,   19,   18,
-       20,   20,   20,   20,   20,   20,   21,   21,   21,   21,
-
-       21,   21,   22,   22,   22,   22,   22,   22,   23,   23,
-       23,   23,   23,   23,   24,   24,   24,   24,   24,   24,
-       25,   25,   25,   25,   25,   25,  267,   39,   39,   39,
-       39,   25,   39,   39,   40,   40,   40,   40,   49,   40,
-       40,  133,  267,   25, 1006,   25,   26,   26,   26,   26,
-       26,   26,   47,  856,   47,   47,  856,   26,   47,   39,
-      133,   49,   41,   41,   41,   41,   40,   41,   41,   26,
-      950,   26,   27,   27,   27,   27,   27,   27,  235,   42,
-       42,   42,   42,   27,   42,   42,  230,  230,   71,   71,
-       71,   71,   71,  235,   41,   27,   71,   27,   28,   28,
-
-       28,   28,   28,   28,   72,   72,   72,   72,  950,   28,
-      999,   42,  231,  231,   71,   75,   75,   75,   75,  947,
-      465,   28,  947,   28,   29,   29,   29,   29,   29,   29,
-       77,   77,   77,   77,  994,   29,  465,   43,   43,   43,
-       43,   43,   43,   79,   79,   79,   79,   29,   43,   29,
-       30,   30,   30,   30,   30,   30,   78,   78,   78,   78,
-       78,   30,  952,   44,   44,   44,   44,   44,   44,   86,
-       86,   86,   86,   30,   44,   30,   31,   31,   31,   31,
-       31,   31,   85,   85,   85,   85,   85,   31,   76,   76,
-       76,   76,   83,  949,   83,   83,  432,   83,   83,   31,
-
-      432,   31,   32,   32,   32,   32,   32,   32,   76,   89,
-       89,   89,   89,   32,   87,   87,   87,   87,   87,  948,
-      699,  898,   87,  612,   76,   32,  699,   32,   33,   33,
-       33,   33,  897,   33,   33,   88,   88,   88,   88,   88,
-       87,   91,   91,   91,   91,   91,  612,   33,   92,   92,
-       92,   92,   94,   94,   94,   94,   94,  901,  901,   33,
-      292,   33,   34,   34,   34,   34,  859,   34,   34,   95,
-       95,   95,   95,  100,  100,  100,  100,  100,  292,  902,
-      902,   34,  101,  101,  101,  101,  102,  102,  102,  102,
-      102,  904,  904,   34,  102,   34,   35,   35,   35,   35,
-
-       35,   35,  103,  103,  103,  103,  857,   35,  104,  104,
-      104,  104,  102,  105,  105,  105,  105,  905,  905,   35,
-      703,   35,   36,   36,   36,   36,   36,   36,  104,  107,
-      107,  107,  107,   36,  106,  106,  106,  106,  106,  113,
-      113,  113,  113,  113,  104,   36,  702,   36,   37,   37,
-       37,   37,   37,   37,  339,  111,  700,  111,  111,   37,
-      111,  111,  114,  114,  114,  114,  116,  116,  116,  116,
-      116,   37,  339,   37,   38,   38,   38,   38,   38,   38,
-      117,  117,  117,  117,  616,   38,  111,  120,  111,  120,
-      120,  466,  128,  120,  128,  128,  444,   38,  128,   38,
-
-       68,   68,   68,   68,  459,  615,   68,  466,  953,   68,
-       68,   68,   68,   68,  444,  909,  909,   68,  125,  125,
-      125,  125,  459,  126,  126,  126,  126,  127,  127,  127,
-      127,  150,  150,  150,  150,   68,   73,   73,   73,   73,
-      896,  614,   73,  126,  896,  953,   73,   73,   73,   73,
-      152,  152,  152,  152,  152,  910,  910,  155,  155,  126,
-      155,  155,  155,  155,  912,  912,   73,  156,  156,  156,
-      156,  157,  157,  157,  157,  157,  913,  913,  613,  157,
-      498,  507,   73,   80,   80,   80,   80,  522,  433,   80,
-      917,  917,   80,   80,   80,   80,   80,  157,  498,  507,
-
-       80,  158,  158,  158,  158,  522,  159,  159,  158,  159,
-      159,  159,  159,  164,  164,  164,  164,  429,   80,   90,
-       90,   90,   90,  918,  918,   90,  158,  534,   90,   90,
-       90,   90,   90,  955,  549,  161,   90,  161,  161,  161,
-      161,  163,  163,  163,  163,  534,  362,  163,  166,  166,
-      166,  166,  549,  584,   90,   93,   93,   93,   93,  920,
-      920,   93,  593,  955,   93,   93,   93,   93,   93,  921,
-      921,  584,   93,  168,  168,  168,  168,  168,  171,  171,
-      593,  171,  171,  171,  171,  176,  176,  176,  176,  956,
-       93,   96,   96,   96,   96,  361,  956,   96,  360,  359,
-
-       96,   96,   96,   96,   96,  358,  357,  173,   96,  173,
-      173,  355,  173,  173,  174,  246,  174,  174,  245,  174,
-      174,  180,  180,  180,  180,  608,   96,  108,  108,  108,
-      108,  244,  708,  108,  716,  243,  108,  108,  108,  108,
-      108,  725,  739,  608,  108,  177,  177,  177,  177,  177,
-      708,  242,  716,  177,  178,  178,  178,  178,  240,  725,
-      739,  178,  108,  115,  115,  115,  115,  239,  238,  115,
-      237,  177,  115,  115,  115,  115,  115,  149,  147,  178,
-      115,  179,  179,  146,  179,  179,  179,  179,  182,  182,
-      182,  182,  182,  186,  186,  186,  186,  145,  115,  118,
-
-      118,  118,  118,  144,  143,  118,  141,  140,  118,  118,
-      118,  118,  118,  139,  185,  185,  118,  185,  185,  185,
-      185,  188,  188,  188,  188,  188,  191,  191,  137,  191,
-      191,  191,  191,  136,  118,  153,  153,  153,  153,  132,
-      131,  153,  129,  153,  153,  153,  153,  153,  153,  154,
-      154,  154,  154,  123,  755,  154,  112,  154,  154,  154,
-      154,  154,  154,  162,  162,  162,  162,   97,   84,  162,
-       65,  162,  755,  162,  162,  162,  162,  169,  169,  169,
-      169,   64,   63,  169,   62,  169,  169,  169,  169,  169,
-      169,  170,  170,  170,  170,   60,   59,  170,   58,  170,
-
-      170,  170,  170,  170,  170,  183,  183,  183,  183,   57,
-       56,  183,   55,  183,  183,  183,  183,  183,  183,  184,
-      184,  184,  184,   54,   53,  184,   51,  184,  184,  184,
-      184,  184,  184,  189,  189,  189,  189,   45,    0,  189,
-        0,  189,  189,  189,  189,  189,  189,  190,  190,  190,
-      190,    0,    0,  190,    0,  190,  190,  190,  190,  190,
-      190,  192,  192,  192,  192,  194,  194,  194,  194,  194,
-      195,  195,  195,  195,    0,    0,  195,    0,  195,  195,
-      195,  195,  195,  195,  196,  196,  196,  196,    0,    0,
-      196,    0,  196,  196,  196,  196,  196,  196,  197,  197,
-
-        0,  197,  197,  197,  197,  199,  199,  199,  199,  200,
-      200,  200,  200,  200,    0,    0,  771,  200,  201,  201,
-      201,  201,  779,  202,  202,  201,  202,  202,  202,  202,
-      203,  203,  203,  203,  771,  200,  205,  205,  205,  205,
-      779,    0,    0,  201,  207,  207,  207,  207,  207,  208,
-      208,  208,  208,    0,    0,  208,    0,  208,  208,  208,
-      208,  208,  208,  209,  209,  209,  209,  784,    0,  209,
-      792,  209,  209,  209,  209,  209,  209,  210,  210,    0,
-      210,  210,  210,  210,  212,  784,  212,  212,  792,  212,
-      212,  213,    0,  213,  213,    0,  213,  213,  215,  215,
-
-      215,  215,  217,  217,  217,  217,  217,  220,  220,    0,
-      220,  220,  220,  220,  801,  212,    0,  212,  221,  221,
-      221,  221,  213,  815,  213,  216,  216,  216,  216,    0,
-        0,  216,  801,    0,  216,  216,  216,  216,  216,    0,
-        0,  815,  216,  223,  223,  223,  223,  223,  226,  226,
-      831,  226,  226,  226,  226,  233,  233,  233,  233,    0,
-      216,  218,  218,  218,  218,    0,    0,  218,  831,  218,
-      218,  218,  218,  218,  218,  219,  219,  219,  219,  847,
-        0,  219,    0,  219,  219,  219,  219,  219,  219,  222,
-      222,  222,  222,    0,    0,  222,    0,  847,  222,  222,
-
-      222,  222,  222,  855,    0,  228,  222,  228,  228,    0,
-        0,  228,  247,  247,  247,  247,  247,  248,  248,  248,
-      248,  855,    0,    0,  222,  224,  224,  224,  224,    0,
-        0,  224,    0,  224,  224,  224,  224,  224,  224,  225,
-      225,  225,  225,    0,    0,  225,    0,  225,  225,  225,
-      225,  225,  225,  249,  249,  249,  249,    0,    0,  249,
-        0,    0,  249,  249,  249,  249,  249,    0,    0,    0,
-      249,  254,  254,  254,  254,  256,  256,  256,  256,  258,
-      258,  258,  258,  259,  259,  259,  259,    0,  249,  250,
-      250,  250,  250,    0,    0,  250,    0,  250,  250,  250,
-
-      250,  250,  250,  251,  251,  251,  251,    0,    0,  251,
-        0,  251,  251,  251,  251,  251,  251,  255,  255,  255,
-      255,    0,    0,  255,  260,  260,  260,  260,  262,  262,
-      262,  262,    0,    0,  255,    0,    0,  261,  261,  261,
-      261,  269,  269,  269,  269,    0,    0,  269,  272,  272,
-      272,  272,  255,  257,  257,  257,  257,  261,    0,  257,
-        0,    0,    0,  257,  257,  257,  257,  271,  271,  271,
-      271,  271,    0,  261,  263,  263,  263,  263,  957,  957,
-      263,    0,  263,  957,  263,  263,  263,  263,  264,  264,
-      264,  264,  958,  958,  264,    0,  264,  958,  264,  264,
-
-      264,  264,  273,  273,  273,  273,    0,    0,  273,    0,
-        0,  273,  273,  273,  273,  273,    0,    0,    0,  273,
-      278,  278,  278,  278,  280,  280,  280,  280,  282,  282,
-      282,  282,  283,  283,  283,  283,    0,  273,  274,  274,
-      274,  274,    0,    0,  274,    0,  274,  274,  274,  274,
-      274,  274,  275,  275,  275,  275,    0,    0,  275,    0,
-      275,  275,  275,  275,  275,  275,  279,  279,  279,  279,
-        0,    0,  279,  284,  284,  284,  284,  284,  285,  285,
-      285,  285,    0,  279,  286,  286,  286,  286,  286,    0,
-        0,    0,  286,  291,  291,  291,  291,  293,  293,  293,
-
-      293,  279,  281,  281,  281,  281,  961,  961,  281,    0,
-      286,  961,  281,  281,  281,  281,  287,  287,  287,  287,
-        0,    0,  287,    0,  287,  287,  287,  287,  287,  287,
-      294,  294,  294,  294,    0,    0,  294,    0,    0,    0,
-      294,  294,  294,  294,  295,  295,  295,  295,  295,  296,
-      296,  296,  296,  297,  297,  297,  297,    0,    0,  297,
-        0,    0,  297,  297,  297,  297,  297,    0,    0,    0,
-      297,  302,  302,  302,  302,    0,  303,  303,  303,  303,
-        0,    0,  303,  304,  304,  304,  304,    0,  297,  298,
-      298,  298,  298,  303,    0,  298,    0,  298,  298,  298,
-
-      298,  298,  298,  306,  306,  306,  306,  306,    0,  903,
-      903,  303,  305,  305,  305,  305,    0,    0,  305,  903,
-        0,    0,  305,  305,  305,  305,  307,  307,  307,  307,
-      308,  308,  308,  308,    0,    0,  308,  903,    0,  308,
-      308,  308,  308,  308,    0,    0,    0,  308,  313,  313,
-      313,  313,    0,  314,  314,  314,  314,    0,    0,  314,
-      315,  315,  315,  315,    0,  308,  309,  309,  309,  309,
-      314,    0,  309,    0,  309,  309,  309,  309,  309,  309,
-      317,  317,  317,  317,  318,  318,  318,  318,  314,  316,
-      316,  316,  316,    0,    0,  316,    0,    0,    0,  316,
-
-      316,  316,  316,  320,  320,  320,  320,  320,  321,  321,
-      321,  321,  322,  322,  322,  322,    0,    0,  322,    0,
-        0,  322,  322,  322,  322,  322,    0,    0,    0,  322,
-      327,  327,  327,  327,    0,  328,  328,  328,  328,    0,
-        0,  328,  329,  329,  329,  329,    0,  322,  323,  323,
-      323,  323,  328,    0,  323,    0,  323,  323,  323,  323,
-      323,  323,  331,  331,  331,  331,  331,    0,  911,  911,
-      328,  330,  330,  330,  330,    0,    0,  330,  911,    0,
-        0,  330,  330,  330,  330,  332,  332,  332,  332,  333,
-      333,  333,  333,  333,    0,    0,  911,  333,  338,  338,
-
-      338,  338,  340,  340,  340,  340,  342,  342,  342,  342,
-      342,  343,  343,  343,  343,  333,  334,  334,  334,  334,
-        0,    0,  334,    0,  334,  334,  334,  334,  334,  334,
-      341,  341,  341,  341,    0,    0,  341,    0,  919,  919,
-      341,  341,  341,  341,  344,  344,  344,  344,  919,    0,
-      344,    0,    0,  344,  344,  344,  344,  344,    0,    0,
-        0,  344,  349,  349,  349,  349,  919,  350,  350,  350,
-      350,    0,    0,  350,  351,  351,  351,  351,    0,  344,
-      345,  345,  345,  345,  350,    0,  345,    0,  345,  345,
-      345,  345,  345,  345,  364,  364,  364,  364,  364,    0,
-
-        0,    0,  350,  352,  352,  352,  352,    0,    0,  352,
-        0,    0,    0,  352,  352,  352,  352,  365,  365,  365,
-      365,    0,    0,  365,    0,  365,  365,  365,  365,  365,
-      365,  366,  366,  366,  366,    0,    0,  366,    0,  366,
-      366,  366,  366,  366,  366,  367,  367,    0,  367,  367,
-      367,  367,  368,  368,  368,  368,    0,    0,  368,    0,
-        0,    0,  368,  368,  368,  368,    0,  372,  372,  368,
-      372,  372,  372,  372,  375,  375,  375,  375,  375,  378,
-      378,    0,  378,  378,  378,  378,    0,  368,  369,  369,
-      369,  369,  369,  369,    0,    0,    0,  369,  384,  384,
-
-      384,  384,    0,  385,  385,  384,  385,  385,  385,  385,
-      436,  436,  436,  436,  436,  369,  370,  370,  370,  370,
-        0,    0,  370,  384,  370,  370,  370,  370,  370,  370,
-      371,  371,  371,  371,    0,    0,  371,    0,  371,  371,
-      371,  371,  371,  371,  374,  374,  374,  374,  374,  374,
-      374,  374,  374,  391,  391,    0,  391,  391,  391,  391,
-      400,  400,    0,  400,  400,  400,  400,    0,  374,  374,
-      374,  376,  376,  376,  376,    0,    0,  376,    0,  376,
-      376,  376,  376,  376,  376,  377,  377,  377,  377,    0,
-        0,  377,    0,  377,  377,  377,  377,  377,  377,  379,
-
-      379,  379,  379,    0,    0,  379,    0,    0,    0,  379,
-      379,  379,  379,    0,  409,  409,  379,  409,  409,  409,
-      409,  415,  415,  415,  415,    0,  416,  416,  415,  416,
-      416,  416,  416,    0,  379,  380,  380,  380,  380,  380,
-      380,    0,    0,    0,  380,    0,  415,  422,  422,    0,
-      422,  422,  422,  422,  437,  437,  437,  437,  443,  443,
-      443,  443,  380,  381,  381,  381,  381,    0,    0,  381,
-        0,  381,  381,  381,  381,  381,  381,  382,  382,  382,
-      382,    0,    0,  382,    0,  382,  382,  382,  382,  382,
-      382,  383,  383,  383,  383,    0,    0,  383,  383,  383,
-
-        0,  383,  383,  383,  383,    0,    0,    0,  383,  445,
-      445,  445,  445,    0,    0,  438,  438,  438,  438,  438,
-        0,    0,    0,  438,    0,    0,  383,  386,  386,  386,
-      386,    0,    0,  386,    0,  386,  386,  386,  386,  386,
-      386,  438,    0,    0,  386,  451,  451,  451,  451,  451,
-      452,  452,  452,  452,  458,  458,  458,  458,  460,  460,
-      460,  460,  386,  387,  387,  387,  387,    0,    0,  387,
-      387,  387,  387,  387,  387,  387,  387,  388,  388,  388,
-      388,    0,    0,  388,    0,    0,    0,  388,  388,  388,
-      388,    0,    0,    0,  388,  461,  461,  461,  461,  467,
-
-      467,  467,  467,  467,  468,  468,  468,  468,  474,  474,
-      474,  474,  388,  389,  389,  389,  389,    0,    0,  389,
-        0,  389,  389,  389,  389,  389,  389,  390,  390,  390,
-      390,    0,    0,  390,    0,  390,  390,  390,  390,  390,
-      390,  392,  392,  392,  392,    0,    0,  392,    0,  392,
-      392,  392,  392,  392,  392,    0,    0,    0,  392,  476,
-      476,  476,  476,  482,  482,  482,  482,  482,  483,  483,
-      483,  483,  489,  489,  489,  489,  392,  393,  393,  393,
-      393,    0,    0,  393,    0,  393,  393,  393,  393,  393,
-      393,  394,  394,  394,  394,    0,    0,  394,    0,  394,
-
-      394,  394,  394,  394,  394,  395,  395,  395,  395,    0,
-        0,  395,    0,  395,  395,  395,  395,  395,  395,  396,
-      396,  396,  396,    0,    0,  396,  396,  396,  396,  396,
-      396,  396,  396,  397,  397,  397,  397,    0,    0,  397,
-        0,    0,    0,  397,  397,  397,  397,    0,    0,    0,
-      397,  491,  491,  491,  491,  492,  492,  492,  492,  494,
-      494,  494,  494,  495,  495,  495,  495,    0,  397,  398,
-      398,  398,  398,    0,    0,  398,    0,  398,  398,  398,
-      398,  398,  398,  399,  399,  399,  399,    0,    0,  399,
-        0,  399,  399,  399,  399,  399,  399,  401,  401,  401,
-
-      401,    0,    0,  401,    0,  401,  401,  401,  401,  401,
-      401,    0,    0,    0,  401,  499,  499,  499,  499,  499,
-      500,  500,  500,  500,  506,  506,  506,  506,  508,  508,
-      508,  508,  401,  402,  402,  402,  402,    0,    0,  402,
-        0,  402,  402,  402,  402,  402,  402,  403,  403,  403,
-      403,    0,    0,  403,    0,  403,  403,  403,  403,  403,
-      403,  404,  404,  404,  404,    0,    0,  404,    0,  404,
-      404,  404,  404,  404,  404,  405,  405,  405,  405,    0,
-        0,  405,  405,  405,  405,  405,  405,  405,  405,  406,
-      406,  406,  406,    0,    0,  406,    0,    0,    0,  406,
-
-      406,  406,  406,    0,    0,    0,  406,  514,  514,  514,
-      514,  514,  515,  515,  515,  515,  521,  521,  521,  521,
-      523,  523,  523,  523,  406,  407,  407,  407,  407,    0,
-        0,  407,    0,  407,  407,  407,  407,  407,  407,  408,
-      408,  408,  408,    0,    0,  408,    0,  408,  408,  408,
-      408,  408,  408,  410,  410,  410,  410,    0,    0,  410,
-        0,  410,  410,  410,  410,  410,  410,    0,    0,    0,
-      410,  524,  524,  524,  524,  526,  526,  526,  526,  526,
-      527,  527,  527,  527,  533,  533,  533,  533,  410,  411,
-      411,  411,  411,    0,    0,  411,    0,  411,  411,  411,
-
-      411,  411,  411,  412,  412,  412,  412,    0,    0,  412,
-        0,  412,  412,  412,  412,  412,  412,  413,  413,  413,
-      413,    0,    0,  413,    0,  413,  413,  413,  413,  413,
-      413,  414,  414,  414,  414,    0,    0,  414,  414,  414,
-      414,  414,  414,  414,  414,  417,  417,  417,  417,    0,
-        0,  417,    0,  417,  417,  417,  417,  417,  417,    0,
-        0,    0,  417,  535,  535,  535,  535,    0,  475,  475,
-      475,  475,    0,    0,  475,  541,  541,  541,  541,  541,
-      417,  418,  418,  418,  418,  475,    0,  418,  418,  418,
-      418,  418,  418,  418,  418,  419,  419,  419,  419,    0,
-
-        0,  419,    0,  475,    0,  419,  419,  419,  419,    0,
-        0,    0,  419,  542,  542,  542,  542,  548,  548,  548,
-      548,  550,  550,  550,  550,  551,  551,  551,  551,    0,
-      419,  420,  420,  420,  420,    0,    0,  420,    0,  420,
-      420,  420,  420,  420,  420,  421,  421,  421,  421,    0,
-        0,  421,    0,  421,  421,  421,  421,  421,  421,  423,
-      423,  423,  423,    0,    0,  423,    0,  423,  423,  423,
-      423,  423,  423,    0,    0,    0,  423,  553,  553,  553,
-      553,  553,  554,  554,  554,  554,  560,  560,  560,  560,
-      562,  562,  562,  562,  423,  424,  424,  424,  424,    0,
-
-        0,  424,    0,  424,  424,  424,  424,  424,  424,  425,
-      425,  425,  425,    0,    0,  425,    0,  425,  425,  425,
-      425,  425,  425,  426,  426,  426,  426,    0,    0,  426,
-        0,  426,  426,  426,  426,  426,  426,  427,  427,  427,
-      427,    0,    0,  427,  427,  427,  427,  427,  427,  427,
-      427,  439,  439,  439,  439,    0,    0,  439,    0,  439,
-      439,  439,  439,  439,  439,  440,  440,  440,  440,    0,
-        0,  440,    0,  440,  440,  440,  440,  440,  440,  446,
-      446,  446,  446,    0,    0,  446,    0,    0,    0,  446,
-      446,  446,  446,  447,  447,  447,  447,    0,    0,  447,
-
-        0,  447,  447,  447,  447,  447,  447,  448,  448,  448,
-      448,    0,    0,  448,    0,  448,  448,  448,  448,  448,
-      448,  449,  449,  449,  449,    0,    0,  449,    0,    0,
-      449,  449,  449,  449,  449,    0,    0,    0,  449,  568,
-      568,  568,  568,  568,  490,  490,  490,  490,    0,    0,
-      490,  569,  569,  569,  569,    0,  449,  450,  450,  450,
-      450,  490,    0,  450,    0,  450,  450,  450,  450,  450,
-      450,  453,  453,  453,  453,    0,    0,  453,    0,  490,
-      453,  453,  453,  453,  453,    0,    0,    0,  453,  575,
-      575,  575,  575,    0,    0,  462,  462,  462,  462,  462,
-
-        0,    0,    0,  462,    0,    0,  453,  454,  454,  454,
-      454,    0,    0,  454,    0,  454,  454,  454,  454,  454,
-      454,  462,  464,  464,  464,  464,  464,  464,  464,  464,
-      464,  464,  464,  464,  464,  464,  464,  464,  464,  464,
-      464,  464,  464,  464,  464,  464,  464,  464,  464,  464,
-      464,  464,  464,  464,  464,  464,  464,  464,  464,  464,
-      464,  464,  464,  464,  464,  464,  464,  464,  464,  464,
-      469,  469,  469,  469,    0,    0,  469,    0,    0,  469,
-      469,  469,  469,  469,    0,    0,    0,  469,  577,  577,
-      577,  577,  578,  578,  578,  578,  580,  580,  580,  580,
-
-      581,  581,  581,  581,    0,  469,  470,  470,  470,  470,
-        0,    0,  470,    0,  470,  470,  470,  470,  470,  470,
-      471,  471,  471,  471,    0,    0,  471,    0,  471,  471,
-      471,  471,  471,  471,  477,  477,  477,  477,    0,    0,
-      477,    0,    0,    0,  477,  477,  477,  477,  478,  478,
-      478,  478,    0,    0,  478,    0,  478,  478,  478,  478,
-      478,  478,  479,  479,  479,  479,    0,    0,  479,    0,
-      479,  479,  479,  479,  479,  479,  480,  480,  480,  480,
-        0,    0,  480,    0,    0,  480,  480,  480,  480,  480,
-        0,    0,    0,  480,  585,  585,  585,  585,  585,  561,
-
-      561,  561,  561,    0,    0,  561,  586,  586,  586,  586,
-        0,  480,  481,  481,  481,  481,  561,    0,  481,    0,
-      481,  481,  481,  481,  481,  481,  484,  484,  484,  484,
-        0,    0,  484,    0,  561,  484,  484,  484,  484,  484,
-        0,    0,    0,  484,  592,  592,  592,  592,    0,  576,
-      576,  576,  576,    0,    0,  576,  594,  594,  594,  594,
-        0,  484,  485,  485,  485,  485,  576,    0,  485,    0,
-      485,  485,  485,  485,  485,  485,  493,  493,  493,  493,
-        0,    0,  493,    0,  576,    0,  493,  493,  493,  493,
-        0,    0,    0,  493,  600,  600,  600,  600,  600,  601,
-
-      601,  601,  601,  607,  607,  607,  607,  609,  609,  609,
-      609,  493,  496,  496,  496,  496,    0,    0,  496,    0,
-      496,  496,  496,  496,  496,  496,  497,  497,  497,  497,
-        0,    0,  497,    0,  497,  497,  497,  497,  497,  497,
-      501,  501,  501,  501,  501,    0,    0,    0,  501,  610,
-      610,  610,  610,  618,  618,    0,  618,  618,  618,  618,
-      704,  704,  704,  704,    0,    0,  501,  502,  502,  502,
-      502,    0,    0,  502,    0,  502,  502,  502,  502,  502,
-      502,  503,  503,  503,  503,    0,    0,  503,    0,  503,
-      503,  503,  503,  503,  503,  509,  509,  509,  509,    0,
-
-        0,  509,    0,    0,    0,  509,  509,  509,  509,  510,
-      510,  510,  510,    0,    0,  510,    0,  510,  510,  510,
-      510,  510,  510,  511,  511,  511,  511,    0,    0,  511,
-        0,  511,  511,  511,  511,  511,  511,  512,  512,  512,
-      512,    0,    0,  512,    0,    0,  512,  512,  512,  512,
-      512,    0,    0,    0,  512,  617,  617,  617,  617,    0,
-      624,  624,  617,  624,  624,  624,  624,  705,  705,  705,
-      705,    0,  512,  513,  513,  513,  513,    0,    0,  513,
-      617,  513,  513,  513,  513,  513,  513,  516,  516,  516,
-      516,    0,    0,  516,    0,    0,  516,  516,  516,  516,
-
-      516,    0,  630,  630,  516,  630,  630,  630,  630,    0,
-        0,  525,  525,  525,  525,  525,    0,    0,    0,  525,
-        0,    0,  516,  517,  517,  517,  517,    0,    0,  517,
-        0,  517,  517,  517,  517,  517,  517,  525,  528,  528,
-      528,  528,  528,    0,  643,  643,  528,  643,  643,  643,
-      643,  649,  649,    0,  649,  649,  649,  649,  712,  712,
-      712,  712,    0,    0,  528,  529,  529,  529,  529,    0,
-        0,  529,    0,  529,  529,  529,  529,  529,  529,  530,
-      530,  530,  530,    0,    0,  530,    0,  530,  530,  530,
-      530,  530,  530,  536,  536,  536,  536,    0,    0,  536,
-
-        0,    0,    0,  536,  536,  536,  536,  537,  537,  537,
-      537,    0,    0,  537,    0,  537,  537,  537,  537,  537,
-      537,  538,  538,  538,  538,    0,    0,  538,    0,  538,
-      538,  538,  538,  538,  538,  539,  539,  539,  539,    0,
-        0,  539,    0,    0,  539,  539,  539,  539,  539,    0,
-        0,    0,  539,  648,  648,  648,  648,    0,  655,  655,
-      648,  655,  655,  655,  655,  717,  717,  717,  717,  717,
-      539,  540,  540,  540,  540,    0,    0,  540,  648,  540,
-      540,  540,  540,  540,  540,  543,  543,  543,  543,    0,
-        0,  543,    0,    0,  543,  543,  543,  543,  543,    0,
-
-      659,  659,  543,  659,  659,  659,  659,    0,    0,  552,
-      552,  552,  552,  552,    0,    0,    0,  552,    0,    0,
-      543,  544,  544,  544,  544,    0,    0,  544,    0,  544,
-      544,  544,  544,  544,  544,  552,  555,  555,  555,  555,
-        0,    0,  555,    0,    0,  555,  555,  555,  555,  555,
-        0,    0,    0,  555,  658,  658,  658,  658,    0,  665,
-      665,  658,  665,  665,  665,  665,  718,  718,  718,  718,
-        0,  555,  556,  556,  556,  556,    0,    0,  556,  658,
-      556,  556,  556,  556,  556,  556,  557,  557,  557,  557,
-        0,    0,  557,    0,  557,  557,  557,  557,  557,  557,
-
-      563,  563,  563,  563,    0,    0,  563,    0,    0,    0,
-      563,  563,  563,  563,  564,  564,  564,  564,    0,    0,
-      564,    0,  564,  564,  564,  564,  564,  564,  565,  565,
-      565,  565,    0,    0,  565,    0,  565,  565,  565,  565,
-      565,  565,  566,  566,  566,  566,    0,    0,  566,    0,
-        0,  566,  566,  566,  566,  566,    0,  671,  671,  566,
-      671,  671,  671,  671,  684,  684,    0,  684,  684,  684,
-      684,  724,  724,  724,  724,    0,    0,  566,  567,  567,
-      567,  567,    0,    0,  567,    0,  567,  567,  567,  567,
-      567,  567,  570,  570,  570,  570,    0,    0,  570,    0,
-
-        0,  570,  570,  570,  570,  570,    0,    0,    0,  570,
-      689,  689,  689,  689,    0,  690,  690,  689,  690,  690,
-      690,  690,  726,  726,  726,  726,    0,  570,  571,  571,
-      571,  571,    0,    0,  571,  689,  571,  571,  571,  571,
-      571,  571,  579,  579,  579,  579,    0,    0,  579,    0,
-        0,    0,  579,  579,  579,  579,    0,  696,  696,  579,
-      696,  696,  696,  696,  731,  731,  731,  731,  731,  732,
-      732,  732,  732,  738,  738,  738,  738,  579,  582,  582,
-      582,  582,    0,    0,  582,    0,  582,  582,  582,  582,
-      582,  582,  583,  583,  583,  583,    0,    0,  583,    0,
-
-      583,  583,  583,  583,  583,  583,  587,  587,  587,  587,
-      587,    0,    0,    0,  587,  740,  740,  740,  740,  741,
-      741,  741,  741,  747,  747,  747,  747,  747,  748,  748,
-      748,  748,  587,  588,  588,  588,  588,    0,    0,  588,
-        0,  588,  588,  588,  588,  588,  588,  589,  589,  589,
-      589,    0,    0,  589,    0,  589,  589,  589,  589,  589,
-      589,  595,  595,  595,  595,    0,    0,  595,    0,    0,
-        0,  595,  595,  595,  595,  596,  596,  596,  596,    0,
-        0,  596,    0,  596,  596,  596,  596,  596,  596,  597,
-      597,  597,  597,    0,    0,  597,    0,  597,  597,  597,
-
-      597,  597,  597,  598,  598,  598,  598,    0,    0,  598,
-        0,    0,  598,  598,  598,  598,  598,    0,    0,    0,
-      598,  754,  754,  754,  754,    0,  711,  711,  711,  711,
-        0,    0,  711,  756,  756,  756,  756,    0,  598,  599,
-      599,  599,  599,  711,    0,  599,    0,  599,  599,  599,
-      599,  599,  599,  602,  602,  602,  602,    0,    0,  602,
-        0,  711,  602,  602,  602,  602,  602,    0,    0,    0,
-      602,  757,  757,  757,  757,    0,    0,  611,  611,  611,
-      611,  611,    0,    0,    0,  611,    0,    0,  602,  603,
-      603,  603,  603,    0,    0,  603,    0,  603,  603,  603,
-
-      603,  603,  603,  611,  619,  619,  619,  619,    0,    0,
-      619,    0,  619,  619,  619,  619,  619,  619,    0,    0,
-        0,  619,  759,  759,  759,  759,  764,  764,  764,  764,
-      765,  765,  765,  765,  767,  767,  767,  767,    0,  619,
-      620,  620,  620,  620,    0,    0,  620,  620,  620,  620,
-      620,  620,  620,  620,  621,  621,  621,  621,    0,    0,
-      621,    0,  621,  621,  621,  621,  621,  621,    0,    0,
-        0,  621,  768,  768,  768,  768,    0,  774,  774,  774,
-      774,    0,    0,  774,  775,  775,  775,  775,    0,  621,
-      622,  622,  622,  622,  774,    0,  622,  622,  622,  622,
-
-      622,  622,  622,  622,  623,  623,  623,  623,    0,    0,
-      623,    0,  774,    0,  623,  623,  623,  623,    0,    0,
-        0,  623,  780,  780,  780,  780,    0,    0,  719,  719,
-      719,  719,  719,    0,    0,    0,  719,    0,    0,  623,
-      625,  625,  625,  625,    0,    0,  625,    0,  625,  625,
-      625,  625,  625,  625,  719,    0,    0,  625,  781,  781,
-      781,  781,    0,  787,  787,  787,  787,    0,    0,  787,
-      788,  788,  788,  788,    0,  625,  626,  626,  626,  626,
-      787,    0,  626,  626,  626,  626,  626,  626,  626,  626,
-      627,  627,  627,  627,    0,    0,  627,    0,  787,    0,
-
-      627,  627,  627,  627,    0,    0,    0,  627,  793,  793,
-      793,  793,  793,  794,  794,  794,  794,  800,  800,  800,
-      800,  802,  802,  802,  802,  627,  628,  628,  628,  628,
-        0,    0,  628,    0,  628,  628,  628,  628,  628,  628,
-      629,  629,  629,  629,    0,    0,  629,    0,  629,  629,
-      629,  629,  629,  629,  631,  631,  631,  631,    0,    0,
-      631,    0,  631,  631,  631,  631,  631,  631,    0,    0,
-        0,  631,  807,  807,  807,  807,  807,  808,  808,  808,
-      808,  814,  814,  814,  814,  816,  816,  816,  816,  631,
-      632,  632,  632,  632,    0,    0,  632,    0,  632,  632,
-
-      632,  632,  632,  632,  633,  633,  633,  633,    0,    0,
-      633,    0,  633,  633,  633,  633,  633,  633,  634,  634,
-      634,  634,    0,    0,  634,    0,  634,  634,  634,  634,
-      634,  634,  635,  635,  635,  635,    0,    0,  635,  635,
-      635,  635,  635,  635,  635,  635,  636,  636,  636,  636,
-        0,    0,  636,    0,  636,  636,  636,  636,  636,  636,
-        0,    0,    0,  636,  817,  817,  817,  817,  823,  823,
-      823,  823,  823,  824,  824,  824,  824,  830,  830,  830,
-      830,  636,  637,  637,  637,  637,    0,    0,  637,    0,
-      637,  637,  637,  637,  637,  637,  638,  638,  638,  638,
-
-        0,    0,  638,    0,  638,  638,  638,  638,  638,  638,
-      639,  639,  639,  639,    0,    0,  639,    0,  639,  639,
-      639,  639,  639,  639,  640,  640,  640,  640,    0,    0,
-      640,  640,  640,  640,  640,  640,  640,  640,  641,  641,
-      641,  641,    0,    0,  641,    0,    0,    0,  641,  641,
-      641,  641,    0,    0,    0,  641,  832,  832,  832,  832,
-      833,  833,  833,  833,  835,  835,  835,  835,  840,  840,
-      840,  840,    0,  641,  642,  642,  642,  642,    0,    0,
-      642,    0,  642,  642,  642,  642,  642,  642,  644,  644,
-      644,  644,    0,    0,  644,    0,  644,  644,  644,  644,
-
-      644,  644,    0,    0,    0,  644,  841,  841,  841,  841,
-      843,  843,  843,  843,  844,  844,  844,  844,  851,  851,
-      851,  851,    0,  644,  645,  645,  645,  645,    0,    0,
-      645,    0,  645,  645,  645,  645,  645,  645,  646,  646,
-      646,  646,    0,    0,  646,    0,  646,  646,  646,  646,
-      646,  646,  647,  647,  647,  647,    0,    0,  647,  647,
-      647,  647,  647,  647,  647,  647,  650,  650,  650,  650,
-        0,    0,  650,    0,  650,  650,  650,  650,  650,  650,
-        0,  861,  861,  650,  861,  861,  861,  861,  867,  867,
-        0,  867,  867,  867,  867,  882,  882,  882,  882,  882,
-
-        0,  650,  651,  651,  651,  651,    0,    0,  651,  651,
-      651,  651,  651,  651,  651,  651,  652,  652,  652,  652,
-        0,    0,  652,    0,  652,  652,  652,  652,  652,  652,
-        0,  873,  873,  652,  873,  873,  873,  873,    0,  850,
-      850,  850,  850,  879,  879,  850,  879,  879,  879,  879,
-        0,  652,  653,  653,  653,  653,  850,    0,  653,  653,
-      653,  653,  653,  653,  653,  653,  654,  654,  654,  654,
-        0,    0,  654,    0,  850,    0,  654,  654,  654,  654,
-        0,  881,  881,  654,  881,  881,  881,  881,    0,    0,
-      742,  742,  742,  742,  742,    0,    0,    0,  742,    0,
-
-        0,  654,  656,  656,  656,  656,    0,    0,  656,    0,
-      656,  656,  656,  656,  656,  656,  742,  883,  883,  656,
-      883,  883,  883,  883,  884,  884,  884,  884,  884,  885,
-      885,    0,  885,  885,  885,  885,    0,  656,  657,  657,
-      657,  657,    0,    0,  657,  657,  657,  657,  657,  657,
-      657,  657,  660,  660,  660,  660,    0,    0,  660,    0,
-      660,  660,  660,  660,  660,  660,    0,  887,  887,  660,
-      887,  887,  887,  887,  888,  888,  888,  888,  888,  889,
-      889,    0,  889,  889,  889,  889,    0,  660,  661,  661,
-      661,  661,    0,    0,  661,  661,  661,  661,  661,  661,
-
-      661,  661,  662,  662,  662,  662,    0,    0,  662,    0,
-      662,  662,  662,  662,  662,  662,    0,    0,    0,  662,
-      890,  890,  890,  890,  890,  891,  891,    0,  891,  891,
-      891,  891,  894,  894,  894,  894,  894,  662,  663,  663,
-      663,  663,    0,    0,  663,  663,  663,  663,  663,  663,
-      663,  663,  664,  664,  664,  664,    0,    0,  664,    0,
-        0,    0,  664,  664,  664,  664,    0,  893,  893,  664,
-      893,  893,  893,  893,    0,    0,  758,  758,  758,  758,
-      758,    0,    0,    0,  758,    0,    0,  664,  666,  666,
-      666,  666,    0,    0,  666,    0,  666,  666,  666,  666,
-
-      666,  666,  758,  895,  895,  666,  895,  895,  895,  895,
-      899,  899,  899,  899,  900,  900,  900,  900,  907,  907,
-      907,  907,    0,  666,  667,  667,  667,  667,    0,    0,
-      667,  667,  667,  667,  667,  667,  667,  667,  668,  668,
-      668,  668,    0,    0,  668,    0,    0,    0,  668,  668,
-      668,  668,    0,    0,    0,  668,  860,  860,  860,  860,
-        0,    0,    0,  860,  915,  915,  915,  915,  923,  923,
-      923,  923,    0,  668,  669,  669,  669,  669,    0,    0,
-      669,  860,  669,  669,  669,  669,  669,  669,  670,  670,
-      670,  670,    0,    0,  670,    0,  670,  670,  670,  670,
-
-      670,  670,  672,  672,  672,  672,    0,    0,  672,    0,
-      672,  672,  672,  672,  672,  672,    0,    0,    0,  672,
-      878,  878,  878,  878,    0,    0,    0,  878,  924,  924,
-      924,  924,  925,  925,  925,  925,    0,  672,  673,  673,
-      673,  673,    0,    0,  673,  878,  673,  673,  673,  673,
-      673,  673,  674,  674,  674,  674,    0,    0,  674,    0,
-      674,  674,  674,  674,  674,  674,  675,  675,  675,  675,
-        0,    0,  675,    0,  675,  675,  675,  675,  675,  675,
-      676,  676,  676,  676,    0,    0,  676,  676,  676,  676,
-      676,  676,  676,  676,  677,  677,  677,  677,    0,    0,
-
-      677,    0,  677,  677,  677,  677,  677,  677,    0,    0,
-        0,  677,  880,  880,  880,  880,    0,    0,    0,  880,
-      926,  926,  926,  926,  928,  928,  928,  928,    0,  677,
-      678,  678,  678,  678,    0,    0,  678,  880,  678,  678,
-      678,  678,  678,  678,  679,  679,  679,  679,    0,    0,
-      679,    0,  679,  679,  679,  679,  679,  679,  680,  680,
-      680,  680,    0,    0,  680,    0,  680,  680,  680,  680,
-      680,  680,  681,  681,  681,  681,    0,    0,  681,  681,
-      681,  681,  681,  681,  681,  681,  682,  682,  682,  682,
-        0,    0,  682,    0,    0,    0,  682,  682,  682,  682,
-
-        0,    0,    0,  682,  886,  886,  886,  886,    0,    0,
-        0,  886,  929,  929,  929,  929,  931,  931,  931,  931,
-        0,  682,  683,  683,  683,  683,    0,    0,  683,  886,
-      683,  683,  683,  683,  683,  683,  685,  685,  685,  685,
-        0,    0,  685,    0,  685,  685,  685,  685,  685,  685,
-        0,    0,    0,  685,  892,  892,  892,  892,    0,    0,
-        0,  892,  933,  933,  933,  933,  934,  934,  934,  934,
-        0,  685,  686,  686,  686,  686,    0,    0,  686,  892,
-      686,  686,  686,  686,  686,  686,  687,  687,  687,  687,
-        0,    0,  687,    0,  687,  687,  687,  687,  687,  687,
-
-      688,  688,  688,  688,    0,    0,  688,  688,  688,  688,
-      688,  688,  688,  688,  691,  691,  691,  691,    0,    0,
-      691,    0,  691,  691,  691,  691,  691,  691,    0,    0,
-        0,  691,  936,  936,  936,  936,  937,  937,  937,  937,
-      939,  939,  939,  939,  940,  940,  940,  940,    0,  691,
-      692,  692,  692,  692,    0,    0,  692,  692,  692,  692,
-      692,  692,  692,  692,  693,  693,  693,  693,    0,    0,
-      693,    0,  693,  693,  693,  693,  693,  693,    0,    0,
-        0,  693,  941,  941,  941,  941,  942,  942,  942,  942,
-      944,  944,  944,  944,  945,  945,  945,  945,    0,  693,
-
-      694,  694,  694,  694,    0,    0,  694,  694,  694,  694,
-      694,  694,  694,  694,  695,  695,  695,  695,    0,    0,
-      695,    0,    0,    0,  695,  695,  695,  695,    0,    0,
-      959,  695,  959,  959,    0,    0,  959,    0,  766,  766,
-      766,  766,  766,    0,    0,    0,  766,    0,    0,  695,
-      697,  697,  697,  697,    0,    0,  697,    0,  697,  697,
-      697,  697,  697,  697,  766,    0,    0,  697,  960,  960,
-      960,  960,    0,  962,  960,  962,  962,    0,  963,  962,
-      963,  963,    0,    0,  963,  697,  698,  698,  698,  698,
-        0,    0,  698,  698,  698,  698,  698,  698,  698,  698,
-
-      706,  706,  706,  706,    0,    0,  706,    0,  706,  706,
-      706,  706,  706,  706,  707,  707,  707,  707,    0,    0,
-      707,    0,  707,  707,  707,  707,  707,  707,  709,  709,
-      709,  709,    0,    0,  709,    0,  709,  709,  709,  709,
-      709,  709,  710,  710,  710,  710,    0,    0,  710,    0,
-      710,  710,  710,  710,  710,  710,  713,  713,  713,  713,
-        0,    0,  713,    0,    0,    0,  713,  713,  713,  713,
-      714,  714,  714,  714,    0,    0,  714,    0,  714,  714,
-      714,  714,  714,  714,  715,  715,  715,  715,    0,    0,
-      715,    0,  715,  715,  715,  715,  715,  715,  720,  720,
-
-      720,  720,    0,    0,  720,    0,  720,  720,  720,  720,
-      720,  720,  721,  721,  721,  721,    0,    0,  721,    0,
-      721,  721,  721,  721,  721,  721,  727,  727,  727,  727,
-        0,    0,  727,    0,    0,    0,  727,  727,  727,  727,
-      728,  728,  728,  728,    0,    0,  728,    0,  728,  728,
-      728,  728,  728,  728,  729,  729,  729,  729,    0,    0,
-      729,    0,  729,  729,  729,  729,  729,  729,  730,  730,
-      730,  730,    0,    0,  730,    0,    0,  730,  730,  730,
-      730,  730,    0,    0,    0,  730,  795,  795,  795,  795,
-      795,    0,    0,    0,  795,  927,  927,  927,  927,    0,
-
-        0,    0,  927,  730,  733,  733,  733,  733,    0,    0,
-      733,    0,  795,  733,  733,  733,  733,  733,    0,    0,
-      927,  733,  935,  935,  935,  935,    0,    0,  964,  935,
-      964,  964,    0,    0,  964,    0,    0,    0,    0,  733,
-      734,  734,  734,  734,    0,    0,  734,  935,  734,  734,
-      734,  734,  734,  734,  735,  735,  735,  735,    0,    0,
-      735,    0,  735,  735,  735,  735,  735,  735,  743,  743,
-      743,  743,    0,    0,  743,    0,  743,  743,  743,  743,
-      743,  743,  744,  744,  744,  744,    0,    0,  744,    0,
-      744,  744,  744,  744,  744,  744,  745,  745,  745,  745,
-
-        0,    0,  745,    0,    0,  745,  745,  745,  745,  745,
-        0,    0,    0,  745,  943,  943,  943,  943,    0,    0,
-        0,  943,  965,  965,  965,  965,    0,    0,  965,    0,
-        0,  745,  746,  746,  746,  746,    0,    0,  746,  943,
-      746,  746,  746,  746,  746,  746,  749,  749,  749,  749,
-        0,    0,  749,    0,    0,  749,  749,  749,  749,  749,
-        0,    0,  966,  749,  966,  966,    0,    0,  966,  967,
-      967,  967,  967,    0,  969,  967,  969,  969,    0,    0,
-      969,  749,  750,  750,  750,  750,    0,    0,  750,    0,
-      750,  750,  750,  750,  750,  750,  760,  760,  760,  760,
-
-        0,    0,  760,    0,    0,    0,  760,  760,  760,  760,
-      761,  761,  761,  761,    0,    0,  761,    0,  761,  761,
-      761,  761,  761,  761,  762,  762,  762,  762,    0,    0,
-      762,    0,  762,  762,  762,  762,  762,  762,  763,  763,
-      763,  763,    0,    0,  763,    0,    0,  763,  763,  763,
-      763,  763,    0,    0,    0,  763,  968,  968,  968,  968,
-        0,  970,  968,  970,  970,    0,  971,  970,  971,  971,
-        0,    0,  971,  763,  769,  769,  769,  769,    0,    0,
-      769,    0,  769,  769,  769,  769,  769,  769,  770,  770,
-      770,  770,    0,    0,  770,    0,  770,  770,  770,  770,
-
-      770,  770,  772,  772,  772,  772,    0,    0,  772,    0,
-      772,  772,  772,  772,  772,  772,  773,  773,  773,  773,
-        0,    0,  773,    0,  773,  773,  773,  773,  773,  773,
-      776,  776,  776,  776,    0,    0,  776,    0,    0,    0,
-      776,  776,  776,  776,  777,  777,  777,  777,    0,    0,
-      777,    0,  777,  777,  777,  777,  777,  777,  778,  778,
-      778,  778,    0,    0,  778,    0,  778,  778,  778,  778,
-      778,  778,  782,  782,  782,  782,    0,    0,  782,    0,
-      782,  782,  782,  782,  782,  782,  783,  783,  783,  783,
-        0,    0,  783,    0,  783,  783,  783,  783,  783,  783,
-
-      785,  785,  785,  785,    0,    0,  785,    0,  785,  785,
-      785,  785,  785,  785,  786,  786,  786,  786,    0,    0,
-      786,    0,  786,  786,  786,  786,  786,  786,  789,  789,
-      789,  789,    0,    0,  789,    0,    0,    0,  789,  789,
-      789,  789,  790,  790,  790,  790,    0,    0,  790,    0,
-      790,  790,  790,  790,  790,  790,  791,  791,  791,  791,
-        0,    0,  791,    0,  791,  791,  791,  791,  791,  791,
-      796,  796,  796,  796,    0,    0,  796,    0,  796,  796,
-      796,  796,  796,  796,  797,  797,  797,  797,    0,    0,
-      797,    0,  797,  797,  797,  797,  797,  797,  803,  803,
-
-      803,  803,    0,    0,  803,    0,    0,    0,  803,  803,
-      803,  803,  804,  804,  804,  804,    0,    0,  804,    0,
-      804,  804,  804,  804,  804,  804,  805,  805,  805,  805,
-        0,    0,  805,    0,  805,  805,  805,  805,  805,  805,
-      806,  806,  806,  806,    0,    0,  806,    0,    0,  806,
-      806,  806,  806,  806,    0,    0,    0,  806,  818,  818,
-      818,  818,  818,    0,    0,    0,  818,  972,  972,  972,
-      972,    0,    0,  972,    0,  806,  809,  809,  809,  809,
-        0,    0,  809,    0,  818,  809,  809,  809,  809,  809,
-        0,    0,    0,  809,  973,  973,  973,  973,    0,    0,
-
-      973,  974,  974,  974,  974,    0,    0,  974,    0,    0,
-        0,  809,  810,  810,  810,  810,    0,    0,  810,    0,
-      810,  810,  810,  810,  810,  810,  811,  811,  811,  811,
-        0,    0,  811,    0,  811,  811,  811,  811,  811,  811,
-      819,  819,  819,  819,    0,    0,  819,    0,  819,  819,
-      819,  819,  819,  819,  820,  820,  820,  820,    0,    0,
-      820,    0,  820,  820,  820,  820,  820,  820,  821,  821,
-      821,  821,    0,    0,  821,    0,    0,  821,  821,  821,
-      821,  821,    0,    0,    0,  821,  975,  975,  975,  975,
-        0,    0,  975,    0,    0,    0,    0,    0,    0,    0,
-
-        0,    0,    0,  821,  822,  822,  822,  822,    0,    0,
-      822,    0,  822,  822,  822,  822,  822,  822,  825,  825,
-      825,  825,    0,    0,  825,    0,    0,  825,  825,  825,
-      825,  825,    0,    0,    0,  825,    0,    0,    0,    0,
-        0,    0,  834,  834,  834,  834,  834,    0,    0,    0,
-      834,    0,    0,  825,  826,  826,  826,  826,    0,    0,
-      826,    0,  826,  826,  826,  826,  826,  826,  834,  836,
-      836,  836,  836,    0,    0,  836,    0,    0,    0,  836,
-      836,  836,  836,  837,  837,  837,  837,    0,    0,  837,
-        0,  837,  837,  837,  837,  837,  837,  838,  838,  838,
-
-      838,    0,    0,  838,    0,  838,  838,  838,  838,  838,
-      838,  839,  839,  839,  839,    0,    0,  839,    0,    0,
-      839,  839,  839,  839,  839,    0,    0,    0,  839,  842,
-      842,  842,  842,  842,    0,    0,    0,  842,    0,    0,
-        0,    0,    0,    0,    0,    0,  839,    0,    0,    0,
-        0,    0,    0,    0,    0,  842,  845,  845,  845,  845,
-        0,    0,  845,    0,  845,  845,  845,  845,  845,  845,
-      846,  846,  846,  846,    0,    0,  846,    0,  846,  846,
-      846,  846,  846,  846,  848,  848,  848,  848,    0,    0,
-      848,    0,  848,  848,  848,  848,  848,  848,  849,  849,
-
-      849,  849,    0,    0,  849,    0,  849,  849,  849,  849,
-      849,  849,  852,  852,  852,  852,    0,    0,  852,    0,
-        0,    0,  852,  852,  852,  852,  853,  853,  853,  853,
-        0,    0,  853,    0,  853,  853,  853,  853,  853,  853,
-      854,  854,  854,  854,    0,    0,  854,    0,  854,  854,
-      854,  854,  854,  854,  862,  862,  862,  862,    0,    0,
-      862,    0,  862,  862,  862,  862,  862,  862,    0,    0,
-        0,  862,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  862,
-      863,  863,  863,  863,    0,    0,  863,  863,  863,  863,
-
-      863,  863,  863,  863,  864,  864,  864,  864,    0,    0,
-      864,    0,  864,  864,  864,  864,  864,  864,    0,    0,
-        0,  864,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  864,
-      865,  865,  865,  865,    0,    0,  865,  865,  865,  865,
-      865,  865,  865,  865,  866,  866,  866,  866,    0,    0,
-      866,    0,    0,    0,  866,  866,  866,  866,    0,    0,
-        0,  866,    0,    0,    0,    0,    0,    0,  930,  930,
-      930,  930,  930,    0,    0,    0,  930,    0,    0,  866,
-      868,  868,  868,  868,    0,    0,  868,    0,  868,  868,
-
-      868,  868,  868,  868,  930,    0,    0,  868,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  868,  869,  869,  869,  869,
-        0,    0,  869,  869,  869,  869,  869,  869,  869,  869,
-      870,  870,  870,  870,    0,    0,  870,    0,  870,  870,
-      870,  870,  870,  870,    0,    0,    0,  870,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  870,  871,  871,  871,  871,
-        0,    0,  871,  871,  871,  871,  871,  871,  871,  871,
-      872,  872,  872,  872,    0,    0,  872,    0,    0,    0,
-
-      872,  872,  872,  872,    0,    0,    0,  872,    0,    0,
-        0,    0,    0,    0,  938,  938,  938,  938,  938,    0,
-        0,    0,  938,    0,    0,  872,  874,  874,  874,  874,
-        0,    0,  874,    0,  874,  874,  874,  874,  874,  874,
-      938,    0,    0,  874,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  874,  875,  875,  875,  875,    0,    0,  875,  875,
-      875,  875,  875,  875,  875,  875,  876,  876,  876,  876,
-        0,    0,  876,    0,  876,  876,  876,  876,  876,  876,
-        0,    0,    0,  876,    0,    0,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  876,  877,  877,  877,  877,    0,    0,  877,  877,
-      877,  877,  877,  877,  877,  877,  906,  906,  906,  906,
-        0,    0,  906,  906,  906,    0,    0,    0,    0,    0,
-        0,    0,    0,  906,  946,  946,  946,  946,  946,    0,
-        0,    0,  946,    0,    0,    0,    0,    0,    0,    0,
-        0,  906,  908,  908,  908,  908,    0,    0,  908,    0,
-      946,    0,  908,  908,  908,  908,  914,  914,  914,  914,
-        0,    0,  914,  914,  914,    0,    0,    0,    0,    0,
-        0,    0,    0,  914,    0,    0,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  914,  916,  916,  916,  916,    0,    0,  916,    0,
-        0,    0,  916,  916,  916,  916,  922,  922,  922,  922,
-        0,    0,  922,  922,  922,    0,    0,    0,    0,    0,
-        0,    0,    0,  922,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  922,  932,  932,  932,  932,    0,    0,  932,    0,
-        0,    0,  932,  932,  932,  932,  977,  977,  977,  977,
-      977,  977,  977,  977,  978,  978,  978,  978,  978,  978,
-      978,  978,  979,  979,  979,  979,  979,  979,  979,  979,
-
-      980,  980,  980,  980,  980,  980,  980,  980,  981,  981,
-        0,  981,  981,  981,  981,  981,  982,  982,    0,  982,
-      982,  982,  982,  982,  983,    0,    0,  983,  984,    0,
-        0,  984,  985,    0,    0,  985,    0,  985,  985,  985,
-      986,  986,    0,  986,  986,  986,  986,  986,  987,    0,
-        0,  987,    0,  987,  987,  988,  988,    0,  988,  988,
-      988,  988,  988,  989,  989,    0,  989,    0,  989,  989,
-      989,  990,  990,    0,  990,  990,  990,  990,  990,  991,
-      991,  991,  991,  991,  991,  991,  991,  992,  992,  992,
-      992,  992,  992,  992,  992,  993,  993,    0,    0,  993,
-
-      993,  995,  995,  995,  995,  995,  995,  995,  995,  996,
-      996,  996,  996,  996,  996,  996,  996,  997,  997,  997,
-      997,  997,  997,  997,  997,  998,  998,  998,  998,  998,
-      998,  998,  998, 1000, 1000, 1000, 1000, 1000, 1000, 1000,
-     1000, 1001, 1001,    0, 1001, 1001, 1001, 1001, 1001, 1002,
-     1002, 1002, 1002, 1002, 1002, 1002, 1002, 1003, 1003, 1003,
-     1003, 1003, 1003, 1003, 1003, 1004, 1004,    0, 1004,    0,
-     1004, 1004, 1004, 1005, 1005,    0, 1005, 1005, 1005, 1005,
-     1005, 1007, 1007,    0, 1007, 1007, 1007, 1007, 1007, 1008,
-        0,    0, 1008, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
-
-     1009, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1011,
-     1011,    0,    0, 1011, 1011, 1013, 1013, 1013, 1013, 1013,
-     1013, 1013, 1013, 1015, 1015, 1015, 1015, 1015, 1015, 1015,
-     1015, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1018,
-     1018, 1018, 1018, 1018, 1018, 1018, 1018, 1019, 1019, 1019,
-     1019, 1019, 1019, 1019, 1019, 1020, 1020, 1020, 1020, 1020,
-     1020, 1020, 1020, 1021, 1021, 1021, 1021, 1021, 1021, 1021,
-     1021, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1023,
-     1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024,
-     1024, 1024, 1024, 1024, 1024, 1025, 1025, 1025, 1025, 1025,
-
-     1025, 1025, 1025, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
-     1026, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1028,
-     1028, 1028, 1028, 1028, 1028, 1028, 1028, 1029, 1029, 1029,
-     1029, 1029, 1029, 1029, 1029, 1030, 1030, 1030, 1030, 1030,
-     1030, 1030, 1030, 1031, 1031, 1031, 1031, 1031, 1031, 1031,
-     1031, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1033,
-     1033, 1033, 1033, 1033, 1033, 1033, 1033, 1034, 1034,    0,
-     1034, 1034, 1034, 1034, 1034, 1035,    0,    0, 1035, 1036,
-     1036, 1036, 1036, 1036, 1036, 1036, 1036, 1037, 1037, 1037,
-     1037, 1037, 1037, 1037, 1037, 1038, 1038, 1038, 1038, 1038,
-
-     1038, 1038, 1038, 1040, 1040, 1040, 1040, 1040, 1040, 1040,
-     1040, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1042,
-     1042, 1042, 1042, 1042, 1042, 1042, 1042, 1043, 1043, 1043,
-     1043, 1043, 1043, 1043, 1043, 1044, 1044, 1044, 1044, 1044,
-     1044, 1044, 1044, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
-     1045, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1047,
-     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1048, 1048, 1048,
-     1048, 1048, 1048, 1048, 1048, 1049, 1049, 1049, 1049, 1049,
-     1049, 1049, 1049, 1050, 1050, 1050, 1050, 1050, 1050, 1050,
-     1050, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1052,
-
-     1052, 1052, 1052, 1052, 1052, 1052, 1052, 1053, 1053, 1053,
-     1053, 1053, 1053, 1053, 1053, 1054, 1054, 1054, 1054, 1054,
-     1054, 1054, 1054, 1055, 1055, 1055, 1055, 1055, 1055, 1055,
-     1055, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1057,
-     1057,    0, 1057, 1057, 1057, 1057, 1057, 1058,    0,    0,
-     1058, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1060,
-     1060, 1060, 1060, 1060, 1060, 1060, 1060, 1061, 1061, 1061,
-     1061, 1061, 1061, 1061, 1061, 1062, 1062, 1062, 1062, 1062,
-     1062, 1062, 1062, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
-     1063, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1065,
-
-     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1066, 1066, 1066,
-     1066, 1066, 1066, 1066, 1066, 1067, 1067, 1067, 1067, 1067,
-     1067, 1067, 1067, 1068, 1068, 1068, 1068, 1068, 1068, 1068,
-     1068, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1070,
-     1070, 1070, 1070, 1070, 1070, 1070, 1070, 1071, 1071, 1071,
-     1071, 1071, 1071, 1071, 1071, 1072, 1072, 1072, 1072, 1072,
-     1072, 1072, 1072, 1073, 1073, 1073, 1073, 1073, 1073, 1073,
-     1073, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1075,
-     1075, 1075, 1075, 1075, 1075, 1075, 1075, 1076, 1076, 1076,
-     1076, 1076, 1076, 1076, 1076, 1077, 1077, 1077, 1077, 1077,
-
-     1077, 1077, 1077, 1078, 1078, 1078, 1078, 1078, 1078, 1078,
-     1078, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1080,
-     1080, 1080, 1080, 1080, 1080, 1080, 1080, 1081, 1081, 1081,
-     1081, 1081, 1081, 1081, 1081, 1082, 1082, 1082, 1082, 1082,
-     1082, 1082, 1082, 1083, 1083,    0, 1083, 1083, 1083, 1083,
-     1083, 1084,    0,    0, 1084, 1085, 1085, 1085, 1085, 1085,
-     1085, 1085, 1085, 1086, 1086, 1086, 1086, 1086, 1086, 1086,
-     1086, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1088,
-     1088, 1088, 1088, 1088, 1088, 1088, 1088, 1089, 1089, 1089,
-     1089, 1089, 1089, 1089, 1089, 1090, 1090, 1090, 1090, 1090,
-
-     1090, 1090, 1090, 1091, 1091, 1091, 1091, 1091, 1091, 1091,
-     1091, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1093,
-     1093, 1093, 1093, 1093, 1093, 1093, 1093, 1094, 1094, 1094,
-     1094, 1094, 1094, 1094, 1094, 1095, 1095, 1095, 1095, 1095,
-     1095, 1095, 1095, 1096, 1096, 1096, 1096, 1096, 1096, 1096,
-     1096, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1098,
-     1098, 1098, 1098, 1098, 1098, 1098, 1098, 1099, 1099, 1099,
-     1099, 1099, 1099, 1099, 1099, 1100, 1100, 1100, 1100, 1100,
-     1100, 1100, 1100, 1101, 1101, 1101, 1101, 1101, 1101, 1101,
-     1101, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1103,
-
-     1103, 1103, 1103, 1103, 1103, 1103, 1103, 1104, 1104, 1104,
-     1104, 1104, 1104, 1104, 1104, 1105, 1105, 1105, 1105, 1105,
-     1105, 1105, 1105, 1106, 1106, 1106, 1106, 1106, 1106, 1106,
-     1106, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1108,
-     1108, 1108, 1108, 1108, 1108, 1108, 1108, 1109, 1109,    0,
-     1109, 1109, 1109, 1109, 1109, 1110,    0,    0, 1110, 1111,
-     1111, 1111, 1111, 1111, 1111, 1111, 1111, 1112, 1112, 1112,
-     1112, 1112, 1112, 1112, 1112, 1113, 1113, 1113, 1113, 1113,
-     1113, 1113, 1113, 1114, 1114, 1114, 1114, 1114, 1114, 1114,
-     1114, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1116,
-
-     1116, 1116, 1116, 1116, 1116, 1116, 1116, 1117, 1117, 1117,
-     1117, 1117, 1117, 1117, 1117, 1118, 1118,    0, 1118, 1118,
-     1118, 1118, 1118, 1119, 1119, 1119, 1119, 1119, 1119, 1119,
-     1119,  976,  976,  976,  976,  976,  976,  976,  976,  976,
-      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
-      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
-      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
-      976,  976,  976,  976,  976,  976,  976,  976,  976,  976
-    } ;
-
-static yy_state_type yy_last_accepting_state;
-static char *yy_last_accepting_cpos;
-
-extern int vrmlyy_flex_debug;
-int vrmlyy_flex_debug = 0;
-
-/* The intent behind this definition is that it'll catch
- * any uses of REJECT which flex missed.
- */
-#define REJECT reject_used_but_not_detected
-#define yymore() yymore_used_but_not_detected
-#define YY_MORE_ADJ 0
-#define YY_RESTORE_YY_MORE_OFFSET
-char *vrmlyytext;
-#line 1 "vrmlLexer.lxx"
-/*
-// Filename: vrmlLexer.lxx
-// Created by:  drose (01Oct04)
-//
-////////////////////////////////////////////////////////////////////
-//
-// PANDA 3D SOFTWARE
-// Copyright (c) Carnegie Mellon University.  All rights reserved.
-//
-// All use of this software is subject to the terms of the revised BSD
-// license.  You should have received a copy of this license along
-// with this source code in a file named "LICENSE."
-//
-////////////////////////////////////////////////////////////////////
-*/
-/**************************************************
- * VRML 2.0 Parser
- * Copyright (C) 1996 Silicon Graphics, Inc.
- *
- * Author(s)    : Gavin Bell
- *                Daniel Woods (first port)
- **************************************************
- */
-#line 26 "vrmlLexer.lxx"
-#include "pandatoolbase.h"
-
-#include "vrmlNode.h"
-#include "vrmlParser.h"
-#include "pnotify.h"
-#include "pstrtod.h"
-
-static int yyinput(void);        // declared by flex.
-extern "C" int vrmlyywrap();
-
-////////////////////////////////////////////////////////////////////
-// Static variables
-////////////////////////////////////////////////////////////////////
-
-// We'll increment line_number as we parse the file, so
-// that we can report the position of an error.
-static int line_number = 0;
-
-// current_line holds as much of the current line as will fit.  Its
-// only purpose is for printing it out to report an error to the user.
-static const int max_error_width = 1024;
-static char current_line[max_error_width + 1];
-
-static int error_count = 0;
-static int warning_count = 0;
-
-// This is the pointer to the current input stream.
-static istream *inp = NULL;
-
-// This is the name of the vrml file we're parsing.  We keep it so we
-// can print it out for error messages.
-static string vrml_filename;
-
-extern void vrmlyyerror(const string &);
-
-    /* The YACC parser sets this to a token to direct the lexer */
-    /* in cases where just syntax isn't enough: */
-int expectToken = 0;
-
-    /* True when parsing a multiple-valued field: */
-static int parsing_mf = 0;
-
-    /* These are used when parsing SFImage fields: */
-static int sfImageIntsParsed = 0;
-static int sfImageIntsExpected = 0;
-
-// This is used while scanning a quoted string.
-static string quoted_string;
-
-// And this keeps track of the currently-parsing array.
-static MFArray *mfarray;
-
-void
-vrml_init_lexer(istream &in, const string &filename) {
-  inp = &in;
-  vrml_filename = filename;
-  line_number = 0;
-  error_count = 0;
-  warning_count = 0;
-}
-
-////////////////////////////////////////////////////////////////////
-// Internal support functions.
-////////////////////////////////////////////////////////////////////
-
-int
-vrmlyywrap(void) {
-  return 1;
-}
-
-void
-vrmlyyerror(const string &msg) {
-  cerr << "\nError";
-  if (!vrml_filename.empty()) {
-    cerr << " in " << vrml_filename;
-  }
-  cerr 
-    << " at line " << line_number << ":\n"
-    << current_line << "\n";
-  
-  error_count++;
-}
-
-void
-vrmlyywarning(const string &msg) {
-  cerr << "\nWarning";
-  if (!vrml_filename.empty()) {
-    cerr << " in " << vrml_filename;
-  }
-  cerr 
-    << " at line " << line_number << ":\n"
-    << current_line << "\n";
-
-  warning_count++;
-}
-
-// Now define a function to take input from an istream instead of a
-// stdio FILE pointer.  This is flex-specific.
-static void
-input_chars(char *buffer, int &result, int max_size) {
-  nassertv(inp != NULL);
-  if (*inp) {
-    inp->read(buffer, max_size);
-    result = inp->gcount();
-    if (result >= 0 && result < max_size) {
-      // Truncate at the end of the read.
-      buffer[result] = '\0';
-    }
-
-    if (line_number == 0) {
-      // This is a special case.  If we are reading the very first bit
-      // from the stream, copy it into the current_line array.  This
-      // is because the \n.* rule below, which fills current_line
-      // normally, doesn't catch the first line.
-      strncpy(current_line, vrmlyytext, max_error_width);
-      current_line[max_error_width] = '\0';
-      line_number++;
-
-      // Truncate it at the newline.
-      char *end = strchr(current_line, '\n');
-      if (end != NULL) {
-        *end = '\0';
-      }
-    }
-
-  } else {
-    // End of file or I/O error.
-    result = 0;
-  }
-}
-#undef YY_INPUT
-#define YY_INPUT(buffer, result, max_size) input_chars(buffer, result, max_size)
-
-int extract_int() {
-  return strtol(vrmlyytext, NULL, 0);
-}
-
-double extract_float() {
-  return patof(vrmlyytext);
-}
-
-void extract_vec(double vec[], int num_elements) {
-  char *p = vrmlyytext;
-  for (int i = 0; i < num_elements; i++) {
-    vec[i] = pstrtod(p, &p);
-  }
-}
-
-/* Normal state:  parsing nodes.  The initial start state is used */
-/* only to recognize the VRML header. */
-
-/* Start tokens for all of the field types, */
-/* except for MFNode and SFNode, which are almost completely handled */
-/* by the parser: */
-
-
-
-/* Big hairy expression for floating point numbers: */
-/* Ints are decimal or hex (0x##): */
-/* Whitespace.  Using this pattern can screw up currentLineNumber, */
-/* so it is only used wherever it is really convenient and it is */
-/* extremely unlikely that the user will put in a carriage return */
-/* (example: between the floats in an SFVec3f) */
-/* And the same pattern without the newline */
-/* Here's a pattern that matches a single newline character. */
-/* Legal characters to start an identifier */
-/* Legal other characters in an identifier */
-/*idRestChar  ([^\x00-\x20\x22\x23\x27\x2b-\x2e\x5b-\x5d\x7b\x7d])*/
-/* Allow hyphen (0x2d) in identifiers. */
-#line 2920 "lex.yy.c"
-
-#define INITIAL 0
-#define NODE 1
-#define SFB 2
-#define SFC 3
-#define SFF 4
-#define SFIMG 5
-#define SFI 6
-#define SFR 7
-#define SFS 8
-#define SFT 9
-#define SFV2 10
-#define SFV3 11
-#define MFC 12
-#define MFF 13
-#define MFI 14
-#define MFR 15
-#define MFS 16
-#define MFV2 17
-#define MFV3 18
-#define IN_SFS 19
-#define IN_MFS 20
-#define IN_SFIMG 21
-
-#ifndef YY_NO_UNISTD_H
-/* Special case for "unistd.h", since it is non-ANSI. We include it way
- * down here because we want the user's section 1 to have been scanned first.
- * The user has a chance to override it with an option.
- */
-#endif
-
-#ifndef YY_EXTRA_TYPE
-#define YY_EXTRA_TYPE void *
-#endif
-
-static int yy_init_globals (void );
-
-/* Accessor methods to globals.
-   These are made visible to non-reentrant scanners for convenience. */
-
-int vrmlyylex_destroy (void );
-
-int vrmlyyget_debug (void );
-
-void vrmlyyset_debug (int debug_flag  );
-
-YY_EXTRA_TYPE vrmlyyget_extra (void );
-
-void vrmlyyset_extra (YY_EXTRA_TYPE user_defined  );
-
-FILE *vrmlyyget_in (void );
-
-void vrmlyyset_in  (FILE * in_str  );
-
-FILE *vrmlyyget_out (void );
-
-void vrmlyyset_out  (FILE * out_str  );
-
-int vrmlyyget_leng (void );
-
-char *vrmlyyget_text (void );
-
-int vrmlyyget_lineno (void );
-
-void vrmlyyset_lineno (int line_number  );
-
-/* Macros after this point can all be overridden by user definitions in
- * section 1.
- */
-
-#ifndef YY_SKIP_YYWRAP
-#ifdef __cplusplus
-extern "C" int vrmlyywrap (void );
-#else
-extern int vrmlyywrap (void );
-#endif
-#endif
-
-    static void yyunput (int c,char *buf_ptr  );
-    
-#ifndef yytext_ptr
-static void yy_flex_strncpy (char *,yyconst char *,int );
-#endif
-
-#ifdef YY_NEED_STRLEN
-static int yy_flex_strlen (yyconst char * );
-#endif
-
-#ifndef YY_NO_INPUT
-
-#ifdef __cplusplus
-static int yyinput (void );
-#else
-static int input (void );
-#endif
-
-#endif
-
-/* Amount of stuff to slurp up with each read. */
-#ifndef YY_READ_BUF_SIZE
-#define YY_READ_BUF_SIZE 8192
-#endif
-
-/* Copy whatever the last rule matched to the standard output. */
-#ifndef ECHO
-/* This used to be an fputs(), but since the string might contain NUL's,
- * we now use fwrite().
- */
-#define ECHO fwrite( vrmlyytext, vrmlyyleng, 1, vrmlyyout )
-#endif
-
-/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
- * is returned in "result".
- */
-#ifndef YY_INPUT
-#define YY_INPUT(buf,result,max_size) \
-	if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
-		{ \
-		int c = '*'; \
-		int n; \
-		for ( n = 0; n < max_size && \
-			     (c = getc( vrmlyyin )) != EOF && c != '\n'; ++n ) \
-			buf[n] = (char) c; \
-		if ( c == '\n' ) \
-			buf[n++] = (char) c; \
-		if ( c == EOF && ferror( vrmlyyin ) ) \
-			YY_FATAL_ERROR( "input in flex scanner failed" ); \
-		result = n; \
-		} \
-	else \
-		{ \
-		errno=0; \
-		while ( (result = fread(buf, 1, max_size, vrmlyyin))==0 && ferror(vrmlyyin)) \
-			{ \
-			if( errno != EINTR) \
-				{ \
-				YY_FATAL_ERROR( "input in flex scanner failed" ); \
-				break; \
-				} \
-			errno=0; \
-			clearerr(vrmlyyin); \
-			} \
-		}\
-\
-
-#endif
-
-/* No semi-colon after return; correct usage is to write "yyterminate();" -
- * we don't want an extra ';' after the "return" because that will cause
- * some compilers to complain about unreachable statements.
- */
-#ifndef yyterminate
-#define yyterminate() return YY_NULL
-#endif
-
-/* Number of entries by which start-condition stack grows. */
-#ifndef YY_START_STACK_INCR
-#define YY_START_STACK_INCR 25
-#endif
-
-/* Report a fatal error. */
-#ifndef YY_FATAL_ERROR
-#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
-#endif
-
-/* end tables serialization structures and prototypes */
-
-/* Default declaration of generated scanner - a define so the user can
- * easily add parameters.
- */
-#ifndef YY_DECL
-#define YY_DECL_IS_OURS 1
-
-extern int vrmlyylex (void);
-
-#define YY_DECL int vrmlyylex (void)
-#endif /* !YY_DECL */
-
-/* Code executed at the beginning of each rule, after vrmlyytext and vrmlyyleng
- * have been set up.
- */
-#ifndef YY_USER_ACTION
-#define YY_USER_ACTION
-#endif
-
-/* Code executed at the end of each rule. */
-#ifndef YY_BREAK
-#define YY_BREAK break;
-#endif
-
-#define YY_RULE_SETUP \
-	YY_USER_ACTION
-
-/** The main scanner function which does all the work.
- */
-YY_DECL
-{
-	register yy_state_type yy_current_state;
-	register char *yy_cp, *yy_bp;
-	register int yy_act;
-    
-#line 210 "vrmlLexer.lxx"
-
-
-
-    /* Switch into a new start state if the parser */
-    /* just told us that we've read a field name */
-    /* and should expect a field value (or IS) */
-    if (expectToken != 0) {
-      
-      /*
-       * Annoying.  This big switch is necessary because
-       * LEX wants to assign particular numbers to start
-       * tokens, and YACC wants to define all the tokens
-       * used, too.  Sigh.
-       */
-      switch(expectToken) {
-        case SFBOOL: BEGIN SFB; break;
-        case SFCOLOR: BEGIN SFC; break;
-        case SFFLOAT: BEGIN SFF; break;
-        case SFIMAGE: BEGIN SFIMG; break;
-        case SFINT32: BEGIN SFI; break;
-        case SFROTATION: BEGIN SFR; break;
-        case SFSTRING: BEGIN SFS; break;
-        case SFTIME: BEGIN SFT; break;
-        case SFVEC2F: BEGIN SFV2; break;
-        case SFVEC3F: BEGIN SFV3; break;
-        case MFCOLOR: BEGIN MFC; break;
-        case MFFLOAT: BEGIN MFF; break;
-        case MFINT32: BEGIN MFI; break;
-        case MFROTATION: BEGIN MFR; break;
-        case MFSTRING: BEGIN MFS; break;
-        case MFVEC2F: BEGIN MFV2; break;
-        case MFVEC3F: BEGIN MFV3; break;
-
-        /* SFNode and MFNode are special.  Here the lexer just returns */
-        /* "marker tokens" so the parser knows what type of field is */
-        /* being parsed; unlike the other fields, parsing of SFNode/MFNode */
-        /* field happens in the parser. */
-        case MFNODE: expectToken = 0; return MFNODE;
-        case SFNODE: expectToken = 0; return SFNODE;
-        
-        default: vrmlyyerror("ACK: Bad expectToken"); break;
-      }
-    }
-
-
-    /* This is more complicated than they really need to be because */
-    /* I was ambitious and made the whitespace-matching rule aggressive */
-#line 3171 "lex.yy.c"
-
-	if ( !(yy_init) )
-		{
-		(yy_init) = 1;
-
-#ifdef YY_USER_INIT
-		YY_USER_INIT;
-#endif
-
-		if ( ! (yy_start) )
-			(yy_start) = 1;	/* first start state */
-
-		if ( ! vrmlyyin )
-			vrmlyyin = stdin;
-
-		if ( ! vrmlyyout )
-			vrmlyyout = stdout;
-
-		if ( ! YY_CURRENT_BUFFER ) {
-			vrmlyyensure_buffer_stack ();
-			YY_CURRENT_BUFFER_LVALUE =
-				vrmlyy_create_buffer(vrmlyyin,YY_BUF_SIZE );
-		}
-
-		vrmlyy_load_buffer_state( );
-		}
-
-	while ( 1 )		/* loops until end-of-file is reached */
-		{
-		yy_cp = (yy_c_buf_p);
-
-		/* Support of vrmlyytext. */
-		*yy_cp = (yy_hold_char);
-
-		/* yy_bp points to the position in yy_ch_buf of the start of
-		 * the current run.
-		 */
-		yy_bp = yy_cp;
-
-		yy_current_state = (yy_start);
-yy_match:
-		do
-			{
-			register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
-			if ( yy_accept[yy_current_state] )
-				{
-				(yy_last_accepting_state) = yy_current_state;
-				(yy_last_accepting_cpos) = yy_cp;
-				}
-			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
-				{
-				yy_current_state = (int) yy_def[yy_current_state];
-				if ( yy_current_state >= 977 )
-					yy_c = yy_meta[(unsigned int) yy_c];
-				}
-			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-			++yy_cp;
-			}
-		while ( yy_base[yy_current_state] != 8632 );
-
-yy_find_action:
-		yy_act = yy_accept[yy_current_state];
-		if ( yy_act == 0 )
-			{ /* have to back up */
-			yy_cp = (yy_last_accepting_cpos);
-			yy_current_state = (yy_last_accepting_state);
-			yy_act = yy_accept[yy_current_state];
-			}
-
-		YY_DO_BEFORE_ACTION;
-
-do_action:	/* This label is used only to access EOF actions. */
-
-		switch ( yy_act )
-	{ /* beginning of action switch */
-			case 0: /* must back up */
-			/* undo the effects of YY_DO_BEFORE_ACTION */
-			*yy_cp = (yy_hold_char);
-			yy_cp = (yy_last_accepting_cpos);
-			yy_current_state = (yy_last_accepting_state);
-			goto yy_find_action;
-
-case 1:
-/* rule 1 can match eol */
-YY_RULE_SETUP
-#line 257 "vrmlLexer.lxx"
-{
-  BEGIN NODE; 
-}
-	YY_BREAK
-/* The lexer is in the NODE state when parsing nodes, either */
-/* top-level nodes in the .wrl file, in a prototype implementation, */
-/* or when parsing the contents of SFNode or MFNode fields. */
-case 2:
-YY_RULE_SETUP
-#line 264 "vrmlLexer.lxx"
-{ return PROTO; }
-	YY_BREAK
-case 3:
-YY_RULE_SETUP
-#line 265 "vrmlLexer.lxx"
-{ return EXTERNPROTO; }
-	YY_BREAK
-case 4:
-YY_RULE_SETUP
-#line 266 "vrmlLexer.lxx"
-{ return DEF; }
-	YY_BREAK
-case 5:
-YY_RULE_SETUP
-#line 267 "vrmlLexer.lxx"
-{ return USE; }
-	YY_BREAK
-case 6:
-YY_RULE_SETUP
-#line 268 "vrmlLexer.lxx"
-{ return TO; }
-	YY_BREAK
-case 7:
-YY_RULE_SETUP
-#line 269 "vrmlLexer.lxx"
-{ return IS; }
-	YY_BREAK
-case 8:
-YY_RULE_SETUP
-#line 270 "vrmlLexer.lxx"
-{ return ROUTE; }
-	YY_BREAK
-case 9:
-YY_RULE_SETUP
-#line 271 "vrmlLexer.lxx"
-{ return SFN_NULL; }
-	YY_BREAK
-case 10:
-YY_RULE_SETUP
-#line 272 "vrmlLexer.lxx"
-{ return EVENTIN; }
-	YY_BREAK
-case 11:
-YY_RULE_SETUP
-#line 273 "vrmlLexer.lxx"
-{ return EVENTOUT; }
-	YY_BREAK
-case 12:
-YY_RULE_SETUP
-#line 274 "vrmlLexer.lxx"
-{ return FIELD; }
-	YY_BREAK
-case 13:
-YY_RULE_SETUP
-#line 275 "vrmlLexer.lxx"
-{ return EXPOSEDFIELD; }
-	YY_BREAK
-/* Legal identifiers: */
-case 14:
-YY_RULE_SETUP
-#line 278 "vrmlLexer.lxx"
-{
-  vrmlyylval.string = strdup(vrmlyytext);
-  return IDENTIFIER; 
-}
-	YY_BREAK
-/* This hopefully won't bitch things too much.  It's not legal for
-      an identifier to begin with a digit, but Form-Z writes out VRML
-      files that do.  So we'll allow it.  Hopefully the start states
-      will keep them sorted out. */
-case 15:
-YY_RULE_SETUP
-#line 286 "vrmlLexer.lxx"
-{
-  vrmlyylval.string = strdup(vrmlyytext);
-  return IDENTIFIER; 
-}
-	YY_BREAK
-/* All fields may have an IS declaration: */
-case 16:
-YY_RULE_SETUP
-#line 292 "vrmlLexer.lxx"
-{
-  BEGIN NODE;
-  expectToken = 0;
-  yyless(0);
-}
-	YY_BREAK
-case 17:
-YY_RULE_SETUP
-#line 298 "vrmlLexer.lxx"
-{
-  BEGIN NODE;
-  expectToken = 0;
-  yyless(0); /* put back the IS */
-}
-	YY_BREAK
-/* All MF field types other than MFNode are completely parsed here */
-/* in the lexer, and one token is returned to the parser.  They all */
-/* share the same rules for open and closing brackets: */
-case 18:
-YY_RULE_SETUP
-#line 307 "vrmlLexer.lxx"
-{
-  if (parsing_mf) vrmlyyerror("Double [");
-  parsing_mf = 1;
-  mfarray = new MFArray;
-}
-	YY_BREAK
-case 19:
-YY_RULE_SETUP
-#line 313 "vrmlLexer.lxx"
-{
-  if (!parsing_mf) vrmlyyerror("Unmatched ]");
-  int fieldType = expectToken;
-  BEGIN NODE;
-  parsing_mf = 0;
-  expectToken = 0;
-  vrmlyylval.fv._mf = mfarray;
-  return fieldType;
-}
-	YY_BREAK
-case 20:
-YY_RULE_SETUP
-#line 323 "vrmlLexer.lxx"
-{
-  BEGIN NODE;
-  expectToken = 0;
-  vrmlyylval.fv._sfbool = true;
-  return SFBOOL; 
-}
-	YY_BREAK
-case 21:
-YY_RULE_SETUP
-#line 330 "vrmlLexer.lxx"
-{ 
-  BEGIN NODE; 
-  expectToken = 0; 
-  vrmlyylval.fv._sfbool = false;
-  return SFBOOL; 
-}
-	YY_BREAK
-case 22:
-YY_RULE_SETUP
-#line 337 "vrmlLexer.lxx"
-{
-  BEGIN NODE; 
-  expectToken = 0; 
-  vrmlyylval.fv._sfint32 = extract_int();
-  return SFINT32; 
-}
-	YY_BREAK
-case 23:
-YY_RULE_SETUP
-#line 344 "vrmlLexer.lxx"
-{ 
-  VrmlFieldValue v;
-  v._sfint32 = extract_int();
-  if (parsing_mf) {
-    mfarray->push_back(v);
-  } else {
-    BEGIN NODE; 
-    expectToken = 0;
-    vrmlyylval.fv._mf = new MFArray;
-    vrmlyylval.fv._mf->push_back(v);
-    return MFINT32;
-  }
-}
-	YY_BREAK
-/* All the floating-point types are pretty similar: */
-case 24:
-YY_RULE_SETUP
-#line 359 "vrmlLexer.lxx"
-{
-  BEGIN NODE; 
-  expectToken = 0; 
-  vrmlyylval.fv._sffloat = extract_float();
-  return SFFLOAT; 
-}
-	YY_BREAK
-case 25:
-YY_RULE_SETUP
-#line 366 "vrmlLexer.lxx"
-{ 
-  VrmlFieldValue v;
-  v._sffloat = extract_float();
-  if (parsing_mf) {
-    /* Add to array... */
-    mfarray->push_back(v);
-  } else {
-    /* No open bracket means a single value: */
-    BEGIN NODE; 
-    expectToken = 0;
-    vrmlyylval.fv._mf = new MFArray;
-    vrmlyylval.fv._mf->push_back(v);
-    return MFFLOAT;
-  }
-}
-	YY_BREAK
-case 26:
-/* rule 26 can match eol */
-YY_RULE_SETUP
-#line 382 "vrmlLexer.lxx"
-{ 
-  BEGIN NODE;
-  expectToken = 0;
-  extract_vec(vrmlyylval.fv._sfvec, 2);
-  return SFVEC2F; 
-}
-	YY_BREAK
-case 27:
-/* rule 27 can match eol */
-YY_RULE_SETUP
-#line 389 "vrmlLexer.lxx"
-{ 
-  VrmlFieldValue v;
-  extract_vec(v._sfvec, 2);
-  if (parsing_mf) {
-    mfarray->push_back(v);
-  } else {
-    BEGIN NODE;
-    expectToken = 0;
-    vrmlyylval.fv._mf = new MFArray;
-    vrmlyylval.fv._mf->push_back(v);
-    return MFVEC2F;
-  }
-}
-	YY_BREAK
-case 28:
-/* rule 28 can match eol */
-YY_RULE_SETUP
-#line 403 "vrmlLexer.lxx"
-{ 
-  BEGIN NODE;
-  expectToken = 0;
-  extract_vec(vrmlyylval.fv._sfvec, 3);
-  return SFVEC3F; 
-}
-	YY_BREAK
-case 29:
-/* rule 29 can match eol */
-YY_RULE_SETUP
-#line 410 "vrmlLexer.lxx"
-{ 
-  VrmlFieldValue v;
-  extract_vec(v._sfvec, 3);
-  if (parsing_mf) {
-    mfarray->push_back(v);
-  } else {
-    BEGIN NODE;
-    expectToken = 0;
-    vrmlyylval.fv._mf = new MFArray;
-    vrmlyylval.fv._mf->push_back(v);
-    return MFVEC3F;
-  }
-}
-	YY_BREAK
-case 30:
-/* rule 30 can match eol */
-YY_RULE_SETUP
-#line 424 "vrmlLexer.lxx"
-{ 
-  BEGIN NODE;
-  expectToken = 0;
-  extract_vec(vrmlyylval.fv._sfvec, 4);
-  return SFROTATION; 
-}
-	YY_BREAK
-case 31:
-/* rule 31 can match eol */
-YY_RULE_SETUP
-#line 431 "vrmlLexer.lxx"
-{ 
-  VrmlFieldValue v;
-  extract_vec(v._sfvec, 4);
-  if (parsing_mf) {
-    mfarray->push_back(v);
-  } else {
-    BEGIN NODE;
-    expectToken = 0;
-    vrmlyylval.fv._mf = new MFArray;
-    vrmlyylval.fv._mf->push_back(v);
-    return MFROTATION;
-  }
-}
-	YY_BREAK
-case 32:
-/* rule 32 can match eol */
-YY_RULE_SETUP
-#line 445 "vrmlLexer.lxx"
-{ 
-  BEGIN NODE;
-  expectToken = 0;
-  extract_vec(vrmlyylval.fv._sfvec, 3);
-  return SFCOLOR; 
-}
-	YY_BREAK
-case 33:
-/* rule 33 can match eol */
-YY_RULE_SETUP
-#line 452 "vrmlLexer.lxx"
-{ 
-  VrmlFieldValue v;
-  extract_vec(v._sfvec, 3);
-  if (parsing_mf) {
-    mfarray->push_back(v);
-  } else {
-    BEGIN NODE;
-    expectToken = 0;
-    vrmlyylval.fv._mf = new MFArray;
-    vrmlyylval.fv._mf->push_back(v);
-    return MFCOLOR;
-  }
-}
-	YY_BREAK
-case 34:
-YY_RULE_SETUP
-#line 466 "vrmlLexer.lxx"
-{
-  BEGIN NODE; 
-  expectToken = 0; 
-  vrmlyylval.fv._sffloat = extract_float();
-  return SFTIME; 
-}
-	YY_BREAK
-/* SFString/MFString */
-case 35:
-YY_RULE_SETUP
-#line 474 "vrmlLexer.lxx"
-{
-  BEGIN IN_SFS;
-  quoted_string = ""; 
-}
-	YY_BREAK
-case 36:
-YY_RULE_SETUP
-#line 479 "vrmlLexer.lxx"
-{
-  BEGIN IN_MFS;
-  quoted_string = ""; 
-}
-	YY_BREAK
-/* Anything besides open-quote (or whitespace) is an error: */
-case 37:
-YY_RULE_SETUP
-#line 485 "vrmlLexer.lxx"
-{
-  vrmlyyerror("String missing open-quote");
-  BEGIN NODE; 
-  expectToken = 0; 
-  vrmlyylval.fv._sfstring = strdup(""); 
-  return SFSTRING;
-}
-	YY_BREAK
-/* Expect open-quote, open-bracket, or whitespace: */
-case 38:
-YY_RULE_SETUP
-#line 494 "vrmlLexer.lxx"
-{
-  vrmlyyerror("String missing open-quote");
-  BEGIN NODE;
-  expectToken = 0;
-  return MFSTRING;
-}
-	YY_BREAK
-/* Backslashed-quotes are OK: */
-case 39:
-YY_RULE_SETUP
-#line 502 "vrmlLexer.lxx"
-{
-  quoted_string += '"'; 
-}
-	YY_BREAK
-/* Gobble up anything besides quotes and newlines. */
-/* Newlines are legal in strings, but we exclude them here so */
-/* that line number are counted correctly by the catch-all newline */
-/* rule that applies to everything. */
-case 40:
-YY_RULE_SETUP
-#line 510 "vrmlLexer.lxx"
-{ 
-  quoted_string += vrmlyytext; 
-}
-	YY_BREAK
-/* Quote ends the string: */
-case 41:
-YY_RULE_SETUP
-#line 515 "vrmlLexer.lxx"
-{ 
-  BEGIN NODE;
-  expectToken = 0;
-  vrmlyylval.fv._sfstring = strdup(quoted_string.c_str());
-  return SFSTRING; 
-}
-	YY_BREAK
-case 42:
-YY_RULE_SETUP
-#line 522 "vrmlLexer.lxx"
-{
-  VrmlFieldValue v;
-  v._sfstring = strdup(quoted_string.c_str());
-  if (parsing_mf) { 
-    BEGIN MFS;
-    mfarray->push_back(v);
-    quoted_string = "";
-  } else {
-    BEGIN NODE;
-    expectToken = 0;
-    vrmlyylval.fv._mf = new MFArray;
-    vrmlyylval.fv._mf->push_back(v);
-    return MFSTRING;
-  }
-}
-	YY_BREAK
-/* SFImage: width height numComponents then width*height integers: */
-case 43:
-/* rule 43 can match eol */
-YY_RULE_SETUP
-#line 539 "vrmlLexer.lxx"
-{ int w, h;
-                          sscanf(vrmlyytext, "%d %d", &w, &h);
-                          sfImageIntsExpected = 1+w*h;
-                          sfImageIntsParsed = 0;                          
-                          BEGIN IN_SFIMG;
-                        }
-	YY_BREAK
-case 44:
-YY_RULE_SETUP
-#line 545 "vrmlLexer.lxx"
-{ ++sfImageIntsParsed;
-                          if (sfImageIntsParsed == sfImageIntsExpected) {
-                            BEGIN NODE; expectToken = 0; return SFIMAGE;
-                          }
-                        }
-	YY_BREAK
-/* Whitespace and catch-all rules apply to all start states: */
-case 45:
-YY_RULE_SETUP
-#line 552 "vrmlLexer.lxx"
-;
-	YY_BREAK
-/* A newline is also whitespace, but we'll keep track of line number */
-/* to report in errors: */
-case 46:
-/* rule 46 can match eol */
-YY_RULE_SETUP
-#line 556 "vrmlLexer.lxx"
-{
-  // Save a copy of the line so we can print it out for the benefit of
-  // the user in case we get an error.
-  strncpy(current_line, vrmlyytext+1, max_error_width);
-  current_line[max_error_width] = '\0';
-  line_number++;
-
-  // Return the whole line to the lexer, except the newline character,
-  // which we eat.
-  yyless(1);
-}
-	YY_BREAK
-/* This catch-all rule catches anything not covered by any of */
-/* the above: */
-case 47:
-YY_RULE_SETUP
-#line 570 "vrmlLexer.lxx"
-{ 
-  return vrmlyytext[0]; 
-}
-	YY_BREAK
-case 48:
-YY_RULE_SETUP
-#line 574 "vrmlLexer.lxx"
-ECHO;
-	YY_BREAK
-#line 3741 "lex.yy.c"
-case YY_STATE_EOF(INITIAL):
-case YY_STATE_EOF(NODE):
-case YY_STATE_EOF(SFB):
-case YY_STATE_EOF(SFC):
-case YY_STATE_EOF(SFF):
-case YY_STATE_EOF(SFIMG):
-case YY_STATE_EOF(SFI):
-case YY_STATE_EOF(SFR):
-case YY_STATE_EOF(SFS):
-case YY_STATE_EOF(SFT):
-case YY_STATE_EOF(SFV2):
-case YY_STATE_EOF(SFV3):
-case YY_STATE_EOF(MFC):
-case YY_STATE_EOF(MFF):
-case YY_STATE_EOF(MFI):
-case YY_STATE_EOF(MFR):
-case YY_STATE_EOF(MFS):
-case YY_STATE_EOF(MFV2):
-case YY_STATE_EOF(MFV3):
-case YY_STATE_EOF(IN_SFS):
-case YY_STATE_EOF(IN_MFS):
-case YY_STATE_EOF(IN_SFIMG):
-	yyterminate();
-
-	case YY_END_OF_BUFFER:
-		{
-		/* Amount of text matched not including the EOB char. */
-		int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
-
-		/* Undo the effects of YY_DO_BEFORE_ACTION. */
-		*yy_cp = (yy_hold_char);
-		YY_RESTORE_YY_MORE_OFFSET
-
-		if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
-			{
-			/* We're scanning a new file or input source.  It's
-			 * possible that this happened because the user
-			 * just pointed vrmlyyin at a new source and called
-			 * vrmlyylex().  If so, then we have to assure
-			 * consistency between YY_CURRENT_BUFFER and our
-			 * globals.  Here is the right place to do so, because
-			 * this is the first action (other than possibly a
-			 * back-up) that will match for the new input source.
-			 */
-			(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
-			YY_CURRENT_BUFFER_LVALUE->yy_input_file = vrmlyyin;
-			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
-			}
-
-		/* Note that here we test for yy_c_buf_p "<=" to the position
-		 * of the first EOB in the buffer, since yy_c_buf_p will
-		 * already have been incremented past the NUL character
-		 * (since all states make transitions on EOB to the
-		 * end-of-buffer state).  Contrast this with the test
-		 * in input().
-		 */
-		if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
-			{ /* This was really a NUL. */
-			yy_state_type yy_next_state;
-
-			(yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
-
-			yy_current_state = yy_get_previous_state(  );
-
-			/* Okay, we're now positioned to make the NUL
-			 * transition.  We couldn't have
-			 * yy_get_previous_state() go ahead and do it
-			 * for us because it doesn't know how to deal
-			 * with the possibility of jamming (and we don't
-			 * want to build jamming into it because then it
-			 * will run more slowly).
-			 */
-
-			yy_next_state = yy_try_NUL_trans( yy_current_state );
-
-			yy_bp = (yytext_ptr) + YY_MORE_ADJ;
-
-			if ( yy_next_state )
-				{
-				/* Consume the NUL. */
-				yy_cp = ++(yy_c_buf_p);
-				yy_current_state = yy_next_state;
-				goto yy_match;
-				}
-
-			else
-				{
-				yy_cp = (yy_c_buf_p);
-				goto yy_find_action;
-				}
-			}
-
-		else switch ( yy_get_next_buffer(  ) )
-			{
-			case EOB_ACT_END_OF_FILE:
-				{
-				(yy_did_buffer_switch_on_eof) = 0;
-
-				if ( vrmlyywrap( ) )
-					{
-					/* Note: because we've taken care in
-					 * yy_get_next_buffer() to have set up
-					 * vrmlyytext, we can now set up
-					 * yy_c_buf_p so that if some total
-					 * hoser (like flex itself) wants to
-					 * call the scanner after we return the
-					 * YY_NULL, it'll still work - another
-					 * YY_NULL will get returned.
-					 */
-					(yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
-
-					yy_act = YY_STATE_EOF(YY_START);
-					goto do_action;
-					}
-
-				else
-					{
-					if ( ! (yy_did_buffer_switch_on_eof) )
-						YY_NEW_FILE;
-					}
-				break;
-				}
-
-			case EOB_ACT_CONTINUE_SCAN:
-				(yy_c_buf_p) =
-					(yytext_ptr) + yy_amount_of_matched_text;
-
-				yy_current_state = yy_get_previous_state(  );
-
-				yy_cp = (yy_c_buf_p);
-				yy_bp = (yytext_ptr) + YY_MORE_ADJ;
-				goto yy_match;
-
-			case EOB_ACT_LAST_MATCH:
-				(yy_c_buf_p) =
-				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
-
-				yy_current_state = yy_get_previous_state(  );
-
-				yy_cp = (yy_c_buf_p);
-				yy_bp = (yytext_ptr) + YY_MORE_ADJ;
-				goto yy_find_action;
-			}
-		break;
-		}
-
-	default:
-		YY_FATAL_ERROR(
-			"fatal flex scanner internal error--no action found" );
-	} /* end of action switch */
-		} /* end of scanning one token */
-} /* end of vrmlyylex */
-
-/* yy_get_next_buffer - try to read in a new buffer
- *
- * Returns a code representing an action:
- *	EOB_ACT_LAST_MATCH -
- *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position
- *	EOB_ACT_END_OF_FILE - end of file
- */
-static int yy_get_next_buffer (void)
-{
-    	register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
-	register char *source = (yytext_ptr);
-	register int number_to_move, i;
-	int ret_val;
-
-	if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
-		YY_FATAL_ERROR(
-		"fatal flex scanner internal error--end of buffer missed" );
-
-	if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
-		{ /* Don't try to fill the buffer, so this is an EOF. */
-		if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
-			{
-			/* We matched a single character, the EOB, so
-			 * treat this as a final EOF.
-			 */
-			return EOB_ACT_END_OF_FILE;
-			}
-
-		else
-			{
-			/* We matched some text prior to the EOB, first
-			 * process it.
-			 */
-			return EOB_ACT_LAST_MATCH;
-			}
-		}
-
-	/* Try to read more data. */
-
-	/* First move last chars to start of buffer. */
-	number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
-
-	for ( i = 0; i < number_to_move; ++i )
-		*(dest++) = *(source++);
-
-	if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
-		/* don't do the read, it's not guaranteed to return an EOF,
-		 * just force an EOF
-		 */
-		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
-
-	else
-		{
-			int num_to_read =
-			YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
-
-		while ( num_to_read <= 0 )
-			{ /* Not enough room in the buffer - grow it. */
-
-			/* just a shorter name for the current buffer */
-			YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
-
-			int yy_c_buf_p_offset =
-				(int) ((yy_c_buf_p) - b->yy_ch_buf);
-
-			if ( b->yy_is_our_buffer )
-				{
-				int new_size = b->yy_buf_size * 2;
-
-				if ( new_size <= 0 )
-					b->yy_buf_size += b->yy_buf_size / 8;
-				else
-					b->yy_buf_size *= 2;
-
-				b->yy_ch_buf = (char *)
-					/* Include room in for 2 EOB chars. */
-					vrmlyyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
-				}
-			else
-				/* Can't grow it, we don't own it. */
-				b->yy_ch_buf = 0;
-
-			if ( ! b->yy_ch_buf )
-				YY_FATAL_ERROR(
-				"fatal error - scanner input buffer overflow" );
-
-			(yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
-
-			num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
-						number_to_move - 1;
-
-			}
-
-		if ( num_to_read > YY_READ_BUF_SIZE )
-			num_to_read = YY_READ_BUF_SIZE;
-
-		/* Read in more data. */
-		YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
-			(yy_n_chars), (size_t) num_to_read );
-
-		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
-		}
-
-	if ( (yy_n_chars) == 0 )
-		{
-		if ( number_to_move == YY_MORE_ADJ )
-			{
-			ret_val = EOB_ACT_END_OF_FILE;
-			vrmlyyrestart(vrmlyyin  );
-			}
-
-		else
-			{
-			ret_val = EOB_ACT_LAST_MATCH;
-			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
-				YY_BUFFER_EOF_PENDING;
-			}
-		}
-
-	else
-		ret_val = EOB_ACT_CONTINUE_SCAN;
-
-	if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
-		/* Extend the array by 50%, plus the number we really need. */
-		yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
-		YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) vrmlyyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size  );
-		if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
-			YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
-	}
-
-	(yy_n_chars) += number_to_move;
-	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
-	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
-
-	(yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
-
-	return ret_val;
-}
-
-/* yy_get_previous_state - get the state just before the EOB char was reached */
-
-    static yy_state_type yy_get_previous_state (void)
-{
-	register yy_state_type yy_current_state;
-	register char *yy_cp;
-    
-	yy_current_state = (yy_start);
-
-	for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
-		{
-		register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
-		if ( yy_accept[yy_current_state] )
-			{
-			(yy_last_accepting_state) = yy_current_state;
-			(yy_last_accepting_cpos) = yy_cp;
-			}
-		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
-			{
-			yy_current_state = (int) yy_def[yy_current_state];
-			if ( yy_current_state >= 977 )
-				yy_c = yy_meta[(unsigned int) yy_c];
-			}
-		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-		}
-
-	return yy_current_state;
-}
-
-/* yy_try_NUL_trans - try to make a transition on the NUL character
- *
- * synopsis
- *	next_state = yy_try_NUL_trans( current_state );
- */
-    static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
-{
-	register int yy_is_jam;
-    	register char *yy_cp = (yy_c_buf_p);
-
-	register YY_CHAR yy_c = 1;
-	if ( yy_accept[yy_current_state] )
-		{
-		(yy_last_accepting_state) = yy_current_state;
-		(yy_last_accepting_cpos) = yy_cp;
-		}
-	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
-		{
-		yy_current_state = (int) yy_def[yy_current_state];
-		if ( yy_current_state >= 977 )
-			yy_c = yy_meta[(unsigned int) yy_c];
-		}
-	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-	yy_is_jam = (yy_current_state == 976);
-
-	return yy_is_jam ? 0 : yy_current_state;
-}
-
-    static void yyunput (int c, register char * yy_bp )
-{
-	register char *yy_cp;
-    
-    yy_cp = (yy_c_buf_p);
-
-	/* undo effects of setting up vrmlyytext */
-	*yy_cp = (yy_hold_char);
-
-	if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
-		{ /* need to shift things up to make room */
-		/* +2 for EOB chars. */
-		register int number_to_move = (yy_n_chars) + 2;
-		register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
-					YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
-		register char *source =
-				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
-
-		while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
-			*--dest = *--source;
-
-		yy_cp += (int) (dest - source);
-		yy_bp += (int) (dest - source);
-		YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
-			(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
-
-		if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
-			YY_FATAL_ERROR( "flex scanner push-back overflow" );
-		}
-
-	*--yy_cp = (char) c;
-
-	(yytext_ptr) = yy_bp;
-	(yy_hold_char) = *yy_cp;
-	(yy_c_buf_p) = yy_cp;
-}
-
-#ifndef YY_NO_INPUT
-#ifdef __cplusplus
-    static int yyinput (void)
-#else
-    static int input  (void)
-#endif
-
-{
-	int c;
-    
-	*(yy_c_buf_p) = (yy_hold_char);
-
-	if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
-		{
-		/* yy_c_buf_p now points to the character we want to return.
-		 * If this occurs *before* the EOB characters, then it's a
-		 * valid NUL; if not, then we've hit the end of the buffer.
-		 */
-		if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
-			/* This was really a NUL. */
-			*(yy_c_buf_p) = '\0';
-
-		else
-			{ /* need more input */
-			int offset = (yy_c_buf_p) - (yytext_ptr);
-			++(yy_c_buf_p);
-
-			switch ( yy_get_next_buffer(  ) )
-				{
-				case EOB_ACT_LAST_MATCH:
-					/* This happens because yy_g_n_b()
-					 * sees that we've accumulated a
-					 * token and flags that we need to
-					 * try matching the token before
-					 * proceeding.  But for input(),
-					 * there's no matching to consider.
-					 * So convert the EOB_ACT_LAST_MATCH
-					 * to EOB_ACT_END_OF_FILE.
-					 */
-
-					/* Reset buffer status. */
-					vrmlyyrestart(vrmlyyin );
-
-					/*FALLTHROUGH*/
-
-				case EOB_ACT_END_OF_FILE:
-					{
-					if ( vrmlyywrap( ) )
-						return EOF;
-
-					if ( ! (yy_did_buffer_switch_on_eof) )
-						YY_NEW_FILE;
-#ifdef __cplusplus
-					return yyinput();
-#else
-					return input();
-#endif
-					}
-
-				case EOB_ACT_CONTINUE_SCAN:
-					(yy_c_buf_p) = (yytext_ptr) + offset;
-					break;
-				}
-			}
-		}
-
-	c = *(unsigned char *) (yy_c_buf_p);	/* cast for 8-bit char's */
-	*(yy_c_buf_p) = '\0';	/* preserve vrmlyytext */
-	(yy_hold_char) = *++(yy_c_buf_p);
-
-	return c;
-}
-#endif	/* ifndef YY_NO_INPUT */
-
-/** Immediately switch to a different input stream.
- * @param input_file A readable stream.
- * 
- * @note This function does not reset the start condition to @c INITIAL .
- */
-    void vrmlyyrestart  (FILE * input_file )
-{
-    
-	if ( ! YY_CURRENT_BUFFER ){
-        vrmlyyensure_buffer_stack ();
-		YY_CURRENT_BUFFER_LVALUE =
-            vrmlyy_create_buffer(vrmlyyin,YY_BUF_SIZE );
-	}
-
-	vrmlyy_init_buffer(YY_CURRENT_BUFFER,input_file );
-	vrmlyy_load_buffer_state( );
-}
-
-/** Switch to a different input buffer.
- * @param new_buffer The new input buffer.
- * 
- */
-    void vrmlyy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
-{
-    
-	/* TODO. We should be able to replace this entire function body
-	 * with
-	 *		vrmlyypop_buffer_state();
-	 *		vrmlyypush_buffer_state(new_buffer);
-     */
-	vrmlyyensure_buffer_stack ();
-	if ( YY_CURRENT_BUFFER == new_buffer )
-		return;
-
-	if ( YY_CURRENT_BUFFER )
-		{
-		/* Flush out information for old buffer. */
-		*(yy_c_buf_p) = (yy_hold_char);
-		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
-		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
-		}
-
-	YY_CURRENT_BUFFER_LVALUE = new_buffer;
-	vrmlyy_load_buffer_state( );
-
-	/* We don't actually know whether we did this switch during
-	 * EOF (vrmlyywrap()) processing, but the only time this flag
-	 * is looked at is after vrmlyywrap() is called, so it's safe
-	 * to go ahead and always set it.
-	 */
-	(yy_did_buffer_switch_on_eof) = 1;
-}
-
-static void vrmlyy_load_buffer_state  (void)
-{
-    	(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
-	(yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
-	vrmlyyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
-	(yy_hold_char) = *(yy_c_buf_p);
-}
-
-/** Allocate and initialize an input buffer state.
- * @param file A readable stream.
- * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
- * 
- * @return the allocated buffer state.
- */
-    YY_BUFFER_STATE vrmlyy_create_buffer  (FILE * file, int  size )
-{
-	YY_BUFFER_STATE b;
-    
-	b = (YY_BUFFER_STATE) vrmlyyalloc(sizeof( struct yy_buffer_state )  );
-	if ( ! b )
-		YY_FATAL_ERROR( "out of dynamic memory in vrmlyy_create_buffer()" );
-
-	b->yy_buf_size = size;
-
-	/* yy_ch_buf has to be 2 characters longer than the size given because
-	 * we need to put in 2 end-of-buffer characters.
-	 */
-	b->yy_ch_buf = (char *) vrmlyyalloc(b->yy_buf_size + 2  );
-	if ( ! b->yy_ch_buf )
-		YY_FATAL_ERROR( "out of dynamic memory in vrmlyy_create_buffer()" );
-
-	b->yy_is_our_buffer = 1;
-
-	vrmlyy_init_buffer(b,file );
-
-	return b;
-}
-
-/** Destroy the buffer.
- * @param b a buffer created with vrmlyy_create_buffer()
- * 
- */
-    void vrmlyy_delete_buffer (YY_BUFFER_STATE  b )
-{
-    
-	if ( ! b )
-		return;
-
-	if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
-		YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
-
-	if ( b->yy_is_our_buffer )
-		vrmlyyfree((void *) b->yy_ch_buf  );
-
-	vrmlyyfree((void *) b  );
-}
-
-#ifndef __cplusplus
-extern int isatty (int );
-#endif /* __cplusplus */
-    
-/* Initializes or reinitializes a buffer.
- * This function is sometimes called more than once on the same buffer,
- * such as during a vrmlyyrestart() or at EOF.
- */
-    static void vrmlyy_init_buffer  (YY_BUFFER_STATE  b, FILE * file )
-
-{
-	int oerrno = errno;
-    
-	vrmlyy_flush_buffer(b );
-
-	b->yy_input_file = file;
-	b->yy_fill_buffer = 1;
-
-    /* If b is the current buffer, then vrmlyy_init_buffer was _probably_
-     * called from vrmlyyrestart() or through yy_get_next_buffer.
-     * In that case, we don't want to reset the lineno or column.
-     */
-    if (b != YY_CURRENT_BUFFER){
-        b->yy_bs_lineno = 1;
-        b->yy_bs_column = 0;
-    }
-
-        b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
-    
-	errno = oerrno;
-}
-
-/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
- * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
- * 
- */
-    void vrmlyy_flush_buffer (YY_BUFFER_STATE  b )
-{
-    	if ( ! b )
-		return;
-
-	b->yy_n_chars = 0;
-
-	/* We always need two end-of-buffer characters.  The first causes
-	 * a transition to the end-of-buffer state.  The second causes
-	 * a jam in that state.
-	 */
-	b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
-	b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
-
-	b->yy_buf_pos = &b->yy_ch_buf[0];
-
-	b->yy_at_bol = 1;
-	b->yy_buffer_status = YY_BUFFER_NEW;
-
-	if ( b == YY_CURRENT_BUFFER )
-		vrmlyy_load_buffer_state( );
-}
-
-/** Pushes the new state onto the stack. The new state becomes
- *  the current state. This function will allocate the stack
- *  if necessary.
- *  @param new_buffer The new state.
- *  
- */
-void vrmlyypush_buffer_state (YY_BUFFER_STATE new_buffer )
-{
-    	if (new_buffer == NULL)
-		return;
-
-	vrmlyyensure_buffer_stack();
-
-	/* This block is copied from vrmlyy_switch_to_buffer. */
-	if ( YY_CURRENT_BUFFER )
-		{
-		/* Flush out information for old buffer. */
-		*(yy_c_buf_p) = (yy_hold_char);
-		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
-		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
-		}
-
-	/* Only push if top exists. Otherwise, replace top. */
-	if (YY_CURRENT_BUFFER)
-		(yy_buffer_stack_top)++;
-	YY_CURRENT_BUFFER_LVALUE = new_buffer;
-
-	/* copied from vrmlyy_switch_to_buffer. */
-	vrmlyy_load_buffer_state( );
-	(yy_did_buffer_switch_on_eof) = 1;
-}
-
-/** Removes and deletes the top of the stack, if present.
- *  The next element becomes the new top.
- *  
- */
-void vrmlyypop_buffer_state (void)
-{
-    	if (!YY_CURRENT_BUFFER)
-		return;
-
-	vrmlyy_delete_buffer(YY_CURRENT_BUFFER );
-	YY_CURRENT_BUFFER_LVALUE = NULL;
-	if ((yy_buffer_stack_top) > 0)
-		--(yy_buffer_stack_top);
-
-	if (YY_CURRENT_BUFFER) {
-		vrmlyy_load_buffer_state( );
-		(yy_did_buffer_switch_on_eof) = 1;
-	}
-}
-
-/* Allocates the stack if it does not exist.
- *  Guarantees space for at least one push.
- */
-static void vrmlyyensure_buffer_stack (void)
-{
-	int num_to_alloc;
-    
-	if (!(yy_buffer_stack)) {
-
-		/* First allocation is just for 2 elements, since we don't know if this
-		 * scanner will even need a stack. We use 2 instead of 1 to avoid an
-		 * immediate realloc on the next call.
-         */
-		num_to_alloc = 1;
-		(yy_buffer_stack) = (struct yy_buffer_state**)vrmlyyalloc
-								(num_to_alloc * sizeof(struct yy_buffer_state*)
-								);
-		if ( ! (yy_buffer_stack) )
-			YY_FATAL_ERROR( "out of dynamic memory in vrmlyyensure_buffer_stack()" );
-								  
-		memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
-				
-		(yy_buffer_stack_max) = num_to_alloc;
-		(yy_buffer_stack_top) = 0;
-		return;
-	}
-
-	if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
-
-		/* Increase the buffer to prepare for a possible push. */
-		int grow_size = 8 /* arbitrary grow size */;
-
-		num_to_alloc = (yy_buffer_stack_max) + grow_size;
-		(yy_buffer_stack) = (struct yy_buffer_state**)vrmlyyrealloc
-								((yy_buffer_stack),
-								num_to_alloc * sizeof(struct yy_buffer_state*)
-								);
-		if ( ! (yy_buffer_stack) )
-			YY_FATAL_ERROR( "out of dynamic memory in vrmlyyensure_buffer_stack()" );
-
-		/* zero only the new slots.*/
-		memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
-		(yy_buffer_stack_max) = num_to_alloc;
-	}
-}
-
-/** Setup the input buffer state to scan directly from a user-specified character buffer.
- * @param base the character buffer
- * @param size the size in bytes of the character buffer
- * 
- * @return the newly allocated buffer state object. 
- */
-YY_BUFFER_STATE vrmlyy_scan_buffer  (char * base, yy_size_t  size )
-{
-	YY_BUFFER_STATE b;
-    
-	if ( size < 2 ||
-	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
-	     base[size-1] != YY_END_OF_BUFFER_CHAR )
-		/* They forgot to leave room for the EOB's. */
-		return 0;
-
-	b = (YY_BUFFER_STATE) vrmlyyalloc(sizeof( struct yy_buffer_state )  );
-	if ( ! b )
-		YY_FATAL_ERROR( "out of dynamic memory in vrmlyy_scan_buffer()" );
-
-	b->yy_buf_size = size - 2;	/* "- 2" to take care of EOB's */
-	b->yy_buf_pos = b->yy_ch_buf = base;
-	b->yy_is_our_buffer = 0;
-	b->yy_input_file = 0;
-	b->yy_n_chars = b->yy_buf_size;
-	b->yy_is_interactive = 0;
-	b->yy_at_bol = 1;
-	b->yy_fill_buffer = 0;
-	b->yy_buffer_status = YY_BUFFER_NEW;
-
-	vrmlyy_switch_to_buffer(b  );
-
-	return b;
-}
-
-/** Setup the input buffer state to scan a string. The next call to vrmlyylex() will
- * scan from a @e copy of @a str.
- * @param yystr a NUL-terminated string to scan
- * 
- * @return the newly allocated buffer state object.
- * @note If you want to scan bytes that may contain NUL values, then use
- *       vrmlyy_scan_bytes() instead.
- */
-YY_BUFFER_STATE vrmlyy_scan_string (yyconst char * yystr )
-{
-    
-	return vrmlyy_scan_bytes(yystr,strlen(yystr) );
-}
-
-/** Setup the input buffer state to scan the given bytes. The next call to vrmlyylex() will
- * scan from a @e copy of @a bytes.
- * @param bytes the byte buffer to scan
- * @param len the number of bytes in the buffer pointed to by @a bytes.
- * 
- * @return the newly allocated buffer state object.
- */
-YY_BUFFER_STATE vrmlyy_scan_bytes  (yyconst char * yybytes, int  _yybytes_len )
-{
-	YY_BUFFER_STATE b;
-	char *buf;
-	yy_size_t n;
-	int i;
-    
-	/* Get memory for full buffer, including space for trailing EOB's. */
-	n = _yybytes_len + 2;
-	buf = (char *) vrmlyyalloc(n  );
-	if ( ! buf )
-		YY_FATAL_ERROR( "out of dynamic memory in vrmlyy_scan_bytes()" );
-
-	for ( i = 0; i < _yybytes_len; ++i )
-		buf[i] = yybytes[i];
-
-	buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
-
-	b = vrmlyy_scan_buffer(buf,n );
-	if ( ! b )
-		YY_FATAL_ERROR( "bad buffer in vrmlyy_scan_bytes()" );
-
-	/* It's okay to grow etc. this buffer, and we should throw it
-	 * away when we're done.
-	 */
-	b->yy_is_our_buffer = 1;
-
-	return b;
-}
-
-#ifndef YY_EXIT_FAILURE
-#define YY_EXIT_FAILURE 2
-#endif
-
-static void yy_fatal_error (yyconst char* msg )
-{
-    	(void) fprintf( stderr, "%s\n", msg );
-	exit( YY_EXIT_FAILURE );
-}
-
-/* Redefine yyless() so it works in section 3 code. */
-
-#undef yyless
-#define yyless(n) \
-	do \
-		{ \
-		/* Undo effects of setting up vrmlyytext. */ \
-        int yyless_macro_arg = (n); \
-        YY_LESS_LINENO(yyless_macro_arg);\
-		vrmlyytext[vrmlyyleng] = (yy_hold_char); \
-		(yy_c_buf_p) = vrmlyytext + yyless_macro_arg; \
-		(yy_hold_char) = *(yy_c_buf_p); \
-		*(yy_c_buf_p) = '\0'; \
-		vrmlyyleng = yyless_macro_arg; \
-		} \
-	while ( 0 )
-
-/* Accessor  methods (get/set functions) to struct members. */
-
-/** Get the current line number.
- * 
- */
-int vrmlyyget_lineno  (void)
-{
-        
-    return vrmlyylineno;
-}
-
-/** Get the input stream.
- * 
- */
-FILE *vrmlyyget_in  (void)
-{
-        return vrmlyyin;
-}
-
-/** Get the output stream.
- * 
- */
-FILE *vrmlyyget_out  (void)
-{
-        return vrmlyyout;
-}
-
-/** Get the length of the current token.
- * 
- */
-int vrmlyyget_leng  (void)
-{
-        return vrmlyyleng;
-}
-
-/** Get the current token.
- * 
- */
-
-char *vrmlyyget_text  (void)
-{
-        return vrmlyytext;
-}
-
-/** Set the current line number.
- * @param line_number
- * 
- */
-void vrmlyyset_lineno (int  line_number )
-{
-    
-    vrmlyylineno = line_number;
-}
-
-/** Set the input stream. This does not discard the current
- * input buffer.
- * @param in_str A readable stream.
- * 
- * @see vrmlyy_switch_to_buffer
- */
-void vrmlyyset_in (FILE *  in_str )
-{
-        vrmlyyin = in_str ;
-}
-
-void vrmlyyset_out (FILE *  out_str )
-{
-        vrmlyyout = out_str ;
-}
-
-int vrmlyyget_debug  (void)
-{
-        return vrmlyy_flex_debug;
-}
-
-void vrmlyyset_debug (int  bdebug )
-{
-        vrmlyy_flex_debug = bdebug ;
-}
-
-static int yy_init_globals (void)
-{
-        /* Initialization is the same as for the non-reentrant scanner.
-     * This function is called from vrmlyylex_destroy(), so don't allocate here.
-     */
-
-    (yy_buffer_stack) = 0;
-    (yy_buffer_stack_top) = 0;
-    (yy_buffer_stack_max) = 0;
-    (yy_c_buf_p) = (char *) 0;
-    (yy_init) = 0;
-    (yy_start) = 0;
-
-/* Defined in main.c */
-#ifdef YY_STDINIT
-    vrmlyyin = stdin;
-    vrmlyyout = stdout;
-#else
-    vrmlyyin = (FILE *) 0;
-    vrmlyyout = (FILE *) 0;
-#endif
-
-    /* For future reference: Set errno on error, since we are called by
-     * vrmlyylex_init()
-     */
-    return 0;
-}
-
-/* vrmlyylex_destroy is for both reentrant and non-reentrant scanners. */
-int vrmlyylex_destroy  (void)
-{
-    
-    /* Pop the buffer stack, destroying each element. */
-	while(YY_CURRENT_BUFFER){
-		vrmlyy_delete_buffer(YY_CURRENT_BUFFER  );
-		YY_CURRENT_BUFFER_LVALUE = NULL;
-		vrmlyypop_buffer_state();
-	}
-
-	/* Destroy the stack itself. */
-	vrmlyyfree((yy_buffer_stack) );
-	(yy_buffer_stack) = NULL;
-
-    /* Reset the globals. This is important in a non-reentrant scanner so the next time
-     * vrmlyylex() is called, initialization will occur. */
-    yy_init_globals( );
-
-    return 0;
-}
-
-/*
- * Internal utility routines.
- */
-
-#ifndef yytext_ptr
-static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
-{
-	register int i;
-	for ( i = 0; i < n; ++i )
-		s1[i] = s2[i];
-}
-#endif
-
-#ifdef YY_NEED_STRLEN
-static int yy_flex_strlen (yyconst char * s )
-{
-	register int n;
-	for ( n = 0; s[n]; ++n )
-		;
-
-	return n;
-}
-#endif
-
-void *vrmlyyalloc (yy_size_t  size )
-{
-	return (void *) malloc( size );
-}
-
-void *vrmlyyrealloc  (void * ptr, yy_size_t  size )
-{
-	/* The cast to (char *) in the following accommodates both
-	 * implementations that use char* generic pointers, and those
-	 * that use void* generic pointers.  It works with the latter
-	 * because both ANSI C and C++ allow castless assignment from
-	 * any pointer type to void*, and deal with argument conversions
-	 * as though doing an assignment.
-	 */
-	return (void *) realloc( (char *) ptr, size );
-}
-
-void vrmlyyfree (void * ptr )
-{
-	free( (char *) ptr );	/* see vrmlyyrealloc() for (char *) cast */
-}
-
-#define YYTABLES_NAME "yytables"
-
-#line 574 "vrmlLexer.lxx"
+#line 2 "lex.yy.c"
+
+#line 4 "lex.yy.c"
+
+#define  YY_INT_ALIGNED short int
+
+/* A lexical scanner generated by flex */
+
+#define yy_create_buffer vrmlyy_create_buffer
+#define yy_delete_buffer vrmlyy_delete_buffer
+#define yy_flex_debug vrmlyy_flex_debug
+#define yy_init_buffer vrmlyy_init_buffer
+#define yy_flush_buffer vrmlyy_flush_buffer
+#define yy_load_buffer_state vrmlyy_load_buffer_state
+#define yy_switch_to_buffer vrmlyy_switch_to_buffer
+#define yyin vrmlyyin
+#define yyleng vrmlyyleng
+#define yylex vrmlyylex
+#define yylineno vrmlyylineno
+#define yyout vrmlyyout
+#define yyrestart vrmlyyrestart
+#define yytext vrmlyytext
+#define yywrap vrmlyywrap
+#define yyalloc vrmlyyalloc
+#define yyrealloc vrmlyyrealloc
+#define yyfree vrmlyyfree
+
+#define FLEX_SCANNER
+#define YY_FLEX_MAJOR_VERSION 2
+#define YY_FLEX_MINOR_VERSION 5
+#define YY_FLEX_SUBMINOR_VERSION 35
+#if YY_FLEX_SUBMINOR_VERSION > 0
+#define FLEX_BETA
+#endif
+
+/* First, we deal with  platform-specific or compiler-specific issues. */
+
+/* begin standard C headers. */
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <stdlib.h>
+
+/* end standard C headers. */
+
+/* flex integer type definitions */
+
+#ifndef FLEXINT_H
+#define FLEXINT_H
+
+/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
+
+#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+
+/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
+ * if you want the limit (max/min) macros for int types. 
+ */
+#ifndef __STDC_LIMIT_MACROS
+#define __STDC_LIMIT_MACROS 1
+#endif
+
+#include <inttypes.h>
+typedef int8_t flex_int8_t;
+typedef uint8_t flex_uint8_t;
+typedef int16_t flex_int16_t;
+typedef uint16_t flex_uint16_t;
+typedef int32_t flex_int32_t;
+typedef uint32_t flex_uint32_t;
+#else
+typedef signed char flex_int8_t;
+typedef short int flex_int16_t;
+typedef int flex_int32_t;
+typedef unsigned char flex_uint8_t; 
+typedef unsigned short int flex_uint16_t;
+typedef unsigned int flex_uint32_t;
+#endif /* ! C99 */
+
+/* Limits of integral types. */
+#ifndef INT8_MIN
+#define INT8_MIN               (-128)
+#endif
+#ifndef INT16_MIN
+#define INT16_MIN              (-32767-1)
+#endif
+#ifndef INT32_MIN
+#define INT32_MIN              (-2147483647-1)
+#endif
+#ifndef INT8_MAX
+#define INT8_MAX               (127)
+#endif
+#ifndef INT16_MAX
+#define INT16_MAX              (32767)
+#endif
+#ifndef INT32_MAX
+#define INT32_MAX              (2147483647)
+#endif
+#ifndef UINT8_MAX
+#define UINT8_MAX              (255U)
+#endif
+#ifndef UINT16_MAX
+#define UINT16_MAX             (65535U)
+#endif
+#ifndef UINT32_MAX
+#define UINT32_MAX             (4294967295U)
+#endif
+
+#endif /* ! FLEXINT_H */
+
+#ifdef __cplusplus
+
+/* The "const" storage-class-modifier is valid. */
+#define YY_USE_CONST
+
+#else	/* ! __cplusplus */
+
+/* C99 requires __STDC__ to be defined as 1. */
+#if defined (__STDC__)
+
+#define YY_USE_CONST
+
+#endif	/* defined (__STDC__) */
+#endif	/* ! __cplusplus */
+
+#ifdef YY_USE_CONST
+#define yyconst const
+#else
+#define yyconst
+#endif
+
+/* Returned upon end-of-file. */
+#define YY_NULL 0
+
+/* Promotes a possibly negative, possibly signed char to an unsigned
+ * integer for use as an array index.  If the signed char is negative,
+ * we want to instead treat it as an 8-bit unsigned char, hence the
+ * double cast.
+ */
+#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
+
+/* Enter a start condition.  This macro really ought to take a parameter,
+ * but we do it the disgusting crufty way forced on us by the ()-less
+ * definition of BEGIN.
+ */
+#define BEGIN (yy_start) = 1 + 2 *
+
+/* Translate the current start state into a value that can be later handed
+ * to BEGIN to return to the state.  The YYSTATE alias is for lex
+ * compatibility.
+ */
+#define YY_START (((yy_start) - 1) / 2)
+#define YYSTATE YY_START
+
+/* Action number for EOF rule of a given start state. */
+#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
+
+/* Special action meaning "start processing a new file". */
+#define YY_NEW_FILE vrmlyyrestart(vrmlyyin  )
+
+#define YY_END_OF_BUFFER_CHAR 0
+
+/* Size of default input buffer. */
+#ifndef YY_BUF_SIZE
+#define YY_BUF_SIZE 16384
+#endif
+
+/* The state buf must be large enough to hold one state per character in the main buffer.
+ */
+#define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
+
+#ifndef YY_TYPEDEF_YY_BUFFER_STATE
+#define YY_TYPEDEF_YY_BUFFER_STATE
+typedef struct yy_buffer_state *YY_BUFFER_STATE;
+#endif
+
+extern int vrmlyyleng;
+
+extern FILE *vrmlyyin, *vrmlyyout;
+
+#define EOB_ACT_CONTINUE_SCAN 0
+#define EOB_ACT_END_OF_FILE 1
+#define EOB_ACT_LAST_MATCH 2
+
+    #define YY_LESS_LINENO(n)
+    
+/* Return all but the first "n" matched characters back to the input stream. */
+#define yyless(n) \
+	do \
+		{ \
+		/* Undo effects of setting up vrmlyytext. */ \
+        int yyless_macro_arg = (n); \
+        YY_LESS_LINENO(yyless_macro_arg);\
+		*yy_cp = (yy_hold_char); \
+		YY_RESTORE_YY_MORE_OFFSET \
+		(yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
+		YY_DO_BEFORE_ACTION; /* set up vrmlyytext again */ \
+		} \
+	while ( 0 )
+
+#define unput(c) yyunput( c, (yytext_ptr)  )
+
+#ifndef YY_TYPEDEF_YY_SIZE_T
+#define YY_TYPEDEF_YY_SIZE_T
+typedef size_t yy_size_t;
+#endif
+
+#ifndef YY_STRUCT_YY_BUFFER_STATE
+#define YY_STRUCT_YY_BUFFER_STATE
+struct yy_buffer_state
+	{
+	FILE *yy_input_file;
+
+	char *yy_ch_buf;		/* input buffer */
+	char *yy_buf_pos;		/* current position in input buffer */
+
+	/* Size of input buffer in bytes, not including room for EOB
+	 * characters.
+	 */
+	yy_size_t yy_buf_size;
+
+	/* Number of characters read into yy_ch_buf, not including EOB
+	 * characters.
+	 */
+	int yy_n_chars;
+
+	/* Whether we "own" the buffer - i.e., we know we created it,
+	 * and can realloc() it to grow it, and should free() it to
+	 * delete it.
+	 */
+	int yy_is_our_buffer;
+
+	/* Whether this is an "interactive" input source; if so, and
+	 * if we're using stdio for input, then we want to use getc()
+	 * instead of fread(), to make sure we stop fetching input after
+	 * each newline.
+	 */
+	int yy_is_interactive;
+
+	/* Whether we're considered to be at the beginning of a line.
+	 * If so, '^' rules will be active on the next match, otherwise
+	 * not.
+	 */
+	int yy_at_bol;
+
+    int yy_bs_lineno; /**< The line count. */
+    int yy_bs_column; /**< The column count. */
+    
+	/* Whether to try to fill the input buffer when we reach the
+	 * end of it.
+	 */
+	int yy_fill_buffer;
+
+	int yy_buffer_status;
+
+#define YY_BUFFER_NEW 0
+#define YY_BUFFER_NORMAL 1
+	/* When an EOF's been seen but there's still some text to process
+	 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
+	 * shouldn't try reading from the input source any more.  We might
+	 * still have a bunch of tokens to match, though, because of
+	 * possible backing-up.
+	 *
+	 * When we actually see the EOF, we change the status to "new"
+	 * (via vrmlyyrestart()), so that the user can continue scanning by
+	 * just pointing vrmlyyin at a new input file.
+	 */
+#define YY_BUFFER_EOF_PENDING 2
+
+	};
+#endif /* !YY_STRUCT_YY_BUFFER_STATE */
+
+/* Stack of input buffers. */
+static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
+static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
+static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
+
+/* We provide macros for accessing buffer states in case in the
+ * future we want to put the buffer states in a more general
+ * "scanner state".
+ *
+ * Returns the top of the stack, or NULL.
+ */
+#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
+                          ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
+                          : NULL)
+
+/* Same as previous macro, but useful when we know that the buffer stack is not
+ * NULL or when we need an lvalue. For internal use only.
+ */
+#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
+
+/* yy_hold_char holds the character lost when vrmlyytext is formed. */
+static char yy_hold_char;
+static int yy_n_chars;		/* number of characters read into yy_ch_buf */
+int vrmlyyleng;
+
+/* Points to current character in buffer. */
+static char *yy_c_buf_p = (char *) 0;
+static int yy_init = 0;		/* whether we need to initialize */
+static int yy_start = 0;	/* start state number */
+
+/* Flag which is used to allow vrmlyywrap()'s to do buffer switches
+ * instead of setting up a fresh vrmlyyin.  A bit of a hack ...
+ */
+static int yy_did_buffer_switch_on_eof;
+
+void vrmlyyrestart (FILE *input_file  );
+void vrmlyy_switch_to_buffer (YY_BUFFER_STATE new_buffer  );
+YY_BUFFER_STATE vrmlyy_create_buffer (FILE *file,int size  );
+void vrmlyy_delete_buffer (YY_BUFFER_STATE b  );
+void vrmlyy_flush_buffer (YY_BUFFER_STATE b  );
+void vrmlyypush_buffer_state (YY_BUFFER_STATE new_buffer  );
+void vrmlyypop_buffer_state (void );
+
+static void vrmlyyensure_buffer_stack (void );
+static void vrmlyy_load_buffer_state (void );
+static void vrmlyy_init_buffer (YY_BUFFER_STATE b,FILE *file  );
+
+#define YY_FLUSH_BUFFER vrmlyy_flush_buffer(YY_CURRENT_BUFFER )
+
+YY_BUFFER_STATE vrmlyy_scan_buffer (char *base,yy_size_t size  );
+YY_BUFFER_STATE vrmlyy_scan_string (yyconst char *yy_str  );
+YY_BUFFER_STATE vrmlyy_scan_bytes (yyconst char *bytes,int len  );
+
+void *vrmlyyalloc (yy_size_t  );
+void *vrmlyyrealloc (void *,yy_size_t  );
+void vrmlyyfree (void *  );
+
+#define yy_new_buffer vrmlyy_create_buffer
+
+#define yy_set_interactive(is_interactive) \
+	{ \
+	if ( ! YY_CURRENT_BUFFER ){ \
+        vrmlyyensure_buffer_stack (); \
+		YY_CURRENT_BUFFER_LVALUE =    \
+            vrmlyy_create_buffer(vrmlyyin,YY_BUF_SIZE ); \
+	} \
+	YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
+	}
+
+#define yy_set_bol(at_bol) \
+	{ \
+	if ( ! YY_CURRENT_BUFFER ){\
+        vrmlyyensure_buffer_stack (); \
+		YY_CURRENT_BUFFER_LVALUE =    \
+            vrmlyy_create_buffer(vrmlyyin,YY_BUF_SIZE ); \
+	} \
+	YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
+	}
+
+#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
+
+typedef unsigned char YY_CHAR;
+
+FILE *vrmlyyin = (FILE *) 0, *vrmlyyout = (FILE *) 0;
+
+typedef int yy_state_type;
+
+extern int vrmlyylineno;
+
+int vrmlyylineno = 1;
+
+extern char *vrmlyytext;
+#define yytext_ptr vrmlyytext
+
+static yy_state_type yy_get_previous_state (void );
+static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
+static int yy_get_next_buffer (void );
+static void yy_fatal_error (yyconst char msg[]  );
+
+/* Done after the current pattern has been matched and before the
+ * corresponding action - sets up vrmlyytext.
+ */
+#define YY_DO_BEFORE_ACTION \
+	(yytext_ptr) = yy_bp; \
+	vrmlyyleng = (size_t) (yy_cp - yy_bp); \
+	(yy_hold_char) = *yy_cp; \
+	*yy_cp = '\0'; \
+	(yy_c_buf_p) = yy_cp;
+
+#define YY_NUM_RULES 48
+#define YY_END_OF_BUFFER 49
+/* This struct is not used in this scanner,
+   but its presence is necessary. */
+struct yy_trans_info
+	{
+	flex_int32_t yy_verify;
+	flex_int32_t yy_nxt;
+	};
+static yyconst flex_int16_t yy_accept[977] =
+    {   0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   49,   47,   45,   46,   45,   14,
+       45,   15,   14,   14,   14,   14,   14,   14,   14,   14,
+       14,   14,   47,   47,   47,   47,   47,   47,   47,   47,
+       24,   47,   47,   47,   47,   22,   22,   47,   47,   47,
+       37,   35,   37,   37,   47,   47,   34,   47,   47,   47,
+       47,   47,   47,   47,   47,   47,   47,   18,   19,   47,
+
+       47,   25,   47,   23,   23,   47,   47,   47,   38,   36,
+       38,   38,   47,   47,   47,   47,   47,   47,   40,   40,
+       41,   40,   40,   42,   47,   44,   44,   45,   45,   46,
+       45,   45,   45,   14,   15,   14,   14,    7,   14,   14,
+       14,    6,   14,   14,   14,   14,    0,   16,    0,    0,
+        0,    0,    0,    0,    0,    0,   24,   24,    0,    0,
+        0,    0,    0,   22,   22,    0,    0,    0,    0,    0,
+        0,   37,   37,   37,   16,    0,   34,   34,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   17,    0,   25,
+
+       25,    0,   23,   23,    0,    0,    0,    0,    0,    0,
+       38,   38,   38,   17,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   40,   40,   40,   40,
+       40,   39,   44,   44,   45,    4,   14,   14,   14,   14,
+        5,   14,   14,   14,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   24,    0,
+       43,   43,    0,    0,    0,    0,   43,   43,    0,   22,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   34,    0,    0,   26,    0,    0,    0,    0,
+        0,   26,    0,    0,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   25,   23,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   27,    0,    0,    0,    0,    0,   27,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   44,   45,   14,    9,   14,   14,   14,   14,
+       14,    0,   20,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   43,   43,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   26,    0,   26,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   27,    0,   27,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   45,   14,    2,
+        8,   14,   14,   12,   21,    0,    0,   32,    0,    0,
+        0,    0,    0,   32,    0,    0,    0,    0,   32,    0,
+        0,    0,   32,    0,    0,    0,    0,    0,   32,    0,
+        0,    0,   43,   43,   43,   43,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   26,    0,    0,   26,    0,    0,
+
+       28,    0,    0,    0,    0,    0,   28,    0,    0,    0,
+        0,   28,    0,    0,    0,   28,    0,    0,    0,    0,
+        0,   28,    0,    0,    0,    0,    0,   33,    0,    0,
+        0,    0,    0,   33,    0,    0,    0,    0,   33,    0,
+        0,    0,   33,    0,    0,    0,    0,    0,   33,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+       27,    0,    0,   27,    0,    0,   29,    0,    0,    0,
+        0,    0,   29,    0,    0,    0,    0,   29,    0,    0,
+
+        0,   29,    0,    0,    0,    0,    0,   29,    0,    0,
+        0,   45,   14,   14,   14,   14,   32,    0,   32,    0,
+       32,    0,   32,    0,   32,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   28,    0,   28,
+        0,   28,    0,   28,    0,   28,    0,   33,    0,   33,
+        0,   33,    0,   33,    0,   33,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   29,    0,
+       29,    0,   29,    0,   29,    0,   29,    0,   45,   14,
+
+       10,   14,   14,    0,   32,    0,    0,   32,    0,    0,
+       32,    0,   32,    0,    0,   32,    0,    0,   30,    0,
+        0,    0,    0,    0,   30,    0,    0,    0,    0,   30,
+        0,    0,   30,    0,    0,    0,    0,    0,   30,    0,
+        0,    0,    0,    0,   30,    0,    0,    0,   30,    0,
+        0,    0,    0,    0,   30,    0,    0,    0,    0,    0,
+        0,    0,   30,    0,    0,    0,    0,   28,    0,    0,
+       28,    0,    0,   28,    0,   28,    0,    0,   28,    0,
+       33,    0,    0,   33,    0,    0,   33,    0,   33,    0,
+        0,   33,    0,    0,   31,    0,    0,    0,    0,    0,
+
+       31,    0,    0,    0,    0,   31,    0,    0,   31,    0,
+        0,    0,    0,    0,   31,    0,    0,    0,    0,    0,
+       31,    0,    0,    0,   31,    0,    0,    0,    0,    0,
+       31,    0,    0,    0,    0,    0,    0,    0,   31,    0,
+        0,    0,    0,   29,    0,    0,   29,    0,    0,   29,
+        0,   29,    0,    0,   29,   45,   14,   11,   14,   30,
+        0,   30,    0,   30,    0,   30,    0,   30,    0,   30,
+        0,   30,    0,   30,    0,   30,    0,   31,    0,   31,
+        0,   31,    0,   31,    0,   31,    0,   31,    0,   31,
+        0,   31,    0,   31,    0,   45,   14,   14,    0,   30,
+
+        0,    0,   30,    0,    0,   30,    0,   30,    0,    0,
+       30,    0,    0,   30,    0,   30,    0,    0,   30,    0,
+        0,   30,    0,   31,    0,    0,   31,    0,    0,   31,
+        0,   31,    0,    0,   31,    0,    0,   31,    0,   31,
+        0,    0,   31,    0,    0,   31,   45,   14,   14,   45,
+        3,   14,   45,   13,   45,   45,   45,   45,    1,    1,
+       45,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    0
+    } ;
+
+static yyconst flex_int32_t yy_ec[256] =
+    {   0,
+        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
+        1,    1,    4,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    5,    6,    7,    8,    6,    6,    6,    1,    6,
+        6,    6,    9,    2,   10,   11,    6,   12,   13,   14,
+       13,   13,   13,   13,   13,   15,   13,    6,    6,    6,
+        6,    6,    6,    6,   16,   17,   17,   18,   19,   20,
+        6,    6,   21,    6,    6,   22,   23,   24,   25,   26,
+        6,   27,   28,   29,   30,   31,    6,   32,    6,    6,
+       33,   34,   35,    6,    6,    6,   17,   17,   17,   36,
+
+       37,   38,    6,    6,   39,    6,    6,   40,    6,   41,
+       42,   43,    6,    6,   44,   45,   46,   47,    6,   48,
+        6,    6,    1,    6,    1,    6,    6,    6,    6,    6,
+        6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
+        6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
+        6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
+        6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
+        6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
+        6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
+        6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
+
+        6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
+        6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
+        6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
+        6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
+        6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
+        6,    6,    6,    6,    6
+    } ;
+
+static yyconst flex_int32_t yy_meta[49] =
+    {   0,
+        1,    2,    3,    2,    2,    4,    5,    6,    1,    4,
+        1,    7,    7,    7,    7,    7,    7,    7,    7,    7,
+        4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
+        4,    4,    8,    1,    8,    7,    7,    7,    4,    4,
+        4,    4,    4,    4,    4,    4,    4,    4
+    } ;
+
+static yyconst flex_int16_t yy_base[1120] =
+    {   0,
+        0,    7,   15,    0,   62,   90,  118,    0,   61,   74,
+       89,  102,  130,  136,  142,  148,  162,  169,  174,  181,
+      187,  193,  199,  205,  211,  237,  263,  289,  315,  341,
+      367,  393,  427,  461,  487,  513,  539,  565,  226,  233,
+      261,  278,  328,  354, 1038, 8632,  251,    0,  231,    0,
+     1019,    0, 1006,  992,  985,  981,  983,  974,  972,  968,
+       21,  946,  967,  954,  944,   66,   93,  599,  123,  166,
+      278,  293,  635,   77,  304,  377,  319,  346,  332,  682,
+        0, 8632,  391,  941,  372,  358,  404,  425,  398,  718,
+      431,  437,  754,  442,  458,  790,  940, 8632, 8632,  463,
+
+      471,  476,  491,  497,  502,  524,  518,  826,    0, 8632,
+      554,  929,  529,  551,  862,  556,  569,  898,    0,  586,
+     8632,    6,  947, 8632,  607,  612,  616,  591,  935,    0,
+      933,  932,  234,    0,    0,  914,  900,    0,  892,  883,
+      877,    0,  886,  867,  855,  847,  857, 8632,  848,  620,
+        0,  640,  934,  948,  649,  656,  661,  690,  698,    0,
+      726,  962,  740,  702,    0,  737,    0,  763,  976,  990,
+      770,    0,  806,  813,    0,  774,  835,  843,  873,  810,
+        0,  878, 1004, 1018,  906,  882,    0,  911, 1032, 1046,
+      918, 1050,    0, 1055, 1069, 1083, 1090, 8632, 1094, 1099,
+
+     1107, 1115, 1119,    0, 1125,    0, 1134, 1148, 1162, 1169,
+        0, 1183, 1190,    0, 1187, 1224, 1192, 1260, 1274, 1199,
+     1207, 1288, 1233, 1324, 1338, 1240,    0, 1304,   89,  280,
+      306, 8632, 1244,    0,  271,    0,  852,  847,  839,  830,
+        0,  811,  794,  792,  791,  797, 1302, 1306, 1352, 1388,
+     1402,    0,    0, 1360, 1416, 1364, 1452, 1368, 1372, 1413,
+     1426, 1417, 1473, 1487,    0,    0,  195,    0, 1440,    0,
+     1457, 1437, 1501, 1537, 1551,    0,    0, 1509, 1565, 1513,
+     1601, 1517, 1521, 1563, 1567, 1574, 1615,    0,    0,    0,
+     1582,  442, 1586, 1629, 1634, 1638, 1652, 1688,    0,    0,
+
+        0, 1660, 1675, 1672, 1711, 1693, 1715, 1729, 1765,    0,
+        0,    0, 1737, 1752, 1749, 1788, 1769, 1773,    0, 1793,
+     1797, 1811, 1847,    0,    0,    0, 1819, 1834, 1831, 1870,
+     1852, 1874, 1879, 1915,    0,    0,    0, 1887,  536, 1891,
+     1929, 1896, 1900, 1943, 1979,    0,    0,    0, 1951, 1966,
+     1963, 2002,    0,  160,  785,    0,  782,  787,  755,  755,
+      760,  728, 8632, 1984, 2016, 2030, 2037, 2051, 2079, 2115,
+     2129, 2059,    0, 2133, 2064, 2170, 2184, 2071, 2198, 2226,
+     2262, 2276, 2290, 2087, 2095, 2326, 2362, 2376, 2412, 2426,
+     2145, 2440, 2476, 2490, 2504, 2518, 2532, 2568, 2582, 2152,
+
+     2596, 2632, 2646, 2660, 2674, 2688, 2724, 2738, 2206, 2752,
+     2788, 2802, 2816, 2830, 2210, 2218, 2844, 2880, 2894, 2930,
+     2944, 2239, 2958, 2994, 3008, 3022, 3036,  119,  694,    0,
+        0,  376,  652,    0, 8632, 2100, 2243, 2305, 3050, 3064,
+        0,    0, 2247,  578, 2298, 3078, 3092, 3106, 3120, 3156,
+     2335, 2339, 3170, 3206,    0,    0,    0, 2343,  586, 2347,
+     2384, 3185,    0, 3222,  289,  560, 2389, 2393, 3269, 3305,
+     3319,    0,    0, 2397, 2867, 2448, 3333, 3347, 3361, 3375,
+     3411, 2453, 2457, 3425, 3461,    0,    0,    0, 2461, 3143,
+     2540, 2544, 3475, 2548, 2552, 3511, 3525,  662, 2605, 2609,
+
+     3530, 3566, 3580,    0,    0, 2613,  663, 2617, 3594, 3608,
+     3622, 3636, 3672, 2697, 2701, 3686, 3722,    0,    0,    0,
+     2705,  669, 2709, 2760, 3701, 2765, 2769, 3728, 3764, 3778,
+        0,    0, 2773,  709, 2852, 3792, 3806, 3820, 3834, 3870,
+     2865, 2902, 3884, 3920,    0,    0,    0, 2906,  716, 2910,
+     2914, 3899, 2967, 2971, 3935, 3971, 3985,    0,    0, 2975,
+     3398, 2979, 3999, 4013, 4027, 4041, 4077, 3129, 3140, 4091,
+     4127,    0,    0,    0, 3178, 3448, 3277, 3281, 4141, 3285,
+     3289, 4177, 4191,  735, 3384, 3395, 4196, 4232, 4246,    0,
+        0, 3433,  744, 3445, 4260, 4274, 4288, 4302, 4338, 3484,
+
+     3488, 4352, 4388,    0,    0,    0, 3492,  807, 3496, 3538,
+     4367,  416,  653,  601,  560,  549, 3644, 3545, 4403, 4439,
+     4453, 4489, 4503, 3652, 4539, 4575, 4589, 4625, 4639, 3694,
+     4653, 4689, 4703, 4717, 4731, 4745, 4781, 4795, 4809, 4823,
+     4837, 4873, 3736, 4887, 4923, 4937, 4951, 3842, 3743, 4965,
+     5001, 5015, 5051, 5065, 3850, 5101, 5137, 3943, 3892, 5151,
+     5187, 5201, 5237, 5251, 3951, 5287, 5323, 5337, 5373, 5387,
+     4049, 5401, 5437, 5451, 5465, 5479, 5493, 5529, 5543, 5557,
+     5571, 5585, 5621, 4056, 5635, 5671, 5685, 5699, 4099, 4107,
+     5713, 5749, 5763, 5799, 5813, 4149, 5849, 5885,  413,  530,
+
+        0,  502,  501, 3549, 3656, 5899, 5913,  814, 5927, 5941,
+     4325, 3747, 5955, 5969, 5983,  816, 3855, 3955, 4518, 5997,
+     6011,    0,    0, 4060,  823, 4111, 6025, 6039, 6053, 6067,
+     4154, 4158, 6103, 6139, 6153,    0,    0, 4162,  824, 4204,
+     4208, 5080, 6167, 6181, 6195, 6231, 4213, 4217, 6245, 6281,
+        0,    0,    0, 4310,  936, 4322, 4360, 5266, 4411, 6295,
+     6309, 6323, 6337, 4415, 4419, 5828, 4423, 4461, 6373, 6387,
+     1098, 6401, 6415, 4476, 4473, 6429, 6443, 6457, 1104, 4511,
+     4547, 6471, 6485, 1149, 6499, 6513, 4562, 4559, 6527, 6541,
+     6555, 1152, 4598, 4602, 6076, 6569, 6583,    0,    0, 4606,
+
+     1196, 4610, 6597, 6611, 6625, 6639, 4662, 4666, 6675, 6711,
+     6725,    0,    0, 4670, 1205, 4674, 4753, 6648, 6739, 6753,
+     6767, 6803, 4758, 4762, 6817, 6853,    0,    0,    0, 4766,
+     1232, 4845, 4849, 6832, 4853, 6868, 6882, 6896, 6910, 4857,
+     4895, 6919, 4899, 4903, 6955, 6969, 1261, 6983, 6997, 5038,
+     4907, 7011, 7025, 7039, 1285,  246,  482,    0,  428, 5345,
+     4973, 7053, 7089, 7103, 7139, 7153, 4980, 7189, 7225, 7239,
+     7275, 7289, 5023, 7325, 7361, 7375, 7411, 5409, 5035, 5501,
+     5073, 4985, 5109, 5114, 5121, 5593, 5159, 5164, 5171, 5210,
+     5217, 5643, 5259, 5222, 5295,  633,  404,  385, 5299, 5303,
+
+      449,  471, 1701,  483,  509, 7425, 5307, 7461,  607,  647,
+     1860,  656,  668, 7475, 5353, 7511,  682,  715, 1930,  751,
+      761, 7525, 5357, 5417, 5421, 5509, 6084, 5513, 5601, 7168,
+     5605, 7561, 5651, 5655, 6111, 5721, 5725, 7304, 5729, 5733,
+     5771, 5775, 6203, 5779, 5783, 7434,  315,  395,  354,  263,
+        0,  327,  601,    0,  726,  782, 1476, 1490, 5829, 5867,
+     1604, 5872, 5877, 6127, 6221, 6261, 6268, 6355, 6273, 6360,
+     6365, 6666, 6693, 6700, 6785, 8632, 7576, 7584, 7592, 7600,
+     7608, 7616, 7621, 7625, 7632, 7640, 7648, 7655, 7663, 7671,
+     7679, 7687, 7694,  328, 7701, 7709, 7717, 7725,  304, 7733,
+
+     7741, 7749, 7757, 7765, 7773,  238, 7781, 7786, 7793, 7801,
+     7808,  168, 7815,  111, 7823, 7831,   83, 7839, 7847, 7855,
+     7863, 7871, 7879, 7887, 7895, 7903, 7911, 7919, 7927, 7935,
+     7943, 7951, 7959, 7967, 7972, 7979, 7987, 7995,    0, 8003,
+     8011, 8019, 8027, 8035, 8043, 8051, 8059, 8067, 8075, 8083,
+     8091, 8099, 8107, 8115, 8123, 8131, 8139, 8144, 8151, 8159,
+     8167, 8175, 8183, 8191, 8199, 8207, 8215, 8223, 8231, 8239,
+     8247, 8255, 8263, 8271, 8279, 8287, 8295, 8303, 8311, 8319,
+     8327, 8335, 8343, 8348, 8355, 8363, 8371, 8379, 8387, 8395,
+     8403, 8411, 8419, 8427, 8435, 8443, 8451, 8459, 8467, 8475,
+
+     8483, 8491, 8499, 8507, 8515, 8523, 8531, 8539, 8547, 8552,
+     8559, 8567, 8575, 8583, 8591, 8599, 8607, 8615, 8623
+    } ;
+
+static yyconst flex_int16_t yy_def[1120] =
+    {   0,
+      977,  977,  976,    3,  977,  977,  977,    7,    7,    7,
+        7,    7,    7,    7,    7,    7,  978,  978,    7,    7,
+        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
+        7,    7,  979,  979,    7,    7,    7,    7,  980,  980,
+      980,  980,    7,    7,  976,  976,  976,  981,  982,  983,
+      982,  984,  983,  983,  983,  983,  983,  983,  983,  983,
+      983,  983,  976,  976,  976,  976,  976,  976,  976,  976,
+      976,  976,  976,   73,  976,  976,  976,  976,  976,  976,
+      985,  976,  986,  985,  976,  976,  976,  976,  976,  976,
+      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
+
+      976,  976,  976,  976,  976,  976,  976,  976,  987,  976,
+      988,  987,  976,  976,  976,  976,  976,  976,  989,  989,
+      976,  990,  989,  976,  976,  976,  976,  976,  982,  981,
+      982,  982,  982,  983,  984,  983,  983,  983,  983,  983,
+      983,  983,  983,  983,  983,  983,  976,  976,  976,  976,
+       68,   68,  976,  991,  976,  976,  976,  976,  976,   74,
+       74,  992,  993,  976,  994,  976,   80,   80,  976,  995,
+      976,  985,  986,  986,  985,  976,  976,  976,  976,  976,
+       90,   90,  976,  996,  976,  976,   93,   93,  976,  997,
+      976,  976,   96,   96,  976,  998,  976,  976,  976,  976,
+
+      976,  976,  976,  999,  976,  108,  108,  976, 1000,  976,
+      987, 1001, 1001,  987,  976,  976,  216,  976, 1002,  976,
+      976,  976,  222,  976, 1003,  976, 1004, 1004, 1005, 1005,
+     1005,  976,  976, 1006, 1007, 1008, 1008, 1008, 1008, 1008,
+     1008, 1008, 1008, 1008,  976,  976,  976,  976,  976, 1009,
+     1009,  251,  251,  251,  251,  976,  976,  976,  976,  976,
+      976,  976, 1010, 1010,  264,  264,  264,  264, 1011, 1012,
+      976,  976,  976, 1013, 1013,  275,  275,  275,  275,  976,
+      976,  976,  976,  976,  976,  976,  996,  287,  287,  287,
+      287,  287,  976,  976,  976,  976,  976,  997,  298,  298,
+
+      298,  298,  298,  976,  976,  976,  976,  976,  998,  309,
+      309,  309,  309,  309,  976,  976,  976,  976, 1014,  976,
+      976,  976, 1000,  323,  323,  323,  323,  323,  976,  976,
+      976,  976,  976, 1002,  334,  334,  334,  334,  334,  976,
+      976,  976,  976,  976, 1003,  345,  345,  345,  345,  345,
+      976,  976, 1006, 1007, 1008, 1008, 1008, 1008, 1008, 1008,
+     1008,  976,  976,  249,  976, 1015,  976,  251,  368,  976,
+     1016,  251, 1017,  264,  273,  976, 1018,  976,  275,  379,
+      976, 1019,  379,  976,  976, 1020, 1020,  976,  976, 1021,
+      976, 1022, 1022,  976, 1023, 1022,  976,  976, 1024,  976,
+
+     1025, 1025,  976, 1026, 1025,  976,  976, 1027,  976, 1028,
+     1028,  976, 1029, 1028,  976,  976, 1030, 1030,  976,  976,
+     1031,  976, 1032, 1032,  976, 1033, 1032, 1034, 1035, 1035,
+     1035, 1035, 1035, 1035,  976,  976,  976,  976, 1036, 1036,
+      440,  440,  440,  440,  976,  976, 1037, 1037,  448, 1038,
+      976,  976,  976, 1038,  454,  454,  454,  454,  454,  448,
+      448,  449, 1039,  976,  464,  464,  976,  976,  976, 1040,
+     1040,  471,  471,  471,  471,  976,  976, 1041, 1041,  479,
+     1042,  976,  976,  976, 1042,  485,  485,  485,  485,  485,
+      479,  479,  479,  976,  976, 1043, 1043,  497,  976,  976,
+
+      976, 1044, 1044,  503,  503,  503,  503,  976,  976, 1045,
+     1045,  511, 1046,  976,  976,  976, 1046,  517,  517,  517,
+      517,  517,  511,  511,  512,  976,  976,  976, 1047, 1047,
+      530,  530,  530,  530,  976,  976, 1048, 1048,  538, 1049,
+      976,  976,  976, 1049,  544,  544,  544,  544,  544,  538,
+      538,  539,  976,  976,  976, 1050, 1050,  557,  557,  557,
+      557,  976,  976, 1051, 1051,  565, 1052,  976,  976,  976,
+     1052,  571,  571,  571,  571,  571,  565,  565,  565,  976,
+      976, 1053, 1053,  583,  976,  976,  976, 1054, 1054,  589,
+      589,  589,  589,  976,  976, 1055, 1055,  597, 1056,  976,
+
+      976,  976, 1056,  603,  603,  603,  603,  603,  597,  597,
+      598, 1057, 1058, 1058, 1058, 1058,  976,  976, 1059, 1059,
+     1060, 1060,  976,  976, 1061, 1061,  976,  976, 1062,  976,
+     1063, 1063,  976, 1064, 1063, 1065, 1065,  976, 1066, 1065,
+      976, 1064,  976, 1067, 1067, 1066, 1067,  976,  976, 1068,
+     1068, 1069, 1069,  976,  976, 1070, 1070,  976,  976, 1071,
+     1071, 1072, 1072,  976,  976, 1073, 1073,  976,  976, 1074,
+      976, 1075, 1075,  976, 1076, 1075, 1077, 1077,  976, 1078,
+     1077,  976, 1076,  976, 1079, 1079, 1078, 1079,  976,  976,
+     1080, 1080, 1081, 1081,  976,  976, 1082, 1082, 1083, 1084,
+
+     1084, 1084, 1084,  976,  976, 1085, 1085,  707, 1086, 1086,
+      710,  976,  976, 1087, 1087,  715,  976,  976,  976, 1088,
+     1088,  721,  721,  721,  721,  976,  976, 1089, 1089,  729,
+      976,  976,  976, 1090, 1090,  735,  735,  735,  735,  729,
+      729,  730, 1091, 1091,  744, 1092,  976,  976,  976, 1092,
+      750,  750,  750,  750,  750,  744,  744,  745,  976,  976,
+     1093, 1093,  762,  762,  762,  763,  976,  976, 1094, 1094,
+      770, 1095, 1095,  773,  976,  976, 1096, 1096,  778,  976,
+      976, 1097, 1097,  783, 1098, 1098,  786,  976,  976, 1099,
+     1099,  791,  976,  976,  976, 1100, 1100,  797,  797,  797,
+
+      797,  976,  976, 1101, 1101,  805,  976,  976,  976, 1102,
+     1102,  811,  811,  811,  811,  805,  805,  806, 1103, 1103,
+      820, 1104,  976,  976,  976, 1104,  826,  826,  826,  826,
+      826,  820,  820,  821,  976,  976, 1105, 1105,  838,  838,
+      838,  839,  976,  976, 1106, 1106,  846, 1107, 1107,  849,
+      976,  976, 1108, 1108,  854, 1109, 1110, 1110, 1110,  976,
+      976, 1111, 1111, 1112, 1112,  976,  976, 1113, 1113, 1114,
+     1114,  976,  976, 1115, 1115, 1116, 1116,  976,  976,  797,
+      797,  806,  805,  809,  976,  811,  811,  821,  820,  825,
+      976,  826,  826,  839,  838, 1109, 1110, 1110,  976,  976,
+
+      863,  863,  863,  865,  865,  865,  976,  976,  869,  869,
+      869,  871,  871,  871,  976,  976,  875,  875,  875,  877,
+      877,  877,  976,  976,  797,  797,  797,  805,  805,  806,
+      976,  976,  811,  811,  811,  820,  820,  821,  976,  836,
+      826,  826,  826,  838,  838,  839, 1109, 1110, 1110, 1109,
+     1110, 1110, 1109, 1110, 1109, 1109, 1117, 1117,  976, 1117,
+     1117,  976,  976, 1118, 1117,  976, 1117, 1119, 1118, 1118,
+     1118, 1119, 1119, 1119, 1119,    0,  976,  976,  976,  976,
+      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
+      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
+
+      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
+      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
+      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
+      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
+      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
+      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
+      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
+      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
+      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
+      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
+
+      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
+      976,  976,  976,  976,  976,  976,  976,  976,  976
+    } ;
+
+static yyconst flex_int16_t yy_nxt[8681] =
+    {   0,
+      976,   47,   48,   47,   47,  976,  463,   49,   47,   48,
+       47,   47,  131,  231,   49,   46,   47,   48,   47,   47,
+       50,   46,   51,   46,   46,   46,   52,   52,   52,   52,
+       50,   50,   53,   54,   50,   55,   50,   50,   56,   50,
+       57,   58,   50,   59,   60,   50,   50,   46,   46,   46,
+       50,   61,   62,   50,   50,   50,   50,   50,   50,   50,
+       50,   50,   50,   47,   48,   47,   47,  144,  145,   51,
+       69,   70,   71,   71,   71,   71,  150,  151,  151,  151,
+      151,   63,   64,   69,   70,   71,   71,   71,   71,  463,
+       65,   47,   48,   47,   47,  131,  231,   51,   72,   46,
+
+       73,   74,   74,   74,  152,  152,  152,  152,  976,   63,
+       64,   72,   46,   73,   74,   74,   74,  319,   65,   47,
+       48,   47,   47,  612,  976,   51,  132,   66,   67,   68,
+       68,   68,   68,  156,  157,  157,  157,  157,   64,   75,
+       46,   76,   77,   77,   77,   75,   46,   76,   77,   77,
+       77,   78,   79,   80,   80,   80,   80,   78,   79,   80,
+       80,   80,   80,   47,   48,   47,   47,  132,   82,   83,
+       47,   48,   47,   47,  270,   82,   83,  158,  158,  158,
+      158,  428,   84,   85,   86,   87,   87,   87,   87,   84,
+       85,   86,   87,   87,   87,   87,   88,   89,   90,   90,
+
+       90,   90,   88,   89,   90,   90,   90,   90,   91,   92,
+       93,   93,   93,   93,   91,   92,   93,   93,   93,   93,
+       94,   95,   96,   96,   96,   96,  374,  120,   48,  120,
+      120,   97,  121,  122,  120,   48,  120,  120,  132,  121,
+      122,  132,  374,   98,  353,   99,   94,   95,   96,   96,
+       96,   96,  128,  132,  128,  128,  896,   97,  129,  123,
+      235,  133,  120,   48,  120,  120,  123,  124,  122,   98,
+      132,   99,  100,  101,  102,  102,  102,  102,  132,  120,
+       48,  120,  120,   97,  124,  122,  131,  231,  156,  157,
+      157,  157,  157,  354,  123,   98,  159,   99,  100,  101,
+
+      102,  102,  102,  102,  160,  160,  160,  160,  953,   97,
+      319,  123,  131,  231,  159,  164,  164,  164,  164,  950,
+      263,   98,  132,   99,  103,   46,  104,  105,  105,  105,
+      164,  164,  164,  164,  270,   97,  263,  125,   46,  126,
+      127,  127,  127,  168,  168,  168,  168,   98,   46,   99,
+      103,   46,  104,  105,  105,  105,  166,  167,  167,  167,
+      167,   97,  954,  125,   46,  126,  127,  127,  127,  178,
+      178,  178,  178,   98,   46,   99,  106,  107,  108,  108,
+      108,  108,  176,  177,  177,  177,  177,   97,  164,  164,
+      164,  164,  131,  952,  131,  131,  614,  131,  174,   98,
+
+      615,   99,  106,  107,  108,  108,  108,  108,  165,  182,
+      182,  182,  182,   97,  176,  177,  177,  177,  177,  951,
+      132,  949,  179,  132,  165,   98,  856,   99,   47,   48,
+       47,   47,  948,  110,  111,  180,  181,  181,  181,  181,
+      179,  186,  187,  187,  187,  187,  699,  112,  188,  188,
+      188,  188,  192,  193,  193,  193,  193,  720,  723,   98,
+      387,   99,   47,   48,   47,   47,  898,  110,  111,  194,
+      194,  194,  194,  199,  200,  200,  200,  200,  387,  720,
+      723,  112,  201,  201,  201,  201,  199,  200,  200,  200,
+      200,  470,  473,   98,  202,   99,  113,  114,  115,  115,
+
+      115,  115,  203,  203,  203,  203,  897,   97,  203,  203,
+      203,  203,  202,  203,  203,  203,  203,  470,  473,   98,
+      859,   99,  113,  114,  115,  115,  115,  115,  204,  207,
+      207,  207,  207,   97,  205,  206,  206,  206,  206,  215,
+      216,  216,  216,  216,  204,   98,  858,   99,  116,  117,
+      118,  118,  118,  118,  418,  131,  857,  131,  131,   97,
+      131,  213,  217,  217,  217,  217,  221,  222,  222,  222,
+      222,   98,  418,   99,  116,  117,  118,  118,  118,  118,
+      223,  223,  223,  223,  703,   97,  131,  228,  131,  228,
+      228,  263,  128,  229,  128,  128,  620,   98,  129,   99,
+
+      153,  153,  153,  153,  626,  702,  154,  263,  132,  150,
+      151,  151,  151,  151,  620,  734,  737,  155,  233,  233,
+      233,  233,  626,  233,  233,  233,  233,  233,  233,  233,
+      233,  152,  152,  152,  152,  155,  161,  161,  161,  161,
+      132,  701,  162,  234,  947,  955,  160,  160,  160,  160,
+      976,  152,  152,  152,  152,  734,  737,  256,  256,  234,
+      257,  257,  257,  257,  274,  277,  163,  158,  158,  158,
+      158,  156,  157,  157,  157,  157,  274,  277,  700,  159,
+      387,  651,  163,  169,  169,  169,  169,  657,  616,  170,
+      750,  753,  166,  167,  167,  167,  167,  159,  387,  651,
+
+      171,  158,  158,  158,  158,  657,  258,  258,  159,  259,
+      259,  259,  259,  164,  164,  164,  164,  613,  171,  183,
+      183,  183,  183,  750,  753,  184,  159,  661,  180,  181,
+      181,  181,  181,  132,  667,  260,  185,  261,  262,  262,
+      262,  161,  161,  161,  161,  661,  435,  162,  168,  168,
+      168,  168,  667,  418,  185,  189,  189,  189,  189,  485,
+      488,  190,  692,  956,  186,  187,  187,  187,  187,  485,
+      488,  418,  191,  976,  168,  168,  168,  168,  280,  280,
+      692,  281,  281,  281,  281,  178,  178,  178,  178,  132,
+      191,  195,  195,  195,  195,  434,  957,  196,  433,  432,
+
+      192,  193,  193,  193,  193,  431,  430,  131,  197,  131,
+      131,  429,  131,  174,  131,  363,  131,  131,  362,  131,
+      174,  182,  182,  182,  182,  698,  197,  208,  208,  208,
+      208,  361,  620,  209,  626,  360,  205,  206,  206,  206,
+      206,  863,  869,  698,  210,  176,  177,  177,  177,  177,
+      620,  359,  626,  179,  178,  178,  178,  178,  358,  863,
+      869,  179,  210,  218,  218,  218,  218,  357,  356,  219,
+      355,  179,  215,  216,  216,  216,  216,  246,  245,  179,
+      220,  282,  282,  244,  283,  283,  283,  283,  976,  182,
+      182,  182,  182,  188,  188,  188,  188,  243,  220,  224,
+
+      224,  224,  224,  242,  241,  225,  240,  239,  221,  222,
+      222,  222,  222,  238,  293,  293,  226,  294,  294,  294,
+      294,  976,  188,  188,  188,  188,  304,  304,  237,  305,
+      305,  305,  305,  236,  226,  153,  153,  153,  153,  132,
+      132,  154,  132,  247,  248,  249,  249,  249,  249,  251,
+      153,  251,  251,  232,  875,  252,  214,  253,  254,  255,
+      255,  255,  255,  264,  161,  264,  264,  198,  175,  265,
+      149,  266,  875,  267,  268,  268,  268,  169,  169,  169,
+      169,  148,  147,  170,  146,  271,  272,  273,  273,  273,
+      273,  275,  169,  275,  275,  143,  142,  276,  141,  277,
+
+      278,  279,  279,  279,  279,  183,  183,  183,  183,  140,
+      139,  184,  138,  284,  285,  286,  286,  286,  286,  288,
+      183,  288,  288,  137,  136,  289,  132,  290,  291,  292,
+      292,  292,  292,  189,  189,  189,  189,  976,  976,  190,
+      976,  295,  296,  297,  297,  297,  297,  299,  189,  299,
+      299,  976,  976,  300,  976,  301,  302,  303,  303,  303,
+      303,  194,  194,  194,  194,  976,  194,  194,  194,  194,
+      195,  195,  195,  195,  976,  976,  196,  976,  306,  307,
+      308,  308,  308,  308,  310,  195,  310,  310,  976,  976,
+      311,  976,  312,  313,  314,  314,  314,  314,  315,  315,
+
+      976,  316,  316,  316,  316,  201,  201,  201,  201,  199,
+      200,  200,  200,  200,  976,  976,  651,  202,  201,  201,
+      201,  201,  657,  317,  317,  202,  318,  318,  318,  318,
+      203,  203,  203,  203,  651,  202,  207,  207,  207,  207,
+      657,  976,  976,  202,  976,  207,  207,  207,  207,  208,
+      208,  208,  208,  976,  976,  209,  976,  320,  321,  322,
+      322,  322,  322,  324,  208,  324,  324,  661,  976,  325,
+      667,  326,  327,  328,  328,  328,  328,  329,  329,  976,
+      330,  330,  330,  330,  131,  661,  131,  131,  667,  131,
+      213,  131,  976,  131,  131,  976,  131,  213,  217,  217,
+
+      217,  217,  976,  217,  217,  217,  217,  340,  340,  976,
+      341,  341,  341,  341,  881,  131,  976,  131,  223,  223,
+      223,  223,  131,  887,  131,  218,  218,  218,  218,  976,
+      976,  219,  881,  976,  215,  216,  216,  216,  216,  976,
+      976,  887,  220,  976,  223,  223,  223,  223,  351,  351,
+      893,  352,  352,  352,  352,  233,  233,  233,  233,  976,
+      220,  218,  218,  218,  218,  976,  976,  219,  893,  331,
+      332,  333,  333,  333,  333,  335,  218,  335,  335,  692,
+      976,  336,  976,  337,  338,  339,  339,  339,  339,  224,
+      224,  224,  224,  976,  976,  225,  976,  692,  221,  222,
+
+      222,  222,  222,  698,  976,  228,  226,  228,  228,  976,
+      976,  229,  248,  249,  249,  249,  249,  364,  364,  364,
+      364,  698,  976,  976,  226,  224,  224,  224,  224,  976,
+      976,  225,  976,  342,  343,  344,  344,  344,  344,  346,
+      224,  346,  346,  976,  976,  347,  976,  348,  349,  350,
+      350,  350,  350,  365,  365,  365,  365,  976,  976,  366,
+      976,  976,  248,  249,  249,  249,  249,  976,  976,  976,
+      367,  368,  368,  368,  368,  257,  257,  257,  257,  259,
+      259,  259,  259,  259,  259,  259,  259,  976,  367,  251,
+      153,  251,  251,  976,  976,  252,  976,  253,  254,  255,
+
+      255,  255,  255,  251,  153,  251,  251,  976,  976,  252,
+      976,  253,  254,  255,  255,  255,  255,  369,  370,  369,
+      369,  976,  976,  371,  262,  262,  262,  262,  262,  262,
+      262,  262,  976,  976,  372,  976,  976,  262,  262,  262,
+      262,  161,  161,  161,  161,  976,  976,  162,  375,  375,
+      375,  375,  372,  153,  153,  153,  153,  373,  976,  154,
+      976,  976,  976,  257,  257,  257,  257,  272,  273,  273,
+      273,  273,  976,  373,  264,  161,  264,  264,  959,  960,
+      265,  976,  266,  961,  267,  268,  268,  268,  264,  161,
+      264,  264,  959,  960,  265,  976,  266,  961,  267,  268,
+
+      268,  268,  376,  376,  376,  376,  976,  976,  377,  976,
+      976,  272,  273,  273,  273,  273,  976,  976,  976,  378,
+      379,  379,  379,  379,  281,  281,  281,  281,  283,  283,
+      283,  283,  283,  283,  283,  283,  976,  378,  275,  169,
+      275,  275,  976,  976,  276,  976,  277,  278,  279,  279,
+      279,  279,  275,  169,  275,  275,  976,  976,  276,  976,
+      277,  278,  279,  279,  279,  279,  380,  381,  380,  380,
+      976,  976,  382,  285,  286,  286,  286,  286,  384,  384,
+      384,  384,  976,  383,  285,  286,  286,  286,  286,  976,
+      976,  976,  385,  386,  386,  386,  386,  294,  294,  294,
+
+      294,  383,  169,  169,  169,  169,  959,  960,  170,  976,
+      385,  961,  281,  281,  281,  281,  288,  183,  288,  288,
+      976,  976,  289,  976,  290,  291,  292,  292,  292,  292,
+      183,  183,  183,  183,  976,  976,  184,  976,  976,  976,
+      294,  294,  294,  294,  296,  297,  297,  297,  297,  388,
+      388,  388,  388,  389,  389,  389,  389,  976,  976,  390,
+      976,  976,  296,  297,  297,  297,  297,  976,  976,  976,
+      391,  392,  392,  392,  392,  976,  393,  394,  393,  393,
+      976,  976,  395,  305,  305,  305,  305,  976,  391,  299,
+      189,  299,  299,  396,  976,  300,  976,  301,  302,  303,
+
+      303,  303,  303,  307,  308,  308,  308,  308,  976,  720,
+      723,  396,  189,  189,  189,  189,  976,  976,  190,  863,
+      976,  976,  305,  305,  305,  305,  397,  397,  397,  397,
+      398,  398,  398,  398,  976,  976,  399,  863,  976,  307,
+      308,  308,  308,  308,  976,  976,  976,  400,  401,  401,
+      401,  401,  976,  402,  403,  402,  402,  976,  976,  404,
+      316,  316,  316,  316,  976,  400,  310,  195,  310,  310,
+      405,  976,  311,  976,  312,  313,  314,  314,  314,  314,
+      318,  318,  318,  318,  318,  318,  318,  318,  405,  195,
+      195,  195,  195,  976,  976,  196,  976,  976,  976,  316,
+
+      316,  316,  316,  321,  322,  322,  322,  322,  406,  406,
+      406,  406,  407,  407,  407,  407,  976,  976,  408,  976,
+      976,  321,  322,  322,  322,  322,  976,  976,  976,  409,
+      410,  410,  410,  410,  976,  411,  412,  411,  411,  976,
+      976,  413,  330,  330,  330,  330,  976,  409,  324,  208,
+      324,  324,  414,  976,  325,  976,  326,  327,  328,  328,
+      328,  328,  332,  333,  333,  333,  333,  976,  734,  737,
+      414,  208,  208,  208,  208,  976,  976,  209,  869,  976,
+      976,  330,  330,  330,  330,  415,  415,  415,  415,  332,
+      333,  333,  333,  333,  976,  976,  869,  416,  417,  417,
+
+      417,  417,  341,  341,  341,  341,  343,  344,  344,  344,
+      344,  419,  419,  419,  419,  416,  335,  218,  335,  335,
+      976,  976,  336,  976,  337,  338,  339,  339,  339,  339,
+      218,  218,  218,  218,  976,  976,  219,  976,  750,  753,
+      341,  341,  341,  341,  420,  420,  420,  420,  875,  976,
+      421,  976,  976,  343,  344,  344,  344,  344,  976,  976,
+      976,  422,  423,  423,  423,  423,  875,  424,  425,  424,
+      424,  976,  976,  426,  352,  352,  352,  352,  976,  422,
+      346,  224,  346,  346,  427,  976,  347,  976,  348,  349,
+      350,  350,  350,  350,  976,  364,  364,  364,  364,  976,
+
+      976,  976,  427,  224,  224,  224,  224,  976,  976,  225,
+      976,  976,  976,  352,  352,  352,  352,  365,  365,  365,
+      365,  976,  976,  366,  976,  436,  437,  438,  438,  438,
+      438,  440,  365,  440,  440,  976,  976,  441,  976,  442,
+      443,  444,  444,  444,  444,  445,  445,  976,  446,  446,
+      446,  446,  369,  370,  369,  369,  976,  976,  371,  976,
+      976,  976,  368,  368,  368,  368,  976,  460,  461,  372,
+      462,  462,  462,  462,  976,  375,  375,  375,  375,  476,
+      476,  976,  477,  477,  477,  477,  976,  372,  447,  448,
+      449,  449,  449,  449,  976,  976,  976,  250,  384,  384,
+
+      384,  384,  976,  494,  494,  385,  495,  495,  495,  495,
+      437,  438,  438,  438,  438,  250,  370,  370,  370,  370,
+      976,  976,  450,  385,  451,  452,  453,  453,  453,  453,
+      455,  370,  455,  455,  976,  976,  456,  976,  457,  458,
+      459,  459,  459,  459,  464,  465,  465,  465,  466,  466,
+      466,  466,  466,  508,  508,  976,  509,  509,  509,  509,
+      535,  535,  976,  536,  536,  536,  536,  976,  466,  466,
+      466,  376,  376,  376,  376,  976,  976,  377,  976,  467,
+      468,  469,  469,  469,  469,  471,  376,  471,  471,  976,
+      976,  472,  976,  473,  474,  475,  475,  475,  475,  380,
+
+      381,  380,  380,  976,  976,  382,  976,  976,  976,  379,
+      379,  379,  379,  976,  562,  562,  383,  563,  563,  563,
+      563,  415,  415,  415,  415,  976,  580,  580,  416,  581,
+      581,  581,  581,  976,  383,  478,  479,  480,  480,  480,
+      480,  976,  976,  976,  274,  976,  416,  594,  594,  976,
+      595,  595,  595,  595,  617,  617,  617,  617,  619,  619,
+      619,  619,  274,  381,  381,  381,  381,  976,  976,  481,
+      976,  482,  483,  484,  484,  484,  484,  486,  381,  486,
+      486,  976,  976,  487,  976,  488,  489,  490,  490,  490,
+      490,  275,  169,  275,  275,  976,  976,  276,  491,  492,
+
+      976,  493,  493,  493,  493,  976,  976,  976,  274,  446,
+      446,  446,  446,  976,  976,  437,  438,  438,  438,  438,
+      976,  976,  976,  618,  976,  976,  274,  288,  183,  288,
+      288,  976,  976,  289,  976,  290,  291,  386,  386,  386,
+      386,  618,  976,  976,  387,  452,  453,  453,  453,  453,
+      623,  623,  623,  623,  625,  625,  625,  625,  462,  462,
+      462,  462,  387,  288,  183,  288,  288,  976,  976,  289,
+      496,  497,  291,  498,  498,  498,  498,  389,  389,  389,
+      389,  976,  976,  390,  976,  976,  976,  388,  388,  388,
+      388,  976,  976,  976,  391,  462,  462,  462,  462,  468,
+
+      469,  469,  469,  469,  627,  627,  627,  627,  631,  631,
+      631,  631,  391,  389,  389,  389,  389,  976,  976,  390,
+      976,  499,  500,  501,  501,  501,  501,  503,  389,  503,
+      503,  976,  976,  504,  976,  505,  506,  507,  507,  507,
+      507,  393,  394,  393,  393,  976,  976,  395,  976,  301,
+      302,  392,  392,  392,  392,  976,  976,  976,  396,  477,
+      477,  477,  477,  483,  484,  484,  484,  484,  641,  641,
+      641,  641,  644,  644,  644,  644,  396,  393,  394,  393,
+      393,  976,  976,  395,  976,  510,  511,  512,  512,  512,
+      512,  394,  394,  394,  394,  976,  976,  513,  976,  514,
+
+      515,  516,  516,  516,  516,  518,  394,  518,  518,  976,
+      976,  519,  976,  520,  521,  522,  522,  522,  522,  299,
+      189,  299,  299,  976,  976,  300,  523,  524,  302,  525,
+      525,  525,  525,  398,  398,  398,  398,  976,  976,  399,
+      976,  976,  976,  397,  397,  397,  397,  976,  976,  976,
+      400,  493,  493,  493,  493,  493,  493,  493,  493,  495,
+      495,  495,  495,  495,  495,  495,  495,  976,  400,  398,
+      398,  398,  398,  976,  976,  399,  976,  526,  527,  528,
+      528,  528,  528,  530,  398,  530,  530,  976,  976,  531,
+      976,  532,  533,  534,  534,  534,  534,  402,  403,  402,
+
+      402,  976,  976,  404,  976,  312,  313,  401,  401,  401,
+      401,  976,  976,  976,  405,  500,  501,  501,  501,  501,
+      648,  648,  648,  648,  650,  650,  650,  650,  509,  509,
+      509,  509,  405,  402,  403,  402,  402,  976,  976,  404,
+      976,  537,  538,  539,  539,  539,  539,  403,  403,  403,
+      403,  976,  976,  540,  976,  541,  542,  543,  543,  543,
+      543,  545,  403,  545,  545,  976,  976,  546,  976,  547,
+      548,  549,  549,  549,  549,  310,  195,  310,  310,  976,
+      976,  311,  550,  551,  313,  552,  552,  552,  552,  407,
+      407,  407,  407,  976,  976,  408,  976,  976,  976,  406,
+
+      406,  406,  406,  976,  976,  976,  409,  515,  516,  516,
+      516,  516,  654,  654,  654,  654,  656,  656,  656,  656,
+      525,  525,  525,  525,  409,  407,  407,  407,  407,  976,
+      976,  408,  976,  553,  554,  555,  555,  555,  555,  557,
+      407,  557,  557,  976,  976,  558,  976,  559,  560,  561,
+      561,  561,  561,  411,  412,  411,  411,  976,  976,  413,
+      976,  326,  327,  410,  410,  410,  410,  976,  976,  976,
+      414,  525,  525,  525,  525,  527,  528,  528,  528,  528,
+      658,  658,  658,  658,  660,  660,  660,  660,  414,  411,
+      412,  411,  411,  976,  976,  413,  976,  564,  565,  566,
+
+      566,  566,  566,  412,  412,  412,  412,  976,  976,  567,
+      976,  568,  569,  570,  570,  570,  570,  572,  412,  572,
+      572,  976,  976,  573,  976,  574,  575,  576,  576,  576,
+      576,  324,  208,  324,  324,  976,  976,  325,  577,  578,
+      327,  579,  579,  579,  579,  335,  218,  335,  335,  976,
+      976,  336,  976,  337,  338,  417,  417,  417,  417,  976,
+      976,  976,  418,  536,  536,  536,  536,  976,  632,  633,
+      632,  632,  976,  976,  634,  542,  543,  543,  543,  543,
+      418,  335,  218,  335,  335,  635,  976,  336,  582,  583,
+      338,  584,  584,  584,  584,  420,  420,  420,  420,  976,
+
+      976,  421,  976,  635,  976,  419,  419,  419,  419,  976,
+      976,  976,  422,  664,  664,  664,  664,  666,  666,  666,
+      666,  552,  552,  552,  552,  552,  552,  552,  552,  976,
+      422,  420,  420,  420,  420,  976,  976,  421,  976,  585,
+      586,  587,  587,  587,  587,  589,  420,  589,  589,  976,
+      976,  590,  976,  591,  592,  593,  593,  593,  593,  424,
+      425,  424,  424,  976,  976,  426,  976,  348,  349,  423,
+      423,  423,  423,  976,  976,  976,  427,  554,  555,  555,
+      555,  555,  668,  668,  668,  668,  672,  672,  672,  672,
+      563,  563,  563,  563,  427,  424,  425,  424,  424,  976,
+
+      976,  426,  976,  596,  597,  598,  598,  598,  598,  425,
+      425,  425,  425,  976,  976,  599,  976,  600,  601,  602,
+      602,  602,  602,  604,  425,  604,  604,  976,  976,  605,
+      976,  606,  607,  608,  608,  608,  608,  346,  224,  346,
+      346,  976,  976,  347,  609,  610,  349,  611,  611,  611,
+      611,  440,  365,  440,  440,  976,  976,  441,  976,  442,
+      443,  444,  444,  444,  444,  440,  365,  440,  440,  976,
+      976,  441,  976,  442,  443,  444,  444,  444,  444,  365,
+      365,  365,  365,  976,  976,  366,  976,  976,  976,  446,
+      446,  446,  446,  251,  153,  251,  251,  976,  976,  252,
+
+      976,  253,  448,  449,  449,  449,  449,  251,  153,  251,
+      251,  976,  976,  252,  976,  253,  254,  621,  621,  621,
+      621,  369,  370,  369,  369,  976,  976,  371,  976,  976,
+      448,  449,  449,  449,  449,  976,  976,  976,  622,  569,
+      570,  570,  570,  570,  645,  638,  645,  645,  976,  976,
+      646,  682,  682,  682,  682,  976,  622,  455,  370,  455,
+      455,  647,  976,  456,  976,  457,  458,  459,  459,  459,
+      459,  365,  365,  365,  365,  976,  976,  366,  976,  647,
+      452,  453,  453,  453,  453,  976,  976,  976,  624,  685,
+      685,  685,  685,  976,  976,  254,  462,  462,  462,  462,
+
+      976,  976,  976,  372,  976,  976,  624,  455,  370,  455,
+      455,  976,  976,  456,  976,  457,  458,  459,  459,  459,
+      459,  372,  263,  264,  161,  264,  264,  263,  263,  265,
+      263,  266,  263,  464,  465,  465,  465,  466,  466,  466,
+      466,  466,  263,  263,  263,  263,  263,  263,  263,  263,
+      263,  263,  263,  374,  263,  263,  263,  466,  466,  466,
+      263,  263,  263,  263,  263,  263,  263,  263,  263,  374,
+      628,  628,  628,  628,  976,  976,  629,  976,  976,  468,
+      469,  469,  469,  469,  976,  976,  976,  630,  579,  579,
+      579,  579,  579,  579,  579,  579,  581,  581,  581,  581,
+
+      581,  581,  581,  581,  976,  630,  471,  376,  471,  471,
+      976,  976,  472,  976,  473,  474,  475,  475,  475,  475,
+      471,  376,  471,  471,  976,  976,  472,  976,  473,  474,
+      475,  475,  475,  475,  376,  376,  376,  376,  976,  976,
+      377,  976,  976,  976,  477,  477,  477,  477,  275,  169,
+      275,  275,  976,  976,  276,  976,  277,  479,  480,  480,
+      480,  480,  275,  169,  275,  275,  976,  976,  276,  976,
+      277,  278,  636,  636,  636,  636,  637,  638,  637,  637,
+      976,  976,  639,  976,  976,  479,  480,  480,  480,  480,
+      976,  976,  976,  640,  586,  587,  587,  587,  587,  673,
+
+      674,  673,  673,  976,  976,  675,  689,  689,  689,  689,
+      976,  640,  486,  381,  486,  486,  676,  976,  487,  976,
+      488,  489,  490,  490,  490,  490,  633,  633,  633,  633,
+      976,  976,  642,  976,  676,  483,  484,  484,  484,  484,
+      976,  976,  976,  643,  691,  691,  691,  691,  976,  686,
+      679,  686,  686,  976,  976,  687,  595,  595,  595,  595,
+      976,  643,  486,  381,  486,  486,  688,  976,  487,  976,
+      488,  489,  490,  490,  490,  490,  380,  381,  380,  380,
+      976,  976,  382,  976,  688,  976,  493,  493,  493,  493,
+      976,  976,  976,  383,  601,  602,  602,  602,  602,  695,
+
+      695,  695,  695,  697,  697,  697,  697,  611,  611,  611,
+      611,  383,  288,  183,  288,  288,  976,  976,  289,  976,
+      290,  291,  498,  498,  498,  498,  288,  183,  288,  288,
+      976,  976,  289,  976,  290,  291,  498,  498,  498,  498,
+      500,  501,  501,  501,  501,  976,  976,  976,  649,  611,
+      611,  611,  611,  704,  704,  976,  705,  705,  705,  705,
+      705,  705,  705,  705,  976,  976,  649,  503,  389,  503,
+      503,  976,  976,  504,  976,  505,  506,  507,  507,  507,
+      507,  503,  389,  503,  503,  976,  976,  504,  976,  505,
+      506,  507,  507,  507,  507,  389,  389,  389,  389,  976,
+
+      976,  390,  976,  976,  976,  509,  509,  509,  509,  299,
+      189,  299,  299,  976,  976,  300,  976,  301,  511,  512,
+      512,  512,  512,  299,  189,  299,  299,  976,  976,  300,
+      976,  301,  302,  652,  652,  652,  652,  393,  394,  393,
+      393,  976,  976,  395,  976,  976,  511,  512,  512,  512,
+      512,  976,  976,  976,  653,  617,  617,  617,  617,  976,
+      712,  712,  618,  713,  713,  713,  713,  705,  705,  705,
+      705,  976,  653,  518,  394,  518,  518,  976,  976,  519,
+      618,  520,  521,  522,  522,  522,  522,  389,  389,  389,
+      389,  976,  976,  390,  976,  976,  515,  516,  516,  516,
+
+      516,  976,  726,  726,  655,  727,  727,  727,  727,  976,
+      976,  302,  525,  525,  525,  525,  976,  976,  976,  396,
+      976,  976,  655,  518,  394,  518,  518,  976,  976,  519,
+      976,  520,  521,  522,  522,  522,  522,  396,  527,  528,
+      528,  528,  528,  976,  759,  759,  659,  760,  760,  760,
+      760,  767,  767,  976,  768,  768,  768,  768,  713,  713,
+      713,  713,  976,  976,  659,  530,  398,  530,  530,  976,
+      976,  531,  976,  532,  533,  534,  534,  534,  534,  530,
+      398,  530,  530,  976,  976,  531,  976,  532,  533,  534,
+      534,  534,  534,  398,  398,  398,  398,  976,  976,  399,
+
+      976,  976,  976,  536,  536,  536,  536,  310,  195,  310,
+      310,  976,  976,  311,  976,  312,  538,  539,  539,  539,
+      539,  310,  195,  310,  310,  976,  976,  311,  976,  312,
+      313,  662,  662,  662,  662,  402,  403,  402,  402,  976,
+      976,  404,  976,  976,  538,  539,  539,  539,  539,  976,
+      976,  976,  663,  648,  648,  648,  648,  976,  775,  775,
+      649,  776,  776,  776,  776,  718,  719,  719,  719,  719,
+      663,  545,  403,  545,  545,  976,  976,  546,  649,  547,
+      548,  549,  549,  549,  549,  398,  398,  398,  398,  976,
+      976,  399,  976,  976,  542,  543,  543,  543,  543,  976,
+
+      780,  780,  665,  781,  781,  781,  781,  976,  976,  313,
+      552,  552,  552,  552,  976,  976,  976,  405,  976,  976,
+      665,  545,  403,  545,  545,  976,  976,  546,  976,  547,
+      548,  549,  549,  549,  549,  405,  669,  669,  669,  669,
+      976,  976,  670,  976,  976,  554,  555,  555,  555,  555,
+      976,  976,  976,  671,  658,  658,  658,  658,  976,  788,
+      788,  659,  789,  789,  789,  789,  860,  860,  860,  860,
+      976,  671,  557,  407,  557,  557,  976,  976,  558,  659,
+      559,  560,  561,  561,  561,  561,  557,  407,  557,  557,
+      976,  976,  558,  976,  559,  560,  561,  561,  561,  561,
+
+      407,  407,  407,  407,  976,  976,  408,  976,  976,  976,
+      563,  563,  563,  563,  324,  208,  324,  324,  976,  976,
+      325,  976,  326,  565,  566,  566,  566,  566,  324,  208,
+      324,  324,  976,  976,  325,  976,  326,  327,  677,  677,
+      677,  677,  678,  679,  678,  678,  976,  976,  680,  976,
+      976,  565,  566,  566,  566,  566,  976,  802,  802,  681,
+      803,  803,  803,  803,  835,  835,  976,  836,  836,  836,
+      836,  862,  862,  862,  862,  976,  976,  681,  572,  412,
+      572,  572,  976,  976,  573,  976,  574,  575,  576,  576,
+      576,  576,  674,  674,  674,  674,  976,  976,  683,  976,
+
+      976,  569,  570,  570,  570,  570,  976,  976,  976,  684,
+      689,  689,  689,  689,  976,  843,  843,  690,  844,  844,
+      844,  844,  727,  727,  727,  727,  976,  684,  572,  412,
+      572,  572,  976,  976,  573,  690,  574,  575,  576,  576,
+      576,  576,  411,  412,  411,  411,  976,  976,  413,  976,
+      976,  976,  579,  579,  579,  579,  976,  851,  851,  414,
+      852,  852,  852,  852,  732,  733,  733,  733,  733,  866,
+      866,  866,  866,  868,  868,  868,  868,  414,  335,  218,
+      335,  335,  976,  976,  336,  976,  337,  338,  584,  584,
+      584,  584,  335,  218,  335,  335,  976,  976,  336,  976,
+
+      337,  338,  584,  584,  584,  584,  586,  587,  587,  587,
+      587,  976,  976,  976,  690,  742,  742,  742,  742,  742,
+      742,  742,  742,  748,  749,  749,  749,  749,  872,  872,
+      872,  872,  690,  589,  420,  589,  589,  976,  976,  590,
+      976,  591,  592,  593,  593,  593,  593,  589,  420,  589,
+      589,  976,  976,  590,  976,  591,  592,  593,  593,  593,
+      593,  420,  420,  420,  420,  976,  976,  421,  976,  976,
+      976,  595,  595,  595,  595,  346,  224,  346,  346,  976,
+      976,  347,  976,  348,  597,  598,  598,  598,  598,  346,
+      224,  346,  346,  976,  976,  347,  976,  348,  349,  693,
+
+      693,  693,  693,  424,  425,  424,  424,  976,  976,  426,
+      976,  976,  597,  598,  598,  598,  598,  976,  976,  976,
+      694,  874,  874,  874,  874,  976,  369,  370,  369,  369,
+      976,  976,  371,  758,  758,  758,  758,  976,  694,  604,
+      425,  604,  604,  372,  976,  605,  976,  606,  607,  608,
+      608,  608,  608,  420,  420,  420,  420,  976,  976,  421,
+      976,  372,  601,  602,  602,  602,  602,  976,  976,  976,
+      696,  758,  758,  758,  758,  976,  976,  349,  611,  611,
+      611,  611,  976,  976,  976,  427,  976,  976,  696,  604,
+      425,  604,  604,  976,  976,  605,  976,  606,  607,  608,
+
+      608,  608,  608,  427,  440,  365,  440,  440,  976,  976,
+      441,  976,  442,  443,  619,  619,  619,  619,  976,  976,
+      976,  620,  760,  760,  760,  760,  766,  766,  766,  766,
+      766,  766,  766,  766,  768,  768,  768,  768,  976,  620,
+      440,  365,  440,  440,  976,  976,  441,  706,  707,  443,
+      708,  708,  708,  708,  369,  370,  369,  369,  976,  976,
+      371,  976,  253,  254,  621,  621,  621,  621,  976,  976,
+      976,  622,  768,  768,  768,  768,  976,  393,  394,  393,
+      393,  976,  976,  395,  776,  776,  776,  776,  976,  622,
+      251,  153,  251,  251,  396,  976,  252,  709,  710,  254,
+
+      711,  711,  711,  711,  365,  365,  365,  365,  976,  976,
+      366,  976,  396,  976,  623,  623,  623,  623,  976,  976,
+      976,  624,  781,  781,  781,  781,  976,  976,  718,  719,
+      719,  719,  719,  976,  976,  976,  861,  976,  976,  624,
+      455,  370,  455,  455,  976,  976,  456,  976,  457,  458,
+      625,  625,  625,  625,  861,  976,  976,  626,  781,  781,
+      781,  781,  976,  402,  403,  402,  402,  976,  976,  404,
+      789,  789,  789,  789,  976,  626,  455,  370,  455,  455,
+      405,  976,  456,  714,  715,  458,  716,  716,  716,  716,
+      628,  628,  628,  628,  976,  976,  629,  976,  405,  976,
+
+      627,  627,  627,  627,  976,  976,  976,  630,  794,  795,
+      795,  795,  795,  878,  878,  878,  878,  880,  880,  880,
+      880,  803,  803,  803,  803,  630,  628,  628,  628,  628,
+      976,  976,  629,  976,  717,  718,  719,  719,  719,  719,
+      721,  628,  721,  721,  976,  976,  722,  976,  723,  724,
+      725,  725,  725,  725,  632,  633,  632,  632,  976,  976,
+      634,  976,  473,  474,  631,  631,  631,  631,  976,  976,
+      976,  635,  808,  809,  809,  809,  809,  884,  884,  884,
+      884,  886,  886,  886,  886,  818,  818,  818,  818,  635,
+      632,  633,  632,  632,  976,  976,  634,  976,  728,  729,
+
+      730,  730,  730,  730,  633,  633,  633,  633,  976,  976,
+      642,  976,  731,  732,  733,  733,  733,  733,  735,  633,
+      735,  735,  976,  976,  736,  976,  737,  738,  739,  739,
+      739,  739,  471,  376,  471,  471,  976,  976,  472,  740,
+      741,  474,  742,  742,  742,  742,  637,  638,  637,  637,
+      976,  976,  639,  976,  277,  278,  636,  636,  636,  636,
+      976,  976,  976,  640,  818,  818,  818,  818,  824,  825,
+      825,  825,  825,  890,  890,  890,  890,  892,  892,  892,
+      892,  640,  637,  638,  637,  637,  976,  976,  639,  976,
+      743,  744,  745,  745,  745,  745,  638,  638,  638,  638,
+
+      976,  976,  746,  976,  747,  748,  749,  749,  749,  749,
+      751,  638,  751,  751,  976,  976,  752,  976,  753,  754,
+      755,  755,  755,  755,  275,  169,  275,  275,  976,  976,
+      276,  756,  757,  278,  758,  758,  758,  758,  633,  633,
+      633,  633,  976,  976,  642,  976,  976,  976,  641,  641,
+      641,  641,  976,  976,  976,  643,  834,  834,  834,  834,
+      834,  834,  834,  834,  836,  836,  836,  836,  842,  842,
+      842,  842,  976,  643,  735,  633,  735,  735,  976,  976,
+      736,  976,  737,  738,  739,  739,  739,  739,  645,  638,
+      645,  645,  976,  976,  646,  976,  488,  489,  644,  644,
+
+      644,  644,  976,  976,  976,  647,  842,  842,  842,  842,
+      844,  844,  844,  844,  844,  844,  844,  844,  852,  852,
+      852,  852,  976,  647,  645,  638,  645,  645,  976,  976,
+      646,  976,  761,  762,  763,  763,  763,  763,  751,  638,
+      751,  751,  976,  976,  752,  976,  753,  754,  755,  755,
+      755,  755,  486,  381,  486,  486,  976,  976,  487,  764,
+      765,  489,  766,  766,  766,  766,  503,  389,  503,  503,
+      976,  976,  504,  976,  505,  506,  650,  650,  650,  650,
+      976,  899,  899,  651,  900,  900,  900,  900,  907,  907,
+      976,  908,  908,  908,  908,  560,  882,  882,  882,  882,
+
+      976,  651,  503,  389,  503,  503,  976,  976,  504,  769,
+      770,  506,  771,  771,  771,  771,  393,  394,  393,  393,
+      976,  976,  395,  976,  301,  302,  652,  652,  652,  652,
+      976,  915,  915,  653,  916,  916,  916,  916,  976,  424,
+      425,  424,  424,  923,  923,  426,  924,  924,  924,  924,
+      976,  653,  299,  189,  299,  299,  427,  976,  300,  772,
+      773,  302,  774,  774,  774,  774,  389,  389,  389,  389,
+      976,  976,  390,  976,  427,  976,  654,  654,  654,  654,
+      976,  925,  926,  655,  927,  927,  927,  927,  976,  976,
+      474,  742,  742,  742,  742,  976,  976,  976,  635,  976,
+
+      976,  655,  518,  394,  518,  518,  976,  976,  519,  976,
+      520,  521,  656,  656,  656,  656,  635,  928,  929,  657,
+      930,  930,  930,  930,  976,  884,  884,  884,  884,  931,
+      931,  976,  932,  932,  932,  932,  976,  657,  518,  394,
+      518,  518,  976,  976,  519,  777,  778,  521,  779,  779,
+      779,  779,  530,  398,  530,  530,  976,  976,  531,  976,
+      532,  533,  660,  660,  660,  660,  976,  933,  934,  661,
+      935,  935,  935,  935,  327,  888,  888,  888,  888,  936,
+      937,  976,  938,  938,  938,  938,  976,  661,  530,  398,
+      530,  530,  976,  976,  531,  782,  783,  533,  784,  784,
+
+      784,  784,  402,  403,  402,  402,  976,  976,  404,  976,
+      312,  313,  662,  662,  662,  662,  976,  976,  976,  663,
+      976,  890,  890,  890,  890,  939,  939,  976,  940,  940,
+      940,  940,  575,  894,  894,  894,  894,  663,  310,  195,
+      310,  310,  976,  976,  311,  785,  786,  313,  787,  787,
+      787,  787,  398,  398,  398,  398,  976,  976,  399,  976,
+      976,  976,  664,  664,  664,  664,  976,  941,  942,  665,
+      943,  943,  943,  943,  976,  976,  278,  758,  758,  758,
+      758,  976,  976,  976,  383,  976,  976,  665,  545,  403,
+      545,  545,  976,  976,  546,  976,  547,  548,  666,  666,
+
+      666,  666,  383,  944,  945,  667,  946,  946,  946,  946,
+      900,  900,  900,  900,  900,  900,  900,  900,  908,  908,
+      908,  908,  976,  667,  545,  403,  545,  545,  976,  976,
+      546,  790,  791,  548,  792,  792,  792,  792,  669,  669,
+      669,  669,  976,  976,  670,  976,  976,  976,  668,  668,
+      668,  668,  976,  976,  976,  671,  860,  860,  860,  860,
+      976,  976,  976,  861,  916,  916,  916,  916,  924,  924,
+      924,  924,  976,  671,  669,  669,  669,  669,  976,  976,
+      670,  861,  793,  794,  795,  795,  795,  795,  797,  669,
+      797,  797,  976,  976,  798,  976,  799,  800,  801,  801,
+
+      801,  801,  673,  674,  673,  673,  976,  976,  675,  976,
+      559,  560,  672,  672,  672,  672,  976,  976,  976,  676,
+      878,  878,  878,  878,  976,  976,  976,  879,  924,  924,
+      924,  924,  927,  927,  927,  927,  976,  676,  673,  674,
+      673,  673,  976,  976,  675,  879,  804,  805,  806,  806,
+      806,  806,  674,  674,  674,  674,  976,  976,  683,  976,
+      807,  808,  809,  809,  809,  809,  811,  674,  811,  811,
+      976,  976,  812,  976,  813,  814,  815,  815,  815,  815,
+      557,  407,  557,  557,  976,  976,  558,  816,  817,  560,
+      818,  818,  818,  818,  678,  679,  678,  678,  976,  976,
+
+      680,  976,  326,  327,  677,  677,  677,  677,  976,  976,
+      976,  681,  880,  880,  880,  880,  976,  976,  976,  881,
+      927,  927,  927,  927,  930,  930,  930,  930,  976,  681,
+      678,  679,  678,  678,  976,  976,  680,  881,  819,  820,
+      821,  821,  821,  821,  679,  679,  679,  679,  976,  976,
+      822,  976,  823,  824,  825,  825,  825,  825,  827,  679,
+      827,  827,  976,  976,  828,  976,  829,  830,  831,  831,
+      831,  831,  324,  208,  324,  324,  976,  976,  325,  832,
+      833,  327,  834,  834,  834,  834,  674,  674,  674,  674,
+      976,  976,  683,  976,  976,  976,  682,  682,  682,  682,
+
+      976,  976,  976,  684,  886,  886,  886,  886,  976,  976,
+      976,  887,  930,  930,  930,  930,  932,  932,  932,  932,
+      976,  684,  811,  674,  811,  811,  976,  976,  812,  887,
+      813,  814,  815,  815,  815,  815,  686,  679,  686,  686,
+      976,  976,  687,  976,  574,  575,  685,  685,  685,  685,
+      976,  976,  976,  688,  892,  892,  892,  892,  976,  976,
+      976,  893,  935,  935,  935,  935,  935,  935,  935,  935,
+      976,  688,  686,  679,  686,  686,  976,  976,  687,  893,
+      837,  838,  839,  839,  839,  839,  827,  679,  827,  827,
+      976,  976,  828,  976,  829,  830,  831,  831,  831,  831,
+
+      572,  412,  572,  572,  976,  976,  573,  840,  841,  575,
+      842,  842,  842,  842,  589,  420,  589,  589,  976,  976,
+      590,  976,  591,  592,  691,  691,  691,  691,  976,  976,
+      976,  692,  938,  938,  938,  938,  938,  938,  938,  938,
+      940,  940,  940,  940,  940,  940,  940,  940,  976,  692,
+      589,  420,  589,  589,  976,  976,  590,  845,  846,  592,
+      847,  847,  847,  847,  424,  425,  424,  424,  976,  976,
+      426,  976,  348,  349,  693,  693,  693,  693,  976,  976,
+      976,  694,  943,  943,  943,  943,  943,  943,  943,  943,
+      946,  946,  946,  946,  946,  946,  946,  946,  976,  694,
+
+      346,  224,  346,  346,  976,  976,  347,  848,  849,  349,
+      850,  850,  850,  850,  420,  420,  420,  420,  976,  976,
+      421,  976,  976,  976,  695,  695,  695,  695,  976,  976,
+      962,  696,  963,  962,  976,  976,  964,  976,  489,  766,
+      766,  766,  766,  976,  976,  976,  647,  976,  976,  696,
+      604,  425,  604,  604,  976,  976,  605,  976,  606,  607,
+      697,  697,  697,  697,  647,  976,  976,  698,  965,  966,
+      967,  965,  976,  962,  968,  962,  962,  976,  962,  964,
+      962,  962,  976,  976,  964,  698,  604,  425,  604,  604,
+      976,  976,  605,  853,  854,  607,  855,  855,  855,  855,
+
+      440,  365,  440,  440,  976,  976,  441,  976,  442,  443,
+      708,  708,  708,  708,  440,  365,  440,  440,  976,  976,
+      441,  976,  442,  443,  708,  708,  708,  708,  251,  153,
+      251,  251,  976,  976,  252,  976,  253,  254,  711,  711,
+      711,  711,  251,  153,  251,  251,  976,  976,  252,  976,
+      253,  254,  711,  711,  711,  711,  365,  365,  365,  365,
+      976,  976,  366,  976,  976,  976,  713,  713,  713,  713,
+      455,  370,  455,  455,  976,  976,  456,  976,  457,  458,
+      716,  716,  716,  716,  455,  370,  455,  455,  976,  976,
+      456,  976,  457,  458,  716,  716,  716,  716,  721,  628,
+
+      721,  721,  976,  976,  722,  976,  723,  724,  725,  725,
+      725,  725,  721,  628,  721,  721,  976,  976,  722,  976,
+      723,  724,  725,  725,  725,  725,  628,  628,  628,  628,
+      976,  976,  629,  976,  976,  976,  727,  727,  727,  727,
+      471,  376,  471,  471,  976,  976,  472,  976,  473,  729,
+      730,  730,  730,  730,  471,  376,  471,  471,  976,  976,
+      472,  976,  473,  474,  864,  864,  864,  864,  632,  633,
+      632,  632,  976,  976,  634,  976,  976,  729,  730,  730,
+      730,  730,  976,  976,  976,  865,  794,  795,  795,  795,
+      795,  976,  976,  976,  879,  927,  927,  927,  927,  976,
+
+      976,  976,  881,  865,  628,  628,  628,  628,  976,  976,
+      629,  976,  879,  732,  733,  733,  733,  733,  976,  976,
+      881,  867,  935,  935,  935,  935,  976,  976,  970,  887,
+      970,  970,  976,  976,  971,  976,  976,  976,  976,  867,
+      735,  633,  735,  735,  976,  976,  736,  887,  737,  738,
+      739,  739,  739,  739,  735,  633,  735,  735,  976,  976,
+      736,  976,  737,  738,  739,  739,  739,  739,  275,  169,
+      275,  275,  976,  976,  276,  976,  277,  744,  745,  745,
+      745,  745,  275,  169,  275,  275,  976,  976,  276,  976,
+      277,  278,  870,  870,  870,  870,  637,  638,  637,  637,
+
+      976,  976,  639,  976,  976,  744,  745,  745,  745,  745,
+      976,  976,  976,  871,  943,  943,  943,  943,  976,  976,
+      976,  893,  965,  959,  967,  965,  976,  976,  968,  976,
+      976,  871,  751,  638,  751,  751,  976,  976,  752,  893,
+      753,  754,  755,  755,  755,  755,  633,  633,  633,  633,
+      976,  976,  642,  976,  976,  748,  749,  749,  749,  749,
+      976,  976,  962,  873,  963,  962,  976,  976,  964,  965,
+      966,  967,  965,  976,  970,  968,  970,  970,  976,  976,
+      971,  873,  751,  638,  751,  751,  976,  976,  752,  976,
+      753,  754,  755,  755,  755,  755,  633,  633,  633,  633,
+
+      976,  976,  642,  976,  976,  976,  760,  760,  760,  760,
+      486,  381,  486,  486,  976,  976,  487,  976,  488,  762,
+      763,  763,  763,  763,  486,  381,  486,  486,  976,  976,
+      487,  976,  488,  489,  876,  876,  876,  876,  645,  638,
+      645,  645,  976,  976,  646,  976,  976,  762,  763,  763,
+      763,  763,  976,  976,  976,  877,  973,  959,  974,  973,
+      976,  970,  975,  970,  970,  976,  970,  971,  970,  970,
+      976,  976,  971,  877,  503,  389,  503,  503,  976,  976,
+      504,  976,  505,  506,  771,  771,  771,  771,  503,  389,
+      503,  503,  976,  976,  504,  976,  505,  506,  771,  771,
+
+      771,  771,  299,  189,  299,  299,  976,  976,  300,  976,
+      301,  302,  774,  774,  774,  774,  299,  189,  299,  299,
+      976,  976,  300,  976,  301,  302,  774,  774,  774,  774,
+      389,  389,  389,  389,  976,  976,  390,  976,  976,  976,
+      776,  776,  776,  776,  518,  394,  518,  518,  976,  976,
+      519,  976,  520,  521,  779,  779,  779,  779,  518,  394,
+      518,  518,  976,  976,  519,  976,  520,  521,  779,  779,
+      779,  779,  530,  398,  530,  530,  976,  976,  531,  976,
+      532,  533,  784,  784,  784,  784,  530,  398,  530,  530,
+      976,  976,  531,  976,  532,  533,  784,  784,  784,  784,
+
+      310,  195,  310,  310,  976,  976,  311,  976,  312,  313,
+      787,  787,  787,  787,  310,  195,  310,  310,  976,  976,
+      311,  976,  312,  313,  787,  787,  787,  787,  398,  398,
+      398,  398,  976,  976,  399,  976,  976,  976,  789,  789,
+      789,  789,  545,  403,  545,  545,  976,  976,  546,  976,
+      547,  548,  792,  792,  792,  792,  545,  403,  545,  545,
+      976,  976,  546,  976,  547,  548,  792,  792,  792,  792,
+      797,  669,  797,  797,  976,  976,  798,  976,  799,  800,
+      801,  801,  801,  801,  797,  669,  797,  797,  976,  976,
+      798,  976,  799,  800,  801,  801,  801,  801,  669,  669,
+
+      669,  669,  976,  976,  670,  976,  976,  976,  803,  803,
+      803,  803,  557,  407,  557,  557,  976,  976,  558,  976,
+      559,  805,  806,  806,  806,  806,  557,  407,  557,  557,
+      976,  976,  558,  976,  559,  560,  882,  882,  882,  882,
+      673,  674,  673,  673,  976,  976,  675,  976,  976,  805,
+      806,  806,  806,  806,  976,  976,  976,  883,  560,  818,
+      818,  818,  818,  976,  976,  976,  676,  973,  959,  974,
+      973,  976,  976,  975,  976,  883,  669,  669,  669,  669,
+      976,  976,  670,  976,  676,  808,  809,  809,  809,  809,
+      976,  976,  976,  885,  973,  959,  974,  973,  976,  976,
+
+      975,  973,  966,  974,  973,  976,  976,  975,  976,  976,
+      976,  885,  811,  674,  811,  811,  976,  976,  812,  976,
+      813,  814,  815,  815,  815,  815,  811,  674,  811,  811,
+      976,  976,  812,  976,  813,  814,  815,  815,  815,  815,
+      324,  208,  324,  324,  976,  976,  325,  976,  326,  820,
+      821,  821,  821,  821,  324,  208,  324,  324,  976,  976,
+      325,  976,  326,  327,  888,  888,  888,  888,  678,  679,
+      678,  678,  976,  976,  680,  976,  976,  820,  821,  821,
+      821,  821,  976,  976,  976,  889,  973,  959,  974,  973,
+      976,  976,  975,  976,  976,  976,  976,  976,  976,  976,
+
+      976,  976,  976,  889,  827,  679,  827,  827,  976,  976,
+      828,  976,  829,  830,  831,  831,  831,  831,  674,  674,
+      674,  674,  976,  976,  683,  976,  976,  824,  825,  825,
+      825,  825,  976,  976,  976,  891,  976,  976,  976,  976,
+      976,  976,  327,  834,  834,  834,  834,  976,  976,  976,
+      414,  976,  976,  891,  827,  679,  827,  827,  976,  976,
+      828,  976,  829,  830,  831,  831,  831,  831,  414,  674,
+      674,  674,  674,  976,  976,  683,  976,  976,  976,  836,
+      836,  836,  836,  572,  412,  572,  572,  976,  976,  573,
+      976,  574,  838,  839,  839,  839,  839,  572,  412,  572,
+
+      572,  976,  976,  573,  976,  574,  575,  894,  894,  894,
+      894,  686,  679,  686,  686,  976,  976,  687,  976,  976,
+      838,  839,  839,  839,  839,  976,  976,  976,  895,  575,
+      842,  842,  842,  842,  976,  976,  976,  688,  976,  976,
+      976,  976,  976,  976,  976,  976,  895,  976,  976,  976,
+      976,  976,  976,  976,  976,  688,  589,  420,  589,  589,
+      976,  976,  590,  976,  591,  592,  847,  847,  847,  847,
+      589,  420,  589,  589,  976,  976,  590,  976,  591,  592,
+      847,  847,  847,  847,  346,  224,  346,  346,  976,  976,
+      347,  976,  348,  349,  850,  850,  850,  850,  346,  224,
+
+      346,  346,  976,  976,  347,  976,  348,  349,  850,  850,
+      850,  850,  420,  420,  420,  420,  976,  976,  421,  976,
+      976,  976,  852,  852,  852,  852,  604,  425,  604,  604,
+      976,  976,  605,  976,  606,  607,  855,  855,  855,  855,
+      604,  425,  604,  604,  976,  976,  605,  976,  606,  607,
+      855,  855,  855,  855,  721,  628,  721,  721,  976,  976,
+      722,  976,  723,  724,  862,  862,  862,  862,  976,  976,
+      976,  863,  976,  976,  976,  976,  976,  976,  976,  976,
+      976,  976,  976,  976,  976,  976,  976,  976,  976,  863,
+      721,  628,  721,  721,  976,  976,  722,  901,  902,  724,
+
+      903,  903,  903,  903,  632,  633,  632,  632,  976,  976,
+      634,  976,  473,  474,  864,  864,  864,  864,  976,  976,
+      976,  865,  976,  976,  976,  976,  976,  976,  976,  976,
+      976,  976,  976,  976,  976,  976,  976,  976,  976,  865,
+      471,  376,  471,  471,  976,  976,  472,  904,  905,  474,
+      906,  906,  906,  906,  628,  628,  628,  628,  976,  976,
+      629,  976,  976,  976,  866,  866,  866,  866,  976,  976,
+      976,  867,  976,  976,  976,  976,  976,  976,  560,  930,
+      930,  930,  930,  976,  976,  976,  676,  976,  976,  867,
+      735,  633,  735,  735,  976,  976,  736,  976,  737,  738,
+
+      868,  868,  868,  868,  676,  976,  976,  869,  976,  976,
+      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
+      976,  976,  976,  976,  976,  869,  735,  633,  735,  735,
+      976,  976,  736,  909,  910,  738,  911,  911,  911,  911,
+      637,  638,  637,  637,  976,  976,  639,  976,  277,  278,
+      870,  870,  870,  870,  976,  976,  976,  871,  976,  976,
+      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
+      976,  976,  976,  976,  976,  871,  275,  169,  275,  275,
+      976,  976,  276,  912,  913,  278,  914,  914,  914,  914,
+      633,  633,  633,  633,  976,  976,  642,  976,  976,  976,
+
+      872,  872,  872,  872,  976,  976,  976,  873,  976,  976,
+      976,  976,  976,  976,  327,  938,  938,  938,  938,  976,
+      976,  976,  414,  976,  976,  873,  751,  638,  751,  751,
+      976,  976,  752,  976,  753,  754,  874,  874,  874,  874,
+      414,  976,  976,  875,  976,  976,  976,  976,  976,  976,
+      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
+      976,  875,  751,  638,  751,  751,  976,  976,  752,  917,
+      918,  754,  919,  919,  919,  919,  645,  638,  645,  645,
+      976,  976,  646,  976,  488,  489,  876,  876,  876,  876,
+      976,  976,  976,  877,  976,  976,  976,  976,  976,  976,
+
+      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
+      976,  877,  486,  381,  486,  486,  976,  976,  487,  920,
+      921,  489,  922,  922,  922,  922,  632,  633,  632,  632,
+      976,  976,  634,  470,  473,  976,  976,  976,  976,  976,
+      976,  976,  976,  635,  575,  946,  946,  946,  946,  976,
+      976,  976,  688,  976,  976,  976,  976,  976,  976,  976,
+      976,  635,  628,  628,  628,  628,  976,  976,  629,  976,
+      688,  976,  908,  908,  908,  908,  637,  638,  637,  637,
+      976,  976,  639,  274,  277,  976,  976,  976,  976,  976,
+      976,  976,  976,  383,  976,  976,  976,  976,  976,  976,
+
+      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
+      976,  383,  633,  633,  633,  633,  976,  976,  642,  976,
+      976,  976,  916,  916,  916,  916,  645,  638,  645,  645,
+      976,  976,  646,  485,  488,  976,  976,  976,  976,  976,
+      976,  976,  976,  647,  976,  976,  976,  976,  976,  976,
+      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
+      976,  647,  669,  669,  669,  669,  976,  976,  670,  976,
+      976,  976,  932,  932,  932,  932,   46,   46,   46,   46,
+       46,   46,   46,   46,   81,   81,   81,   81,   81,   81,
+       81,   81,  109,  109,  109,  109,  109,  109,  109,  109,
+
+      119,  119,  119,  119,  119,  119,  119,  119,  130,  130,
+      976,  130,  130,  130,  130,  130,  131,  131,  976,  131,
+      131,  131,  131,  131,  134,  976,  976,  134,  135,  976,
+      976,  135,  172,  976,  976,  172,  976,  172,  172,  172,
+      173,  173,  976,  173,  173,  173,  173,  173,  211,  976,
+      976,  211,  976,  211,  211,  212,  212,  976,  212,  212,
+      212,  212,  212,  227,  227,  976,  227,  976,  227,  227,
+      227,  230,  230,  976,  230,  230,  230,  230,  230,  250,
+      250,  250,  250,  250,  250,  250,  250,  263,  263,  263,
+      263,  263,  263,  263,  263,  269,  269,  976,  976,  269,
+
+      269,  274,  274,  274,  274,  274,  274,  274,  274,  287,
+      287,  287,  287,  287,  287,  287,  287,  298,  298,  298,
+      298,  298,  298,  298,  298,  309,  309,  309,  309,  309,
+      309,  309,  309,  323,  323,  323,  323,  323,  323,  323,
+      323,  212,  212,  976,  212,  212,  212,  212,  212,  334,
+      334,  334,  334,  334,  334,  334,  334,  345,  345,  345,
+      345,  345,  345,  345,  345,  227,  227,  976,  227,  976,
+      227,  227,  227,  230,  230,  976,  230,  230,  230,  230,
+      230,  131,  131,  976,  131,  131,  131,  131,  131,  134,
+      976,  976,  134,  250,  250,  250,  250,  250,  250,  250,
+
+      250,  263,  263,  263,  263,  263,  263,  263,  263,  269,
+      269,  976,  976,  269,  269,  274,  274,  274,  274,  274,
+      274,  274,  274,  439,  439,  439,  439,  439,  439,  439,
+      439,  454,  454,  454,  454,  454,  454,  454,  454,  470,
+      470,  470,  470,  470,  470,  470,  470,  485,  485,  485,
+      485,  485,  485,  485,  485,  287,  287,  287,  287,  287,
+      287,  287,  287,  502,  502,  502,  502,  502,  502,  502,
+      502,  298,  298,  298,  298,  298,  298,  298,  298,  517,
+      517,  517,  517,  517,  517,  517,  517,  529,  529,  529,
+      529,  529,  529,  529,  529,  309,  309,  309,  309,  309,
+
+      309,  309,  309,  544,  544,  544,  544,  544,  544,  544,
+      544,  556,  556,  556,  556,  556,  556,  556,  556,  323,
+      323,  323,  323,  323,  323,  323,  323,  571,  571,  571,
+      571,  571,  571,  571,  571,  334,  334,  334,  334,  334,
+      334,  334,  334,  588,  588,  588,  588,  588,  588,  588,
+      588,  345,  345,  345,  345,  345,  345,  345,  345,  603,
+      603,  603,  603,  603,  603,  603,  603,  131,  131,  976,
+      131,  131,  131,  131,  131,  134,  976,  976,  134,  439,
+      439,  439,  439,  439,  439,  439,  439,  250,  250,  250,
+      250,  250,  250,  250,  250,  454,  454,  454,  454,  454,
+
+      454,  454,  454,  470,  470,  470,  470,  470,  470,  470,
+      470,  274,  274,  274,  274,  274,  274,  274,  274,  485,
+      485,  485,  485,  485,  485,  485,  485,  287,  287,  287,
+      287,  287,  287,  287,  287,  502,  502,  502,  502,  502,
+      502,  502,  502,  298,  298,  298,  298,  298,  298,  298,
+      298,  517,  517,  517,  517,  517,  517,  517,  517,  529,
+      529,  529,  529,  529,  529,  529,  529,  309,  309,  309,
+      309,  309,  309,  309,  309,  544,  544,  544,  544,  544,
+      544,  544,  544,  556,  556,  556,  556,  556,  556,  556,
+      556,  323,  323,  323,  323,  323,  323,  323,  323,  571,
+
+      571,  571,  571,  571,  571,  571,  571,  334,  334,  334,
+      334,  334,  334,  334,  334,  588,  588,  588,  588,  588,
+      588,  588,  588,  345,  345,  345,  345,  345,  345,  345,
+      345,  603,  603,  603,  603,  603,  603,  603,  603,  131,
+      131,  976,  131,  131,  131,  131,  131,  134,  976,  976,
+      134,  439,  439,  439,  439,  439,  439,  439,  439,  250,
+      250,  250,  250,  250,  250,  250,  250,  454,  454,  454,
+      454,  454,  454,  454,  454,  720,  720,  720,  720,  720,
+      720,  720,  720,  470,  470,  470,  470,  470,  470,  470,
+      470,  734,  734,  734,  734,  734,  734,  734,  734,  274,
+
+      274,  274,  274,  274,  274,  274,  274,  750,  750,  750,
+      750,  750,  750,  750,  750,  485,  485,  485,  485,  485,
+      485,  485,  485,  502,  502,  502,  502,  502,  502,  502,
+      502,  298,  298,  298,  298,  298,  298,  298,  298,  517,
+      517,  517,  517,  517,  517,  517,  517,  529,  529,  529,
+      529,  529,  529,  529,  529,  309,  309,  309,  309,  309,
+      309,  309,  309,  544,  544,  544,  544,  544,  544,  544,
+      544,  796,  796,  796,  796,  796,  796,  796,  796,  556,
+      556,  556,  556,  556,  556,  556,  556,  810,  810,  810,
+      810,  810,  810,  810,  810,  323,  323,  323,  323,  323,
+
+      323,  323,  323,  826,  826,  826,  826,  826,  826,  826,
+      826,  571,  571,  571,  571,  571,  571,  571,  571,  588,
+      588,  588,  588,  588,  588,  588,  588,  345,  345,  345,
+      345,  345,  345,  345,  345,  603,  603,  603,  603,  603,
+      603,  603,  603,  131,  131,  976,  131,  131,  131,  131,
+      131,  134,  976,  976,  134,  439,  439,  439,  439,  439,
+      439,  439,  439,  250,  250,  250,  250,  250,  250,  250,
+      250,  454,  454,  454,  454,  454,  454,  454,  454,  720,
+      720,  720,  720,  720,  720,  720,  720,  470,  470,  470,
+      470,  470,  470,  470,  470,  734,  734,  734,  734,  734,
+
+      734,  734,  734,  274,  274,  274,  274,  274,  274,  274,
+      274,  750,  750,  750,  750,  750,  750,  750,  750,  485,
+      485,  485,  485,  485,  485,  485,  485,  502,  502,  502,
+      502,  502,  502,  502,  502,  298,  298,  298,  298,  298,
+      298,  298,  298,  517,  517,  517,  517,  517,  517,  517,
+      517,  529,  529,  529,  529,  529,  529,  529,  529,  309,
+      309,  309,  309,  309,  309,  309,  309,  544,  544,  544,
+      544,  544,  544,  544,  544,  796,  796,  796,  796,  796,
+      796,  796,  796,  556,  556,  556,  556,  556,  556,  556,
+      556,  810,  810,  810,  810,  810,  810,  810,  810,  323,
+
+      323,  323,  323,  323,  323,  323,  323,  826,  826,  826,
+      826,  826,  826,  826,  826,  571,  571,  571,  571,  571,
+      571,  571,  571,  588,  588,  588,  588,  588,  588,  588,
+      588,  345,  345,  345,  345,  345,  345,  345,  345,  603,
+      603,  603,  603,  603,  603,  603,  603,  131,  131,  976,
+      131,  131,  131,  131,  131,  134,  976,  976,  134,  720,
+      720,  720,  720,  720,  720,  720,  720,  470,  470,  470,
+      470,  470,  470,  470,  470,  734,  734,  734,  734,  734,
+      734,  734,  734,  274,  274,  274,  274,  274,  274,  274,
+      274,  750,  750,  750,  750,  750,  750,  750,  750,  485,
+
+      485,  485,  485,  485,  485,  485,  485,  958,  958,  958,
+      958,  958,  958,  958,  958,  969,  969,  976,  969,  969,
+      969,  969,  969,  972,  972,  972,  972,  972,  972,  972,
+      972,   45,  976,  976,  976,  976,  976,  976,  976,  976,
+      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
+      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
+      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
+      976,  976,  976,  976,  976,  976,  976,  976,  976,  976
+    } ;
+
+static yyconst flex_int16_t yy_chk[8681] =
+    {   0,
+        0,    1,    1,    1,    1,    0, 1039,    1,    2,    2,
+        2,    2,  122,  122,    2,    3,    3,    3,    3,    3,
+        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
+        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
+        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
+        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
+        3,    3,    3,    5,    5,    5,    5,   61,   61,    5,
+        9,    9,    9,    9,    9,    9,   66,   66,   66,   66,
+       66,    5,    5,   10,   10,   10,   10,   10,   10, 1017,
+        5,    6,    6,    6,    6,  229,  229,    6,   11,   11,
+
+       11,   11,   11,   11,   67,   67,   67,   67,   74,    6,
+        6,   12,   12,   12,   12,   12,   12, 1014,    6,    7,
+        7,    7,    7,  428,   74,    7,  428,    7,    7,    7,
+        7,    7,    7,   69,   69,   69,   69,   69,    7,   13,
+       13,   13,   13,   13,   13,   14,   14,   14,   14,   14,
+       14,   15,   15,   15,   15,   15,   15,   16,   16,   16,
+       16,   16,   16,   17,   17,   17,   17,  354,   17,   17,
+       18,   18,   18,   18, 1012,   18,   18,   70,   70,   70,
+       70,  354,   17,   19,   19,   19,   19,   19,   19,   18,
+       20,   20,   20,   20,   20,   20,   21,   21,   21,   21,
+
+       21,   21,   22,   22,   22,   22,   22,   22,   23,   23,
+       23,   23,   23,   23,   24,   24,   24,   24,   24,   24,
+       25,   25,   25,   25,   25,   25,  267,   39,   39,   39,
+       39,   25,   39,   39,   40,   40,   40,   40,   49,   40,
+       40,  133,  267,   25, 1006,   25,   26,   26,   26,   26,
+       26,   26,   47,  856,   47,   47,  856,   26,   47,   39,
+      133,   49,   41,   41,   41,   41,   40,   41,   41,   26,
+      950,   26,   27,   27,   27,   27,   27,   27,  235,   42,
+       42,   42,   42,   27,   42,   42,  230,  230,   71,   71,
+       71,   71,   71,  235,   41,   27,   71,   27,   28,   28,
+
+       28,   28,   28,   28,   72,   72,   72,   72,  950,   28,
+      999,   42,  231,  231,   71,   75,   75,   75,   75,  947,
+      465,   28,  947,   28,   29,   29,   29,   29,   29,   29,
+       77,   77,   77,   77,  994,   29,  465,   43,   43,   43,
+       43,   43,   43,   79,   79,   79,   79,   29,   43,   29,
+       30,   30,   30,   30,   30,   30,   78,   78,   78,   78,
+       78,   30,  952,   44,   44,   44,   44,   44,   44,   86,
+       86,   86,   86,   30,   44,   30,   31,   31,   31,   31,
+       31,   31,   85,   85,   85,   85,   85,   31,   76,   76,
+       76,   76,   83,  949,   83,   83,  432,   83,   83,   31,
+
+      432,   31,   32,   32,   32,   32,   32,   32,   76,   89,
+       89,   89,   89,   32,   87,   87,   87,   87,   87,  948,
+      699,  898,   87,  612,   76,   32,  699,   32,   33,   33,
+       33,   33,  897,   33,   33,   88,   88,   88,   88,   88,
+       87,   91,   91,   91,   91,   91,  612,   33,   92,   92,
+       92,   92,   94,   94,   94,   94,   94,  901,  901,   33,
+      292,   33,   34,   34,   34,   34,  859,   34,   34,   95,
+       95,   95,   95,  100,  100,  100,  100,  100,  292,  902,
+      902,   34,  101,  101,  101,  101,  102,  102,  102,  102,
+      102,  904,  904,   34,  102,   34,   35,   35,   35,   35,
+
+       35,   35,  103,  103,  103,  103,  857,   35,  104,  104,
+      104,  104,  102,  105,  105,  105,  105,  905,  905,   35,
+      703,   35,   36,   36,   36,   36,   36,   36,  104,  107,
+      107,  107,  107,   36,  106,  106,  106,  106,  106,  113,
+      113,  113,  113,  113,  104,   36,  702,   36,   37,   37,
+       37,   37,   37,   37,  339,  111,  700,  111,  111,   37,
+      111,  111,  114,  114,  114,  114,  116,  116,  116,  116,
+      116,   37,  339,   37,   38,   38,   38,   38,   38,   38,
+      117,  117,  117,  117,  616,   38,  111,  120,  111,  120,
+      120,  466,  128,  120,  128,  128,  444,   38,  128,   38,
+
+       68,   68,   68,   68,  459,  615,   68,  466,  953,   68,
+       68,   68,   68,   68,  444,  909,  909,   68,  125,  125,
+      125,  125,  459,  126,  126,  126,  126,  127,  127,  127,
+      127,  150,  150,  150,  150,   68,   73,   73,   73,   73,
+      896,  614,   73,  126,  896,  953,   73,   73,   73,   73,
+      152,  152,  152,  152,  152,  910,  910,  155,  155,  126,
+      155,  155,  155,  155,  912,  912,   73,  156,  156,  156,
+      156,  157,  157,  157,  157,  157,  913,  913,  613,  157,
+      498,  507,   73,   80,   80,   80,   80,  522,  433,   80,
+      917,  917,   80,   80,   80,   80,   80,  157,  498,  507,
+
+       80,  158,  158,  158,  158,  522,  159,  159,  158,  159,
+      159,  159,  159,  164,  164,  164,  164,  429,   80,   90,
+       90,   90,   90,  918,  918,   90,  158,  534,   90,   90,
+       90,   90,   90,  955,  549,  161,   90,  161,  161,  161,
+      161,  163,  163,  163,  163,  534,  362,  163,  166,  166,
+      166,  166,  549,  584,   90,   93,   93,   93,   93,  920,
+      920,   93,  593,  955,   93,   93,   93,   93,   93,  921,
+      921,  584,   93,  168,  168,  168,  168,  168,  171,  171,
+      593,  171,  171,  171,  171,  176,  176,  176,  176,  956,
+       93,   96,   96,   96,   96,  361,  956,   96,  360,  359,
+
+       96,   96,   96,   96,   96,  358,  357,  173,   96,  173,
+      173,  355,  173,  173,  174,  246,  174,  174,  245,  174,
+      174,  180,  180,  180,  180,  608,   96,  108,  108,  108,
+      108,  244,  708,  108,  716,  243,  108,  108,  108,  108,
+      108,  725,  739,  608,  108,  177,  177,  177,  177,  177,
+      708,  242,  716,  177,  178,  178,  178,  178,  240,  725,
+      739,  178,  108,  115,  115,  115,  115,  239,  238,  115,
+      237,  177,  115,  115,  115,  115,  115,  149,  147,  178,
+      115,  179,  179,  146,  179,  179,  179,  179,  182,  182,
+      182,  182,  182,  186,  186,  186,  186,  145,  115,  118,
+
+      118,  118,  118,  144,  143,  118,  141,  140,  118,  118,
+      118,  118,  118,  139,  185,  185,  118,  185,  185,  185,
+      185,  188,  188,  188,  188,  188,  191,  191,  137,  191,
+      191,  191,  191,  136,  118,  153,  153,  153,  153,  132,
+      131,  153,  129,  153,  153,  153,  153,  153,  153,  154,
+      154,  154,  154,  123,  755,  154,  112,  154,  154,  154,
+      154,  154,  154,  162,  162,  162,  162,   97,   84,  162,
+       65,  162,  755,  162,  162,  162,  162,  169,  169,  169,
+      169,   64,   63,  169,   62,  169,  169,  169,  169,  169,
+      169,  170,  170,  170,  170,   60,   59,  170,   58,  170,
+
+      170,  170,  170,  170,  170,  183,  183,  183,  183,   57,
+       56,  183,   55,  183,  183,  183,  183,  183,  183,  184,
+      184,  184,  184,   54,   53,  184,   51,  184,  184,  184,
+      184,  184,  184,  189,  189,  189,  189,   45,    0,  189,
+        0,  189,  189,  189,  189,  189,  189,  190,  190,  190,
+      190,    0,    0,  190,    0,  190,  190,  190,  190,  190,
+      190,  192,  192,  192,  192,  194,  194,  194,  194,  194,
+      195,  195,  195,  195,    0,    0,  195,    0,  195,  195,
+      195,  195,  195,  195,  196,  196,  196,  196,    0,    0,
+      196,    0,  196,  196,  196,  196,  196,  196,  197,  197,
+
+        0,  197,  197,  197,  197,  199,  199,  199,  199,  200,
+      200,  200,  200,  200,    0,    0,  771,  200,  201,  201,
+      201,  201,  779,  202,  202,  201,  202,  202,  202,  202,
+      203,  203,  203,  203,  771,  200,  205,  205,  205,  205,
+      779,    0,    0,  201,  207,  207,  207,  207,  207,  208,
+      208,  208,  208,    0,    0,  208,    0,  208,  208,  208,
+      208,  208,  208,  209,  209,  209,  209,  784,    0,  209,
+      792,  209,  209,  209,  209,  209,  209,  210,  210,    0,
+      210,  210,  210,  210,  212,  784,  212,  212,  792,  212,
+      212,  213,    0,  213,  213,    0,  213,  213,  215,  215,
+
+      215,  215,  217,  217,  217,  217,  217,  220,  220,    0,
+      220,  220,  220,  220,  801,  212,    0,  212,  221,  221,
+      221,  221,  213,  815,  213,  216,  216,  216,  216,    0,
+        0,  216,  801,    0,  216,  216,  216,  216,  216,    0,
+        0,  815,  216,  223,  223,  223,  223,  223,  226,  226,
+      831,  226,  226,  226,  226,  233,  233,  233,  233,    0,
+      216,  218,  218,  218,  218,    0,    0,  218,  831,  218,
+      218,  218,  218,  218,  218,  219,  219,  219,  219,  847,
+        0,  219,    0,  219,  219,  219,  219,  219,  219,  222,
+      222,  222,  222,    0,    0,  222,    0,  847,  222,  222,
+
+      222,  222,  222,  855,    0,  228,  222,  228,  228,    0,
+        0,  228,  247,  247,  247,  247,  247,  248,  248,  248,
+      248,  855,    0,    0,  222,  224,  224,  224,  224,    0,
+        0,  224,    0,  224,  224,  224,  224,  224,  224,  225,
+      225,  225,  225,    0,    0,  225,    0,  225,  225,  225,
+      225,  225,  225,  249,  249,  249,  249,    0,    0,  249,
+        0,    0,  249,  249,  249,  249,  249,    0,    0,    0,
+      249,  254,  254,  254,  254,  256,  256,  256,  256,  258,
+      258,  258,  258,  259,  259,  259,  259,    0,  249,  250,
+      250,  250,  250,    0,    0,  250,    0,  250,  250,  250,
+
+      250,  250,  250,  251,  251,  251,  251,    0,    0,  251,
+        0,  251,  251,  251,  251,  251,  251,  255,  255,  255,
+      255,    0,    0,  255,  260,  260,  260,  260,  262,  262,
+      262,  262,    0,    0,  255,    0,    0,  261,  261,  261,
+      261,  269,  269,  269,  269,    0,    0,  269,  272,  272,
+      272,  272,  255,  257,  257,  257,  257,  261,    0,  257,
+        0,    0,    0,  257,  257,  257,  257,  271,  271,  271,
+      271,  271,    0,  261,  263,  263,  263,  263,  957,  957,
+      263,    0,  263,  957,  263,  263,  263,  263,  264,  264,
+      264,  264,  958,  958,  264,    0,  264,  958,  264,  264,
+
+      264,  264,  273,  273,  273,  273,    0,    0,  273,    0,
+        0,  273,  273,  273,  273,  273,    0,    0,    0,  273,
+      278,  278,  278,  278,  280,  280,  280,  280,  282,  282,
+      282,  282,  283,  283,  283,  283,    0,  273,  274,  274,
+      274,  274,    0,    0,  274,    0,  274,  274,  274,  274,
+      274,  274,  275,  275,  275,  275,    0,    0,  275,    0,
+      275,  275,  275,  275,  275,  275,  279,  279,  279,  279,
+        0,    0,  279,  284,  284,  284,  284,  284,  285,  285,
+      285,  285,    0,  279,  286,  286,  286,  286,  286,    0,
+        0,    0,  286,  291,  291,  291,  291,  293,  293,  293,
+
+      293,  279,  281,  281,  281,  281,  961,  961,  281,    0,
+      286,  961,  281,  281,  281,  281,  287,  287,  287,  287,
+        0,    0,  287,    0,  287,  287,  287,  287,  287,  287,
+      294,  294,  294,  294,    0,    0,  294,    0,    0,    0,
+      294,  294,  294,  294,  295,  295,  295,  295,  295,  296,
+      296,  296,  296,  297,  297,  297,  297,    0,    0,  297,
+        0,    0,  297,  297,  297,  297,  297,    0,    0,    0,
+      297,  302,  302,  302,  302,    0,  303,  303,  303,  303,
+        0,    0,  303,  304,  304,  304,  304,    0,  297,  298,
+      298,  298,  298,  303,    0,  298,    0,  298,  298,  298,
+
+      298,  298,  298,  306,  306,  306,  306,  306,    0,  903,
+      903,  303,  305,  305,  305,  305,    0,    0,  305,  903,
+        0,    0,  305,  305,  305,  305,  307,  307,  307,  307,
+      308,  308,  308,  308,    0,    0,  308,  903,    0,  308,
+      308,  308,  308,  308,    0,    0,    0,  308,  313,  313,
+      313,  313,    0,  314,  314,  314,  314,    0,    0,  314,
+      315,  315,  315,  315,    0,  308,  309,  309,  309,  309,
+      314,    0,  309,    0,  309,  309,  309,  309,  309,  309,
+      317,  317,  317,  317,  318,  318,  318,  318,  314,  316,
+      316,  316,  316,    0,    0,  316,    0,    0,    0,  316,
+
+      316,  316,  316,  320,  320,  320,  320,  320,  321,  321,
+      321,  321,  322,  322,  322,  322,    0,    0,  322,    0,
+        0,  322,  322,  322,  322,  322,    0,    0,    0,  322,
+      327,  327,  327,  327,    0,  328,  328,  328,  328,    0,
+        0,  328,  329,  329,  329,  329,    0,  322,  323,  323,
+      323,  323,  328,    0,  323,    0,  323,  323,  323,  323,
+      323,  323,  331,  331,  331,  331,  331,    0,  911,  911,
+      328,  330,  330,  330,  330,    0,    0,  330,  911,    0,
+        0,  330,  330,  330,  330,  332,  332,  332,  332,  333,
+      333,  333,  333,  333,    0,    0,  911,  333,  338,  338,
+
+      338,  338,  340,  340,  340,  340,  342,  342,  342,  342,
+      342,  343,  343,  343,  343,  333,  334,  334,  334,  334,
+        0,    0,  334,    0,  334,  334,  334,  334,  334,  334,
+      341,  341,  341,  341,    0,    0,  341,    0,  919,  919,
+      341,  341,  341,  341,  344,  344,  344,  344,  919,    0,
+      344,    0,    0,  344,  344,  344,  344,  344,    0,    0,
+        0,  344,  349,  349,  349,  349,  919,  350,  350,  350,
+      350,    0,    0,  350,  351,  351,  351,  351,    0,  344,
+      345,  345,  345,  345,  350,    0,  345,    0,  345,  345,
+      345,  345,  345,  345,  364,  364,  364,  364,  364,    0,
+
+        0,    0,  350,  352,  352,  352,  352,    0,    0,  352,
+        0,    0,    0,  352,  352,  352,  352,  365,  365,  365,
+      365,    0,    0,  365,    0,  365,  365,  365,  365,  365,
+      365,  366,  366,  366,  366,    0,    0,  366,    0,  366,
+      366,  366,  366,  366,  366,  367,  367,    0,  367,  367,
+      367,  367,  368,  368,  368,  368,    0,    0,  368,    0,
+        0,    0,  368,  368,  368,  368,    0,  372,  372,  368,
+      372,  372,  372,  372,  375,  375,  375,  375,  375,  378,
+      378,    0,  378,  378,  378,  378,    0,  368,  369,  369,
+      369,  369,  369,  369,    0,    0,    0,  369,  384,  384,
+
+      384,  384,    0,  385,  385,  384,  385,  385,  385,  385,
+      436,  436,  436,  436,  436,  369,  370,  370,  370,  370,
+        0,    0,  370,  384,  370,  370,  370,  370,  370,  370,
+      371,  371,  371,  371,    0,    0,  371,    0,  371,  371,
+      371,  371,  371,  371,  374,  374,  374,  374,  374,  374,
+      374,  374,  374,  391,  391,    0,  391,  391,  391,  391,
+      400,  400,    0,  400,  400,  400,  400,    0,  374,  374,
+      374,  376,  376,  376,  376,    0,    0,  376,    0,  376,
+      376,  376,  376,  376,  376,  377,  377,  377,  377,    0,
+        0,  377,    0,  377,  377,  377,  377,  377,  377,  379,
+
+      379,  379,  379,    0,    0,  379,    0,    0,    0,  379,
+      379,  379,  379,    0,  409,  409,  379,  409,  409,  409,
+      409,  415,  415,  415,  415,    0,  416,  416,  415,  416,
+      416,  416,  416,    0,  379,  380,  380,  380,  380,  380,
+      380,    0,    0,    0,  380,    0,  415,  422,  422,    0,
+      422,  422,  422,  422,  437,  437,  437,  437,  443,  443,
+      443,  443,  380,  381,  381,  381,  381,    0,    0,  381,
+        0,  381,  381,  381,  381,  381,  381,  382,  382,  382,
+      382,    0,    0,  382,    0,  382,  382,  382,  382,  382,
+      382,  383,  383,  383,  383,    0,    0,  383,  383,  383,
+
+        0,  383,  383,  383,  383,    0,    0,    0,  383,  445,
+      445,  445,  445,    0,    0,  438,  438,  438,  438,  438,
+        0,    0,    0,  438,    0,    0,  383,  386,  386,  386,
+      386,    0,    0,  386,    0,  386,  386,  386,  386,  386,
+      386,  438,    0,    0,  386,  451,  451,  451,  451,  451,
+      452,  452,  452,  452,  458,  458,  458,  458,  460,  460,
+      460,  460,  386,  387,  387,  387,  387,    0,    0,  387,
+      387,  387,  387,  387,  387,  387,  387,  388,  388,  388,
+      388,    0,    0,  388,    0,    0,    0,  388,  388,  388,
+      388,    0,    0,    0,  388,  461,  461,  461,  461,  467,
+
+      467,  467,  467,  467,  468,  468,  468,  468,  474,  474,
+      474,  474,  388,  389,  389,  389,  389,    0,    0,  389,
+        0,  389,  389,  389,  389,  389,  389,  390,  390,  390,
+      390,    0,    0,  390,    0,  390,  390,  390,  390,  390,
+      390,  392,  392,  392,  392,    0,    0,  392,    0,  392,
+      392,  392,  392,  392,  392,    0,    0,    0,  392,  476,
+      476,  476,  476,  482,  482,  482,  482,  482,  483,  483,
+      483,  483,  489,  489,  489,  489,  392,  393,  393,  393,
+      393,    0,    0,  393,    0,  393,  393,  393,  393,  393,
+      393,  394,  394,  394,  394,    0,    0,  394,    0,  394,
+
+      394,  394,  394,  394,  394,  395,  395,  395,  395,    0,
+        0,  395,    0,  395,  395,  395,  395,  395,  395,  396,
+      396,  396,  396,    0,    0,  396,  396,  396,  396,  396,
+      396,  396,  396,  397,  397,  397,  397,    0,    0,  397,
+        0,    0,    0,  397,  397,  397,  397,    0,    0,    0,
+      397,  491,  491,  491,  491,  492,  492,  492,  492,  494,
+      494,  494,  494,  495,  495,  495,  495,    0,  397,  398,
+      398,  398,  398,    0,    0,  398,    0,  398,  398,  398,
+      398,  398,  398,  399,  399,  399,  399,    0,    0,  399,
+        0,  399,  399,  399,  399,  399,  399,  401,  401,  401,
+
+      401,    0,    0,  401,    0,  401,  401,  401,  401,  401,
+      401,    0,    0,    0,  401,  499,  499,  499,  499,  499,
+      500,  500,  500,  500,  506,  506,  506,  506,  508,  508,
+      508,  508,  401,  402,  402,  402,  402,    0,    0,  402,
+        0,  402,  402,  402,  402,  402,  402,  403,  403,  403,
+      403,    0,    0,  403,    0,  403,  403,  403,  403,  403,
+      403,  404,  404,  404,  404,    0,    0,  404,    0,  404,
+      404,  404,  404,  404,  404,  405,  405,  405,  405,    0,
+        0,  405,  405,  405,  405,  405,  405,  405,  405,  406,
+      406,  406,  406,    0,    0,  406,    0,    0,    0,  406,
+
+      406,  406,  406,    0,    0,    0,  406,  514,  514,  514,
+      514,  514,  515,  515,  515,  515,  521,  521,  521,  521,
+      523,  523,  523,  523,  406,  407,  407,  407,  407,    0,
+        0,  407,    0,  407,  407,  407,  407,  407,  407,  408,
+      408,  408,  408,    0,    0,  408,    0,  408,  408,  408,
+      408,  408,  408,  410,  410,  410,  410,    0,    0,  410,
+        0,  410,  410,  410,  410,  410,  410,    0,    0,    0,
+      410,  524,  524,  524,  524,  526,  526,  526,  526,  526,
+      527,  527,  527,  527,  533,  533,  533,  533,  410,  411,
+      411,  411,  411,    0,    0,  411,    0,  411,  411,  411,
+
+      411,  411,  411,  412,  412,  412,  412,    0,    0,  412,
+        0,  412,  412,  412,  412,  412,  412,  413,  413,  413,
+      413,    0,    0,  413,    0,  413,  413,  413,  413,  413,
+      413,  414,  414,  414,  414,    0,    0,  414,  414,  414,
+      414,  414,  414,  414,  414,  417,  417,  417,  417,    0,
+        0,  417,    0,  417,  417,  417,  417,  417,  417,    0,
+        0,    0,  417,  535,  535,  535,  535,    0,  475,  475,
+      475,  475,    0,    0,  475,  541,  541,  541,  541,  541,
+      417,  418,  418,  418,  418,  475,    0,  418,  418,  418,
+      418,  418,  418,  418,  418,  419,  419,  419,  419,    0,
+
+        0,  419,    0,  475,    0,  419,  419,  419,  419,    0,
+        0,    0,  419,  542,  542,  542,  542,  548,  548,  548,
+      548,  550,  550,  550,  550,  551,  551,  551,  551,    0,
+      419,  420,  420,  420,  420,    0,    0,  420,    0,  420,
+      420,  420,  420,  420,  420,  421,  421,  421,  421,    0,
+        0,  421,    0,  421,  421,  421,  421,  421,  421,  423,
+      423,  423,  423,    0,    0,  423,    0,  423,  423,  423,
+      423,  423,  423,    0,    0,    0,  423,  553,  553,  553,
+      553,  553,  554,  554,  554,  554,  560,  560,  560,  560,
+      562,  562,  562,  562,  423,  424,  424,  424,  424,    0,
+
+        0,  424,    0,  424,  424,  424,  424,  424,  424,  425,
+      425,  425,  425,    0,    0,  425,    0,  425,  425,  425,
+      425,  425,  425,  426,  426,  426,  426,    0,    0,  426,
+        0,  426,  426,  426,  426,  426,  426,  427,  427,  427,
+      427,    0,    0,  427,  427,  427,  427,  427,  427,  427,
+      427,  439,  439,  439,  439,    0,    0,  439,    0,  439,
+      439,  439,  439,  439,  439,  440,  440,  440,  440,    0,
+        0,  440,    0,  440,  440,  440,  440,  440,  440,  446,
+      446,  446,  446,    0,    0,  446,    0,    0,    0,  446,
+      446,  446,  446,  447,  447,  447,  447,    0,    0,  447,
+
+        0,  447,  447,  447,  447,  447,  447,  448,  448,  448,
+      448,    0,    0,  448,    0,  448,  448,  448,  448,  448,
+      448,  449,  449,  449,  449,    0,    0,  449,    0,    0,
+      449,  449,  449,  449,  449,    0,    0,    0,  449,  568,
+      568,  568,  568,  568,  490,  490,  490,  490,    0,    0,
+      490,  569,  569,  569,  569,    0,  449,  450,  450,  450,
+      450,  490,    0,  450,    0,  450,  450,  450,  450,  450,
+      450,  453,  453,  453,  453,    0,    0,  453,    0,  490,
+      453,  453,  453,  453,  453,    0,    0,    0,  453,  575,
+      575,  575,  575,    0,    0,  462,  462,  462,  462,  462,
+
+        0,    0,    0,  462,    0,    0,  453,  454,  454,  454,
+      454,    0,    0,  454,    0,  454,  454,  454,  454,  454,
+      454,  462,  464,  464,  464,  464,  464,  464,  464,  464,
+      464,  464,  464,  464,  464,  464,  464,  464,  464,  464,
+      464,  464,  464,  464,  464,  464,  464,  464,  464,  464,
+      464,  464,  464,  464,  464,  464,  464,  464,  464,  464,
+      464,  464,  464,  464,  464,  464,  464,  464,  464,  464,
+      469,  469,  469,  469,    0,    0,  469,    0,    0,  469,
+      469,  469,  469,  469,    0,    0,    0,  469,  577,  577,
+      577,  577,  578,  578,  578,  578,  580,  580,  580,  580,
+
+      581,  581,  581,  581,    0,  469,  470,  470,  470,  470,
+        0,    0,  470,    0,  470,  470,  470,  470,  470,  470,
+      471,  471,  471,  471,    0,    0,  471,    0,  471,  471,
+      471,  471,  471,  471,  477,  477,  477,  477,    0,    0,
+      477,    0,    0,    0,  477,  477,  477,  477,  478,  478,
+      478,  478,    0,    0,  478,    0,  478,  478,  478,  478,
+      478,  478,  479,  479,  479,  479,    0,    0,  479,    0,
+      479,  479,  479,  479,  479,  479,  480,  480,  480,  480,
+        0,    0,  480,    0,    0,  480,  480,  480,  480,  480,
+        0,    0,    0,  480,  585,  585,  585,  585,  585,  561,
+
+      561,  561,  561,    0,    0,  561,  586,  586,  586,  586,
+        0,  480,  481,  481,  481,  481,  561,    0,  481,    0,
+      481,  481,  481,  481,  481,  481,  484,  484,  484,  484,
+        0,    0,  484,    0,  561,  484,  484,  484,  484,  484,
+        0,    0,    0,  484,  592,  592,  592,  592,    0,  576,
+      576,  576,  576,    0,    0,  576,  594,  594,  594,  594,
+        0,  484,  485,  485,  485,  485,  576,    0,  485,    0,
+      485,  485,  485,  485,  485,  485,  493,  493,  493,  493,
+        0,    0,  493,    0,  576,    0,  493,  493,  493,  493,
+        0,    0,    0,  493,  600,  600,  600,  600,  600,  601,
+
+      601,  601,  601,  607,  607,  607,  607,  609,  609,  609,
+      609,  493,  496,  496,  496,  496,    0,    0,  496,    0,
+      496,  496,  496,  496,  496,  496,  497,  497,  497,  497,
+        0,    0,  497,    0,  497,  497,  497,  497,  497,  497,
+      501,  501,  501,  501,  501,    0,    0,    0,  501,  610,
+      610,  610,  610,  618,  618,    0,  618,  618,  618,  618,
+      704,  704,  704,  704,    0,    0,  501,  502,  502,  502,
+      502,    0,    0,  502,    0,  502,  502,  502,  502,  502,
+      502,  503,  503,  503,  503,    0,    0,  503,    0,  503,
+      503,  503,  503,  503,  503,  509,  509,  509,  509,    0,
+
+        0,  509,    0,    0,    0,  509,  509,  509,  509,  510,
+      510,  510,  510,    0,    0,  510,    0,  510,  510,  510,
+      510,  510,  510,  511,  511,  511,  511,    0,    0,  511,
+        0,  511,  511,  511,  511,  511,  511,  512,  512,  512,
+      512,    0,    0,  512,    0,    0,  512,  512,  512,  512,
+      512,    0,    0,    0,  512,  617,  617,  617,  617,    0,
+      624,  624,  617,  624,  624,  624,  624,  705,  705,  705,
+      705,    0,  512,  513,  513,  513,  513,    0,    0,  513,
+      617,  513,  513,  513,  513,  513,  513,  516,  516,  516,
+      516,    0,    0,  516,    0,    0,  516,  516,  516,  516,
+
+      516,    0,  630,  630,  516,  630,  630,  630,  630,    0,
+        0,  525,  525,  525,  525,  525,    0,    0,    0,  525,
+        0,    0,  516,  517,  517,  517,  517,    0,    0,  517,
+        0,  517,  517,  517,  517,  517,  517,  525,  528,  528,
+      528,  528,  528,    0,  643,  643,  528,  643,  643,  643,
+      643,  649,  649,    0,  649,  649,  649,  649,  712,  712,
+      712,  712,    0,    0,  528,  529,  529,  529,  529,    0,
+        0,  529,    0,  529,  529,  529,  529,  529,  529,  530,
+      530,  530,  530,    0,    0,  530,    0,  530,  530,  530,
+      530,  530,  530,  536,  536,  536,  536,    0,    0,  536,
+
+        0,    0,    0,  536,  536,  536,  536,  537,  537,  537,
+      537,    0,    0,  537,    0,  537,  537,  537,  537,  537,
+      537,  538,  538,  538,  538,    0,    0,  538,    0,  538,
+      538,  538,  538,  538,  538,  539,  539,  539,  539,    0,
+        0,  539,    0,    0,  539,  539,  539,  539,  539,    0,
+        0,    0,  539,  648,  648,  648,  648,    0,  655,  655,
+      648,  655,  655,  655,  655,  717,  717,  717,  717,  717,
+      539,  540,  540,  540,  540,    0,    0,  540,  648,  540,
+      540,  540,  540,  540,  540,  543,  543,  543,  543,    0,
+        0,  543,    0,    0,  543,  543,  543,  543,  543,    0,
+
+      659,  659,  543,  659,  659,  659,  659,    0,    0,  552,
+      552,  552,  552,  552,    0,    0,    0,  552,    0,    0,
+      543,  544,  544,  544,  544,    0,    0,  544,    0,  544,
+      544,  544,  544,  544,  544,  552,  555,  555,  555,  555,
+        0,    0,  555,    0,    0,  555,  555,  555,  555,  555,
+        0,    0,    0,  555,  658,  658,  658,  658,    0,  665,
+      665,  658,  665,  665,  665,  665,  718,  718,  718,  718,
+        0,  555,  556,  556,  556,  556,    0,    0,  556,  658,
+      556,  556,  556,  556,  556,  556,  557,  557,  557,  557,
+        0,    0,  557,    0,  557,  557,  557,  557,  557,  557,
+
+      563,  563,  563,  563,    0,    0,  563,    0,    0,    0,
+      563,  563,  563,  563,  564,  564,  564,  564,    0,    0,
+      564,    0,  564,  564,  564,  564,  564,  564,  565,  565,
+      565,  565,    0,    0,  565,    0,  565,  565,  565,  565,
+      565,  565,  566,  566,  566,  566,    0,    0,  566,    0,
+        0,  566,  566,  566,  566,  566,    0,  671,  671,  566,
+      671,  671,  671,  671,  684,  684,    0,  684,  684,  684,
+      684,  724,  724,  724,  724,    0,    0,  566,  567,  567,
+      567,  567,    0,    0,  567,    0,  567,  567,  567,  567,
+      567,  567,  570,  570,  570,  570,    0,    0,  570,    0,
+
+        0,  570,  570,  570,  570,  570,    0,    0,    0,  570,
+      689,  689,  689,  689,    0,  690,  690,  689,  690,  690,
+      690,  690,  726,  726,  726,  726,    0,  570,  571,  571,
+      571,  571,    0,    0,  571,  689,  571,  571,  571,  571,
+      571,  571,  579,  579,  579,  579,    0,    0,  579,    0,
+        0,    0,  579,  579,  579,  579,    0,  696,  696,  579,
+      696,  696,  696,  696,  731,  731,  731,  731,  731,  732,
+      732,  732,  732,  738,  738,  738,  738,  579,  582,  582,
+      582,  582,    0,    0,  582,    0,  582,  582,  582,  582,
+      582,  582,  583,  583,  583,  583,    0,    0,  583,    0,
+
+      583,  583,  583,  583,  583,  583,  587,  587,  587,  587,
+      587,    0,    0,    0,  587,  740,  740,  740,  740,  741,
+      741,  741,  741,  747,  747,  747,  747,  747,  748,  748,
+      748,  748,  587,  588,  588,  588,  588,    0,    0,  588,
+        0,  588,  588,  588,  588,  588,  588,  589,  589,  589,
+      589,    0,    0,  589,    0,  589,  589,  589,  589,  589,
+      589,  595,  595,  595,  595,    0,    0,  595,    0,    0,
+        0,  595,  595,  595,  595,  596,  596,  596,  596,    0,
+        0,  596,    0,  596,  596,  596,  596,  596,  596,  597,
+      597,  597,  597,    0,    0,  597,    0,  597,  597,  597,
+
+      597,  597,  597,  598,  598,  598,  598,    0,    0,  598,
+        0,    0,  598,  598,  598,  598,  598,    0,    0,    0,
+      598,  754,  754,  754,  754,    0,  711,  711,  711,  711,
+        0,    0,  711,  756,  756,  756,  756,    0,  598,  599,
+      599,  599,  599,  711,    0,  599,    0,  599,  599,  599,
+      599,  599,  599,  602,  602,  602,  602,    0,    0,  602,
+        0,  711,  602,  602,  602,  602,  602,    0,    0,    0,
+      602,  757,  757,  757,  757,    0,    0,  611,  611,  611,
+      611,  611,    0,    0,    0,  611,    0,    0,  602,  603,
+      603,  603,  603,    0,    0,  603,    0,  603,  603,  603,
+
+      603,  603,  603,  611,  619,  619,  619,  619,    0,    0,
+      619,    0,  619,  619,  619,  619,  619,  619,    0,    0,
+        0,  619,  759,  759,  759,  759,  764,  764,  764,  764,
+      765,  765,  765,  765,  767,  767,  767,  767,    0,  619,
+      620,  620,  620,  620,    0,    0,  620,  620,  620,  620,
+      620,  620,  620,  620,  621,  621,  621,  621,    0,    0,
+      621,    0,  621,  621,  621,  621,  621,  621,    0,    0,
+        0,  621,  768,  768,  768,  768,    0,  774,  774,  774,
+      774,    0,    0,  774,  775,  775,  775,  775,    0,  621,
+      622,  622,  622,  622,  774,    0,  622,  622,  622,  622,
+
+      622,  622,  622,  622,  623,  623,  623,  623,    0,    0,
+      623,    0,  774,    0,  623,  623,  623,  623,    0,    0,
+        0,  623,  780,  780,  780,  780,    0,    0,  719,  719,
+      719,  719,  719,    0,    0,    0,  719,    0,    0,  623,
+      625,  625,  625,  625,    0,    0,  625,    0,  625,  625,
+      625,  625,  625,  625,  719,    0,    0,  625,  781,  781,
+      781,  781,    0,  787,  787,  787,  787,    0,    0,  787,
+      788,  788,  788,  788,    0,  625,  626,  626,  626,  626,
+      787,    0,  626,  626,  626,  626,  626,  626,  626,  626,
+      627,  627,  627,  627,    0,    0,  627,    0,  787,    0,
+
+      627,  627,  627,  627,    0,    0,    0,  627,  793,  793,
+      793,  793,  793,  794,  794,  794,  794,  800,  800,  800,
+      800,  802,  802,  802,  802,  627,  628,  628,  628,  628,
+        0,    0,  628,    0,  628,  628,  628,  628,  628,  628,
+      629,  629,  629,  629,    0,    0,  629,    0,  629,  629,
+      629,  629,  629,  629,  631,  631,  631,  631,    0,    0,
+      631,    0,  631,  631,  631,  631,  631,  631,    0,    0,
+        0,  631,  807,  807,  807,  807,  807,  808,  808,  808,
+      808,  814,  814,  814,  814,  816,  816,  816,  816,  631,
+      632,  632,  632,  632,    0,    0,  632,    0,  632,  632,
+
+      632,  632,  632,  632,  633,  633,  633,  633,    0,    0,
+      633,    0,  633,  633,  633,  633,  633,  633,  634,  634,
+      634,  634,    0,    0,  634,    0,  634,  634,  634,  634,
+      634,  634,  635,  635,  635,  635,    0,    0,  635,  635,
+      635,  635,  635,  635,  635,  635,  636,  636,  636,  636,
+        0,    0,  636,    0,  636,  636,  636,  636,  636,  636,
+        0,    0,    0,  636,  817,  817,  817,  817,  823,  823,
+      823,  823,  823,  824,  824,  824,  824,  830,  830,  830,
+      830,  636,  637,  637,  637,  637,    0,    0,  637,    0,
+      637,  637,  637,  637,  637,  637,  638,  638,  638,  638,
+
+        0,    0,  638,    0,  638,  638,  638,  638,  638,  638,
+      639,  639,  639,  639,    0,    0,  639,    0,  639,  639,
+      639,  639,  639,  639,  640,  640,  640,  640,    0,    0,
+      640,  640,  640,  640,  640,  640,  640,  640,  641,  641,
+      641,  641,    0,    0,  641,    0,    0,    0,  641,  641,
+      641,  641,    0,    0,    0,  641,  832,  832,  832,  832,
+      833,  833,  833,  833,  835,  835,  835,  835,  840,  840,
+      840,  840,    0,  641,  642,  642,  642,  642,    0,    0,
+      642,    0,  642,  642,  642,  642,  642,  642,  644,  644,
+      644,  644,    0,    0,  644,    0,  644,  644,  644,  644,
+
+      644,  644,    0,    0,    0,  644,  841,  841,  841,  841,
+      843,  843,  843,  843,  844,  844,  844,  844,  851,  851,
+      851,  851,    0,  644,  645,  645,  645,  645,    0,    0,
+      645,    0,  645,  645,  645,  645,  645,  645,  646,  646,
+      646,  646,    0,    0,  646,    0,  646,  646,  646,  646,
+      646,  646,  647,  647,  647,  647,    0,    0,  647,  647,
+      647,  647,  647,  647,  647,  647,  650,  650,  650,  650,
+        0,    0,  650,    0,  650,  650,  650,  650,  650,  650,
+        0,  861,  861,  650,  861,  861,  861,  861,  867,  867,
+        0,  867,  867,  867,  867,  882,  882,  882,  882,  882,
+
+        0,  650,  651,  651,  651,  651,    0,    0,  651,  651,
+      651,  651,  651,  651,  651,  651,  652,  652,  652,  652,
+        0,    0,  652,    0,  652,  652,  652,  652,  652,  652,
+        0,  873,  873,  652,  873,  873,  873,  873,    0,  850,
+      850,  850,  850,  879,  879,  850,  879,  879,  879,  879,
+        0,  652,  653,  653,  653,  653,  850,    0,  653,  653,
+      653,  653,  653,  653,  653,  653,  654,  654,  654,  654,
+        0,    0,  654,    0,  850,    0,  654,  654,  654,  654,
+        0,  881,  881,  654,  881,  881,  881,  881,    0,    0,
+      742,  742,  742,  742,  742,    0,    0,    0,  742,    0,
+
+        0,  654,  656,  656,  656,  656,    0,    0,  656,    0,
+      656,  656,  656,  656,  656,  656,  742,  883,  883,  656,
+      883,  883,  883,  883,  884,  884,  884,  884,  884,  885,
+      885,    0,  885,  885,  885,  885,    0,  656,  657,  657,
+      657,  657,    0,    0,  657,  657,  657,  657,  657,  657,
+      657,  657,  660,  660,  660,  660,    0,    0,  660,    0,
+      660,  660,  660,  660,  660,  660,    0,  887,  887,  660,
+      887,  887,  887,  887,  888,  888,  888,  888,  888,  889,
+      889,    0,  889,  889,  889,  889,    0,  660,  661,  661,
+      661,  661,    0,    0,  661,  661,  661,  661,  661,  661,
+
+      661,  661,  662,  662,  662,  662,    0,    0,  662,    0,
+      662,  662,  662,  662,  662,  662,    0,    0,    0,  662,
+      890,  890,  890,  890,  890,  891,  891,    0,  891,  891,
+      891,  891,  894,  894,  894,  894,  894,  662,  663,  663,
+      663,  663,    0,    0,  663,  663,  663,  663,  663,  663,
+      663,  663,  664,  664,  664,  664,    0,    0,  664,    0,
+        0,    0,  664,  664,  664,  664,    0,  893,  893,  664,
+      893,  893,  893,  893,    0,    0,  758,  758,  758,  758,
+      758,    0,    0,    0,  758,    0,    0,  664,  666,  666,
+      666,  666,    0,    0,  666,    0,  666,  666,  666,  666,
+
+      666,  666,  758,  895,  895,  666,  895,  895,  895,  895,
+      899,  899,  899,  899,  900,  900,  900,  900,  907,  907,
+      907,  907,    0,  666,  667,  667,  667,  667,    0,    0,
+      667,  667,  667,  667,  667,  667,  667,  667,  668,  668,
+      668,  668,    0,    0,  668,    0,    0,    0,  668,  668,
+      668,  668,    0,    0,    0,  668,  860,  860,  860,  860,
+        0,    0,    0,  860,  915,  915,  915,  915,  923,  923,
+      923,  923,    0,  668,  669,  669,  669,  669,    0,    0,
+      669,  860,  669,  669,  669,  669,  669,  669,  670,  670,
+      670,  670,    0,    0,  670,    0,  670,  670,  670,  670,
+
+      670,  670,  672,  672,  672,  672,    0,    0,  672,    0,
+      672,  672,  672,  672,  672,  672,    0,    0,    0,  672,
+      878,  878,  878,  878,    0,    0,    0,  878,  924,  924,
+      924,  924,  925,  925,  925,  925,    0,  672,  673,  673,
+      673,  673,    0,    0,  673,  878,  673,  673,  673,  673,
+      673,  673,  674,  674,  674,  674,    0,    0,  674,    0,
+      674,  674,  674,  674,  674,  674,  675,  675,  675,  675,
+        0,    0,  675,    0,  675,  675,  675,  675,  675,  675,
+      676,  676,  676,  676,    0,    0,  676,  676,  676,  676,
+      676,  676,  676,  676,  677,  677,  677,  677,    0,    0,
+
+      677,    0,  677,  677,  677,  677,  677,  677,    0,    0,
+        0,  677,  880,  880,  880,  880,    0,    0,    0,  880,
+      926,  926,  926,  926,  928,  928,  928,  928,    0,  677,
+      678,  678,  678,  678,    0,    0,  678,  880,  678,  678,
+      678,  678,  678,  678,  679,  679,  679,  679,    0,    0,
+      679,    0,  679,  679,  679,  679,  679,  679,  680,  680,
+      680,  680,    0,    0,  680,    0,  680,  680,  680,  680,
+      680,  680,  681,  681,  681,  681,    0,    0,  681,  681,
+      681,  681,  681,  681,  681,  681,  682,  682,  682,  682,
+        0,    0,  682,    0,    0,    0,  682,  682,  682,  682,
+
+        0,    0,    0,  682,  886,  886,  886,  886,    0,    0,
+        0,  886,  929,  929,  929,  929,  931,  931,  931,  931,
+        0,  682,  683,  683,  683,  683,    0,    0,  683,  886,
+      683,  683,  683,  683,  683,  683,  685,  685,  685,  685,
+        0,    0,  685,    0,  685,  685,  685,  685,  685,  685,
+        0,    0,    0,  685,  892,  892,  892,  892,    0,    0,
+        0,  892,  933,  933,  933,  933,  934,  934,  934,  934,
+        0,  685,  686,  686,  686,  686,    0,    0,  686,  892,
+      686,  686,  686,  686,  686,  686,  687,  687,  687,  687,
+        0,    0,  687,    0,  687,  687,  687,  687,  687,  687,
+
+      688,  688,  688,  688,    0,    0,  688,  688,  688,  688,
+      688,  688,  688,  688,  691,  691,  691,  691,    0,    0,
+      691,    0,  691,  691,  691,  691,  691,  691,    0,    0,
+        0,  691,  936,  936,  936,  936,  937,  937,  937,  937,
+      939,  939,  939,  939,  940,  940,  940,  940,    0,  691,
+      692,  692,  692,  692,    0,    0,  692,  692,  692,  692,
+      692,  692,  692,  692,  693,  693,  693,  693,    0,    0,
+      693,    0,  693,  693,  693,  693,  693,  693,    0,    0,
+        0,  693,  941,  941,  941,  941,  942,  942,  942,  942,
+      944,  944,  944,  944,  945,  945,  945,  945,    0,  693,
+
+      694,  694,  694,  694,    0,    0,  694,  694,  694,  694,
+      694,  694,  694,  694,  695,  695,  695,  695,    0,    0,
+      695,    0,    0,    0,  695,  695,  695,  695,    0,    0,
+      959,  695,  959,  959,    0,    0,  959,    0,  766,  766,
+      766,  766,  766,    0,    0,    0,  766,    0,    0,  695,
+      697,  697,  697,  697,    0,    0,  697,    0,  697,  697,
+      697,  697,  697,  697,  766,    0,    0,  697,  960,  960,
+      960,  960,    0,  962,  960,  962,  962,    0,  963,  962,
+      963,  963,    0,    0,  963,  697,  698,  698,  698,  698,
+        0,    0,  698,  698,  698,  698,  698,  698,  698,  698,
+
+      706,  706,  706,  706,    0,    0,  706,    0,  706,  706,
+      706,  706,  706,  706,  707,  707,  707,  707,    0,    0,
+      707,    0,  707,  707,  707,  707,  707,  707,  709,  709,
+      709,  709,    0,    0,  709,    0,  709,  709,  709,  709,
+      709,  709,  710,  710,  710,  710,    0,    0,  710,    0,
+      710,  710,  710,  710,  710,  710,  713,  713,  713,  713,
+        0,    0,  713,    0,    0,    0,  713,  713,  713,  713,
+      714,  714,  714,  714,    0,    0,  714,    0,  714,  714,
+      714,  714,  714,  714,  715,  715,  715,  715,    0,    0,
+      715,    0,  715,  715,  715,  715,  715,  715,  720,  720,
+
+      720,  720,    0,    0,  720,    0,  720,  720,  720,  720,
+      720,  720,  721,  721,  721,  721,    0,    0,  721,    0,
+      721,  721,  721,  721,  721,  721,  727,  727,  727,  727,
+        0,    0,  727,    0,    0,    0,  727,  727,  727,  727,
+      728,  728,  728,  728,    0,    0,  728,    0,  728,  728,
+      728,  728,  728,  728,  729,  729,  729,  729,    0,    0,
+      729,    0,  729,  729,  729,  729,  729,  729,  730,  730,
+      730,  730,    0,    0,  730,    0,    0,  730,  730,  730,
+      730,  730,    0,    0,    0,  730,  795,  795,  795,  795,
+      795,    0,    0,    0,  795,  927,  927,  927,  927,    0,
+
+        0,    0,  927,  730,  733,  733,  733,  733,    0,    0,
+      733,    0,  795,  733,  733,  733,  733,  733,    0,    0,
+      927,  733,  935,  935,  935,  935,    0,    0,  964,  935,
+      964,  964,    0,    0,  964,    0,    0,    0,    0,  733,
+      734,  734,  734,  734,    0,    0,  734,  935,  734,  734,
+      734,  734,  734,  734,  735,  735,  735,  735,    0,    0,
+      735,    0,  735,  735,  735,  735,  735,  735,  743,  743,
+      743,  743,    0,    0,  743,    0,  743,  743,  743,  743,
+      743,  743,  744,  744,  744,  744,    0,    0,  744,    0,
+      744,  744,  744,  744,  744,  744,  745,  745,  745,  745,
+
+        0,    0,  745,    0,    0,  745,  745,  745,  745,  745,
+        0,    0,    0,  745,  943,  943,  943,  943,    0,    0,
+        0,  943,  965,  965,  965,  965,    0,    0,  965,    0,
+        0,  745,  746,  746,  746,  746,    0,    0,  746,  943,
+      746,  746,  746,  746,  746,  746,  749,  749,  749,  749,
+        0,    0,  749,    0,    0,  749,  749,  749,  749,  749,
+        0,    0,  966,  749,  966,  966,    0,    0,  966,  967,
+      967,  967,  967,    0,  969,  967,  969,  969,    0,    0,
+      969,  749,  750,  750,  750,  750,    0,    0,  750,    0,
+      750,  750,  750,  750,  750,  750,  760,  760,  760,  760,
+
+        0,    0,  760,    0,    0,    0,  760,  760,  760,  760,
+      761,  761,  761,  761,    0,    0,  761,    0,  761,  761,
+      761,  761,  761,  761,  762,  762,  762,  762,    0,    0,
+      762,    0,  762,  762,  762,  762,  762,  762,  763,  763,
+      763,  763,    0,    0,  763,    0,    0,  763,  763,  763,
+      763,  763,    0,    0,    0,  763,  968,  968,  968,  968,
+        0,  970,  968,  970,  970,    0,  971,  970,  971,  971,
+        0,    0,  971,  763,  769,  769,  769,  769,    0,    0,
+      769,    0,  769,  769,  769,  769,  769,  769,  770,  770,
+      770,  770,    0,    0,  770,    0,  770,  770,  770,  770,
+
+      770,  770,  772,  772,  772,  772,    0,    0,  772,    0,
+      772,  772,  772,  772,  772,  772,  773,  773,  773,  773,
+        0,    0,  773,    0,  773,  773,  773,  773,  773,  773,
+      776,  776,  776,  776,    0,    0,  776,    0,    0,    0,
+      776,  776,  776,  776,  777,  777,  777,  777,    0,    0,
+      777,    0,  777,  777,  777,  777,  777,  777,  778,  778,
+      778,  778,    0,    0,  778,    0,  778,  778,  778,  778,
+      778,  778,  782,  782,  782,  782,    0,    0,  782,    0,
+      782,  782,  782,  782,  782,  782,  783,  783,  783,  783,
+        0,    0,  783,    0,  783,  783,  783,  783,  783,  783,
+
+      785,  785,  785,  785,    0,    0,  785,    0,  785,  785,
+      785,  785,  785,  785,  786,  786,  786,  786,    0,    0,
+      786,    0,  786,  786,  786,  786,  786,  786,  789,  789,
+      789,  789,    0,    0,  789,    0,    0,    0,  789,  789,
+      789,  789,  790,  790,  790,  790,    0,    0,  790,    0,
+      790,  790,  790,  790,  790,  790,  791,  791,  791,  791,
+        0,    0,  791,    0,  791,  791,  791,  791,  791,  791,
+      796,  796,  796,  796,    0,    0,  796,    0,  796,  796,
+      796,  796,  796,  796,  797,  797,  797,  797,    0,    0,
+      797,    0,  797,  797,  797,  797,  797,  797,  803,  803,
+
+      803,  803,    0,    0,  803,    0,    0,    0,  803,  803,
+      803,  803,  804,  804,  804,  804,    0,    0,  804,    0,
+      804,  804,  804,  804,  804,  804,  805,  805,  805,  805,
+        0,    0,  805,    0,  805,  805,  805,  805,  805,  805,
+      806,  806,  806,  806,    0,    0,  806,    0,    0,  806,
+      806,  806,  806,  806,    0,    0,    0,  806,  818,  818,
+      818,  818,  818,    0,    0,    0,  818,  972,  972,  972,
+      972,    0,    0,  972,    0,  806,  809,  809,  809,  809,
+        0,    0,  809,    0,  818,  809,  809,  809,  809,  809,
+        0,    0,    0,  809,  973,  973,  973,  973,    0,    0,
+
+      973,  974,  974,  974,  974,    0,    0,  974,    0,    0,
+        0,  809,  810,  810,  810,  810,    0,    0,  810,    0,
+      810,  810,  810,  810,  810,  810,  811,  811,  811,  811,
+        0,    0,  811,    0,  811,  811,  811,  811,  811,  811,
+      819,  819,  819,  819,    0,    0,  819,    0,  819,  819,
+      819,  819,  819,  819,  820,  820,  820,  820,    0,    0,
+      820,    0,  820,  820,  820,  820,  820,  820,  821,  821,
+      821,  821,    0,    0,  821,    0,    0,  821,  821,  821,
+      821,  821,    0,    0,    0,  821,  975,  975,  975,  975,
+        0,    0,  975,    0,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,  821,  822,  822,  822,  822,    0,    0,
+      822,    0,  822,  822,  822,  822,  822,  822,  825,  825,
+      825,  825,    0,    0,  825,    0,    0,  825,  825,  825,
+      825,  825,    0,    0,    0,  825,    0,    0,    0,    0,
+        0,    0,  834,  834,  834,  834,  834,    0,    0,    0,
+      834,    0,    0,  825,  826,  826,  826,  826,    0,    0,
+      826,    0,  826,  826,  826,  826,  826,  826,  834,  836,
+      836,  836,  836,    0,    0,  836,    0,    0,    0,  836,
+      836,  836,  836,  837,  837,  837,  837,    0,    0,  837,
+        0,  837,  837,  837,  837,  837,  837,  838,  838,  838,
+
+      838,    0,    0,  838,    0,  838,  838,  838,  838,  838,
+      838,  839,  839,  839,  839,    0,    0,  839,    0,    0,
+      839,  839,  839,  839,  839,    0,    0,    0,  839,  842,
+      842,  842,  842,  842,    0,    0,    0,  842,    0,    0,
+        0,    0,    0,    0,    0,    0,  839,    0,    0,    0,
+        0,    0,    0,    0,    0,  842,  845,  845,  845,  845,
+        0,    0,  845,    0,  845,  845,  845,  845,  845,  845,
+      846,  846,  846,  846,    0,    0,  846,    0,  846,  846,
+      846,  846,  846,  846,  848,  848,  848,  848,    0,    0,
+      848,    0,  848,  848,  848,  848,  848,  848,  849,  849,
+
+      849,  849,    0,    0,  849,    0,  849,  849,  849,  849,
+      849,  849,  852,  852,  852,  852,    0,    0,  852,    0,
+        0,    0,  852,  852,  852,  852,  853,  853,  853,  853,
+        0,    0,  853,    0,  853,  853,  853,  853,  853,  853,
+      854,  854,  854,  854,    0,    0,  854,    0,  854,  854,
+      854,  854,  854,  854,  862,  862,  862,  862,    0,    0,
+      862,    0,  862,  862,  862,  862,  862,  862,    0,    0,
+        0,  862,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  862,
+      863,  863,  863,  863,    0,    0,  863,  863,  863,  863,
+
+      863,  863,  863,  863,  864,  864,  864,  864,    0,    0,
+      864,    0,  864,  864,  864,  864,  864,  864,    0,    0,
+        0,  864,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  864,
+      865,  865,  865,  865,    0,    0,  865,  865,  865,  865,
+      865,  865,  865,  865,  866,  866,  866,  866,    0,    0,
+      866,    0,    0,    0,  866,  866,  866,  866,    0,    0,
+        0,  866,    0,    0,    0,    0,    0,    0,  930,  930,
+      930,  930,  930,    0,    0,    0,  930,    0,    0,  866,
+      868,  868,  868,  868,    0,    0,  868,    0,  868,  868,
+
+      868,  868,  868,  868,  930,    0,    0,  868,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  868,  869,  869,  869,  869,
+        0,    0,  869,  869,  869,  869,  869,  869,  869,  869,
+      870,  870,  870,  870,    0,    0,  870,    0,  870,  870,
+      870,  870,  870,  870,    0,    0,    0,  870,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  870,  871,  871,  871,  871,
+        0,    0,  871,  871,  871,  871,  871,  871,  871,  871,
+      872,  872,  872,  872,    0,    0,  872,    0,    0,    0,
+
+      872,  872,  872,  872,    0,    0,    0,  872,    0,    0,
+        0,    0,    0,    0,  938,  938,  938,  938,  938,    0,
+        0,    0,  938,    0,    0,  872,  874,  874,  874,  874,
+        0,    0,  874,    0,  874,  874,  874,  874,  874,  874,
+      938,    0,    0,  874,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  874,  875,  875,  875,  875,    0,    0,  875,  875,
+      875,  875,  875,  875,  875,  875,  876,  876,  876,  876,
+        0,    0,  876,    0,  876,  876,  876,  876,  876,  876,
+        0,    0,    0,  876,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  876,  877,  877,  877,  877,    0,    0,  877,  877,
+      877,  877,  877,  877,  877,  877,  906,  906,  906,  906,
+        0,    0,  906,  906,  906,    0,    0,    0,    0,    0,
+        0,    0,    0,  906,  946,  946,  946,  946,  946,    0,
+        0,    0,  946,    0,    0,    0,    0,    0,    0,    0,
+        0,  906,  908,  908,  908,  908,    0,    0,  908,    0,
+      946,    0,  908,  908,  908,  908,  914,  914,  914,  914,
+        0,    0,  914,  914,  914,    0,    0,    0,    0,    0,
+        0,    0,    0,  914,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  914,  916,  916,  916,  916,    0,    0,  916,    0,
+        0,    0,  916,  916,  916,  916,  922,  922,  922,  922,
+        0,    0,  922,  922,  922,    0,    0,    0,    0,    0,
+        0,    0,    0,  922,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  922,  932,  932,  932,  932,    0,    0,  932,    0,
+        0,    0,  932,  932,  932,  932,  977,  977,  977,  977,
+      977,  977,  977,  977,  978,  978,  978,  978,  978,  978,
+      978,  978,  979,  979,  979,  979,  979,  979,  979,  979,
+
+      980,  980,  980,  980,  980,  980,  980,  980,  981,  981,
+        0,  981,  981,  981,  981,  981,  982,  982,    0,  982,
+      982,  982,  982,  982,  983,    0,    0,  983,  984,    0,
+        0,  984,  985,    0,    0,  985,    0,  985,  985,  985,
+      986,  986,    0,  986,  986,  986,  986,  986,  987,    0,
+        0,  987,    0,  987,  987,  988,  988,    0,  988,  988,
+      988,  988,  988,  989,  989,    0,  989,    0,  989,  989,
+      989,  990,  990,    0,  990,  990,  990,  990,  990,  991,
+      991,  991,  991,  991,  991,  991,  991,  992,  992,  992,
+      992,  992,  992,  992,  992,  993,  993,    0,    0,  993,
+
+      993,  995,  995,  995,  995,  995,  995,  995,  995,  996,
+      996,  996,  996,  996,  996,  996,  996,  997,  997,  997,
+      997,  997,  997,  997,  997,  998,  998,  998,  998,  998,
+      998,  998,  998, 1000, 1000, 1000, 1000, 1000, 1000, 1000,
+     1000, 1001, 1001,    0, 1001, 1001, 1001, 1001, 1001, 1002,
+     1002, 1002, 1002, 1002, 1002, 1002, 1002, 1003, 1003, 1003,
+     1003, 1003, 1003, 1003, 1003, 1004, 1004,    0, 1004,    0,
+     1004, 1004, 1004, 1005, 1005,    0, 1005, 1005, 1005, 1005,
+     1005, 1007, 1007,    0, 1007, 1007, 1007, 1007, 1007, 1008,
+        0,    0, 1008, 1009, 1009, 1009, 1009, 1009, 1009, 1009,
+
+     1009, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1011,
+     1011,    0,    0, 1011, 1011, 1013, 1013, 1013, 1013, 1013,
+     1013, 1013, 1013, 1015, 1015, 1015, 1015, 1015, 1015, 1015,
+     1015, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1018,
+     1018, 1018, 1018, 1018, 1018, 1018, 1018, 1019, 1019, 1019,
+     1019, 1019, 1019, 1019, 1019, 1020, 1020, 1020, 1020, 1020,
+     1020, 1020, 1020, 1021, 1021, 1021, 1021, 1021, 1021, 1021,
+     1021, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1023,
+     1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024,
+     1024, 1024, 1024, 1024, 1024, 1025, 1025, 1025, 1025, 1025,
+
+     1025, 1025, 1025, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
+     1026, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1028,
+     1028, 1028, 1028, 1028, 1028, 1028, 1028, 1029, 1029, 1029,
+     1029, 1029, 1029, 1029, 1029, 1030, 1030, 1030, 1030, 1030,
+     1030, 1030, 1030, 1031, 1031, 1031, 1031, 1031, 1031, 1031,
+     1031, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1033,
+     1033, 1033, 1033, 1033, 1033, 1033, 1033, 1034, 1034,    0,
+     1034, 1034, 1034, 1034, 1034, 1035,    0,    0, 1035, 1036,
+     1036, 1036, 1036, 1036, 1036, 1036, 1036, 1037, 1037, 1037,
+     1037, 1037, 1037, 1037, 1037, 1038, 1038, 1038, 1038, 1038,
+
+     1038, 1038, 1038, 1040, 1040, 1040, 1040, 1040, 1040, 1040,
+     1040, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1042,
+     1042, 1042, 1042, 1042, 1042, 1042, 1042, 1043, 1043, 1043,
+     1043, 1043, 1043, 1043, 1043, 1044, 1044, 1044, 1044, 1044,
+     1044, 1044, 1044, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
+     1045, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1047,
+     1047, 1047, 1047, 1047, 1047, 1047, 1047, 1048, 1048, 1048,
+     1048, 1048, 1048, 1048, 1048, 1049, 1049, 1049, 1049, 1049,
+     1049, 1049, 1049, 1050, 1050, 1050, 1050, 1050, 1050, 1050,
+     1050, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1052,
+
+     1052, 1052, 1052, 1052, 1052, 1052, 1052, 1053, 1053, 1053,
+     1053, 1053, 1053, 1053, 1053, 1054, 1054, 1054, 1054, 1054,
+     1054, 1054, 1054, 1055, 1055, 1055, 1055, 1055, 1055, 1055,
+     1055, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1057,
+     1057,    0, 1057, 1057, 1057, 1057, 1057, 1058,    0,    0,
+     1058, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1060,
+     1060, 1060, 1060, 1060, 1060, 1060, 1060, 1061, 1061, 1061,
+     1061, 1061, 1061, 1061, 1061, 1062, 1062, 1062, 1062, 1062,
+     1062, 1062, 1062, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+     1063, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1065,
+
+     1065, 1065, 1065, 1065, 1065, 1065, 1065, 1066, 1066, 1066,
+     1066, 1066, 1066, 1066, 1066, 1067, 1067, 1067, 1067, 1067,
+     1067, 1067, 1067, 1068, 1068, 1068, 1068, 1068, 1068, 1068,
+     1068, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1070,
+     1070, 1070, 1070, 1070, 1070, 1070, 1070, 1071, 1071, 1071,
+     1071, 1071, 1071, 1071, 1071, 1072, 1072, 1072, 1072, 1072,
+     1072, 1072, 1072, 1073, 1073, 1073, 1073, 1073, 1073, 1073,
+     1073, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1075,
+     1075, 1075, 1075, 1075, 1075, 1075, 1075, 1076, 1076, 1076,
+     1076, 1076, 1076, 1076, 1076, 1077, 1077, 1077, 1077, 1077,
+
+     1077, 1077, 1077, 1078, 1078, 1078, 1078, 1078, 1078, 1078,
+     1078, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1080,
+     1080, 1080, 1080, 1080, 1080, 1080, 1080, 1081, 1081, 1081,
+     1081, 1081, 1081, 1081, 1081, 1082, 1082, 1082, 1082, 1082,
+     1082, 1082, 1082, 1083, 1083,    0, 1083, 1083, 1083, 1083,
+     1083, 1084,    0,    0, 1084, 1085, 1085, 1085, 1085, 1085,
+     1085, 1085, 1085, 1086, 1086, 1086, 1086, 1086, 1086, 1086,
+     1086, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1088,
+     1088, 1088, 1088, 1088, 1088, 1088, 1088, 1089, 1089, 1089,
+     1089, 1089, 1089, 1089, 1089, 1090, 1090, 1090, 1090, 1090,
+
+     1090, 1090, 1090, 1091, 1091, 1091, 1091, 1091, 1091, 1091,
+     1091, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1093,
+     1093, 1093, 1093, 1093, 1093, 1093, 1093, 1094, 1094, 1094,
+     1094, 1094, 1094, 1094, 1094, 1095, 1095, 1095, 1095, 1095,
+     1095, 1095, 1095, 1096, 1096, 1096, 1096, 1096, 1096, 1096,
+     1096, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1098,
+     1098, 1098, 1098, 1098, 1098, 1098, 1098, 1099, 1099, 1099,
+     1099, 1099, 1099, 1099, 1099, 1100, 1100, 1100, 1100, 1100,
+     1100, 1100, 1100, 1101, 1101, 1101, 1101, 1101, 1101, 1101,
+     1101, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1103,
+
+     1103, 1103, 1103, 1103, 1103, 1103, 1103, 1104, 1104, 1104,
+     1104, 1104, 1104, 1104, 1104, 1105, 1105, 1105, 1105, 1105,
+     1105, 1105, 1105, 1106, 1106, 1106, 1106, 1106, 1106, 1106,
+     1106, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1108,
+     1108, 1108, 1108, 1108, 1108, 1108, 1108, 1109, 1109,    0,
+     1109, 1109, 1109, 1109, 1109, 1110,    0,    0, 1110, 1111,
+     1111, 1111, 1111, 1111, 1111, 1111, 1111, 1112, 1112, 1112,
+     1112, 1112, 1112, 1112, 1112, 1113, 1113, 1113, 1113, 1113,
+     1113, 1113, 1113, 1114, 1114, 1114, 1114, 1114, 1114, 1114,
+     1114, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1116,
+
+     1116, 1116, 1116, 1116, 1116, 1116, 1116, 1117, 1117, 1117,
+     1117, 1117, 1117, 1117, 1117, 1118, 1118,    0, 1118, 1118,
+     1118, 1118, 1118, 1119, 1119, 1119, 1119, 1119, 1119, 1119,
+     1119,  976,  976,  976,  976,  976,  976,  976,  976,  976,
+      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
+      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
+      976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
+      976,  976,  976,  976,  976,  976,  976,  976,  976,  976
+    } ;
+
+static yy_state_type yy_last_accepting_state;
+static char *yy_last_accepting_cpos;
+
+extern int vrmlyy_flex_debug;
+int vrmlyy_flex_debug = 0;
+
+/* The intent behind this definition is that it'll catch
+ * any uses of REJECT which flex missed.
+ */
+#define REJECT reject_used_but_not_detected
+#define yymore() yymore_used_but_not_detected
+#define YY_MORE_ADJ 0
+#define YY_RESTORE_YY_MORE_OFFSET
+char *vrmlyytext;
+#line 1 "vrmlLexer.lxx"
+/*
+// Filename: vrmlLexer.lxx
+// Created by:  drose (01Oct04)
+//
+////////////////////////////////////////////////////////////////////
+//
+// PANDA 3D SOFTWARE
+// Copyright (c) Carnegie Mellon University.  All rights reserved.
+//
+// All use of this software is subject to the terms of the revised BSD
+// license.  You should have received a copy of this license along
+// with this source code in a file named "LICENSE."
+//
+////////////////////////////////////////////////////////////////////
+*/
+/**************************************************
+ * VRML 2.0 Parser
+ * Copyright (C) 1996 Silicon Graphics, Inc.
+ *
+ * Author(s)    : Gavin Bell
+ *                Daniel Woods (first port)
+ **************************************************
+ */
+#line 26 "vrmlLexer.lxx"
+#include "pandatoolbase.h"
+
+#include "vrmlNode.h"
+#include "vrmlParser.h"
+#include "pnotify.h"
+#include "pstrtod.h"
+
+static int yyinput(void);        // declared by flex.
+extern "C" int vrmlyywrap();
+
+////////////////////////////////////////////////////////////////////
+// Static variables
+////////////////////////////////////////////////////////////////////
+
+// We'll increment line_number as we parse the file, so
+// that we can report the position of an error.
+static int line_number = 0;
+
+// current_line holds as much of the current line as will fit.  Its
+// only purpose is for printing it out to report an error to the user.
+static const int max_error_width = 1024;
+static char current_line[max_error_width + 1];
+
+static int error_count = 0;
+static int warning_count = 0;
+
+// This is the pointer to the current input stream.
+static istream *input_p = NULL;
+
+// This is the name of the vrml file we're parsing.  We keep it so we
+// can print it out for error messages.
+static string vrml_filename;
+
+extern void vrmlyyerror(const string &);
+
+    /* The YACC parser sets this to a token to direct the lexer */
+    /* in cases where just syntax isn't enough: */
+int expectToken = 0;
+
+    /* True when parsing a multiple-valued field: */
+static int parsing_mf = 0;
+
+    /* These are used when parsing SFImage fields: */
+static int sfImageIntsParsed = 0;
+static int sfImageIntsExpected = 0;
+
+// This is used while scanning a quoted string.
+static string quoted_string;
+
+// And this keeps track of the currently-parsing array.
+static MFArray *mfarray;
+
+void
+vrml_init_lexer(istream &in, const string &filename) {
+  input_p = &in;
+  vrml_filename = filename;
+  line_number = 0;
+  error_count = 0;
+  warning_count = 0;
+}
+
+////////////////////////////////////////////////////////////////////
+// Internal support functions.
+////////////////////////////////////////////////////////////////////
+
+int
+vrmlyywrap(void) {
+  return 1;
+}
+
+void
+vrmlyyerror(const string &msg) {
+  cerr << "\nError";
+  if (!vrml_filename.empty()) {
+    cerr << " in " << vrml_filename;
+  }
+  cerr 
+    << " at line " << line_number << ":\n"
+    << current_line << "\n";
+  
+  error_count++;
+}
+
+void
+vrmlyywarning(const string &msg) {
+  cerr << "\nWarning";
+  if (!vrml_filename.empty()) {
+    cerr << " in " << vrml_filename;
+  }
+  cerr 
+    << " at line " << line_number << ":\n"
+    << current_line << "\n";
+
+  warning_count++;
+}
+
+// Now define a function to take input from an istream instead of a
+// stdio FILE pointer.  This is flex-specific.
+static void
+input_chars(char *buffer, int &result, int max_size) {
+  nassertv(input_p != NULL);
+  if (*input_p) {
+    input_p->read(buffer, max_size);
+    result = input_p->gcount();
+    if (result >= 0 && result < max_size) {
+      // Truncate at the end of the read.
+      buffer[result] = '\0';
+    }
+
+    if (line_number == 0) {
+      // This is a special case.  If we are reading the very first bit
+      // from the stream, copy it into the current_line array.  This
+      // is because the \n.* rule below, which fills current_line
+      // normally, doesn't catch the first line.
+      strncpy(current_line, vrmlyytext, max_error_width);
+      current_line[max_error_width] = '\0';
+      line_number++;
+
+      // Truncate it at the newline.
+      char *end = strchr(current_line, '\n');
+      if (end != NULL) {
+        *end = '\0';
+      }
+    }
+
+  } else {
+    // End of file or I/O error.
+    result = 0;
+  }
+}
+#undef YY_INPUT
+
+// Define this macro carefully, since different flex versions call it
+// with a different type for result.
+#define YY_INPUT(buffer, result, max_size) { \
+  int int_result; \
+  input_chars((buffer), int_result, (max_size)); \
+  (result) = int_result; \
+}
+
+int extract_int() {
+  return strtol(vrmlyytext, NULL, 0);
+}
+
+double extract_float() {
+  return patof(vrmlyytext);
+}
+
+void extract_vec(double vec[], int num_elements) {
+  char *p = vrmlyytext;
+  for (int i = 0; i < num_elements; i++) {
+    vec[i] = pstrtod(p, &p);
+  }
+}
+
+/* Normal state:  parsing nodes.  The initial start state is used */
+/* only to recognize the VRML header. */
+
+/* Start tokens for all of the field types, */
+/* except for MFNode and SFNode, which are almost completely handled */
+/* by the parser: */
+
+
+
+/* Big hairy expression for floating point numbers: */
+/* Ints are decimal or hex (0x##): */
+/* Whitespace.  Using this pattern can screw up currentLineNumber, */
+/* so it is only used wherever it is really convenient and it is */
+/* extremely unlikely that the user will put in a carriage return */
+/* (example: between the floats in an SFVec3f) */
+/* And the same pattern without the newline */
+/* Here's a pattern that matches a single newline character. */
+/* Legal characters to start an identifier */
+/* Legal other characters in an identifier */
+/*idRestChar  ([^\x00-\x20\x22\x23\x27\x2b-\x2e\x5b-\x5d\x7b\x7d])*/
+/* Allow hyphen (0x2d) in identifiers. */
+#line 2927 "lex.yy.c"
+
+#define INITIAL 0
+#define NODE 1
+#define SFB 2
+#define SFC 3
+#define SFF 4
+#define SFIMG 5
+#define SFI 6
+#define SFR 7
+#define SFS 8
+#define SFT 9
+#define SFV2 10
+#define SFV3 11
+#define MFC 12
+#define MFF 13
+#define MFI 14
+#define MFR 15
+#define MFS 16
+#define MFV2 17
+#define MFV3 18
+#define IN_SFS 19
+#define IN_MFS 20
+#define IN_SFIMG 21
+
+#ifndef YY_NO_UNISTD_H
+/* Special case for "unistd.h", since it is non-ANSI. We include it way
+ * down here because we want the user's section 1 to have been scanned first.
+ * The user has a chance to override it with an option.
+ */
+#endif
+
+#ifndef YY_EXTRA_TYPE
+#define YY_EXTRA_TYPE void *
+#endif
+
+static int yy_init_globals (void );
+
+/* Accessor methods to globals.
+   These are made visible to non-reentrant scanners for convenience. */
+
+int vrmlyylex_destroy (void );
+
+int vrmlyyget_debug (void );
+
+void vrmlyyset_debug (int debug_flag  );
+
+YY_EXTRA_TYPE vrmlyyget_extra (void );
+
+void vrmlyyset_extra (YY_EXTRA_TYPE user_defined  );
+
+FILE *vrmlyyget_in (void );
+
+void vrmlyyset_in  (FILE * in_str  );
+
+FILE *vrmlyyget_out (void );
+
+void vrmlyyset_out  (FILE * out_str  );
+
+int vrmlyyget_leng (void );
+
+char *vrmlyyget_text (void );
+
+int vrmlyyget_lineno (void );
+
+void vrmlyyset_lineno (int line_number  );
+
+/* Macros after this point can all be overridden by user definitions in
+ * section 1.
+ */
+
+#ifndef YY_SKIP_YYWRAP
+#ifdef __cplusplus
+extern "C" int vrmlyywrap (void );
+#else
+extern int vrmlyywrap (void );
+#endif
+#endif
+
+    static void yyunput (int c,char *buf_ptr  );
+    
+#ifndef yytext_ptr
+static void yy_flex_strncpy (char *,yyconst char *,int );
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen (yyconst char * );
+#endif
+
+#ifndef YY_NO_INPUT
+
+#ifdef __cplusplus
+static int yyinput (void );
+#else
+static int input (void );
+#endif
+
+#endif
+
+/* Amount of stuff to slurp up with each read. */
+#ifndef YY_READ_BUF_SIZE
+#define YY_READ_BUF_SIZE 8192
+#endif
+
+/* Copy whatever the last rule matched to the standard output. */
+#ifndef ECHO
+/* This used to be an fputs(), but since the string might contain NUL's,
+ * we now use fwrite().
+ */
+#define ECHO fwrite( vrmlyytext, vrmlyyleng, 1, vrmlyyout )
+#endif
+
+/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
+ * is returned in "result".
+ */
+#ifndef YY_INPUT
+#define YY_INPUT(buf,result,max_size) \
+	if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
+		{ \
+		int c = '*'; \
+		int n; \
+		for ( n = 0; n < max_size && \
+			     (c = getc( vrmlyyin )) != EOF && c != '\n'; ++n ) \
+			buf[n] = (char) c; \
+		if ( c == '\n' ) \
+			buf[n++] = (char) c; \
+		if ( c == EOF && ferror( vrmlyyin ) ) \
+			YY_FATAL_ERROR( "input in flex scanner failed" ); \
+		result = n; \
+		} \
+	else \
+		{ \
+		errno=0; \
+		while ( (result = fread(buf, 1, max_size, vrmlyyin))==0 && ferror(vrmlyyin)) \
+			{ \
+			if( errno != EINTR) \
+				{ \
+				YY_FATAL_ERROR( "input in flex scanner failed" ); \
+				break; \
+				} \
+			errno=0; \
+			clearerr(vrmlyyin); \
+			} \
+		}\
+\
+
+#endif
+
+/* No semi-colon after return; correct usage is to write "yyterminate();" -
+ * we don't want an extra ';' after the "return" because that will cause
+ * some compilers to complain about unreachable statements.
+ */
+#ifndef yyterminate
+#define yyterminate() return YY_NULL
+#endif
+
+/* Number of entries by which start-condition stack grows. */
+#ifndef YY_START_STACK_INCR
+#define YY_START_STACK_INCR 25
+#endif
+
+/* Report a fatal error. */
+#ifndef YY_FATAL_ERROR
+#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
+#endif
+
+/* end tables serialization structures and prototypes */
+
+/* Default declaration of generated scanner - a define so the user can
+ * easily add parameters.
+ */
+#ifndef YY_DECL
+#define YY_DECL_IS_OURS 1
+
+extern int vrmlyylex (void);
+
+#define YY_DECL int vrmlyylex (void)
+#endif /* !YY_DECL */
+
+/* Code executed at the beginning of each rule, after vrmlyytext and vrmlyyleng
+ * have been set up.
+ */
+#ifndef YY_USER_ACTION
+#define YY_USER_ACTION
+#endif
+
+/* Code executed at the end of each rule. */
+#ifndef YY_BREAK
+#define YY_BREAK break;
+#endif
+
+#define YY_RULE_SETUP \
+	YY_USER_ACTION
+
+/** The main scanner function which does all the work.
+ */
+YY_DECL
+{
+	register yy_state_type yy_current_state;
+	register char *yy_cp, *yy_bp;
+	register int yy_act;
+    
+#line 217 "vrmlLexer.lxx"
+
+
+
+    /* Switch into a new start state if the parser */
+    /* just told us that we've read a field name */
+    /* and should expect a field value (or IS) */
+    if (expectToken != 0) {
+      
+      /*
+       * Annoying.  This big switch is necessary because
+       * LEX wants to assign particular numbers to start
+       * tokens, and YACC wants to define all the tokens
+       * used, too.  Sigh.
+       */
+      switch(expectToken) {
+        case SFBOOL: BEGIN SFB; break;
+        case SFCOLOR: BEGIN SFC; break;
+        case SFFLOAT: BEGIN SFF; break;
+        case SFIMAGE: BEGIN SFIMG; break;
+        case SFINT32: BEGIN SFI; break;
+        case SFROTATION: BEGIN SFR; break;
+        case SFSTRING: BEGIN SFS; break;
+        case SFTIME: BEGIN SFT; break;
+        case SFVEC2F: BEGIN SFV2; break;
+        case SFVEC3F: BEGIN SFV3; break;
+        case MFCOLOR: BEGIN MFC; break;
+        case MFFLOAT: BEGIN MFF; break;
+        case MFINT32: BEGIN MFI; break;
+        case MFROTATION: BEGIN MFR; break;
+        case MFSTRING: BEGIN MFS; break;
+        case MFVEC2F: BEGIN MFV2; break;
+        case MFVEC3F: BEGIN MFV3; break;
+
+        /* SFNode and MFNode are special.  Here the lexer just returns */
+        /* "marker tokens" so the parser knows what type of field is */
+        /* being parsed; unlike the other fields, parsing of SFNode/MFNode */
+        /* field happens in the parser. */
+        case MFNODE: expectToken = 0; return MFNODE;
+        case SFNODE: expectToken = 0; return SFNODE;
+        
+        default: vrmlyyerror("ACK: Bad expectToken"); break;
+      }
+    }
+
+
+    /* This is more complicated than they really need to be because */
+    /* I was ambitious and made the whitespace-matching rule aggressive */
+#line 3178 "lex.yy.c"
+
+	if ( !(yy_init) )
+		{
+		(yy_init) = 1;
+
+#ifdef YY_USER_INIT
+		YY_USER_INIT;
+#endif
+
+		if ( ! (yy_start) )
+			(yy_start) = 1;	/* first start state */
+
+		if ( ! vrmlyyin )
+			vrmlyyin = stdin;
+
+		if ( ! vrmlyyout )
+			vrmlyyout = stdout;
+
+		if ( ! YY_CURRENT_BUFFER ) {
+			vrmlyyensure_buffer_stack ();
+			YY_CURRENT_BUFFER_LVALUE =
+				vrmlyy_create_buffer(vrmlyyin,YY_BUF_SIZE );
+		}
+
+		vrmlyy_load_buffer_state( );
+		}
+
+	while ( 1 )		/* loops until end-of-file is reached */
+		{
+		yy_cp = (yy_c_buf_p);
+
+		/* Support of vrmlyytext. */
+		*yy_cp = (yy_hold_char);
+
+		/* yy_bp points to the position in yy_ch_buf of the start of
+		 * the current run.
+		 */
+		yy_bp = yy_cp;
+
+		yy_current_state = (yy_start);
+yy_match:
+		do
+			{
+			register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
+			if ( yy_accept[yy_current_state] )
+				{
+				(yy_last_accepting_state) = yy_current_state;
+				(yy_last_accepting_cpos) = yy_cp;
+				}
+			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+				{
+				yy_current_state = (int) yy_def[yy_current_state];
+				if ( yy_current_state >= 977 )
+					yy_c = yy_meta[(unsigned int) yy_c];
+				}
+			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+			++yy_cp;
+			}
+		while ( yy_base[yy_current_state] != 8632 );
+
+yy_find_action:
+		yy_act = yy_accept[yy_current_state];
+		if ( yy_act == 0 )
+			{ /* have to back up */
+			yy_cp = (yy_last_accepting_cpos);
+			yy_current_state = (yy_last_accepting_state);
+			yy_act = yy_accept[yy_current_state];
+			}
+
+		YY_DO_BEFORE_ACTION;
+
+do_action:	/* This label is used only to access EOF actions. */
+
+		switch ( yy_act )
+	{ /* beginning of action switch */
+			case 0: /* must back up */
+			/* undo the effects of YY_DO_BEFORE_ACTION */
+			*yy_cp = (yy_hold_char);
+			yy_cp = (yy_last_accepting_cpos);
+			yy_current_state = (yy_last_accepting_state);
+			goto yy_find_action;
+
+case 1:
+/* rule 1 can match eol */
+YY_RULE_SETUP
+#line 264 "vrmlLexer.lxx"
+{
+  BEGIN NODE; 
+}
+	YY_BREAK
+/* The lexer is in the NODE state when parsing nodes, either */
+/* top-level nodes in the .wrl file, in a prototype implementation, */
+/* or when parsing the contents of SFNode or MFNode fields. */
+case 2:
+YY_RULE_SETUP
+#line 271 "vrmlLexer.lxx"
+{ return PROTO; }
+	YY_BREAK
+case 3:
+YY_RULE_SETUP
+#line 272 "vrmlLexer.lxx"
+{ return EXTERNPROTO; }
+	YY_BREAK
+case 4:
+YY_RULE_SETUP
+#line 273 "vrmlLexer.lxx"
+{ return DEF; }
+	YY_BREAK
+case 5:
+YY_RULE_SETUP
+#line 274 "vrmlLexer.lxx"
+{ return USE; }
+	YY_BREAK
+case 6:
+YY_RULE_SETUP
+#line 275 "vrmlLexer.lxx"
+{ return TO; }
+	YY_BREAK
+case 7:
+YY_RULE_SETUP
+#line 276 "vrmlLexer.lxx"
+{ return IS; }
+	YY_BREAK
+case 8:
+YY_RULE_SETUP
+#line 277 "vrmlLexer.lxx"
+{ return ROUTE; }
+	YY_BREAK
+case 9:
+YY_RULE_SETUP
+#line 278 "vrmlLexer.lxx"
+{ return SFN_NULL; }
+	YY_BREAK
+case 10:
+YY_RULE_SETUP
+#line 279 "vrmlLexer.lxx"
+{ return EVENTIN; }
+	YY_BREAK
+case 11:
+YY_RULE_SETUP
+#line 280 "vrmlLexer.lxx"
+{ return EVENTOUT; }
+	YY_BREAK
+case 12:
+YY_RULE_SETUP
+#line 281 "vrmlLexer.lxx"
+{ return FIELD; }
+	YY_BREAK
+case 13:
+YY_RULE_SETUP
+#line 282 "vrmlLexer.lxx"
+{ return EXPOSEDFIELD; }
+	YY_BREAK
+/* Legal identifiers: */
+case 14:
+YY_RULE_SETUP
+#line 285 "vrmlLexer.lxx"
+{
+  vrmlyylval.string = strdup(vrmlyytext);
+  return IDENTIFIER; 
+}
+	YY_BREAK
+/* This hopefully won't bitch things too much.  It's not legal for
+      an identifier to begin with a digit, but Form-Z writes out VRML
+      files that do.  So we'll allow it.  Hopefully the start states
+      will keep them sorted out. */
+case 15:
+YY_RULE_SETUP
+#line 293 "vrmlLexer.lxx"
+{
+  vrmlyylval.string = strdup(vrmlyytext);
+  return IDENTIFIER; 
+}
+	YY_BREAK
+/* All fields may have an IS declaration: */
+case 16:
+YY_RULE_SETUP
+#line 299 "vrmlLexer.lxx"
+{
+  BEGIN NODE;
+  expectToken = 0;
+  yyless(0);
+}
+	YY_BREAK
+case 17:
+YY_RULE_SETUP
+#line 305 "vrmlLexer.lxx"
+{
+  BEGIN NODE;
+  expectToken = 0;
+  yyless(0); /* put back the IS */
+}
+	YY_BREAK
+/* All MF field types other than MFNode are completely parsed here */
+/* in the lexer, and one token is returned to the parser.  They all */
+/* share the same rules for open and closing brackets: */
+case 18:
+YY_RULE_SETUP
+#line 314 "vrmlLexer.lxx"
+{
+  if (parsing_mf) vrmlyyerror("Double [");
+  parsing_mf = 1;
+  mfarray = new MFArray;
+}
+	YY_BREAK
+case 19:
+YY_RULE_SETUP
+#line 320 "vrmlLexer.lxx"
+{
+  if (!parsing_mf) vrmlyyerror("Unmatched ]");
+  int fieldType = expectToken;
+  BEGIN NODE;
+  parsing_mf = 0;
+  expectToken = 0;
+  vrmlyylval.fv._mf = mfarray;
+  return fieldType;
+}
+	YY_BREAK
+case 20:
+YY_RULE_SETUP
+#line 330 "vrmlLexer.lxx"
+{
+  BEGIN NODE;
+  expectToken = 0;
+  vrmlyylval.fv._sfbool = true;
+  return SFBOOL; 
+}
+	YY_BREAK
+case 21:
+YY_RULE_SETUP
+#line 337 "vrmlLexer.lxx"
+{ 
+  BEGIN NODE; 
+  expectToken = 0; 
+  vrmlyylval.fv._sfbool = false;
+  return SFBOOL; 
+}
+	YY_BREAK
+case 22:
+YY_RULE_SETUP
+#line 344 "vrmlLexer.lxx"
+{
+  BEGIN NODE; 
+  expectToken = 0; 
+  vrmlyylval.fv._sfint32 = extract_int();
+  return SFINT32; 
+}
+	YY_BREAK
+case 23:
+YY_RULE_SETUP
+#line 351 "vrmlLexer.lxx"
+{ 
+  VrmlFieldValue v;
+  v._sfint32 = extract_int();
+  if (parsing_mf) {
+    mfarray->push_back(v);
+  } else {
+    BEGIN NODE; 
+    expectToken = 0;
+    vrmlyylval.fv._mf = new MFArray;
+    vrmlyylval.fv._mf->push_back(v);
+    return MFINT32;
+  }
+}
+	YY_BREAK
+/* All the floating-point types are pretty similar: */
+case 24:
+YY_RULE_SETUP
+#line 366 "vrmlLexer.lxx"
+{
+  BEGIN NODE; 
+  expectToken = 0; 
+  vrmlyylval.fv._sffloat = extract_float();
+  return SFFLOAT; 
+}
+	YY_BREAK
+case 25:
+YY_RULE_SETUP
+#line 373 "vrmlLexer.lxx"
+{ 
+  VrmlFieldValue v;
+  v._sffloat = extract_float();
+  if (parsing_mf) {
+    /* Add to array... */
+    mfarray->push_back(v);
+  } else {
+    /* No open bracket means a single value: */
+    BEGIN NODE; 
+    expectToken = 0;
+    vrmlyylval.fv._mf = new MFArray;
+    vrmlyylval.fv._mf->push_back(v);
+    return MFFLOAT;
+  }
+}
+	YY_BREAK
+case 26:
+/* rule 26 can match eol */
+YY_RULE_SETUP
+#line 389 "vrmlLexer.lxx"
+{ 
+  BEGIN NODE;
+  expectToken = 0;
+  extract_vec(vrmlyylval.fv._sfvec, 2);
+  return SFVEC2F; 
+}
+	YY_BREAK
+case 27:
+/* rule 27 can match eol */
+YY_RULE_SETUP
+#line 396 "vrmlLexer.lxx"
+{ 
+  VrmlFieldValue v;
+  extract_vec(v._sfvec, 2);
+  if (parsing_mf) {
+    mfarray->push_back(v);
+  } else {
+    BEGIN NODE;
+    expectToken = 0;
+    vrmlyylval.fv._mf = new MFArray;
+    vrmlyylval.fv._mf->push_back(v);
+    return MFVEC2F;
+  }
+}
+	YY_BREAK
+case 28:
+/* rule 28 can match eol */
+YY_RULE_SETUP
+#line 410 "vrmlLexer.lxx"
+{ 
+  BEGIN NODE;
+  expectToken = 0;
+  extract_vec(vrmlyylval.fv._sfvec, 3);
+  return SFVEC3F; 
+}
+	YY_BREAK
+case 29:
+/* rule 29 can match eol */
+YY_RULE_SETUP
+#line 417 "vrmlLexer.lxx"
+{ 
+  VrmlFieldValue v;
+  extract_vec(v._sfvec, 3);
+  if (parsing_mf) {
+    mfarray->push_back(v);
+  } else {
+    BEGIN NODE;
+    expectToken = 0;
+    vrmlyylval.fv._mf = new MFArray;
+    vrmlyylval.fv._mf->push_back(v);
+    return MFVEC3F;
+  }
+}
+	YY_BREAK
+case 30:
+/* rule 30 can match eol */
+YY_RULE_SETUP
+#line 431 "vrmlLexer.lxx"
+{ 
+  BEGIN NODE;
+  expectToken = 0;
+  extract_vec(vrmlyylval.fv._sfvec, 4);
+  return SFROTATION; 
+}
+	YY_BREAK
+case 31:
+/* rule 31 can match eol */
+YY_RULE_SETUP
+#line 438 "vrmlLexer.lxx"
+{ 
+  VrmlFieldValue v;
+  extract_vec(v._sfvec, 4);
+  if (parsing_mf) {
+    mfarray->push_back(v);
+  } else {
+    BEGIN NODE;
+    expectToken = 0;
+    vrmlyylval.fv._mf = new MFArray;
+    vrmlyylval.fv._mf->push_back(v);
+    return MFROTATION;
+  }
+}
+	YY_BREAK
+case 32:
+/* rule 32 can match eol */
+YY_RULE_SETUP
+#line 452 "vrmlLexer.lxx"
+{ 
+  BEGIN NODE;
+  expectToken = 0;
+  extract_vec(vrmlyylval.fv._sfvec, 3);
+  return SFCOLOR; 
+}
+	YY_BREAK
+case 33:
+/* rule 33 can match eol */
+YY_RULE_SETUP
+#line 459 "vrmlLexer.lxx"
+{ 
+  VrmlFieldValue v;
+  extract_vec(v._sfvec, 3);
+  if (parsing_mf) {
+    mfarray->push_back(v);
+  } else {
+    BEGIN NODE;
+    expectToken = 0;
+    vrmlyylval.fv._mf = new MFArray;
+    vrmlyylval.fv._mf->push_back(v);
+    return MFCOLOR;
+  }
+}
+	YY_BREAK
+case 34:
+YY_RULE_SETUP
+#line 473 "vrmlLexer.lxx"
+{
+  BEGIN NODE; 
+  expectToken = 0; 
+  vrmlyylval.fv._sffloat = extract_float();
+  return SFTIME; 
+}
+	YY_BREAK
+/* SFString/MFString */
+case 35:
+YY_RULE_SETUP
+#line 481 "vrmlLexer.lxx"
+{
+  BEGIN IN_SFS;
+  quoted_string = ""; 
+}
+	YY_BREAK
+case 36:
+YY_RULE_SETUP
+#line 486 "vrmlLexer.lxx"
+{
+  BEGIN IN_MFS;
+  quoted_string = ""; 
+}
+	YY_BREAK
+/* Anything besides open-quote (or whitespace) is an error: */
+case 37:
+YY_RULE_SETUP
+#line 492 "vrmlLexer.lxx"
+{
+  vrmlyyerror("String missing open-quote");
+  BEGIN NODE; 
+  expectToken = 0; 
+  vrmlyylval.fv._sfstring = strdup(""); 
+  return SFSTRING;
+}
+	YY_BREAK
+/* Expect open-quote, open-bracket, or whitespace: */
+case 38:
+YY_RULE_SETUP
+#line 501 "vrmlLexer.lxx"
+{
+  vrmlyyerror("String missing open-quote");
+  BEGIN NODE;
+  expectToken = 0;
+  return MFSTRING;
+}
+	YY_BREAK
+/* Backslashed-quotes are OK: */
+case 39:
+YY_RULE_SETUP
+#line 509 "vrmlLexer.lxx"
+{
+  quoted_string += '"'; 
+}
+	YY_BREAK
+/* Gobble up anything besides quotes and newlines. */
+/* Newlines are legal in strings, but we exclude them here so */
+/* that line number are counted correctly by the catch-all newline */
+/* rule that applies to everything. */
+case 40:
+YY_RULE_SETUP
+#line 517 "vrmlLexer.lxx"
+{ 
+  quoted_string += vrmlyytext; 
+}
+	YY_BREAK
+/* Quote ends the string: */
+case 41:
+YY_RULE_SETUP
+#line 522 "vrmlLexer.lxx"
+{ 
+  BEGIN NODE;
+  expectToken = 0;
+  vrmlyylval.fv._sfstring = strdup(quoted_string.c_str());
+  return SFSTRING; 
+}
+	YY_BREAK
+case 42:
+YY_RULE_SETUP
+#line 529 "vrmlLexer.lxx"
+{
+  VrmlFieldValue v;
+  v._sfstring = strdup(quoted_string.c_str());
+  if (parsing_mf) { 
+    BEGIN MFS;
+    mfarray->push_back(v);
+    quoted_string = "";
+  } else {
+    BEGIN NODE;
+    expectToken = 0;
+    vrmlyylval.fv._mf = new MFArray;
+    vrmlyylval.fv._mf->push_back(v);
+    return MFSTRING;
+  }
+}
+	YY_BREAK
+/* SFImage: width height numComponents then width*height integers: */
+case 43:
+/* rule 43 can match eol */
+YY_RULE_SETUP
+#line 546 "vrmlLexer.lxx"
+{ int w, h;
+                          sscanf(vrmlyytext, "%d %d", &w, &h);
+                          sfImageIntsExpected = 1+w*h;
+                          sfImageIntsParsed = 0;                          
+                          BEGIN IN_SFIMG;
+                        }
+	YY_BREAK
+case 44:
+YY_RULE_SETUP
+#line 552 "vrmlLexer.lxx"
+{ ++sfImageIntsParsed;
+                          if (sfImageIntsParsed == sfImageIntsExpected) {
+                            BEGIN NODE; expectToken = 0; return SFIMAGE;
+                          }
+                        }
+	YY_BREAK
+/* Whitespace and catch-all rules apply to all start states: */
+case 45:
+YY_RULE_SETUP
+#line 559 "vrmlLexer.lxx"
+;
+	YY_BREAK
+/* A newline is also whitespace, but we'll keep track of line number */
+/* to report in errors: */
+case 46:
+/* rule 46 can match eol */
+YY_RULE_SETUP
+#line 563 "vrmlLexer.lxx"
+{
+  // Save a copy of the line so we can print it out for the benefit of
+  // the user in case we get an error.
+  strncpy(current_line, vrmlyytext+1, max_error_width);
+  current_line[max_error_width] = '\0';
+  line_number++;
+
+  // Return the whole line to the lexer, except the newline character,
+  // which we eat.
+  yyless(1);
+}
+	YY_BREAK
+/* This catch-all rule catches anything not covered by any of */
+/* the above: */
+case 47:
+YY_RULE_SETUP
+#line 577 "vrmlLexer.lxx"
+{ 
+  return vrmlyytext[0]; 
+}
+	YY_BREAK
+case 48:
+YY_RULE_SETUP
+#line 581 "vrmlLexer.lxx"
+ECHO;
+	YY_BREAK
+#line 3748 "lex.yy.c"
+case YY_STATE_EOF(INITIAL):
+case YY_STATE_EOF(NODE):
+case YY_STATE_EOF(SFB):
+case YY_STATE_EOF(SFC):
+case YY_STATE_EOF(SFF):
+case YY_STATE_EOF(SFIMG):
+case YY_STATE_EOF(SFI):
+case YY_STATE_EOF(SFR):
+case YY_STATE_EOF(SFS):
+case YY_STATE_EOF(SFT):
+case YY_STATE_EOF(SFV2):
+case YY_STATE_EOF(SFV3):
+case YY_STATE_EOF(MFC):
+case YY_STATE_EOF(MFF):
+case YY_STATE_EOF(MFI):
+case YY_STATE_EOF(MFR):
+case YY_STATE_EOF(MFS):
+case YY_STATE_EOF(MFV2):
+case YY_STATE_EOF(MFV3):
+case YY_STATE_EOF(IN_SFS):
+case YY_STATE_EOF(IN_MFS):
+case YY_STATE_EOF(IN_SFIMG):
+	yyterminate();
+
+	case YY_END_OF_BUFFER:
+		{
+		/* Amount of text matched not including the EOB char. */
+		int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
+
+		/* Undo the effects of YY_DO_BEFORE_ACTION. */
+		*yy_cp = (yy_hold_char);
+		YY_RESTORE_YY_MORE_OFFSET
+
+		if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
+			{
+			/* We're scanning a new file or input source.  It's
+			 * possible that this happened because the user
+			 * just pointed vrmlyyin at a new source and called
+			 * vrmlyylex().  If so, then we have to assure
+			 * consistency between YY_CURRENT_BUFFER and our
+			 * globals.  Here is the right place to do so, because
+			 * this is the first action (other than possibly a
+			 * back-up) that will match for the new input source.
+			 */
+			(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
+			YY_CURRENT_BUFFER_LVALUE->yy_input_file = vrmlyyin;
+			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
+			}
+
+		/* Note that here we test for yy_c_buf_p "<=" to the position
+		 * of the first EOB in the buffer, since yy_c_buf_p will
+		 * already have been incremented past the NUL character
+		 * (since all states make transitions on EOB to the
+		 * end-of-buffer state).  Contrast this with the test
+		 * in input().
+		 */
+		if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
+			{ /* This was really a NUL. */
+			yy_state_type yy_next_state;
+
+			(yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
+
+			yy_current_state = yy_get_previous_state(  );
+
+			/* Okay, we're now positioned to make the NUL
+			 * transition.  We couldn't have
+			 * yy_get_previous_state() go ahead and do it
+			 * for us because it doesn't know how to deal
+			 * with the possibility of jamming (and we don't
+			 * want to build jamming into it because then it
+			 * will run more slowly).
+			 */
+
+			yy_next_state = yy_try_NUL_trans( yy_current_state );
+
+			yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+
+			if ( yy_next_state )
+				{
+				/* Consume the NUL. */
+				yy_cp = ++(yy_c_buf_p);
+				yy_current_state = yy_next_state;
+				goto yy_match;
+				}
+
+			else
+				{
+				yy_cp = (yy_c_buf_p);
+				goto yy_find_action;
+				}
+			}
+
+		else switch ( yy_get_next_buffer(  ) )
+			{
+			case EOB_ACT_END_OF_FILE:
+				{
+				(yy_did_buffer_switch_on_eof) = 0;
+
+				if ( vrmlyywrap( ) )
+					{
+					/* Note: because we've taken care in
+					 * yy_get_next_buffer() to have set up
+					 * vrmlyytext, we can now set up
+					 * yy_c_buf_p so that if some total
+					 * hoser (like flex itself) wants to
+					 * call the scanner after we return the
+					 * YY_NULL, it'll still work - another
+					 * YY_NULL will get returned.
+					 */
+					(yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
+
+					yy_act = YY_STATE_EOF(YY_START);
+					goto do_action;
+					}
+
+				else
+					{
+					if ( ! (yy_did_buffer_switch_on_eof) )
+						YY_NEW_FILE;
+					}
+				break;
+				}
+
+			case EOB_ACT_CONTINUE_SCAN:
+				(yy_c_buf_p) =
+					(yytext_ptr) + yy_amount_of_matched_text;
+
+				yy_current_state = yy_get_previous_state(  );
+
+				yy_cp = (yy_c_buf_p);
+				yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+				goto yy_match;
+
+			case EOB_ACT_LAST_MATCH:
+				(yy_c_buf_p) =
+				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
+
+				yy_current_state = yy_get_previous_state(  );
+
+				yy_cp = (yy_c_buf_p);
+				yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+				goto yy_find_action;
+			}
+		break;
+		}
+
+	default:
+		YY_FATAL_ERROR(
+			"fatal flex scanner internal error--no action found" );
+	} /* end of action switch */
+		} /* end of scanning one token */
+} /* end of vrmlyylex */
+
+/* yy_get_next_buffer - try to read in a new buffer
+ *
+ * Returns a code representing an action:
+ *	EOB_ACT_LAST_MATCH -
+ *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position
+ *	EOB_ACT_END_OF_FILE - end of file
+ */
+static int yy_get_next_buffer (void)
+{
+    	register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
+	register char *source = (yytext_ptr);
+	register int number_to_move, i;
+	int ret_val;
+
+	if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
+		YY_FATAL_ERROR(
+		"fatal flex scanner internal error--end of buffer missed" );
+
+	if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
+		{ /* Don't try to fill the buffer, so this is an EOF. */
+		if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
+			{
+			/* We matched a single character, the EOB, so
+			 * treat this as a final EOF.
+			 */
+			return EOB_ACT_END_OF_FILE;
+			}
+
+		else
+			{
+			/* We matched some text prior to the EOB, first
+			 * process it.
+			 */
+			return EOB_ACT_LAST_MATCH;
+			}
+		}
+
+	/* Try to read more data. */
+
+	/* First move last chars to start of buffer. */
+	number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
+
+	for ( i = 0; i < number_to_move; ++i )
+		*(dest++) = *(source++);
+
+	if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
+		/* don't do the read, it's not guaranteed to return an EOF,
+		 * just force an EOF
+		 */
+		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
+
+	else
+		{
+			int num_to_read =
+			YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
+
+		while ( num_to_read <= 0 )
+			{ /* Not enough room in the buffer - grow it. */
+
+			/* just a shorter name for the current buffer */
+			YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
+
+			int yy_c_buf_p_offset =
+				(int) ((yy_c_buf_p) - b->yy_ch_buf);
+
+			if ( b->yy_is_our_buffer )
+				{
+				int new_size = b->yy_buf_size * 2;
+
+				if ( new_size <= 0 )
+					b->yy_buf_size += b->yy_buf_size / 8;
+				else
+					b->yy_buf_size *= 2;
+
+				b->yy_ch_buf = (char *)
+					/* Include room in for 2 EOB chars. */
+					vrmlyyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
+				}
+			else
+				/* Can't grow it, we don't own it. */
+				b->yy_ch_buf = 0;
+
+			if ( ! b->yy_ch_buf )
+				YY_FATAL_ERROR(
+				"fatal error - scanner input buffer overflow" );
+
+			(yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
+
+			num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
+						number_to_move - 1;
+
+			}
+
+		if ( num_to_read > YY_READ_BUF_SIZE )
+			num_to_read = YY_READ_BUF_SIZE;
+
+		/* Read in more data. */
+		YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
+			(yy_n_chars), (size_t) num_to_read );
+
+		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+		}
+
+	if ( (yy_n_chars) == 0 )
+		{
+		if ( number_to_move == YY_MORE_ADJ )
+			{
+			ret_val = EOB_ACT_END_OF_FILE;
+			vrmlyyrestart(vrmlyyin  );
+			}
+
+		else
+			{
+			ret_val = EOB_ACT_LAST_MATCH;
+			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
+				YY_BUFFER_EOF_PENDING;
+			}
+		}
+
+	else
+		ret_val = EOB_ACT_CONTINUE_SCAN;
+
+	if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
+		/* Extend the array by 50%, plus the number we really need. */
+		yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
+		YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) vrmlyyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size  );
+		if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
+			YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
+	}
+
+	(yy_n_chars) += number_to_move;
+	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
+	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
+
+	(yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
+
+	return ret_val;
+}
+
+/* yy_get_previous_state - get the state just before the EOB char was reached */
+
+    static yy_state_type yy_get_previous_state (void)
+{
+	register yy_state_type yy_current_state;
+	register char *yy_cp;
+    
+	yy_current_state = (yy_start);
+
+	for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
+		{
+		register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
+		if ( yy_accept[yy_current_state] )
+			{
+			(yy_last_accepting_state) = yy_current_state;
+			(yy_last_accepting_cpos) = yy_cp;
+			}
+		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+			{
+			yy_current_state = (int) yy_def[yy_current_state];
+			if ( yy_current_state >= 977 )
+				yy_c = yy_meta[(unsigned int) yy_c];
+			}
+		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+		}
+
+	return yy_current_state;
+}
+
+/* yy_try_NUL_trans - try to make a transition on the NUL character
+ *
+ * synopsis
+ *	next_state = yy_try_NUL_trans( current_state );
+ */
+    static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
+{
+	register int yy_is_jam;
+    	register char *yy_cp = (yy_c_buf_p);
+
+	register YY_CHAR yy_c = 1;
+	if ( yy_accept[yy_current_state] )
+		{
+		(yy_last_accepting_state) = yy_current_state;
+		(yy_last_accepting_cpos) = yy_cp;
+		}
+	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+		{
+		yy_current_state = (int) yy_def[yy_current_state];
+		if ( yy_current_state >= 977 )
+			yy_c = yy_meta[(unsigned int) yy_c];
+		}
+	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+	yy_is_jam = (yy_current_state == 976);
+
+	return yy_is_jam ? 0 : yy_current_state;
+}
+
+    static void yyunput (int c, register char * yy_bp )
+{
+	register char *yy_cp;
+    
+    yy_cp = (yy_c_buf_p);
+
+	/* undo effects of setting up vrmlyytext */
+	*yy_cp = (yy_hold_char);
+
+	if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
+		{ /* need to shift things up to make room */
+		/* +2 for EOB chars. */
+		register int number_to_move = (yy_n_chars) + 2;
+		register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
+					YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
+		register char *source =
+				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
+
+		while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
+			*--dest = *--source;
+
+		yy_cp += (int) (dest - source);
+		yy_bp += (int) (dest - source);
+		YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
+			(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
+
+		if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
+			YY_FATAL_ERROR( "flex scanner push-back overflow" );
+		}
+
+	*--yy_cp = (char) c;
+
+	(yytext_ptr) = yy_bp;
+	(yy_hold_char) = *yy_cp;
+	(yy_c_buf_p) = yy_cp;
+}
+
+#ifndef YY_NO_INPUT
+#ifdef __cplusplus
+    static int yyinput (void)
+#else
+    static int input  (void)
+#endif
+
+{
+	int c;
+    
+	*(yy_c_buf_p) = (yy_hold_char);
+
+	if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
+		{
+		/* yy_c_buf_p now points to the character we want to return.
+		 * If this occurs *before* the EOB characters, then it's a
+		 * valid NUL; if not, then we've hit the end of the buffer.
+		 */
+		if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
+			/* This was really a NUL. */
+			*(yy_c_buf_p) = '\0';
+
+		else
+			{ /* need more input */
+			int offset = (yy_c_buf_p) - (yytext_ptr);
+			++(yy_c_buf_p);
+
+			switch ( yy_get_next_buffer(  ) )
+				{
+				case EOB_ACT_LAST_MATCH:
+					/* This happens because yy_g_n_b()
+					 * sees that we've accumulated a
+					 * token and flags that we need to
+					 * try matching the token before
+					 * proceeding.  But for input(),
+					 * there's no matching to consider.
+					 * So convert the EOB_ACT_LAST_MATCH
+					 * to EOB_ACT_END_OF_FILE.
+					 */
+
+					/* Reset buffer status. */
+					vrmlyyrestart(vrmlyyin );
+
+					/*FALLTHROUGH*/
+
+				case EOB_ACT_END_OF_FILE:
+					{
+					if ( vrmlyywrap( ) )
+						return EOF;
+
+					if ( ! (yy_did_buffer_switch_on_eof) )
+						YY_NEW_FILE;
+#ifdef __cplusplus
+					return yyinput();
+#else
+					return input();
+#endif
+					}
+
+				case EOB_ACT_CONTINUE_SCAN:
+					(yy_c_buf_p) = (yytext_ptr) + offset;
+					break;
+				}
+			}
+		}
+
+	c = *(unsigned char *) (yy_c_buf_p);	/* cast for 8-bit char's */
+	*(yy_c_buf_p) = '\0';	/* preserve vrmlyytext */
+	(yy_hold_char) = *++(yy_c_buf_p);
+
+	return c;
+}
+#endif	/* ifndef YY_NO_INPUT */
+
+/** Immediately switch to a different input stream.
+ * @param input_file A readable stream.
+ * 
+ * @note This function does not reset the start condition to @c INITIAL .
+ */
+    void vrmlyyrestart  (FILE * input_file )
+{
+    
+	if ( ! YY_CURRENT_BUFFER ){
+        vrmlyyensure_buffer_stack ();
+		YY_CURRENT_BUFFER_LVALUE =
+            vrmlyy_create_buffer(vrmlyyin,YY_BUF_SIZE );
+	}
+
+	vrmlyy_init_buffer(YY_CURRENT_BUFFER,input_file );
+	vrmlyy_load_buffer_state( );
+}
+
+/** Switch to a different input buffer.
+ * @param new_buffer The new input buffer.
+ * 
+ */
+    void vrmlyy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
+{
+    
+	/* TODO. We should be able to replace this entire function body
+	 * with
+	 *		vrmlyypop_buffer_state();
+	 *		vrmlyypush_buffer_state(new_buffer);
+     */
+	vrmlyyensure_buffer_stack ();
+	if ( YY_CURRENT_BUFFER == new_buffer )
+		return;
+
+	if ( YY_CURRENT_BUFFER )
+		{
+		/* Flush out information for old buffer. */
+		*(yy_c_buf_p) = (yy_hold_char);
+		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
+		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+		}
+
+	YY_CURRENT_BUFFER_LVALUE = new_buffer;
+	vrmlyy_load_buffer_state( );
+
+	/* We don't actually know whether we did this switch during
+	 * EOF (vrmlyywrap()) processing, but the only time this flag
+	 * is looked at is after vrmlyywrap() is called, so it's safe
+	 * to go ahead and always set it.
+	 */
+	(yy_did_buffer_switch_on_eof) = 1;
+}
+
+static void vrmlyy_load_buffer_state  (void)
+{
+    	(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
+	(yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
+	vrmlyyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
+	(yy_hold_char) = *(yy_c_buf_p);
+}
+
+/** Allocate and initialize an input buffer state.
+ * @param file A readable stream.
+ * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
+ * 
+ * @return the allocated buffer state.
+ */
+    YY_BUFFER_STATE vrmlyy_create_buffer  (FILE * file, int  size )
+{
+	YY_BUFFER_STATE b;
+    
+	b = (YY_BUFFER_STATE) vrmlyyalloc(sizeof( struct yy_buffer_state )  );
+	if ( ! b )
+		YY_FATAL_ERROR( "out of dynamic memory in vrmlyy_create_buffer()" );
+
+	b->yy_buf_size = size;
+
+	/* yy_ch_buf has to be 2 characters longer than the size given because
+	 * we need to put in 2 end-of-buffer characters.
+	 */
+	b->yy_ch_buf = (char *) vrmlyyalloc(b->yy_buf_size + 2  );
+	if ( ! b->yy_ch_buf )
+		YY_FATAL_ERROR( "out of dynamic memory in vrmlyy_create_buffer()" );
+
+	b->yy_is_our_buffer = 1;
+
+	vrmlyy_init_buffer(b,file );
+
+	return b;
+}
+
+/** Destroy the buffer.
+ * @param b a buffer created with vrmlyy_create_buffer()
+ * 
+ */
+    void vrmlyy_delete_buffer (YY_BUFFER_STATE  b )
+{
+    
+	if ( ! b )
+		return;
+
+	if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
+		YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
+
+	if ( b->yy_is_our_buffer )
+		vrmlyyfree((void *) b->yy_ch_buf  );
+
+	vrmlyyfree((void *) b  );
+}
+
+#ifndef __cplusplus
+extern int isatty (int );
+#endif /* __cplusplus */
+    
+/* Initializes or reinitializes a buffer.
+ * This function is sometimes called more than once on the same buffer,
+ * such as during a vrmlyyrestart() or at EOF.
+ */
+    static void vrmlyy_init_buffer  (YY_BUFFER_STATE  b, FILE * file )
+
+{
+	int oerrno = errno;
+    
+	vrmlyy_flush_buffer(b );
+
+	b->yy_input_file = file;
+	b->yy_fill_buffer = 1;
+
+    /* If b is the current buffer, then vrmlyy_init_buffer was _probably_
+     * called from vrmlyyrestart() or through yy_get_next_buffer.
+     * In that case, we don't want to reset the lineno or column.
+     */
+    if (b != YY_CURRENT_BUFFER){
+        b->yy_bs_lineno = 1;
+        b->yy_bs_column = 0;
+    }
+
+        b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
+    
+	errno = oerrno;
+}
+
+/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
+ * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
+ * 
+ */
+    void vrmlyy_flush_buffer (YY_BUFFER_STATE  b )
+{
+    	if ( ! b )
+		return;
+
+	b->yy_n_chars = 0;
+
+	/* We always need two end-of-buffer characters.  The first causes
+	 * a transition to the end-of-buffer state.  The second causes
+	 * a jam in that state.
+	 */
+	b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
+	b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
+
+	b->yy_buf_pos = &b->yy_ch_buf[0];
+
+	b->yy_at_bol = 1;
+	b->yy_buffer_status = YY_BUFFER_NEW;
+
+	if ( b == YY_CURRENT_BUFFER )
+		vrmlyy_load_buffer_state( );
+}
+
+/** Pushes the new state onto the stack. The new state becomes
+ *  the current state. This function will allocate the stack
+ *  if necessary.
+ *  @param new_buffer The new state.
+ *  
+ */
+void vrmlyypush_buffer_state (YY_BUFFER_STATE new_buffer )
+{
+    	if (new_buffer == NULL)
+		return;
+
+	vrmlyyensure_buffer_stack();
+
+	/* This block is copied from vrmlyy_switch_to_buffer. */
+	if ( YY_CURRENT_BUFFER )
+		{
+		/* Flush out information for old buffer. */
+		*(yy_c_buf_p) = (yy_hold_char);
+		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
+		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+		}
+
+	/* Only push if top exists. Otherwise, replace top. */
+	if (YY_CURRENT_BUFFER)
+		(yy_buffer_stack_top)++;
+	YY_CURRENT_BUFFER_LVALUE = new_buffer;
+
+	/* copied from vrmlyy_switch_to_buffer. */
+	vrmlyy_load_buffer_state( );
+	(yy_did_buffer_switch_on_eof) = 1;
+}
+
+/** Removes and deletes the top of the stack, if present.
+ *  The next element becomes the new top.
+ *  
+ */
+void vrmlyypop_buffer_state (void)
+{
+    	if (!YY_CURRENT_BUFFER)
+		return;
+
+	vrmlyy_delete_buffer(YY_CURRENT_BUFFER );
+	YY_CURRENT_BUFFER_LVALUE = NULL;
+	if ((yy_buffer_stack_top) > 0)
+		--(yy_buffer_stack_top);
+
+	if (YY_CURRENT_BUFFER) {
+		vrmlyy_load_buffer_state( );
+		(yy_did_buffer_switch_on_eof) = 1;
+	}
+}
+
+/* Allocates the stack if it does not exist.
+ *  Guarantees space for at least one push.
+ */
+static void vrmlyyensure_buffer_stack (void)
+{
+	int num_to_alloc;
+    
+	if (!(yy_buffer_stack)) {
+
+		/* First allocation is just for 2 elements, since we don't know if this
+		 * scanner will even need a stack. We use 2 instead of 1 to avoid an
+		 * immediate realloc on the next call.
+         */
+		num_to_alloc = 1;
+		(yy_buffer_stack) = (struct yy_buffer_state**)vrmlyyalloc
+								(num_to_alloc * sizeof(struct yy_buffer_state*)
+								);
+		if ( ! (yy_buffer_stack) )
+			YY_FATAL_ERROR( "out of dynamic memory in vrmlyyensure_buffer_stack()" );
+								  
+		memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
+				
+		(yy_buffer_stack_max) = num_to_alloc;
+		(yy_buffer_stack_top) = 0;
+		return;
+	}
+
+	if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
+
+		/* Increase the buffer to prepare for a possible push. */
+		int grow_size = 8 /* arbitrary grow size */;
+
+		num_to_alloc = (yy_buffer_stack_max) + grow_size;
+		(yy_buffer_stack) = (struct yy_buffer_state**)vrmlyyrealloc
+								((yy_buffer_stack),
+								num_to_alloc * sizeof(struct yy_buffer_state*)
+								);
+		if ( ! (yy_buffer_stack) )
+			YY_FATAL_ERROR( "out of dynamic memory in vrmlyyensure_buffer_stack()" );
+
+		/* zero only the new slots.*/
+		memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
+		(yy_buffer_stack_max) = num_to_alloc;
+	}
+}
+
+/** Setup the input buffer state to scan directly from a user-specified character buffer.
+ * @param base the character buffer
+ * @param size the size in bytes of the character buffer
+ * 
+ * @return the newly allocated buffer state object. 
+ */
+YY_BUFFER_STATE vrmlyy_scan_buffer  (char * base, yy_size_t  size )
+{
+	YY_BUFFER_STATE b;
+    
+	if ( size < 2 ||
+	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
+	     base[size-1] != YY_END_OF_BUFFER_CHAR )
+		/* They forgot to leave room for the EOB's. */
+		return 0;
+
+	b = (YY_BUFFER_STATE) vrmlyyalloc(sizeof( struct yy_buffer_state )  );
+	if ( ! b )
+		YY_FATAL_ERROR( "out of dynamic memory in vrmlyy_scan_buffer()" );
+
+	b->yy_buf_size = size - 2;	/* "- 2" to take care of EOB's */
+	b->yy_buf_pos = b->yy_ch_buf = base;
+	b->yy_is_our_buffer = 0;
+	b->yy_input_file = 0;
+	b->yy_n_chars = b->yy_buf_size;
+	b->yy_is_interactive = 0;
+	b->yy_at_bol = 1;
+	b->yy_fill_buffer = 0;
+	b->yy_buffer_status = YY_BUFFER_NEW;
+
+	vrmlyy_switch_to_buffer(b  );
+
+	return b;
+}
+
+/** Setup the input buffer state to scan a string. The next call to vrmlyylex() will
+ * scan from a @e copy of @a str.
+ * @param yystr a NUL-terminated string to scan
+ * 
+ * @return the newly allocated buffer state object.
+ * @note If you want to scan bytes that may contain NUL values, then use
+ *       vrmlyy_scan_bytes() instead.
+ */
+YY_BUFFER_STATE vrmlyy_scan_string (yyconst char * yystr )
+{
+    
+	return vrmlyy_scan_bytes(yystr,strlen(yystr) );
+}
+
+/** Setup the input buffer state to scan the given bytes. The next call to vrmlyylex() will
+ * scan from a @e copy of @a bytes.
+ * @param bytes the byte buffer to scan
+ * @param len the number of bytes in the buffer pointed to by @a bytes.
+ * 
+ * @return the newly allocated buffer state object.
+ */
+YY_BUFFER_STATE vrmlyy_scan_bytes  (yyconst char * yybytes, int  _yybytes_len )
+{
+	YY_BUFFER_STATE b;
+	char *buf;
+	yy_size_t n;
+	int i;
+    
+	/* Get memory for full buffer, including space for trailing EOB's. */
+	n = _yybytes_len + 2;
+	buf = (char *) vrmlyyalloc(n  );
+	if ( ! buf )
+		YY_FATAL_ERROR( "out of dynamic memory in vrmlyy_scan_bytes()" );
+
+	for ( i = 0; i < _yybytes_len; ++i )
+		buf[i] = yybytes[i];
+
+	buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
+
+	b = vrmlyy_scan_buffer(buf,n );
+	if ( ! b )
+		YY_FATAL_ERROR( "bad buffer in vrmlyy_scan_bytes()" );
+
+	/* It's okay to grow etc. this buffer, and we should throw it
+	 * away when we're done.
+	 */
+	b->yy_is_our_buffer = 1;
+
+	return b;
+}
+
+#ifndef YY_EXIT_FAILURE
+#define YY_EXIT_FAILURE 2
+#endif
+
+static void yy_fatal_error (yyconst char* msg )
+{
+    	(void) fprintf( stderr, "%s\n", msg );
+	exit( YY_EXIT_FAILURE );
+}
+
+/* Redefine yyless() so it works in section 3 code. */
+
+#undef yyless
+#define yyless(n) \
+	do \
+		{ \
+		/* Undo effects of setting up vrmlyytext. */ \
+        int yyless_macro_arg = (n); \
+        YY_LESS_LINENO(yyless_macro_arg);\
+		vrmlyytext[vrmlyyleng] = (yy_hold_char); \
+		(yy_c_buf_p) = vrmlyytext + yyless_macro_arg; \
+		(yy_hold_char) = *(yy_c_buf_p); \
+		*(yy_c_buf_p) = '\0'; \
+		vrmlyyleng = yyless_macro_arg; \
+		} \
+	while ( 0 )
+
+/* Accessor  methods (get/set functions) to struct members. */
+
+/** Get the current line number.
+ * 
+ */
+int vrmlyyget_lineno  (void)
+{
+        
+    return vrmlyylineno;
+}
+
+/** Get the input stream.
+ * 
+ */
+FILE *vrmlyyget_in  (void)
+{
+        return vrmlyyin;
+}
+
+/** Get the output stream.
+ * 
+ */
+FILE *vrmlyyget_out  (void)
+{
+        return vrmlyyout;
+}
+
+/** Get the length of the current token.
+ * 
+ */
+int vrmlyyget_leng  (void)
+{
+        return vrmlyyleng;
+}
+
+/** Get the current token.
+ * 
+ */
+
+char *vrmlyyget_text  (void)
+{
+        return vrmlyytext;
+}
+
+/** Set the current line number.
+ * @param line_number
+ * 
+ */
+void vrmlyyset_lineno (int  line_number )
+{
+    
+    vrmlyylineno = line_number;
+}
+
+/** Set the input stream. This does not discard the current
+ * input buffer.
+ * @param in_str A readable stream.
+ * 
+ * @see vrmlyy_switch_to_buffer
+ */
+void vrmlyyset_in (FILE *  in_str )
+{
+        vrmlyyin = in_str ;
+}
+
+void vrmlyyset_out (FILE *  out_str )
+{
+        vrmlyyout = out_str ;
+}
+
+int vrmlyyget_debug  (void)
+{
+        return vrmlyy_flex_debug;
+}
+
+void vrmlyyset_debug (int  bdebug )
+{
+        vrmlyy_flex_debug = bdebug ;
+}
+
+static int yy_init_globals (void)
+{
+        /* Initialization is the same as for the non-reentrant scanner.
+     * This function is called from vrmlyylex_destroy(), so don't allocate here.
+     */
+
+    (yy_buffer_stack) = 0;
+    (yy_buffer_stack_top) = 0;
+    (yy_buffer_stack_max) = 0;
+    (yy_c_buf_p) = (char *) 0;
+    (yy_init) = 0;
+    (yy_start) = 0;
+
+/* Defined in main.c */
+#ifdef YY_STDINIT
+    vrmlyyin = stdin;
+    vrmlyyout = stdout;
+#else
+    vrmlyyin = (FILE *) 0;
+    vrmlyyout = (FILE *) 0;
+#endif
+
+    /* For future reference: Set errno on error, since we are called by
+     * vrmlyylex_init()
+     */
+    return 0;
+}
+
+/* vrmlyylex_destroy is for both reentrant and non-reentrant scanners. */
+int vrmlyylex_destroy  (void)
+{
+    
+    /* Pop the buffer stack, destroying each element. */
+	while(YY_CURRENT_BUFFER){
+		vrmlyy_delete_buffer(YY_CURRENT_BUFFER  );
+		YY_CURRENT_BUFFER_LVALUE = NULL;
+		vrmlyypop_buffer_state();
+	}
+
+	/* Destroy the stack itself. */
+	vrmlyyfree((yy_buffer_stack) );
+	(yy_buffer_stack) = NULL;
+
+    /* Reset the globals. This is important in a non-reentrant scanner so the next time
+     * vrmlyylex() is called, initialization will occur. */
+    yy_init_globals( );
+
+    return 0;
+}
+
+/*
+ * Internal utility routines.
+ */
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
+{
+	register int i;
+	for ( i = 0; i < n; ++i )
+		s1[i] = s2[i];
+}
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen (yyconst char * s )
+{
+	register int n;
+	for ( n = 0; s[n]; ++n )
+		;
+
+	return n;
+}
+#endif
+
+void *vrmlyyalloc (yy_size_t  size )
+{
+	return (void *) malloc( size );
+}
+
+void *vrmlyyrealloc  (void * ptr, yy_size_t  size )
+{
+	/* The cast to (char *) in the following accommodates both
+	 * implementations that use char* generic pointers, and those
+	 * that use void* generic pointers.  It works with the latter
+	 * because both ANSI C and C++ allow castless assignment from
+	 * any pointer type to void*, and deal with argument conversions
+	 * as though doing an assignment.
+	 */
+	return (void *) realloc( (char *) ptr, size );
+}
+
+void vrmlyyfree (void * ptr )
+{
+	free( (char *) ptr );	/* see vrmlyyrealloc() for (char *) cast */
+}
+
+#define YYTABLES_NAME "yytables"
+
+#line 581 "vrmlLexer.lxx"

+ 6 - 6
pandatool/src/vrml/vrmlLexer.lxx

@@ -50,7 +50,7 @@ static int error_count = 0;
 static int warning_count = 0;
 
 // This is the pointer to the current input stream.
-static istream *inp = NULL;
+static istream *input_p = NULL;
 
 // This is the name of the vrml file we're parsing.  We keep it so we
 // can print it out for error messages.
@@ -77,7 +77,7 @@ static MFArray *mfarray;
 
 void
 vrml_init_lexer(istream &in, const string &filename) {
-  inp = &in;
+  input_p = &in;
   vrml_filename = filename;
   line_number = 0;
   error_count = 0;
@@ -123,10 +123,10 @@ vrmlyywarning(const string &msg) {
 // stdio FILE pointer.  This is flex-specific.
 static void
 input_chars(char *buffer, int &result, int max_size) {
-  nassertv(inp != NULL);
-  if (*inp) {
-    inp->read(buffer, max_size);
-    result = inp->gcount();
+  nassertv(input_p != NULL);
+  if (*input_p) {
+    input_p->read(buffer, max_size);
+    result = input_p->gcount();
     if (result >= 0 && result < max_size) {
       // Truncate at the end of the read.
       buffer[result] = '\0';

File diff suppressed because it is too large
+ 292 - 192
pandatool/src/vrml/vrmlParser.cxx.prebuilt


+ 25 - 20
pandatool/src/vrml/vrmlParser.h.prebuilt

@@ -1,24 +1,22 @@
-/* A Bison parser, made by GNU Bison 2.3.  */
+/* A Bison parser, made by GNU Bison 2.4.2.  */
 
 /* Skeleton interface for Bison's Yacc-like parsers in C
-
-   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-   Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
+   
+      Copyright (C) 1984, 1989-1990, 2000-2006, 2009-2010 Free Software
+   Foundation, Inc.
+   
+   This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+   
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-
+   
    You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street, Fifth Floor,
-   Boston, MA 02110-1301, USA.  */
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 /* As a special exception, you may create a larger work that contains
    part or all of the Bison parser skeleton and distribute that work
@@ -29,10 +27,11 @@
    special exception, which will cause the skeleton and the resulting
    Bison output files to be licensed under the GNU General Public
    License without this special exception.
-
+   
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
+
 /* Tokens.  */
 #ifndef YYTOKENTYPE
 # define YYTOKENTYPE
@@ -112,22 +111,28 @@
 
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 typedef union YYSTYPE
-#line 116 "vrmlParser.yxx"
 {
+
+/* Line 1685 of yacc.c  */
+#line 116 "vrmlParser.yxx"
+
   char *string;
   VrmlFieldValue fv;
   VrmlNode *node;
   MFArray *mfarray;
   SFNodeRef nodeRef;
   VrmlScene *scene;
-}
-/* Line 1529 of yacc.c.  */
-#line 126 "y.tab.h"
-	YYSTYPE;
+
+
+
+/* Line 1685 of yacc.c  */
+#line 130 "y.tab.h"
+} YYSTYPE;
+# define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
-# define YYSTYPE_IS_TRIVIAL 1
 #endif
 
 extern YYSTYPE vrmlyylval;
 
+

+ 2638 - 2631
pandatool/src/xfile/xLexer.cxx.prebuilt

@@ -1,2631 +1,2638 @@
-#line 2 "lex.yy.c"
-
-#line 4 "lex.yy.c"
-
-#define  YY_INT_ALIGNED short int
-
-/* A lexical scanner generated by flex */
-
-#define yy_create_buffer xyy_create_buffer
-#define yy_delete_buffer xyy_delete_buffer
-#define yy_flex_debug xyy_flex_debug
-#define yy_init_buffer xyy_init_buffer
-#define yy_flush_buffer xyy_flush_buffer
-#define yy_load_buffer_state xyy_load_buffer_state
-#define yy_switch_to_buffer xyy_switch_to_buffer
-#define yyin xyyin
-#define yyleng xyyleng
-#define yylex xyylex
-#define yylineno xyylineno
-#define yyout xyyout
-#define yyrestart xyyrestart
-#define yytext xyytext
-#define yywrap xyywrap
-#define yyalloc xyyalloc
-#define yyrealloc xyyrealloc
-#define yyfree xyyfree
-
-#define FLEX_SCANNER
-#define YY_FLEX_MAJOR_VERSION 2
-#define YY_FLEX_MINOR_VERSION 5
-#define YY_FLEX_SUBMINOR_VERSION 35
-#if YY_FLEX_SUBMINOR_VERSION > 0
-#define FLEX_BETA
-#endif
-
-/* First, we deal with  platform-specific or compiler-specific issues. */
-
-/* begin standard C headers. */
-#include <stdio.h>
-#include <string.h>
-#include <errno.h>
-#include <stdlib.h>
-
-/* end standard C headers. */
-
-/* flex integer type definitions */
-
-#ifndef FLEXINT_H
-#define FLEXINT_H
-
-/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
-
-#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
-
-/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
- * if you want the limit (max/min) macros for int types. 
- */
-#ifndef __STDC_LIMIT_MACROS
-#define __STDC_LIMIT_MACROS 1
-#endif
-
-#include <inttypes.h>
-typedef int8_t flex_int8_t;
-typedef uint8_t flex_uint8_t;
-typedef int16_t flex_int16_t;
-typedef uint16_t flex_uint16_t;
-typedef int32_t flex_int32_t;
-typedef uint32_t flex_uint32_t;
-#else
-typedef signed char flex_int8_t;
-typedef short int flex_int16_t;
-typedef int flex_int32_t;
-typedef unsigned char flex_uint8_t; 
-typedef unsigned short int flex_uint16_t;
-typedef unsigned int flex_uint32_t;
-#endif /* ! C99 */
-
-/* Limits of integral types. */
-#ifndef INT8_MIN
-#define INT8_MIN               (-128)
-#endif
-#ifndef INT16_MIN
-#define INT16_MIN              (-32767-1)
-#endif
-#ifndef INT32_MIN
-#define INT32_MIN              (-2147483647-1)
-#endif
-#ifndef INT8_MAX
-#define INT8_MAX               (127)
-#endif
-#ifndef INT16_MAX
-#define INT16_MAX              (32767)
-#endif
-#ifndef INT32_MAX
-#define INT32_MAX              (2147483647)
-#endif
-#ifndef UINT8_MAX
-#define UINT8_MAX              (255U)
-#endif
-#ifndef UINT16_MAX
-#define UINT16_MAX             (65535U)
-#endif
-#ifndef UINT32_MAX
-#define UINT32_MAX             (4294967295U)
-#endif
-
-#endif /* ! FLEXINT_H */
-
-#ifdef __cplusplus
-
-/* The "const" storage-class-modifier is valid. */
-#define YY_USE_CONST
-
-#else	/* ! __cplusplus */
-
-/* C99 requires __STDC__ to be defined as 1. */
-#if defined (__STDC__)
-
-#define YY_USE_CONST
-
-#endif	/* defined (__STDC__) */
-#endif	/* ! __cplusplus */
-
-#ifdef YY_USE_CONST
-#define yyconst const
-#else
-#define yyconst
-#endif
-
-/* Returned upon end-of-file. */
-#define YY_NULL 0
-
-/* Promotes a possibly negative, possibly signed char to an unsigned
- * integer for use as an array index.  If the signed char is negative,
- * we want to instead treat it as an 8-bit unsigned char, hence the
- * double cast.
- */
-#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
-
-/* Enter a start condition.  This macro really ought to take a parameter,
- * but we do it the disgusting crufty way forced on us by the ()-less
- * definition of BEGIN.
- */
-#define BEGIN (yy_start) = 1 + 2 *
-
-/* Translate the current start state into a value that can be later handed
- * to BEGIN to return to the state.  The YYSTATE alias is for lex
- * compatibility.
- */
-#define YY_START (((yy_start) - 1) / 2)
-#define YYSTATE YY_START
-
-/* Action number for EOF rule of a given start state. */
-#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
-
-/* Special action meaning "start processing a new file". */
-#define YY_NEW_FILE xyyrestart(xyyin  )
-
-#define YY_END_OF_BUFFER_CHAR 0
-
-/* Size of default input buffer. */
-#ifndef YY_BUF_SIZE
-#define YY_BUF_SIZE 16384
-#endif
-
-/* The state buf must be large enough to hold one state per character in the main buffer.
- */
-#define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
-
-#ifndef YY_TYPEDEF_YY_BUFFER_STATE
-#define YY_TYPEDEF_YY_BUFFER_STATE
-typedef struct yy_buffer_state *YY_BUFFER_STATE;
-#endif
-
-extern int xyyleng;
-
-extern FILE *xyyin, *xyyout;
-
-#define EOB_ACT_CONTINUE_SCAN 0
-#define EOB_ACT_END_OF_FILE 1
-#define EOB_ACT_LAST_MATCH 2
-
-    #define YY_LESS_LINENO(n)
-    
-/* Return all but the first "n" matched characters back to the input stream. */
-#define yyless(n) \
-	do \
-		{ \
-		/* Undo effects of setting up xyytext. */ \
-        int yyless_macro_arg = (n); \
-        YY_LESS_LINENO(yyless_macro_arg);\
-		*yy_cp = (yy_hold_char); \
-		YY_RESTORE_YY_MORE_OFFSET \
-		(yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
-		YY_DO_BEFORE_ACTION; /* set up xyytext again */ \
-		} \
-	while ( 0 )
-
-#define unput(c) yyunput( c, (yytext_ptr)  )
-
-#ifndef YY_TYPEDEF_YY_SIZE_T
-#define YY_TYPEDEF_YY_SIZE_T
-typedef size_t yy_size_t;
-#endif
-
-#ifndef YY_STRUCT_YY_BUFFER_STATE
-#define YY_STRUCT_YY_BUFFER_STATE
-struct yy_buffer_state
-	{
-	FILE *yy_input_file;
-
-	char *yy_ch_buf;		/* input buffer */
-	char *yy_buf_pos;		/* current position in input buffer */
-
-	/* Size of input buffer in bytes, not including room for EOB
-	 * characters.
-	 */
-	yy_size_t yy_buf_size;
-
-	/* Number of characters read into yy_ch_buf, not including EOB
-	 * characters.
-	 */
-	int yy_n_chars;
-
-	/* Whether we "own" the buffer - i.e., we know we created it,
-	 * and can realloc() it to grow it, and should free() it to
-	 * delete it.
-	 */
-	int yy_is_our_buffer;
-
-	/* Whether this is an "interactive" input source; if so, and
-	 * if we're using stdio for input, then we want to use getc()
-	 * instead of fread(), to make sure we stop fetching input after
-	 * each newline.
-	 */
-	int yy_is_interactive;
-
-	/* Whether we're considered to be at the beginning of a line.
-	 * If so, '^' rules will be active on the next match, otherwise
-	 * not.
-	 */
-	int yy_at_bol;
-
-    int yy_bs_lineno; /**< The line count. */
-    int yy_bs_column; /**< The column count. */
-    
-	/* Whether to try to fill the input buffer when we reach the
-	 * end of it.
-	 */
-	int yy_fill_buffer;
-
-	int yy_buffer_status;
-
-#define YY_BUFFER_NEW 0
-#define YY_BUFFER_NORMAL 1
-	/* When an EOF's been seen but there's still some text to process
-	 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
-	 * shouldn't try reading from the input source any more.  We might
-	 * still have a bunch of tokens to match, though, because of
-	 * possible backing-up.
-	 *
-	 * When we actually see the EOF, we change the status to "new"
-	 * (via xyyrestart()), so that the user can continue scanning by
-	 * just pointing xyyin at a new input file.
-	 */
-#define YY_BUFFER_EOF_PENDING 2
-
-	};
-#endif /* !YY_STRUCT_YY_BUFFER_STATE */
-
-/* Stack of input buffers. */
-static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
-static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
-static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
-
-/* We provide macros for accessing buffer states in case in the
- * future we want to put the buffer states in a more general
- * "scanner state".
- *
- * Returns the top of the stack, or NULL.
- */
-#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
-                          ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
-                          : NULL)
-
-/* Same as previous macro, but useful when we know that the buffer stack is not
- * NULL or when we need an lvalue. For internal use only.
- */
-#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
-
-/* yy_hold_char holds the character lost when xyytext is formed. */
-static char yy_hold_char;
-static int yy_n_chars;		/* number of characters read into yy_ch_buf */
-int xyyleng;
-
-/* Points to current character in buffer. */
-static char *yy_c_buf_p = (char *) 0;
-static int yy_init = 0;		/* whether we need to initialize */
-static int yy_start = 0;	/* start state number */
-
-/* Flag which is used to allow xyywrap()'s to do buffer switches
- * instead of setting up a fresh xyyin.  A bit of a hack ...
- */
-static int yy_did_buffer_switch_on_eof;
-
-void xyyrestart (FILE *input_file  );
-void xyy_switch_to_buffer (YY_BUFFER_STATE new_buffer  );
-YY_BUFFER_STATE xyy_create_buffer (FILE *file,int size  );
-void xyy_delete_buffer (YY_BUFFER_STATE b  );
-void xyy_flush_buffer (YY_BUFFER_STATE b  );
-void xyypush_buffer_state (YY_BUFFER_STATE new_buffer  );
-void xyypop_buffer_state (void );
-
-static void xyyensure_buffer_stack (void );
-static void xyy_load_buffer_state (void );
-static void xyy_init_buffer (YY_BUFFER_STATE b,FILE *file  );
-
-#define YY_FLUSH_BUFFER xyy_flush_buffer(YY_CURRENT_BUFFER )
-
-YY_BUFFER_STATE xyy_scan_buffer (char *base,yy_size_t size  );
-YY_BUFFER_STATE xyy_scan_string (yyconst char *yy_str  );
-YY_BUFFER_STATE xyy_scan_bytes (yyconst char *bytes,int len  );
-
-void *xyyalloc (yy_size_t  );
-void *xyyrealloc (void *,yy_size_t  );
-void xyyfree (void *  );
-
-#define yy_new_buffer xyy_create_buffer
-
-#define yy_set_interactive(is_interactive) \
-	{ \
-	if ( ! YY_CURRENT_BUFFER ){ \
-        xyyensure_buffer_stack (); \
-		YY_CURRENT_BUFFER_LVALUE =    \
-            xyy_create_buffer(xyyin,YY_BUF_SIZE ); \
-	} \
-	YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
-	}
-
-#define yy_set_bol(at_bol) \
-	{ \
-	if ( ! YY_CURRENT_BUFFER ){\
-        xyyensure_buffer_stack (); \
-		YY_CURRENT_BUFFER_LVALUE =    \
-            xyy_create_buffer(xyyin,YY_BUF_SIZE ); \
-	} \
-	YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
-	}
-
-#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
-
-typedef unsigned char YY_CHAR;
-
-FILE *xyyin = (FILE *) 0, *xyyout = (FILE *) 0;
-
-typedef int yy_state_type;
-
-extern int xyylineno;
-
-int xyylineno = 1;
-
-extern char *xyytext;
-#define yytext_ptr xyytext
-
-static yy_state_type yy_get_previous_state (void );
-static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
-static int yy_get_next_buffer (void );
-static void yy_fatal_error (yyconst char msg[]  );
-
-/* Done after the current pattern has been matched and before the
- * corresponding action - sets up xyytext.
- */
-#define YY_DO_BEFORE_ACTION \
-	(yytext_ptr) = yy_bp; \
-	xyyleng = (size_t) (yy_cp - yy_bp); \
-	(yy_hold_char) = *yy_cp; \
-	*yy_cp = '\0'; \
-	(yy_c_buf_p) = yy_cp;
-
-#define YY_NUM_RULES 35
-#define YY_END_OF_BUFFER 36
-/* This struct is not used in this scanner,
-   but its presence is necessary. */
-struct yy_trans_info
-	{
-	flex_int32_t yy_verify;
-	flex_int32_t yy_nxt;
-	};
-static yyconst flex_int16_t yy_acclist[200] =
-    {   0,
-       36,   34,   35,    2,   34,   35,    1,   35,   30,   34,
-       35,    4,   34,   35,   32,   34,   35,   34,   35,   10,
-       34,   35,   32,   34,   35,    9,   34,   35,   34,   35,
-       26,   34,   35,   11,   34,   35,   31,   34,   35,   32,
-       34,   35,   32,   34,   35,   32,   34,   35,   32,   34,
-       35,   32,   34,   35,   32,   34,   35,   32,   34,   35,
-       32,   34,   35,   32,   34,   35,    7,   34,   35,    8,
-       34,   35,    5,   34,   35,    6,   34,   35,    1,    4,
-       32,   26,   32,   33,   32,   33,   32,   26,   32,    3,
-       27,16412,   26,   27,16412,   33,   33,   26,   32,   32,
-
-       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
-       32,   32,   32,   33,   32,   33,   32,   33,   32,   33,
-       32,   32,   29,    3,   27,   33,   33,   33,   33,   32,
-       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
-       32,   32,   32,   32, 8220,   32,   13,   32,   14,   32,
-       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
-       25,   32,   32,   32,   29,   29,   12,   32,   32,   32,
-       17,   32,   19,   32,   32,   32,   24,   32,   32,   22,
-       32,   32,   32,   16,   32,   18,   32,   20,   32,   32,
-       32,   29,   15,   32,   32,   23,   32,   21,   32
-
-    } ;
-
-static yyconst flex_int16_t yy_accept[142] =
-    {   0,
-        1,    1,    1,    2,    4,    7,    9,   12,   15,   18,
-       20,   23,   26,   29,   31,   34,   37,   40,   43,   46,
-       49,   52,   55,   58,   61,   64,   67,   70,   73,   76,
-       79,   80,   81,   82,   82,   83,   85,   87,   88,   90,
-       90,   91,   93,   96,   97,   98,   98,   99,  100,  101,
-      102,  103,  104,  105,  106,  107,  108,  109,  110,  111,
-      112,  113,  115,  117,  119,  121,  122,  123,  124,  124,
-      125,  125,  126,  127,  128,  129,  130,  131,  132,  133,
-      134,  135,  136,  137,  138,  139,  140,  141,  142,  143,
-      144,  145,  145,  145,  145,  145,  145,  146,  147,  149,
-
-      151,  152,  153,  154,  155,  156,  157,  158,  159,  160,
-      161,  163,  164,  165,  166,  167,  169,  170,  171,  173,
-      175,  176,  177,  179,  180,  182,  183,  183,  184,  186,
-      188,  190,  191,  192,  192,  193,  195,  196,  198,  200,
-      200
-    } ;
-
-static yyconst flex_int32_t yy_ec[256] =
-    {   0,
-        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
-        1,    1,    4,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    5,    1,    6,    7,    1,    1,    1,    1,    8,
-        8,    1,    9,   10,   11,   12,   13,   14,   14,   14,
-       14,   14,   14,   14,   14,   14,   14,    1,   15,   16,
-        1,    1,    1,    1,   17,   18,   19,   20,   21,   22,
-       23,   24,   25,    8,    8,   26,   27,   28,   29,   30,
-        8,   31,   32,   33,   34,    8,   35,    8,   36,    8,
-       37,    1,   38,    1,    8,    1,   39,   40,   41,   42,
-
-       43,   44,   45,   46,   47,    8,    8,   48,   49,   50,
-       51,   52,    8,   53,   54,   55,   56,    8,   57,    8,
-       58,    8,   59,    1,   60,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1
-    } ;
-
-static yyconst flex_int32_t yy_meta[61] =
-    {   0,
-        1,    2,    3,    1,    2,    1,    1,    4,    1,    2,
-        4,    4,    1,    4,    2,    1,    4,    4,    4,    4,
-        4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
-        4,    4,    4,    4,    4,    4,    1,    1,    4,    4,
-        4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
-        4,    4,    4,    4,    4,    4,    4,    4,    1,    1
-    } ;
-
-static yyconst flex_int16_t yy_base[151] =
-    {   0,
-        0,    0,  336,  370,  370,    0,  370,    0,    0,   49,
-      370,   53,  320,  290,   64,  370,  370,   31,   32,   48,
-       42,   44,   53,   60,   63,   54,  370,  370,  370,  370,
-        0,    0,    0,  248,  104,    0,   86,  215,  110,  121,
-        0,  135,  146,    0,  116,  157,  171,   54,   56,  100,
-       99,  107,  114,  118,  117,  122,  129,  139,  144,  145,
-      146,    0,    0,  182,  190,  193,  207,  228,  202,    0,
-      201,  239,    0,    0,  212,  220,  167,  176,  174,  194,
-      217,  214,  229,  219,  227,  224,  226,  241,  240,  240,
-      252,  175,  196,  206,  177,  274,  370,  228,    0,    0,
-
-      240,  243,  251,  239,  242,  247,  263,  259,  259,  263,
-        0,  165,  294,  296,  311,    0,  272,  281,    0,    0,
-      295,  295,    0,  302,    0,  300,  319,  300,    0,    0,
-        0,  294,  308,  124,  333,    0,  310,    0,    0,  370,
-      354,  358,  130,  129,  361,  125,   97,  365,   92,   83
-    } ;
-
-static yyconst flex_int16_t yy_def[151] =
-    {   0,
-      140,    1,  140,  140,  140,  141,  140,  142,  143,  140,
-      140,  144,  140,  140,  145,  140,  140,  143,  143,  143,
-      143,  143,  143,  143,  143,  143,  140,  140,  140,  140,
-      141,  142,  143,  140,  140,  146,  147,  143,  144,  140,
-      148,  140,  140,  149,  150,  140,  145,  143,  143,  143,
-      143,  143,  143,  143,  143,  143,  143,  143,  143,  143,
-      143,  146,  146,  147,  147,  143,  143,  140,  140,  148,
-      140,  140,  149,  149,  150,  150,  143,  143,  143,  143,
-      143,  143,  143,  143,  143,  143,  143,  143,  143,  143,
-      143,  140,  140,  140,  140,  140,  140,  143,  143,  143,
-
-      143,  143,  143,  143,  143,  143,  143,  143,  143,  143,
-      143,  143,  143,  140,  140,  143,  143,  143,  143,  143,
-      143,  143,  143,  143,  143,  143,  140,  143,  143,  143,
-      143,  143,  143,  140,  140,  143,  143,  143,  143,    0,
-      140,  140,  140,  140,  140,  140,  140,  140,  140,  140
-    } ;
-
-static yyconst flex_int16_t yy_nxt[431] =
-    {   0,
-        4,    5,    6,    5,    5,    7,    8,    9,   10,   11,
-       12,   13,   14,   15,   16,   17,   18,   19,   20,   21,
-        9,   22,    9,    9,    9,    9,    9,    9,    9,    9,
-        9,   23,   24,   25,   26,    9,   27,   28,   18,   19,
-       20,   21,    9,   22,    9,    9,    9,    9,    9,    9,
-        9,    9,    9,   23,   24,   25,   26,    9,   29,   30,
-       34,   48,   35,   37,   38,   42,   39,   49,   43,   54,
-       52,   50,   55,   42,   45,   46,   53,   47,   42,   51,
-       58,   59,   61,   48,   77,   56,   74,   57,   78,   49,
-       60,   54,   52,   50,   55,   73,   64,   62,   53,   65,
-
-       63,   51,   58,   59,   61,   42,   77,   56,   43,   57,
-       78,   42,   60,   42,   43,   46,   79,   35,   42,   42,
-       37,   67,   68,   39,   42,   68,   75,   73,   62,   76,
-       68,   80,   36,   33,   40,   68,   42,  135,   79,   42,
-       81,   69,   82,   71,   42,   71,   83,   42,   72,   42,
-       43,   84,   85,   80,   71,   42,   71,   86,   68,   72,
-       42,   68,   81,   69,   82,   87,   68,   88,   83,   89,
-       40,   68,   42,   84,   85,   43,   90,   69,  113,   86,
-       42,   45,   46,   98,   47,   42,   93,   87,   94,   88,
-       96,   89,   64,   62,   68,   65,   99,   68,   90,   69,
-
-       64,   62,   68,   65,  100,   98,   66,   68,   68,  114,
-       95,   68,   95,   91,   72,   96,   68,  115,   99,   94,
-       66,   68,   75,   73,  101,   76,  100,   91,   66,   68,
-       75,   73,   68,   76,  102,   91,   92,   68,   92,   93,
-       42,   94,   68,   42,  103,  104,  101,  105,   42,   91,
-       97,  106,   72,   42,  107,  108,  102,  109,  110,  111,
-       95,   40,  112,  116,  117,  113,  103,  104,  118,  105,
-      119,  120,  121,  106,  122,   68,  107,  108,   68,  109,
-      110,  111,  123,   68,  124,  116,  117,   96,   68,  125,
-      118,  126,  119,  120,  121,   68,  122,   68,   68,  128,
-
-       68,  129,   41,   68,  123,   68,  124,  113,   68,  114,
-       68,  125,   68,  126,  130,   68,  127,  131,  132,  133,
-       68,  128,  136,  129,  114,   68,  137,  134,  138,  134,
-      139,  127,  135,   40,   68,  140,  130,   68,  127,  131,
-      132,  133,   68,  140,  136,  140,  135,   68,  137,  140,
-      138,  140,  139,  127,   31,   31,  140,   31,   32,   32,
-      140,   32,   44,  140,   44,   70,   70,  140,   70,    3,
-      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
-      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
-      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
-
-      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
-      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
-      140,  140,  140,  140,  140,  140,  140,  140,  140,  140
-    } ;
-
-static yyconst flex_int16_t yy_chk[431] =
-    {   0,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-       10,   18,   10,   12,   12,   15,   12,   19,   15,   22,
-       21,   20,   23,   15,   15,   15,   21,   15,   15,   20,
-       24,   25,   26,   18,   48,   23,  150,   23,   49,   19,
-       25,   22,   21,   20,   23,  149,   37,   37,   21,   37,
-
-      147,   20,   24,   25,   26,   35,   48,   23,   35,   23,
-       49,   39,   25,   35,   39,   35,   50,   35,   35,   39,
-       39,   39,   40,   39,   39,   40,   45,   45,  146,   45,
-       40,   51,  144,  143,   40,   40,   42,  134,   50,   42,
-       52,   40,   53,   42,   42,   42,   54,   43,   42,   42,
-       43,   55,   56,   51,   43,   43,   43,   57,   46,   43,
-       43,   46,   52,   40,   53,   58,   46,   59,   54,   60,
-       46,   46,   47,   55,   56,   47,   61,   46,  112,   57,
-       47,   47,   47,   77,   47,   47,   92,   58,   92,   59,
-       95,   60,   64,   64,   66,   64,   78,   66,   61,   46,
-
-       65,   65,   66,   65,   79,   77,   66,   66,   67,   93,
-       69,   67,   69,   66,   71,   69,   67,   94,   78,   94,
-       67,   67,   75,   75,   80,   75,   79,   67,   38,   68,
-       76,   76,   68,   76,   81,   66,   68,   68,   68,   68,
-       72,   68,   68,   72,   82,   83,   80,   84,   72,   67,
-       72,   85,   72,   72,   86,   87,   81,   88,   89,   90,
-       91,   34,   91,   98,  101,   91,   82,   83,  102,   84,
-      103,  104,  105,   85,  106,   96,   86,   87,   96,   88,
-       89,   90,  107,   96,  108,   98,  101,   96,   96,  109,
-      102,  110,  103,  104,  105,  113,  106,  114,  113,  117,
-
-      114,  118,   14,  113,  107,  114,  108,  113,  113,  114,
-      114,  109,  115,  110,  121,  115,  114,  122,  124,  126,
-      115,  117,  128,  118,  115,  115,  132,  127,  133,  127,
-      137,  115,  127,   13,  135,    3,  121,  135,  114,  122,
-      124,  126,  135,    0,  128,    0,  135,  135,  132,    0,
-      133,    0,  137,  115,  141,  141,    0,  141,  142,  142,
-        0,  142,  145,    0,  145,  148,  148,    0,  148,  140,
-      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
-      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
-      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
-
-      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
-      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
-      140,  140,  140,  140,  140,  140,  140,  140,  140,  140
-    } ;
-
-extern int xyy_flex_debug;
-int xyy_flex_debug = 0;
-
-static yy_state_type *yy_state_buf=0, *yy_state_ptr=0;
-static char *yy_full_match;
-static int yy_lp;
-static int yy_looking_for_trail_begin = 0;
-static int yy_full_lp;
-static int *yy_full_state;
-#define YY_TRAILING_MASK 0x2000
-#define YY_TRAILING_HEAD_MASK 0x4000
-#define REJECT \
-{ \
-*yy_cp = (yy_hold_char); /* undo effects of setting up xyytext */ \
-yy_cp = (yy_full_match); /* restore poss. backed-over text */ \
-(yy_lp) = (yy_full_lp); /* restore orig. accepting pos. */ \
-(yy_state_ptr) = (yy_full_state); /* restore orig. state */ \
-yy_current_state = *(yy_state_ptr); /* restore curr. state */ \
-++(yy_lp); \
-goto find_rule; \
-}
-
-#define yymore() yymore_used_but_not_detected
-#define YY_MORE_ADJ 0
-#define YY_RESTORE_YY_MORE_OFFSET
-char *xyytext;
-#line 1 "xLexer.lxx"
-/*
-// Filename: xLexer.lxx
-// Created by:  drose (03Oct04)
-// 
-////////////////////////////////////////////////////////////////////
-*/
-#line 9 "xLexer.lxx"
-#include "xLexerDefs.h"
-#include "xParserDefs.h"
-#include "xParser.h"
-#include "indent.h"
-#include "string_utils.h"
-#include "config_xfile.h"
-
-static int yyinput(void);        // declared by flex.
-extern "C" int xyywrap();
-
-////////////////////////////////////////////////////////////////////
-// Static variables
-////////////////////////////////////////////////////////////////////
-
-// We'll increment line_number and col_number as we parse the file, so
-// that we can report the position of an error.
-int x_line_number = 0;
-int x_col_number = 0;
-
-// current_line holds as much of the current line as will fit.  Its
-// only purpose is for printing it out to report an error to the user.
-static const int max_error_width = 1024;
-char x_current_line[max_error_width + 1];
-
-static int error_count = 0;
-static int warning_count = 0;
-
-// This is the pointer to the current input stream.
-static istream *inp = NULL;
-
-// This is the name of the x file we're parsing.  We keep it so we
-// can print it out for error messages.
-static string x_filename;
-
-
-////////////////////////////////////////////////////////////////////
-// Defining the interface to the lexer.
-////////////////////////////////////////////////////////////////////
-
-void
-x_init_lexer(istream &in, const string &filename) {
-  inp = &in;
-  x_filename = filename;
-  x_line_number = 0;
-  x_col_number = 0;
-  error_count = 0;
-  warning_count = 0;
-}
-
-int
-x_error_count() {
-  return error_count;
-}
-
-int
-x_warning_count() {
-  return warning_count;
-}
-
-
-////////////////////////////////////////////////////////////////////
-// Internal support functions.
-////////////////////////////////////////////////////////////////////
-
-int
-xyywrap(void) {
-  return 1;
-}
-
-void
-xyyerror(const string &msg) {
-  xyyerror(msg, x_line_number, x_col_number, x_current_line);
-}
-
-void
-xyyerror(const string &msg, int line_number, int col_number, 
-         const string &current_line) {
-  xfile_cat.error(false) << "\nError";
-  if (!x_filename.empty()) {
-    xfile_cat.error(false) << " in " << x_filename;
-  }
-  xfile_cat.error(false) 
-    << " at line " << line_number << ", column " << col_number << ":\n"
-    << current_line << "\n";
-  indent(xfile_cat.error(false), col_number-1) 
-    << "^\n" << msg << "\n\n";
-  
-  error_count++;
-}
-
-void
-xyywarning(const string &msg) {
-  xfile_cat.warning(false) << "\nWarning";
-  if (!x_filename.empty()) {
-    xfile_cat.warning(false) << " in " << x_filename;
-  }
-  xfile_cat.warning(false) 
-    << " at line " << x_line_number << ", column " << x_col_number << ":\n"
-    << x_current_line << "\n";
-  indent(xfile_cat.warning(false), x_col_number-1) 
-    << "^\n" << msg << "\n\n";
-
-  warning_count++;
-}
-
-// Now define a function to take input from an istream instead of a
-// stdio FILE pointer.  This is flex-specific.
-static void
-input_chars(char *buffer, int &result, int max_size) {
-  nassertv(inp != NULL);
-  if (*inp) {
-    inp->read(buffer, max_size);
-    result = inp->gcount();
-    if (result >= 0 && result < max_size) {
-      // Truncate at the end of the read.
-      buffer[result] = '\0';
-    }
-
-    if (x_line_number == 0) {
-      // This is a special case.  If we are reading the very first bit
-      // from the stream, copy it into the x_current_line array.  This
-      // is because the \n.* rule below, which fills x_current_line
-      // normally, doesn't catch the first line.
-      strncpy(x_current_line, xyytext, max_error_width);
-      x_current_line[max_error_width] = '\0';
-      x_line_number++;
-      x_col_number = 0;
-
-      // Truncate it at the newline.
-      char *end = strchr(x_current_line, '\n');
-      if (end != NULL) {
-        *end = '\0';
-      }
-    }
-
-  } else {
-    // End of file or I/O error.
-    result = 0;
-  }
-}
-#undef YY_INPUT
-#define YY_INPUT(buffer, result, max_size) input_chars(buffer, result, max_size)
-
-// read_char reads and returns a single character, incrementing the
-// supplied line and column numbers as appropriate.  A convenience
-// function for the scanning functions below.
-static int
-read_char(int &line, int &col) {
-  int c = yyinput();
-  if (c == '\n') {
-    line++;
-    col = 0;
-  } else {
-    col++;
-  }
-  return c;
-}
-
-// scan_quoted_string reads a string delimited by quotation marks and
-// returns it.
-static string
-scan_quoted_string(char quote_mark) {
-  string result;
-
-  // We don't touch the current line number and column number during
-  // scanning, so that if we detect an error while scanning the string
-  // (e.g. an unterminated string), we'll report the error as
-  // occurring at the start of the string, not at the end--somewhat
-  // more convenient for the user.
-
-  // Instead of adjusting the global x_line_number and x_col_number
-  // variables, we'll operate on our own local variables for the
-  // interim.
-  int line = x_line_number;
-  int col = x_col_number;
-
-  int c;
-  c = read_char(line, col);
-  while (c != quote_mark && c != EOF) {
-    // A newline is not allowed within a string unless it is escaped.
-    if (c == '\n') {
-      c = EOF;
-      break;
-
-    } else if (c == '\\') {
-      // Backslash escapes the following character.  We also respect
-      // some C conventions.
-      c = read_char(line, col);
-      switch (c) {
-      case 'a':
-        result += '\a';
-        c = read_char(line, col);
-        break;
-
-      case 'n':
-        result += '\n';
-        c = read_char(line, col);
-        break;
-
-      case 'r':
-        result += '\r';
-        c = read_char(line, col);
-        break;
-
-      case 't':
-        result += '\t';
-        c = read_char(line, col);
-        break;
-
-      case 'x':
-        {
-          int hex = 0;
-          c = read_char(line, col);
-          for (int i = 0; i < 2 && isxdigit(c); i++) {
-            hex = hex * 16 + (isdigit(c) ? c - '0' : tolower(c) - 'a' + 10);
-            c = read_char(line, col);
-          }
-
-          result += hex;
-        }
-        break;
-
-      case '0':
-        {
-          int oct = 0;
-          c = read_char(line, col);
-          for (int i = 0; i < 3 && (c >= '0' && c < '7'); i++) {
-            oct = oct * 8 + (c - '0');
-            c = read_char(line, col);
-          }
-
-          result += oct;
-        }
-        break;
-
-      case '1':
-      case '2':
-      case '3':
-      case '4':
-      case '5':
-      case '6':
-      case '7':
-      case '8':
-      case '9':
-        {
-          int dec = 0;
-          c = read_char(line, col);
-          for (int i = 0; i < 3 && isdigit(c); i++) {
-            dec = dec * 10 + (c - '0');
-            c = read_char(line, col);
-          }
-
-          result += dec;
-        }
-        break;
-
-      case EOF:
-        break;
-
-      default:
-        result += c;
-        c = read_char(line, col);
-      }
-
-    } else {
-      result += c;
-      c = read_char(line, col);
-    }
-  }
-
-  if (c == EOF) {
-    xyyerror("This quotation mark is unterminated.");
-  }
-
-  x_line_number = line;
-  x_col_number = col;
-
-  return result;
-}
-
-// scan_guid_string reads a string of hexadecimal digits delimited by
-// angle brackets and returns the corresponding string.
-static string
-scan_guid_string() {
-  // We don't touch the current line number and column number during
-  // scanning, so that if we detect an error while scanning the string
-  // (e.g. an unterminated string), we'll report the error as
-  // occurring at the start of the string, not at the end--somewhat
-  // more convenient for the user.
-
-  // Instead of adjusting the global x_line_number and x_col_number
-  // variables, we'll operate on our own local variables for the
-  // interim.
-  int line = x_line_number;
-  int col = x_col_number;
-
-  int num_digits = 0;
-  int num_hyphens = 0;
-
-  string result;
-
-  int c;
-  c = read_char(line, col);
-  while (c != '>' && c != EOF) {
-    if (isxdigit(c)) {
-      num_digits++;
-
-    } else if (c == '-') {
-      num_hyphens++;
-
-    } else {
-      x_line_number = line;
-      x_col_number = col;
-      xyyerror("Invalid character in GUID.");
-      return string();
-    }
-
-    result += c;
-
-    c = read_char(line, col);
-  }
-
-  if (c == EOF) {
-    xyyerror("This GUID string is unterminated.");
-    return string();
-
-  } else if (num_digits != 32) {
-    xyyerror("Incorrect number of hex digits in GUID.");
-    return string();
-
-  } else if (num_hyphens != 4) {
-    xyyerror("Incorrect number of hyphens in GUID.");
-    return string();
-  }
-
-  x_line_number = line;
-  x_col_number = col;
-
-  return result;
-}
-
-// Parses the text into a list of integers and returns them.
-static PTA_int
-scan_int_list(const string &text) {
-  PTA_int result;
-
-  vector_string words;
-  tokenize(text, words, ",;");
-
-  vector_string::const_iterator wi;
-  for (wi = words.begin(); wi != words.end(); ++wi) {
-    string trimmed = trim(*wi);
-    if (!trimmed.empty()) {
-      int number = 0;
-      string_to_int(trimmed, number);
-      result.push_back(number);
-    }
-  }
-
-  return result;
-}
-
-// Parses the text into a list of doubles and returns them.
-static PTA_double
-scan_double_list(const string &text) {
-  PTA_double result;
-
-  vector_string words;
-  tokenize(text, words, ",;");
-
-  vector_string::const_iterator wi;
-  for (wi = words.begin(); wi != words.end(); ++wi) {
-    string trimmed = trim(*wi);
-    if (!trimmed.empty()) {
-      double number = 0.0;
-      string_to_double(trimmed, number);
-      result.push_back(number);
-    }
-  }
-
-  return result;
-}
-
-
-
-// accept() is called below as each piece is pulled off and
-// accepted by the lexer; it increments the current column number.
-inline void accept() {
-  x_col_number += xyyleng;
-}
-
-#line 1045 "lex.yy.c"
-
-#define INITIAL 0
-
-#ifndef YY_NO_UNISTD_H
-/* Special case for "unistd.h", since it is non-ANSI. We include it way
- * down here because we want the user's section 1 to have been scanned first.
- * The user has a chance to override it with an option.
- */
-#endif
-
-#ifndef YY_EXTRA_TYPE
-#define YY_EXTRA_TYPE void *
-#endif
-
-static int yy_init_globals (void );
-
-/* Accessor methods to globals.
-   These are made visible to non-reentrant scanners for convenience. */
-
-int xyylex_destroy (void );
-
-int xyyget_debug (void );
-
-void xyyset_debug (int debug_flag  );
-
-YY_EXTRA_TYPE xyyget_extra (void );
-
-void xyyset_extra (YY_EXTRA_TYPE user_defined  );
-
-FILE *xyyget_in (void );
-
-void xyyset_in  (FILE * in_str  );
-
-FILE *xyyget_out (void );
-
-void xyyset_out  (FILE * out_str  );
-
-int xyyget_leng (void );
-
-char *xyyget_text (void );
-
-int xyyget_lineno (void );
-
-void xyyset_lineno (int line_number  );
-
-/* Macros after this point can all be overridden by user definitions in
- * section 1.
- */
-
-#ifndef YY_SKIP_YYWRAP
-#ifdef __cplusplus
-extern "C" int xyywrap (void );
-#else
-extern int xyywrap (void );
-#endif
-#endif
-
-    static void yyunput (int c,char *buf_ptr  );
-    
-#ifndef yytext_ptr
-static void yy_flex_strncpy (char *,yyconst char *,int );
-#endif
-
-#ifdef YY_NEED_STRLEN
-static int yy_flex_strlen (yyconst char * );
-#endif
-
-#ifndef YY_NO_INPUT
-
-#ifdef __cplusplus
-static int yyinput (void );
-#else
-static int input (void );
-#endif
-
-#endif
-
-/* Amount of stuff to slurp up with each read. */
-#ifndef YY_READ_BUF_SIZE
-#define YY_READ_BUF_SIZE 8192
-#endif
-
-/* Copy whatever the last rule matched to the standard output. */
-#ifndef ECHO
-/* This used to be an fputs(), but since the string might contain NUL's,
- * we now use fwrite().
- */
-#define ECHO fwrite( xyytext, xyyleng, 1, xyyout )
-#endif
-
-/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
- * is returned in "result".
- */
-#ifndef YY_INPUT
-#define YY_INPUT(buf,result,max_size) \
-	if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
-		{ \
-		int c = '*'; \
-		unsigned n; \
-		for ( n = 0; n < max_size && \
-			     (c = getc( xyyin )) != EOF && c != '\n'; ++n ) \
-			buf[n] = (char) c; \
-		if ( c == '\n' ) \
-			buf[n++] = (char) c; \
-		if ( c == EOF && ferror( xyyin ) ) \
-			YY_FATAL_ERROR( "input in flex scanner failed" ); \
-		result = n; \
-		} \
-	else \
-		{ \
-		errno=0; \
-		while ( (result = fread(buf, 1, max_size, xyyin))==0 && ferror(xyyin)) \
-			{ \
-			if( errno != EINTR) \
-				{ \
-				YY_FATAL_ERROR( "input in flex scanner failed" ); \
-				break; \
-				} \
-			errno=0; \
-			clearerr(xyyin); \
-			} \
-		}\
-\
-
-#endif
-
-/* No semi-colon after return; correct usage is to write "yyterminate();" -
- * we don't want an extra ';' after the "return" because that will cause
- * some compilers to complain about unreachable statements.
- */
-#ifndef yyterminate
-#define yyterminate() return YY_NULL
-#endif
-
-/* Number of entries by which start-condition stack grows. */
-#ifndef YY_START_STACK_INCR
-#define YY_START_STACK_INCR 25
-#endif
-
-/* Report a fatal error. */
-#ifndef YY_FATAL_ERROR
-#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
-#endif
-
-/* end tables serialization structures and prototypes */
-
-/* Default declaration of generated scanner - a define so the user can
- * easily add parameters.
- */
-#ifndef YY_DECL
-#define YY_DECL_IS_OURS 1
-
-extern int xyylex (void);
-
-#define YY_DECL int xyylex (void)
-#endif /* !YY_DECL */
-
-/* Code executed at the beginning of each rule, after xyytext and xyyleng
- * have been set up.
- */
-#ifndef YY_USER_ACTION
-#define YY_USER_ACTION
-#endif
-
-/* Code executed at the end of each rule. */
-#ifndef YY_BREAK
-#define YY_BREAK break;
-#endif
-
-#define YY_RULE_SETUP \
-	YY_USER_ACTION
-
-/** The main scanner function which does all the work.
- */
-YY_DECL
-{
-	register yy_state_type yy_current_state;
-	register char *yy_cp, *yy_bp;
-	register int yy_act;
-    
-#line 407 "xLexer.lxx"
-
-
-
-
-
-#line 1233 "lex.yy.c"
-
-	if ( !(yy_init) )
-		{
-		(yy_init) = 1;
-
-#ifdef YY_USER_INIT
-		YY_USER_INIT;
-#endif
-
-        /* Create the reject buffer large enough to save one state per allowed character. */
-        if ( ! (yy_state_buf) )
-            (yy_state_buf) = (yy_state_type *)xyyalloc(YY_STATE_BUF_SIZE  );
-            if ( ! (yy_state_buf) )
-                YY_FATAL_ERROR( "out of dynamic memory in xyylex()" );
-
-		if ( ! (yy_start) )
-			(yy_start) = 1;	/* first start state */
-
-		if ( ! xyyin )
-			xyyin = stdin;
-
-		if ( ! xyyout )
-			xyyout = stdout;
-
-		if ( ! YY_CURRENT_BUFFER ) {
-			xyyensure_buffer_stack ();
-			YY_CURRENT_BUFFER_LVALUE =
-				xyy_create_buffer(xyyin,YY_BUF_SIZE );
-		}
-
-		xyy_load_buffer_state( );
-		}
-
-	while ( 1 )		/* loops until end-of-file is reached */
-		{
-		yy_cp = (yy_c_buf_p);
-
-		/* Support of xyytext. */
-		*yy_cp = (yy_hold_char);
-
-		/* yy_bp points to the position in yy_ch_buf of the start of
-		 * the current run.
-		 */
-		yy_bp = yy_cp;
-
-		yy_current_state = (yy_start);
-
-		(yy_state_ptr) = (yy_state_buf);
-		*(yy_state_ptr)++ = yy_current_state;
-
-yy_match:
-		do
-			{
-			register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
-			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
-				{
-				yy_current_state = (int) yy_def[yy_current_state];
-				if ( yy_current_state >= 141 )
-					yy_c = yy_meta[(unsigned int) yy_c];
-				}
-			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-			*(yy_state_ptr)++ = yy_current_state;
-			++yy_cp;
-			}
-		while ( yy_base[yy_current_state] != 370 );
-
-yy_find_action:
-		yy_current_state = *--(yy_state_ptr);
-		(yy_lp) = yy_accept[yy_current_state];
-find_rule: /* we branch to this label when backing up */
-		for ( ; ; ) /* until we find what rule we matched */
-			{
-			if ( (yy_lp) && (yy_lp) < yy_accept[yy_current_state + 1] )
-				{
-				yy_act = yy_acclist[(yy_lp)];
-				if ( yy_act & YY_TRAILING_HEAD_MASK ||
-				     (yy_looking_for_trail_begin) )
-					{
-					if ( yy_act == (yy_looking_for_trail_begin) )
-						{
-						(yy_looking_for_trail_begin) = 0;
-						yy_act &= ~YY_TRAILING_HEAD_MASK;
-						break;
-						}
-					}
-				else if ( yy_act & YY_TRAILING_MASK )
-					{
-					(yy_looking_for_trail_begin) = yy_act & ~YY_TRAILING_MASK;
-					(yy_looking_for_trail_begin) |= YY_TRAILING_HEAD_MASK;
-					}
-				else
-					{
-					(yy_full_match) = yy_cp;
-					(yy_full_state) = (yy_state_ptr);
-					(yy_full_lp) = (yy_lp);
-					break;
-					}
-				++(yy_lp);
-				goto find_rule;
-				}
-			--yy_cp;
-			yy_current_state = *--(yy_state_ptr);
-			(yy_lp) = yy_accept[yy_current_state];
-			}
-
-		YY_DO_BEFORE_ACTION;
-
-do_action:	/* This label is used only to access EOF actions. */
-
-		switch ( yy_act )
-	{ /* beginning of action switch */
-case 1:
-/* rule 1 can match eol */
-YY_RULE_SETUP
-#line 412 "xLexer.lxx"
-{
-  // New line.  Save a copy of the line so we can print it out for the
-  // benefit of the user in case we get an error.
-
-  strncpy(x_current_line, xyytext+1, max_error_width);
-  x_current_line[max_error_width] = '\0';
-  x_line_number++;
-  x_col_number=0;
-
-  // Return the whole line to the lexer, except the newline character,
-  // which we eat.
-  yyless(1);
-}
-	YY_BREAK
-case 2:
-YY_RULE_SETUP
-#line 426 "xLexer.lxx"
-{ 
-  // Eat whitespace.
-  accept();
-}
-	YY_BREAK
-case 3:
-YY_RULE_SETUP
-#line 431 "xLexer.lxx"
-{ 
-  // Eat C++-style comments.
-  accept();
-}
-	YY_BREAK
-case 4:
-YY_RULE_SETUP
-#line 436 "xLexer.lxx"
-{ 
-  // Eat sh-style comments.
-  accept();
-}
-	YY_BREAK
-case 5:
-YY_RULE_SETUP
-#line 441 "xLexer.lxx"
-{
-  accept();
-  return TOKEN_OBRACE;
-}
-	YY_BREAK
-case 6:
-YY_RULE_SETUP
-#line 446 "xLexer.lxx"
-{
-  accept();
-  return TOKEN_CBRACE;
-}
-	YY_BREAK
-case 7:
-YY_RULE_SETUP
-#line 451 "xLexer.lxx"
-{
-  accept();
-  return TOKEN_OBRACKET;
-}
-	YY_BREAK
-case 8:
-YY_RULE_SETUP
-#line 456 "xLexer.lxx"
-{
-  accept();
-  return TOKEN_CBRACKET;
-}
-	YY_BREAK
-case 9:
-YY_RULE_SETUP
-#line 461 "xLexer.lxx"
-{
-  accept();
-  return TOKEN_DOT;
-}
-	YY_BREAK
-case 10:
-YY_RULE_SETUP
-#line 466 "xLexer.lxx"
-{
-  accept();
-  return TOKEN_COMMA;
-}
-	YY_BREAK
-case 11:
-YY_RULE_SETUP
-#line 471 "xLexer.lxx"
-{
-  accept();
-  return TOKEN_SEMICOLON;
-}
-	YY_BREAK
-case 12:
-YY_RULE_SETUP
-#line 476 "xLexer.lxx"
-{
-  accept();
-  return TOKEN_ARRAY;
-}
-	YY_BREAK
-case 13:
-YY_RULE_SETUP
-#line 481 "xLexer.lxx"
-{
-  accept();
-  return TOKEN_UCHAR;
-}
-	YY_BREAK
-case 14:
-YY_RULE_SETUP
-#line 486 "xLexer.lxx"
-{
-  accept();
-  return TOKEN_CHAR;
-}
-	YY_BREAK
-case 15:
-YY_RULE_SETUP
-#line 491 "xLexer.lxx"
-{
-  accept();
-  return TOKEN_CSTRING;
-}
-	YY_BREAK
-case 16:
-YY_RULE_SETUP
-#line 496 "xLexer.lxx"
-{
-  accept();
-  return TOKEN_DOUBLE;
-}
-	YY_BREAK
-case 17:
-YY_RULE_SETUP
-#line 501 "xLexer.lxx"
-{
-  accept();
-  return TOKEN_DWORD;
-}
-	YY_BREAK
-case 18:
-YY_RULE_SETUP
-#line 506 "xLexer.lxx"
-{
-  accept();
-  return TOKEN_SDWORD;
-}
-	YY_BREAK
-case 19:
-YY_RULE_SETUP
-#line 511 "xLexer.lxx"
-{
-  accept();
-  return TOKEN_FLOAT;
-}
-	YY_BREAK
-case 20:
-YY_RULE_SETUP
-#line 516 "xLexer.lxx"
-{
-  accept();
-  return TOKEN_LPSTR;
-}
-	YY_BREAK
-case 21:
-YY_RULE_SETUP
-#line 521 "xLexer.lxx"
-{
-  accept();
-  return TOKEN_TEMPLATE;
-}
-	YY_BREAK
-case 22:
-YY_RULE_SETUP
-#line 526 "xLexer.lxx"
-{
-  accept();
-  return TOKEN_UCHAR;
-}
-	YY_BREAK
-case 23:
-YY_RULE_SETUP
-#line 531 "xLexer.lxx"
-{
-  accept();
-  return TOKEN_UNICODE;
-}
-	YY_BREAK
-case 24:
-YY_RULE_SETUP
-#line 536 "xLexer.lxx"
-{
-  accept();
-  return TOKEN_SWORD;
-}
-	YY_BREAK
-case 25:
-YY_RULE_SETUP
-#line 541 "xLexer.lxx"
-{
-  accept();
-  return TOKEN_WORD;
-}
-	YY_BREAK
-case 26:
-YY_RULE_SETUP
-#line 546 "xLexer.lxx"
-{ 
-  // A signed or unsigned integer number.
-  accept();
-  xyylval.u.number = atol(xyytext); 
-  xyylval.str = trim_right(xyytext);
-
-  return TOKEN_INTEGER;
-}
-	YY_BREAK
-case 27:
-YY_RULE_SETUP
-#line 555 "xLexer.lxx"
-{ 
-  // An integer as part of a semicolon- or comma-delimited list.
-  accept();
-  xyylval.int_list = scan_int_list(xyytext);
-
-  return TOKEN_INTEGER_LIST;
-}
-	YY_BREAK
-case 28:
-YY_RULE_SETUP
-#line 563 "xLexer.lxx"
-{ 
-  // This rule is used to match an integer list that is followed by a
-  // floating-point number.  It's designed to prevent "0;0.5" from
-  // being interpreted as "0;0" followed by ".5".
-  accept();
-  xyylval.int_list = scan_int_list(xyytext);
-
-  return TOKEN_INTEGER_LIST;
-}
-	YY_BREAK
-case 29:
-YY_RULE_SETUP
-#line 573 "xLexer.lxx"
-{ 
-  // A floating-point number as part of a semicolon- or comma-delimited list.
-  accept(); 
-  xyylval.double_list = scan_double_list(xyytext);
-
-  return TOKEN_REALNUM_LIST;
-}
-	YY_BREAK
-case 30:
-YY_RULE_SETUP
-#line 581 "xLexer.lxx"
-{
-  // Quoted string.
-  accept();
-  xyylval.str = scan_quoted_string('"');
-  return TOKEN_STRING;
-}
-	YY_BREAK
-case 31:
-YY_RULE_SETUP
-#line 588 "xLexer.lxx"
-{
-  // Long GUID string.
-  accept();
-  xyylval.str = scan_guid_string();
-
-  if (!xyylval.guid.parse_string(xyylval.str)) {
-    xyyerror("Malformed GUID.");
-  }
-
-  return TOKEN_GUID;
-}
-	YY_BREAK
-case 32:
-YY_RULE_SETUP
-#line 600 "xLexer.lxx"
-{ 
-  // Identifier.
-  accept();
-  xyylval.str = xyytext;
-  return TOKEN_NAME;
-}
-	YY_BREAK
-case 33:
-YY_RULE_SETUP
-#line 607 "xLexer.lxx"
-{ 
-  // Identifier with leading digit.
-  accept();
-  xyylval.str = xyytext;
-  return TOKEN_NAME;
-}
-	YY_BREAK
-case 34:
-YY_RULE_SETUP
-#line 614 "xLexer.lxx"
-{
-  // Any other character is invalid.
-  accept();
-  xyyerror("Invalid character '" + string(xyytext) + "'.");
-}
-	YY_BREAK
-case 35:
-YY_RULE_SETUP
-#line 619 "xLexer.lxx"
-ECHO;
-	YY_BREAK
-#line 1661 "lex.yy.c"
-			case YY_STATE_EOF(INITIAL):
-				yyterminate();
-
-	case YY_END_OF_BUFFER:
-		{
-		/* Amount of text matched not including the EOB char. */
-		int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
-
-		/* Undo the effects of YY_DO_BEFORE_ACTION. */
-		*yy_cp = (yy_hold_char);
-		YY_RESTORE_YY_MORE_OFFSET
-
-		if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
-			{
-			/* We're scanning a new file or input source.  It's
-			 * possible that this happened because the user
-			 * just pointed xyyin at a new source and called
-			 * xyylex().  If so, then we have to assure
-			 * consistency between YY_CURRENT_BUFFER and our
-			 * globals.  Here is the right place to do so, because
-			 * this is the first action (other than possibly a
-			 * back-up) that will match for the new input source.
-			 */
-			(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
-			YY_CURRENT_BUFFER_LVALUE->yy_input_file = xyyin;
-			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
-			}
-
-		/* Note that here we test for yy_c_buf_p "<=" to the position
-		 * of the first EOB in the buffer, since yy_c_buf_p will
-		 * already have been incremented past the NUL character
-		 * (since all states make transitions on EOB to the
-		 * end-of-buffer state).  Contrast this with the test
-		 * in input().
-		 */
-		if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
-			{ /* This was really a NUL. */
-			yy_state_type yy_next_state;
-
-			(yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
-
-			yy_current_state = yy_get_previous_state(  );
-
-			/* Okay, we're now positioned to make the NUL
-			 * transition.  We couldn't have
-			 * yy_get_previous_state() go ahead and do it
-			 * for us because it doesn't know how to deal
-			 * with the possibility of jamming (and we don't
-			 * want to build jamming into it because then it
-			 * will run more slowly).
-			 */
-
-			yy_next_state = yy_try_NUL_trans( yy_current_state );
-
-			yy_bp = (yytext_ptr) + YY_MORE_ADJ;
-
-			if ( yy_next_state )
-				{
-				/* Consume the NUL. */
-				yy_cp = ++(yy_c_buf_p);
-				yy_current_state = yy_next_state;
-				goto yy_match;
-				}
-
-			else
-				{
-				yy_cp = (yy_c_buf_p);
-				goto yy_find_action;
-				}
-			}
-
-		else switch ( yy_get_next_buffer(  ) )
-			{
-			case EOB_ACT_END_OF_FILE:
-				{
-				(yy_did_buffer_switch_on_eof) = 0;
-
-				if ( xyywrap( ) )
-					{
-					/* Note: because we've taken care in
-					 * yy_get_next_buffer() to have set up
-					 * xyytext, we can now set up
-					 * yy_c_buf_p so that if some total
-					 * hoser (like flex itself) wants to
-					 * call the scanner after we return the
-					 * YY_NULL, it'll still work - another
-					 * YY_NULL will get returned.
-					 */
-					(yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
-
-					yy_act = YY_STATE_EOF(YY_START);
-					goto do_action;
-					}
-
-				else
-					{
-					if ( ! (yy_did_buffer_switch_on_eof) )
-						YY_NEW_FILE;
-					}
-				break;
-				}
-
-			case EOB_ACT_CONTINUE_SCAN:
-				(yy_c_buf_p) =
-					(yytext_ptr) + yy_amount_of_matched_text;
-
-				yy_current_state = yy_get_previous_state(  );
-
-				yy_cp = (yy_c_buf_p);
-				yy_bp = (yytext_ptr) + YY_MORE_ADJ;
-				goto yy_match;
-
-			case EOB_ACT_LAST_MATCH:
-				(yy_c_buf_p) =
-				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
-
-				yy_current_state = yy_get_previous_state(  );
-
-				yy_cp = (yy_c_buf_p);
-				yy_bp = (yytext_ptr) + YY_MORE_ADJ;
-				goto yy_find_action;
-			}
-		break;
-		}
-
-	default:
-		YY_FATAL_ERROR(
-			"fatal flex scanner internal error--no action found" );
-	} /* end of action switch */
-		} /* end of scanning one token */
-} /* end of xyylex */
-
-/* yy_get_next_buffer - try to read in a new buffer
- *
- * Returns a code representing an action:
- *	EOB_ACT_LAST_MATCH -
- *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position
- *	EOB_ACT_END_OF_FILE - end of file
- */
-static int yy_get_next_buffer (void)
-{
-    	register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
-	register char *source = (yytext_ptr);
-	register int number_to_move, i;
-	int ret_val;
-
-	if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
-		YY_FATAL_ERROR(
-		"fatal flex scanner internal error--end of buffer missed" );
-
-	if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
-		{ /* Don't try to fill the buffer, so this is an EOF. */
-		if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
-			{
-			/* We matched a single character, the EOB, so
-			 * treat this as a final EOF.
-			 */
-			return EOB_ACT_END_OF_FILE;
-			}
-
-		else
-			{
-			/* We matched some text prior to the EOB, first
-			 * process it.
-			 */
-			return EOB_ACT_LAST_MATCH;
-			}
-		}
-
-	/* Try to read more data. */
-
-	/* First move last chars to start of buffer. */
-	number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
-
-	for ( i = 0; i < number_to_move; ++i )
-		*(dest++) = *(source++);
-
-	if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
-		/* don't do the read, it's not guaranteed to return an EOF,
-		 * just force an EOF
-		 */
-		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
-
-	else
-		{
-			int num_to_read =
-			YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
-
-		while ( num_to_read <= 0 )
-			{ /* Not enough room in the buffer - grow it. */
-
-			YY_FATAL_ERROR(
-"input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
-
-			}
-
-		if ( num_to_read > YY_READ_BUF_SIZE )
-			num_to_read = YY_READ_BUF_SIZE;
-
-		/* Read in more data. */
-		YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
-			(yy_n_chars), (size_t) num_to_read );
-
-		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
-		}
-
-	if ( (yy_n_chars) == 0 )
-		{
-		if ( number_to_move == YY_MORE_ADJ )
-			{
-			ret_val = EOB_ACT_END_OF_FILE;
-			xyyrestart(xyyin  );
-			}
-
-		else
-			{
-			ret_val = EOB_ACT_LAST_MATCH;
-			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
-				YY_BUFFER_EOF_PENDING;
-			}
-		}
-
-	else
-		ret_val = EOB_ACT_CONTINUE_SCAN;
-
-	if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
-		/* Extend the array by 50%, plus the number we really need. */
-		yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
-		YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) xyyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size  );
-		if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
-			YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
-	}
-
-	(yy_n_chars) += number_to_move;
-	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
-	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
-
-	(yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
-
-	return ret_val;
-}
-
-/* yy_get_previous_state - get the state just before the EOB char was reached */
-
-    static yy_state_type yy_get_previous_state (void)
-{
-	register yy_state_type yy_current_state;
-	register char *yy_cp;
-    
-	yy_current_state = (yy_start);
-
-	(yy_state_ptr) = (yy_state_buf);
-	*(yy_state_ptr)++ = yy_current_state;
-
-	for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
-		{
-		register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
-		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
-			{
-			yy_current_state = (int) yy_def[yy_current_state];
-			if ( yy_current_state >= 141 )
-				yy_c = yy_meta[(unsigned int) yy_c];
-			}
-		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-		*(yy_state_ptr)++ = yy_current_state;
-		}
-
-	return yy_current_state;
-}
-
-/* yy_try_NUL_trans - try to make a transition on the NUL character
- *
- * synopsis
- *	next_state = yy_try_NUL_trans( current_state );
- */
-    static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
-{
-	register int yy_is_jam;
-    
-	register YY_CHAR yy_c = 1;
-	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
-		{
-		yy_current_state = (int) yy_def[yy_current_state];
-		if ( yy_current_state >= 141 )
-			yy_c = yy_meta[(unsigned int) yy_c];
-		}
-	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-	yy_is_jam = (yy_current_state == 140);
-	if ( ! yy_is_jam )
-		*(yy_state_ptr)++ = yy_current_state;
-
-	return yy_is_jam ? 0 : yy_current_state;
-}
-
-    static void yyunput (int c, register char * yy_bp )
-{
-	register char *yy_cp;
-    
-    yy_cp = (yy_c_buf_p);
-
-	/* undo effects of setting up xyytext */
-	*yy_cp = (yy_hold_char);
-
-	if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
-		{ /* need to shift things up to make room */
-		/* +2 for EOB chars. */
-		register int number_to_move = (yy_n_chars) + 2;
-		register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
-					YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
-		register char *source =
-				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
-
-		while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
-			*--dest = *--source;
-
-		yy_cp += (int) (dest - source);
-		yy_bp += (int) (dest - source);
-		YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
-			(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
-
-		if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
-			YY_FATAL_ERROR( "flex scanner push-back overflow" );
-		}
-
-	*--yy_cp = (char) c;
-
-	(yytext_ptr) = yy_bp;
-	(yy_hold_char) = *yy_cp;
-	(yy_c_buf_p) = yy_cp;
-}
-
-#ifndef YY_NO_INPUT
-#ifdef __cplusplus
-    static int yyinput (void)
-#else
-    static int input  (void)
-#endif
-
-{
-	int c;
-    
-	*(yy_c_buf_p) = (yy_hold_char);
-
-	if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
-		{
-		/* yy_c_buf_p now points to the character we want to return.
-		 * If this occurs *before* the EOB characters, then it's a
-		 * valid NUL; if not, then we've hit the end of the buffer.
-		 */
-		if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
-			/* This was really a NUL. */
-			*(yy_c_buf_p) = '\0';
-
-		else
-			{ /* need more input */
-			int offset = (yy_c_buf_p) - (yytext_ptr);
-			++(yy_c_buf_p);
-
-			switch ( yy_get_next_buffer(  ) )
-				{
-				case EOB_ACT_LAST_MATCH:
-					/* This happens because yy_g_n_b()
-					 * sees that we've accumulated a
-					 * token and flags that we need to
-					 * try matching the token before
-					 * proceeding.  But for input(),
-					 * there's no matching to consider.
-					 * So convert the EOB_ACT_LAST_MATCH
-					 * to EOB_ACT_END_OF_FILE.
-					 */
-
-					/* Reset buffer status. */
-					xyyrestart(xyyin );
-
-					/*FALLTHROUGH*/
-
-				case EOB_ACT_END_OF_FILE:
-					{
-					if ( xyywrap( ) )
-						return EOF;
-
-					if ( ! (yy_did_buffer_switch_on_eof) )
-						YY_NEW_FILE;
-#ifdef __cplusplus
-					return yyinput();
-#else
-					return input();
-#endif
-					}
-
-				case EOB_ACT_CONTINUE_SCAN:
-					(yy_c_buf_p) = (yytext_ptr) + offset;
-					break;
-				}
-			}
-		}
-
-	c = *(unsigned char *) (yy_c_buf_p);	/* cast for 8-bit char's */
-	*(yy_c_buf_p) = '\0';	/* preserve xyytext */
-	(yy_hold_char) = *++(yy_c_buf_p);
-
-	return c;
-}
-#endif	/* ifndef YY_NO_INPUT */
-
-/** Immediately switch to a different input stream.
- * @param input_file A readable stream.
- * 
- * @note This function does not reset the start condition to @c INITIAL .
- */
-    void xyyrestart  (FILE * input_file )
-{
-    
-	if ( ! YY_CURRENT_BUFFER ){
-        xyyensure_buffer_stack ();
-		YY_CURRENT_BUFFER_LVALUE =
-            xyy_create_buffer(xyyin,YY_BUF_SIZE );
-	}
-
-	xyy_init_buffer(YY_CURRENT_BUFFER,input_file );
-	xyy_load_buffer_state( );
-}
-
-/** Switch to a different input buffer.
- * @param new_buffer The new input buffer.
- * 
- */
-    void xyy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
-{
-    
-	/* TODO. We should be able to replace this entire function body
-	 * with
-	 *		xyypop_buffer_state();
-	 *		xyypush_buffer_state(new_buffer);
-     */
-	xyyensure_buffer_stack ();
-	if ( YY_CURRENT_BUFFER == new_buffer )
-		return;
-
-	if ( YY_CURRENT_BUFFER )
-		{
-		/* Flush out information for old buffer. */
-		*(yy_c_buf_p) = (yy_hold_char);
-		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
-		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
-		}
-
-	YY_CURRENT_BUFFER_LVALUE = new_buffer;
-	xyy_load_buffer_state( );
-
-	/* We don't actually know whether we did this switch during
-	 * EOF (xyywrap()) processing, but the only time this flag
-	 * is looked at is after xyywrap() is called, so it's safe
-	 * to go ahead and always set it.
-	 */
-	(yy_did_buffer_switch_on_eof) = 1;
-}
-
-static void xyy_load_buffer_state  (void)
-{
-    	(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
-	(yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
-	xyyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
-	(yy_hold_char) = *(yy_c_buf_p);
-}
-
-/** Allocate and initialize an input buffer state.
- * @param file A readable stream.
- * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
- * 
- * @return the allocated buffer state.
- */
-    YY_BUFFER_STATE xyy_create_buffer  (FILE * file, int  size )
-{
-	YY_BUFFER_STATE b;
-    
-	b = (YY_BUFFER_STATE) xyyalloc(sizeof( struct yy_buffer_state )  );
-	if ( ! b )
-		YY_FATAL_ERROR( "out of dynamic memory in xyy_create_buffer()" );
-
-	b->yy_buf_size = size;
-
-	/* yy_ch_buf has to be 2 characters longer than the size given because
-	 * we need to put in 2 end-of-buffer characters.
-	 */
-	b->yy_ch_buf = (char *) xyyalloc(b->yy_buf_size + 2  );
-	if ( ! b->yy_ch_buf )
-		YY_FATAL_ERROR( "out of dynamic memory in xyy_create_buffer()" );
-
-	b->yy_is_our_buffer = 1;
-
-	xyy_init_buffer(b,file );
-
-	return b;
-}
-
-/** Destroy the buffer.
- * @param b a buffer created with xyy_create_buffer()
- * 
- */
-    void xyy_delete_buffer (YY_BUFFER_STATE  b )
-{
-    
-	if ( ! b )
-		return;
-
-	if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
-		YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
-
-	if ( b->yy_is_our_buffer )
-		xyyfree((void *) b->yy_ch_buf  );
-
-	xyyfree((void *) b  );
-}
-
-#ifndef __cplusplus
-extern int isatty (int );
-#endif /* __cplusplus */
-    
-/* Initializes or reinitializes a buffer.
- * This function is sometimes called more than once on the same buffer,
- * such as during a xyyrestart() or at EOF.
- */
-    static void xyy_init_buffer  (YY_BUFFER_STATE  b, FILE * file )
-
-{
-	int oerrno = errno;
-    
-	xyy_flush_buffer(b );
-
-	b->yy_input_file = file;
-	b->yy_fill_buffer = 1;
-
-    /* If b is the current buffer, then xyy_init_buffer was _probably_
-     * called from xyyrestart() or through yy_get_next_buffer.
-     * In that case, we don't want to reset the lineno or column.
-     */
-    if (b != YY_CURRENT_BUFFER){
-        b->yy_bs_lineno = 1;
-        b->yy_bs_column = 0;
-    }
-
-        b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
-    
-	errno = oerrno;
-}
-
-/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
- * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
- * 
- */
-    void xyy_flush_buffer (YY_BUFFER_STATE  b )
-{
-    	if ( ! b )
-		return;
-
-	b->yy_n_chars = 0;
-
-	/* We always need two end-of-buffer characters.  The first causes
-	 * a transition to the end-of-buffer state.  The second causes
-	 * a jam in that state.
-	 */
-	b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
-	b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
-
-	b->yy_buf_pos = &b->yy_ch_buf[0];
-
-	b->yy_at_bol = 1;
-	b->yy_buffer_status = YY_BUFFER_NEW;
-
-	if ( b == YY_CURRENT_BUFFER )
-		xyy_load_buffer_state( );
-}
-
-/** Pushes the new state onto the stack. The new state becomes
- *  the current state. This function will allocate the stack
- *  if necessary.
- *  @param new_buffer The new state.
- *  
- */
-void xyypush_buffer_state (YY_BUFFER_STATE new_buffer )
-{
-    	if (new_buffer == NULL)
-		return;
-
-	xyyensure_buffer_stack();
-
-	/* This block is copied from xyy_switch_to_buffer. */
-	if ( YY_CURRENT_BUFFER )
-		{
-		/* Flush out information for old buffer. */
-		*(yy_c_buf_p) = (yy_hold_char);
-		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
-		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
-		}
-
-	/* Only push if top exists. Otherwise, replace top. */
-	if (YY_CURRENT_BUFFER)
-		(yy_buffer_stack_top)++;
-	YY_CURRENT_BUFFER_LVALUE = new_buffer;
-
-	/* copied from xyy_switch_to_buffer. */
-	xyy_load_buffer_state( );
-	(yy_did_buffer_switch_on_eof) = 1;
-}
-
-/** Removes and deletes the top of the stack, if present.
- *  The next element becomes the new top.
- *  
- */
-void xyypop_buffer_state (void)
-{
-    	if (!YY_CURRENT_BUFFER)
-		return;
-
-	xyy_delete_buffer(YY_CURRENT_BUFFER );
-	YY_CURRENT_BUFFER_LVALUE = NULL;
-	if ((yy_buffer_stack_top) > 0)
-		--(yy_buffer_stack_top);
-
-	if (YY_CURRENT_BUFFER) {
-		xyy_load_buffer_state( );
-		(yy_did_buffer_switch_on_eof) = 1;
-	}
-}
-
-/* Allocates the stack if it does not exist.
- *  Guarantees space for at least one push.
- */
-static void xyyensure_buffer_stack (void)
-{
-	int num_to_alloc;
-    
-	if (!(yy_buffer_stack)) {
-
-		/* First allocation is just for 2 elements, since we don't know if this
-		 * scanner will even need a stack. We use 2 instead of 1 to avoid an
-		 * immediate realloc on the next call.
-         */
-		num_to_alloc = 1;
-		(yy_buffer_stack) = (struct yy_buffer_state**)xyyalloc
-								(num_to_alloc * sizeof(struct yy_buffer_state*)
-								);
-		if ( ! (yy_buffer_stack) )
-			YY_FATAL_ERROR( "out of dynamic memory in xyyensure_buffer_stack()" );
-								  
-		memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
-				
-		(yy_buffer_stack_max) = num_to_alloc;
-		(yy_buffer_stack_top) = 0;
-		return;
-	}
-
-	if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
-
-		/* Increase the buffer to prepare for a possible push. */
-		int grow_size = 8 /* arbitrary grow size */;
-
-		num_to_alloc = (yy_buffer_stack_max) + grow_size;
-		(yy_buffer_stack) = (struct yy_buffer_state**)xyyrealloc
-								((yy_buffer_stack),
-								num_to_alloc * sizeof(struct yy_buffer_state*)
-								);
-		if ( ! (yy_buffer_stack) )
-			YY_FATAL_ERROR( "out of dynamic memory in xyyensure_buffer_stack()" );
-
-		/* zero only the new slots.*/
-		memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
-		(yy_buffer_stack_max) = num_to_alloc;
-	}
-}
-
-/** Setup the input buffer state to scan directly from a user-specified character buffer.
- * @param base the character buffer
- * @param size the size in bytes of the character buffer
- * 
- * @return the newly allocated buffer state object. 
- */
-YY_BUFFER_STATE xyy_scan_buffer  (char * base, yy_size_t  size )
-{
-	YY_BUFFER_STATE b;
-    
-	if ( size < 2 ||
-	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
-	     base[size-1] != YY_END_OF_BUFFER_CHAR )
-		/* They forgot to leave room for the EOB's. */
-		return 0;
-
-	b = (YY_BUFFER_STATE) xyyalloc(sizeof( struct yy_buffer_state )  );
-	if ( ! b )
-		YY_FATAL_ERROR( "out of dynamic memory in xyy_scan_buffer()" );
-
-	b->yy_buf_size = size - 2;	/* "- 2" to take care of EOB's */
-	b->yy_buf_pos = b->yy_ch_buf = base;
-	b->yy_is_our_buffer = 0;
-	b->yy_input_file = 0;
-	b->yy_n_chars = b->yy_buf_size;
-	b->yy_is_interactive = 0;
-	b->yy_at_bol = 1;
-	b->yy_fill_buffer = 0;
-	b->yy_buffer_status = YY_BUFFER_NEW;
-
-	xyy_switch_to_buffer(b  );
-
-	return b;
-}
-
-/** Setup the input buffer state to scan a string. The next call to xyylex() will
- * scan from a @e copy of @a str.
- * @param yystr a NUL-terminated string to scan
- * 
- * @return the newly allocated buffer state object.
- * @note If you want to scan bytes that may contain NUL values, then use
- *       xyy_scan_bytes() instead.
- */
-YY_BUFFER_STATE xyy_scan_string (yyconst char * yystr )
-{
-    
-	return xyy_scan_bytes(yystr,strlen(yystr) );
-}
-
-/** Setup the input buffer state to scan the given bytes. The next call to xyylex() will
- * scan from a @e copy of @a bytes.
- * @param bytes the byte buffer to scan
- * @param len the number of bytes in the buffer pointed to by @a bytes.
- * 
- * @return the newly allocated buffer state object.
- */
-YY_BUFFER_STATE xyy_scan_bytes  (yyconst char * yybytes, int  _yybytes_len )
-{
-	YY_BUFFER_STATE b;
-	char *buf;
-	yy_size_t n;
-	int i;
-    
-	/* Get memory for full buffer, including space for trailing EOB's. */
-	n = _yybytes_len + 2;
-	buf = (char *) xyyalloc(n  );
-	if ( ! buf )
-		YY_FATAL_ERROR( "out of dynamic memory in xyy_scan_bytes()" );
-
-	for ( i = 0; i < _yybytes_len; ++i )
-		buf[i] = yybytes[i];
-
-	buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
-
-	b = xyy_scan_buffer(buf,n );
-	if ( ! b )
-		YY_FATAL_ERROR( "bad buffer in xyy_scan_bytes()" );
-
-	/* It's okay to grow etc. this buffer, and we should throw it
-	 * away when we're done.
-	 */
-	b->yy_is_our_buffer = 1;
-
-	return b;
-}
-
-#ifndef YY_EXIT_FAILURE
-#define YY_EXIT_FAILURE 2
-#endif
-
-static void yy_fatal_error (yyconst char* msg )
-{
-    	(void) fprintf( stderr, "%s\n", msg );
-	exit( YY_EXIT_FAILURE );
-}
-
-/* Redefine yyless() so it works in section 3 code. */
-
-#undef yyless
-#define yyless(n) \
-	do \
-		{ \
-		/* Undo effects of setting up xyytext. */ \
-        int yyless_macro_arg = (n); \
-        YY_LESS_LINENO(yyless_macro_arg);\
-		xyytext[xyyleng] = (yy_hold_char); \
-		(yy_c_buf_p) = xyytext + yyless_macro_arg; \
-		(yy_hold_char) = *(yy_c_buf_p); \
-		*(yy_c_buf_p) = '\0'; \
-		xyyleng = yyless_macro_arg; \
-		} \
-	while ( 0 )
-
-/* Accessor  methods (get/set functions) to struct members. */
-
-/** Get the current line number.
- * 
- */
-int xyyget_lineno  (void)
-{
-        
-    return xyylineno;
-}
-
-/** Get the input stream.
- * 
- */
-FILE *xyyget_in  (void)
-{
-        return xyyin;
-}
-
-/** Get the output stream.
- * 
- */
-FILE *xyyget_out  (void)
-{
-        return xyyout;
-}
-
-/** Get the length of the current token.
- * 
- */
-int xyyget_leng  (void)
-{
-        return xyyleng;
-}
-
-/** Get the current token.
- * 
- */
-
-char *xyyget_text  (void)
-{
-        return xyytext;
-}
-
-/** Set the current line number.
- * @param line_number
- * 
- */
-void xyyset_lineno (int  line_number )
-{
-    
-    xyylineno = line_number;
-}
-
-/** Set the input stream. This does not discard the current
- * input buffer.
- * @param in_str A readable stream.
- * 
- * @see xyy_switch_to_buffer
- */
-void xyyset_in (FILE *  in_str )
-{
-        xyyin = in_str ;
-}
-
-void xyyset_out (FILE *  out_str )
-{
-        xyyout = out_str ;
-}
-
-int xyyget_debug  (void)
-{
-        return xyy_flex_debug;
-}
-
-void xyyset_debug (int  bdebug )
-{
-        xyy_flex_debug = bdebug ;
-}
-
-static int yy_init_globals (void)
-{
-        /* Initialization is the same as for the non-reentrant scanner.
-     * This function is called from xyylex_destroy(), so don't allocate here.
-     */
-
-    (yy_buffer_stack) = 0;
-    (yy_buffer_stack_top) = 0;
-    (yy_buffer_stack_max) = 0;
-    (yy_c_buf_p) = (char *) 0;
-    (yy_init) = 0;
-    (yy_start) = 0;
-
-    (yy_state_buf) = 0;
-    (yy_state_ptr) = 0;
-    (yy_full_match) = 0;
-    (yy_lp) = 0;
-
-/* Defined in main.c */
-#ifdef YY_STDINIT
-    xyyin = stdin;
-    xyyout = stdout;
-#else
-    xyyin = (FILE *) 0;
-    xyyout = (FILE *) 0;
-#endif
-
-    /* For future reference: Set errno on error, since we are called by
-     * xyylex_init()
-     */
-    return 0;
-}
-
-/* xyylex_destroy is for both reentrant and non-reentrant scanners. */
-int xyylex_destroy  (void)
-{
-    
-    /* Pop the buffer stack, destroying each element. */
-	while(YY_CURRENT_BUFFER){
-		xyy_delete_buffer(YY_CURRENT_BUFFER  );
-		YY_CURRENT_BUFFER_LVALUE = NULL;
-		xyypop_buffer_state();
-	}
-
-	/* Destroy the stack itself. */
-	xyyfree((yy_buffer_stack) );
-	(yy_buffer_stack) = NULL;
-
-    xyyfree ( (yy_state_buf) );
-    (yy_state_buf)  = NULL;
-
-    /* Reset the globals. This is important in a non-reentrant scanner so the next time
-     * xyylex() is called, initialization will occur. */
-    yy_init_globals( );
-
-    return 0;
-}
-
-/*
- * Internal utility routines.
- */
-
-#ifndef yytext_ptr
-static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
-{
-	register int i;
-	for ( i = 0; i < n; ++i )
-		s1[i] = s2[i];
-}
-#endif
-
-#ifdef YY_NEED_STRLEN
-static int yy_flex_strlen (yyconst char * s )
-{
-	register int n;
-	for ( n = 0; s[n]; ++n )
-		;
-
-	return n;
-}
-#endif
-
-void *xyyalloc (yy_size_t  size )
-{
-	return (void *) malloc( size );
-}
-
-void *xyyrealloc  (void * ptr, yy_size_t  size )
-{
-	/* The cast to (char *) in the following accommodates both
-	 * implementations that use char* generic pointers, and those
-	 * that use void* generic pointers.  It works with the latter
-	 * because both ANSI C and C++ allow castless assignment from
-	 * any pointer type to void*, and deal with argument conversions
-	 * as though doing an assignment.
-	 */
-	return (void *) realloc( (char *) ptr, size );
-}
-
-void xyyfree (void * ptr )
-{
-	free( (char *) ptr );	/* see xyyrealloc() for (char *) cast */
-}
-
-#define YYTABLES_NAME "yytables"
-
-#line 619 "xLexer.lxx"
+#line 2 "lex.yy.c"
+
+#line 4 "lex.yy.c"
+
+#define  YY_INT_ALIGNED short int
+
+/* A lexical scanner generated by flex */
+
+#define yy_create_buffer xyy_create_buffer
+#define yy_delete_buffer xyy_delete_buffer
+#define yy_flex_debug xyy_flex_debug
+#define yy_init_buffer xyy_init_buffer
+#define yy_flush_buffer xyy_flush_buffer
+#define yy_load_buffer_state xyy_load_buffer_state
+#define yy_switch_to_buffer xyy_switch_to_buffer
+#define yyin xyyin
+#define yyleng xyyleng
+#define yylex xyylex
+#define yylineno xyylineno
+#define yyout xyyout
+#define yyrestart xyyrestart
+#define yytext xyytext
+#define yywrap xyywrap
+#define yyalloc xyyalloc
+#define yyrealloc xyyrealloc
+#define yyfree xyyfree
+
+#define FLEX_SCANNER
+#define YY_FLEX_MAJOR_VERSION 2
+#define YY_FLEX_MINOR_VERSION 5
+#define YY_FLEX_SUBMINOR_VERSION 35
+#if YY_FLEX_SUBMINOR_VERSION > 0
+#define FLEX_BETA
+#endif
+
+/* First, we deal with  platform-specific or compiler-specific issues. */
+
+/* begin standard C headers. */
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <stdlib.h>
+
+/* end standard C headers. */
+
+/* flex integer type definitions */
+
+#ifndef FLEXINT_H
+#define FLEXINT_H
+
+/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
+
+#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+
+/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
+ * if you want the limit (max/min) macros for int types. 
+ */
+#ifndef __STDC_LIMIT_MACROS
+#define __STDC_LIMIT_MACROS 1
+#endif
+
+#include <inttypes.h>
+typedef int8_t flex_int8_t;
+typedef uint8_t flex_uint8_t;
+typedef int16_t flex_int16_t;
+typedef uint16_t flex_uint16_t;
+typedef int32_t flex_int32_t;
+typedef uint32_t flex_uint32_t;
+#else
+typedef signed char flex_int8_t;
+typedef short int flex_int16_t;
+typedef int flex_int32_t;
+typedef unsigned char flex_uint8_t; 
+typedef unsigned short int flex_uint16_t;
+typedef unsigned int flex_uint32_t;
+#endif /* ! C99 */
+
+/* Limits of integral types. */
+#ifndef INT8_MIN
+#define INT8_MIN               (-128)
+#endif
+#ifndef INT16_MIN
+#define INT16_MIN              (-32767-1)
+#endif
+#ifndef INT32_MIN
+#define INT32_MIN              (-2147483647-1)
+#endif
+#ifndef INT8_MAX
+#define INT8_MAX               (127)
+#endif
+#ifndef INT16_MAX
+#define INT16_MAX              (32767)
+#endif
+#ifndef INT32_MAX
+#define INT32_MAX              (2147483647)
+#endif
+#ifndef UINT8_MAX
+#define UINT8_MAX              (255U)
+#endif
+#ifndef UINT16_MAX
+#define UINT16_MAX             (65535U)
+#endif
+#ifndef UINT32_MAX
+#define UINT32_MAX             (4294967295U)
+#endif
+
+#endif /* ! FLEXINT_H */
+
+#ifdef __cplusplus
+
+/* The "const" storage-class-modifier is valid. */
+#define YY_USE_CONST
+
+#else	/* ! __cplusplus */
+
+/* C99 requires __STDC__ to be defined as 1. */
+#if defined (__STDC__)
+
+#define YY_USE_CONST
+
+#endif	/* defined (__STDC__) */
+#endif	/* ! __cplusplus */
+
+#ifdef YY_USE_CONST
+#define yyconst const
+#else
+#define yyconst
+#endif
+
+/* Returned upon end-of-file. */
+#define YY_NULL 0
+
+/* Promotes a possibly negative, possibly signed char to an unsigned
+ * integer for use as an array index.  If the signed char is negative,
+ * we want to instead treat it as an 8-bit unsigned char, hence the
+ * double cast.
+ */
+#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
+
+/* Enter a start condition.  This macro really ought to take a parameter,
+ * but we do it the disgusting crufty way forced on us by the ()-less
+ * definition of BEGIN.
+ */
+#define BEGIN (yy_start) = 1 + 2 *
+
+/* Translate the current start state into a value that can be later handed
+ * to BEGIN to return to the state.  The YYSTATE alias is for lex
+ * compatibility.
+ */
+#define YY_START (((yy_start) - 1) / 2)
+#define YYSTATE YY_START
+
+/* Action number for EOF rule of a given start state. */
+#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
+
+/* Special action meaning "start processing a new file". */
+#define YY_NEW_FILE xyyrestart(xyyin  )
+
+#define YY_END_OF_BUFFER_CHAR 0
+
+/* Size of default input buffer. */
+#ifndef YY_BUF_SIZE
+#define YY_BUF_SIZE 16384
+#endif
+
+/* The state buf must be large enough to hold one state per character in the main buffer.
+ */
+#define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
+
+#ifndef YY_TYPEDEF_YY_BUFFER_STATE
+#define YY_TYPEDEF_YY_BUFFER_STATE
+typedef struct yy_buffer_state *YY_BUFFER_STATE;
+#endif
+
+extern int xyyleng;
+
+extern FILE *xyyin, *xyyout;
+
+#define EOB_ACT_CONTINUE_SCAN 0
+#define EOB_ACT_END_OF_FILE 1
+#define EOB_ACT_LAST_MATCH 2
+
+    #define YY_LESS_LINENO(n)
+    
+/* Return all but the first "n" matched characters back to the input stream. */
+#define yyless(n) \
+	do \
+		{ \
+		/* Undo effects of setting up xyytext. */ \
+        int yyless_macro_arg = (n); \
+        YY_LESS_LINENO(yyless_macro_arg);\
+		*yy_cp = (yy_hold_char); \
+		YY_RESTORE_YY_MORE_OFFSET \
+		(yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
+		YY_DO_BEFORE_ACTION; /* set up xyytext again */ \
+		} \
+	while ( 0 )
+
+#define unput(c) yyunput( c, (yytext_ptr)  )
+
+#ifndef YY_TYPEDEF_YY_SIZE_T
+#define YY_TYPEDEF_YY_SIZE_T
+typedef size_t yy_size_t;
+#endif
+
+#ifndef YY_STRUCT_YY_BUFFER_STATE
+#define YY_STRUCT_YY_BUFFER_STATE
+struct yy_buffer_state
+	{
+	FILE *yy_input_file;
+
+	char *yy_ch_buf;		/* input buffer */
+	char *yy_buf_pos;		/* current position in input buffer */
+
+	/* Size of input buffer in bytes, not including room for EOB
+	 * characters.
+	 */
+	yy_size_t yy_buf_size;
+
+	/* Number of characters read into yy_ch_buf, not including EOB
+	 * characters.
+	 */
+	int yy_n_chars;
+
+	/* Whether we "own" the buffer - i.e., we know we created it,
+	 * and can realloc() it to grow it, and should free() it to
+	 * delete it.
+	 */
+	int yy_is_our_buffer;
+
+	/* Whether this is an "interactive" input source; if so, and
+	 * if we're using stdio for input, then we want to use getc()
+	 * instead of fread(), to make sure we stop fetching input after
+	 * each newline.
+	 */
+	int yy_is_interactive;
+
+	/* Whether we're considered to be at the beginning of a line.
+	 * If so, '^' rules will be active on the next match, otherwise
+	 * not.
+	 */
+	int yy_at_bol;
+
+    int yy_bs_lineno; /**< The line count. */
+    int yy_bs_column; /**< The column count. */
+    
+	/* Whether to try to fill the input buffer when we reach the
+	 * end of it.
+	 */
+	int yy_fill_buffer;
+
+	int yy_buffer_status;
+
+#define YY_BUFFER_NEW 0
+#define YY_BUFFER_NORMAL 1
+	/* When an EOF's been seen but there's still some text to process
+	 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
+	 * shouldn't try reading from the input source any more.  We might
+	 * still have a bunch of tokens to match, though, because of
+	 * possible backing-up.
+	 *
+	 * When we actually see the EOF, we change the status to "new"
+	 * (via xyyrestart()), so that the user can continue scanning by
+	 * just pointing xyyin at a new input file.
+	 */
+#define YY_BUFFER_EOF_PENDING 2
+
+	};
+#endif /* !YY_STRUCT_YY_BUFFER_STATE */
+
+/* Stack of input buffers. */
+static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
+static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
+static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
+
+/* We provide macros for accessing buffer states in case in the
+ * future we want to put the buffer states in a more general
+ * "scanner state".
+ *
+ * Returns the top of the stack, or NULL.
+ */
+#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
+                          ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
+                          : NULL)
+
+/* Same as previous macro, but useful when we know that the buffer stack is not
+ * NULL or when we need an lvalue. For internal use only.
+ */
+#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
+
+/* yy_hold_char holds the character lost when xyytext is formed. */
+static char yy_hold_char;
+static int yy_n_chars;		/* number of characters read into yy_ch_buf */
+int xyyleng;
+
+/* Points to current character in buffer. */
+static char *yy_c_buf_p = (char *) 0;
+static int yy_init = 0;		/* whether we need to initialize */
+static int yy_start = 0;	/* start state number */
+
+/* Flag which is used to allow xyywrap()'s to do buffer switches
+ * instead of setting up a fresh xyyin.  A bit of a hack ...
+ */
+static int yy_did_buffer_switch_on_eof;
+
+void xyyrestart (FILE *input_file  );
+void xyy_switch_to_buffer (YY_BUFFER_STATE new_buffer  );
+YY_BUFFER_STATE xyy_create_buffer (FILE *file,int size  );
+void xyy_delete_buffer (YY_BUFFER_STATE b  );
+void xyy_flush_buffer (YY_BUFFER_STATE b  );
+void xyypush_buffer_state (YY_BUFFER_STATE new_buffer  );
+void xyypop_buffer_state (void );
+
+static void xyyensure_buffer_stack (void );
+static void xyy_load_buffer_state (void );
+static void xyy_init_buffer (YY_BUFFER_STATE b,FILE *file  );
+
+#define YY_FLUSH_BUFFER xyy_flush_buffer(YY_CURRENT_BUFFER )
+
+YY_BUFFER_STATE xyy_scan_buffer (char *base,yy_size_t size  );
+YY_BUFFER_STATE xyy_scan_string (yyconst char *yy_str  );
+YY_BUFFER_STATE xyy_scan_bytes (yyconst char *bytes,int len  );
+
+void *xyyalloc (yy_size_t  );
+void *xyyrealloc (void *,yy_size_t  );
+void xyyfree (void *  );
+
+#define yy_new_buffer xyy_create_buffer
+
+#define yy_set_interactive(is_interactive) \
+	{ \
+	if ( ! YY_CURRENT_BUFFER ){ \
+        xyyensure_buffer_stack (); \
+		YY_CURRENT_BUFFER_LVALUE =    \
+            xyy_create_buffer(xyyin,YY_BUF_SIZE ); \
+	} \
+	YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
+	}
+
+#define yy_set_bol(at_bol) \
+	{ \
+	if ( ! YY_CURRENT_BUFFER ){\
+        xyyensure_buffer_stack (); \
+		YY_CURRENT_BUFFER_LVALUE =    \
+            xyy_create_buffer(xyyin,YY_BUF_SIZE ); \
+	} \
+	YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
+	}
+
+#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
+
+typedef unsigned char YY_CHAR;
+
+FILE *xyyin = (FILE *) 0, *xyyout = (FILE *) 0;
+
+typedef int yy_state_type;
+
+extern int xyylineno;
+
+int xyylineno = 1;
+
+extern char *xyytext;
+#define yytext_ptr xyytext
+
+static yy_state_type yy_get_previous_state (void );
+static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
+static int yy_get_next_buffer (void );
+static void yy_fatal_error (yyconst char msg[]  );
+
+/* Done after the current pattern has been matched and before the
+ * corresponding action - sets up xyytext.
+ */
+#define YY_DO_BEFORE_ACTION \
+	(yytext_ptr) = yy_bp; \
+	xyyleng = (size_t) (yy_cp - yy_bp); \
+	(yy_hold_char) = *yy_cp; \
+	*yy_cp = '\0'; \
+	(yy_c_buf_p) = yy_cp;
+
+#define YY_NUM_RULES 35
+#define YY_END_OF_BUFFER 36
+/* This struct is not used in this scanner,
+   but its presence is necessary. */
+struct yy_trans_info
+	{
+	flex_int32_t yy_verify;
+	flex_int32_t yy_nxt;
+	};
+static yyconst flex_int16_t yy_acclist[200] =
+    {   0,
+       36,   34,   35,    2,   34,   35,    1,   35,   30,   34,
+       35,    4,   34,   35,   32,   34,   35,   34,   35,   10,
+       34,   35,   32,   34,   35,    9,   34,   35,   34,   35,
+       26,   34,   35,   11,   34,   35,   31,   34,   35,   32,
+       34,   35,   32,   34,   35,   32,   34,   35,   32,   34,
+       35,   32,   34,   35,   32,   34,   35,   32,   34,   35,
+       32,   34,   35,   32,   34,   35,    7,   34,   35,    8,
+       34,   35,    5,   34,   35,    6,   34,   35,    1,    4,
+       32,   26,   32,   33,   32,   33,   32,   26,   32,    3,
+       27,16412,   26,   27,16412,   33,   33,   26,   32,   32,
+
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+       32,   32,   32,   33,   32,   33,   32,   33,   32,   33,
+       32,   32,   29,    3,   27,   33,   33,   33,   33,   32,
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+       32,   32,   32,   32, 8220,   32,   13,   32,   14,   32,
+       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
+       25,   32,   32,   32,   29,   29,   12,   32,   32,   32,
+       17,   32,   19,   32,   32,   32,   24,   32,   32,   22,
+       32,   32,   32,   16,   32,   18,   32,   20,   32,   32,
+       32,   29,   15,   32,   32,   23,   32,   21,   32
+
+    } ;
+
+static yyconst flex_int16_t yy_accept[142] =
+    {   0,
+        1,    1,    1,    2,    4,    7,    9,   12,   15,   18,
+       20,   23,   26,   29,   31,   34,   37,   40,   43,   46,
+       49,   52,   55,   58,   61,   64,   67,   70,   73,   76,
+       79,   80,   81,   82,   82,   83,   85,   87,   88,   90,
+       90,   91,   93,   96,   97,   98,   98,   99,  100,  101,
+      102,  103,  104,  105,  106,  107,  108,  109,  110,  111,
+      112,  113,  115,  117,  119,  121,  122,  123,  124,  124,
+      125,  125,  126,  127,  128,  129,  130,  131,  132,  133,
+      134,  135,  136,  137,  138,  139,  140,  141,  142,  143,
+      144,  145,  145,  145,  145,  145,  145,  146,  147,  149,
+
+      151,  152,  153,  154,  155,  156,  157,  158,  159,  160,
+      161,  163,  164,  165,  166,  167,  169,  170,  171,  173,
+      175,  176,  177,  179,  180,  182,  183,  183,  184,  186,
+      188,  190,  191,  192,  192,  193,  195,  196,  198,  200,
+      200
+    } ;
+
+static yyconst flex_int32_t yy_ec[256] =
+    {   0,
+        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
+        1,    1,    4,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    5,    1,    6,    7,    1,    1,    1,    1,    8,
+        8,    1,    9,   10,   11,   12,   13,   14,   14,   14,
+       14,   14,   14,   14,   14,   14,   14,    1,   15,   16,
+        1,    1,    1,    1,   17,   18,   19,   20,   21,   22,
+       23,   24,   25,    8,    8,   26,   27,   28,   29,   30,
+        8,   31,   32,   33,   34,    8,   35,    8,   36,    8,
+       37,    1,   38,    1,    8,    1,   39,   40,   41,   42,
+
+       43,   44,   45,   46,   47,    8,    8,   48,   49,   50,
+       51,   52,    8,   53,   54,   55,   56,    8,   57,    8,
+       58,    8,   59,    1,   60,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1
+    } ;
+
+static yyconst flex_int32_t yy_meta[61] =
+    {   0,
+        1,    2,    3,    1,    2,    1,    1,    4,    1,    2,
+        4,    4,    1,    4,    2,    1,    4,    4,    4,    4,
+        4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
+        4,    4,    4,    4,    4,    4,    1,    1,    4,    4,
+        4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
+        4,    4,    4,    4,    4,    4,    4,    4,    1,    1
+    } ;
+
+static yyconst flex_int16_t yy_base[151] =
+    {   0,
+        0,    0,  336,  370,  370,    0,  370,    0,    0,   49,
+      370,   53,  320,  290,   64,  370,  370,   31,   32,   48,
+       42,   44,   53,   60,   63,   54,  370,  370,  370,  370,
+        0,    0,    0,  248,  104,    0,   86,  215,  110,  121,
+        0,  135,  146,    0,  116,  157,  171,   54,   56,  100,
+       99,  107,  114,  118,  117,  122,  129,  139,  144,  145,
+      146,    0,    0,  182,  190,  193,  207,  228,  202,    0,
+      201,  239,    0,    0,  212,  220,  167,  176,  174,  194,
+      217,  214,  229,  219,  227,  224,  226,  241,  240,  240,
+      252,  175,  196,  206,  177,  274,  370,  228,    0,    0,
+
+      240,  243,  251,  239,  242,  247,  263,  259,  259,  263,
+        0,  165,  294,  296,  311,    0,  272,  281,    0,    0,
+      295,  295,    0,  302,    0,  300,  319,  300,    0,    0,
+        0,  294,  308,  124,  333,    0,  310,    0,    0,  370,
+      354,  358,  130,  129,  361,  125,   97,  365,   92,   83
+    } ;
+
+static yyconst flex_int16_t yy_def[151] =
+    {   0,
+      140,    1,  140,  140,  140,  141,  140,  142,  143,  140,
+      140,  144,  140,  140,  145,  140,  140,  143,  143,  143,
+      143,  143,  143,  143,  143,  143,  140,  140,  140,  140,
+      141,  142,  143,  140,  140,  146,  147,  143,  144,  140,
+      148,  140,  140,  149,  150,  140,  145,  143,  143,  143,
+      143,  143,  143,  143,  143,  143,  143,  143,  143,  143,
+      143,  146,  146,  147,  147,  143,  143,  140,  140,  148,
+      140,  140,  149,  149,  150,  150,  143,  143,  143,  143,
+      143,  143,  143,  143,  143,  143,  143,  143,  143,  143,
+      143,  140,  140,  140,  140,  140,  140,  143,  143,  143,
+
+      143,  143,  143,  143,  143,  143,  143,  143,  143,  143,
+      143,  143,  143,  140,  140,  143,  143,  143,  143,  143,
+      143,  143,  143,  143,  143,  143,  140,  143,  143,  143,
+      143,  143,  143,  140,  140,  143,  143,  143,  143,    0,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140
+    } ;
+
+static yyconst flex_int16_t yy_nxt[431] =
+    {   0,
+        4,    5,    6,    5,    5,    7,    8,    9,   10,   11,
+       12,   13,   14,   15,   16,   17,   18,   19,   20,   21,
+        9,   22,    9,    9,    9,    9,    9,    9,    9,    9,
+        9,   23,   24,   25,   26,    9,   27,   28,   18,   19,
+       20,   21,    9,   22,    9,    9,    9,    9,    9,    9,
+        9,    9,    9,   23,   24,   25,   26,    9,   29,   30,
+       34,   48,   35,   37,   38,   42,   39,   49,   43,   54,
+       52,   50,   55,   42,   45,   46,   53,   47,   42,   51,
+       58,   59,   61,   48,   77,   56,   74,   57,   78,   49,
+       60,   54,   52,   50,   55,   73,   64,   62,   53,   65,
+
+       63,   51,   58,   59,   61,   42,   77,   56,   43,   57,
+       78,   42,   60,   42,   43,   46,   79,   35,   42,   42,
+       37,   67,   68,   39,   42,   68,   75,   73,   62,   76,
+       68,   80,   36,   33,   40,   68,   42,  135,   79,   42,
+       81,   69,   82,   71,   42,   71,   83,   42,   72,   42,
+       43,   84,   85,   80,   71,   42,   71,   86,   68,   72,
+       42,   68,   81,   69,   82,   87,   68,   88,   83,   89,
+       40,   68,   42,   84,   85,   43,   90,   69,  113,   86,
+       42,   45,   46,   98,   47,   42,   93,   87,   94,   88,
+       96,   89,   64,   62,   68,   65,   99,   68,   90,   69,
+
+       64,   62,   68,   65,  100,   98,   66,   68,   68,  114,
+       95,   68,   95,   91,   72,   96,   68,  115,   99,   94,
+       66,   68,   75,   73,  101,   76,  100,   91,   66,   68,
+       75,   73,   68,   76,  102,   91,   92,   68,   92,   93,
+       42,   94,   68,   42,  103,  104,  101,  105,   42,   91,
+       97,  106,   72,   42,  107,  108,  102,  109,  110,  111,
+       95,   40,  112,  116,  117,  113,  103,  104,  118,  105,
+      119,  120,  121,  106,  122,   68,  107,  108,   68,  109,
+      110,  111,  123,   68,  124,  116,  117,   96,   68,  125,
+      118,  126,  119,  120,  121,   68,  122,   68,   68,  128,
+
+       68,  129,   41,   68,  123,   68,  124,  113,   68,  114,
+       68,  125,   68,  126,  130,   68,  127,  131,  132,  133,
+       68,  128,  136,  129,  114,   68,  137,  134,  138,  134,
+      139,  127,  135,   40,   68,  140,  130,   68,  127,  131,
+      132,  133,   68,  140,  136,  140,  135,   68,  137,  140,
+      138,  140,  139,  127,   31,   31,  140,   31,   32,   32,
+      140,   32,   44,  140,   44,   70,   70,  140,   70,    3,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140
+    } ;
+
+static yyconst flex_int16_t yy_chk[431] =
+    {   0,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+       10,   18,   10,   12,   12,   15,   12,   19,   15,   22,
+       21,   20,   23,   15,   15,   15,   21,   15,   15,   20,
+       24,   25,   26,   18,   48,   23,  150,   23,   49,   19,
+       25,   22,   21,   20,   23,  149,   37,   37,   21,   37,
+
+      147,   20,   24,   25,   26,   35,   48,   23,   35,   23,
+       49,   39,   25,   35,   39,   35,   50,   35,   35,   39,
+       39,   39,   40,   39,   39,   40,   45,   45,  146,   45,
+       40,   51,  144,  143,   40,   40,   42,  134,   50,   42,
+       52,   40,   53,   42,   42,   42,   54,   43,   42,   42,
+       43,   55,   56,   51,   43,   43,   43,   57,   46,   43,
+       43,   46,   52,   40,   53,   58,   46,   59,   54,   60,
+       46,   46,   47,   55,   56,   47,   61,   46,  112,   57,
+       47,   47,   47,   77,   47,   47,   92,   58,   92,   59,
+       95,   60,   64,   64,   66,   64,   78,   66,   61,   46,
+
+       65,   65,   66,   65,   79,   77,   66,   66,   67,   93,
+       69,   67,   69,   66,   71,   69,   67,   94,   78,   94,
+       67,   67,   75,   75,   80,   75,   79,   67,   38,   68,
+       76,   76,   68,   76,   81,   66,   68,   68,   68,   68,
+       72,   68,   68,   72,   82,   83,   80,   84,   72,   67,
+       72,   85,   72,   72,   86,   87,   81,   88,   89,   90,
+       91,   34,   91,   98,  101,   91,   82,   83,  102,   84,
+      103,  104,  105,   85,  106,   96,   86,   87,   96,   88,
+       89,   90,  107,   96,  108,   98,  101,   96,   96,  109,
+      102,  110,  103,  104,  105,  113,  106,  114,  113,  117,
+
+      114,  118,   14,  113,  107,  114,  108,  113,  113,  114,
+      114,  109,  115,  110,  121,  115,  114,  122,  124,  126,
+      115,  117,  128,  118,  115,  115,  132,  127,  133,  127,
+      137,  115,  127,   13,  135,    3,  121,  135,  114,  122,
+      124,  126,  135,    0,  128,    0,  135,  135,  132,    0,
+      133,    0,  137,  115,  141,  141,    0,  141,  142,  142,
+        0,  142,  145,    0,  145,  148,  148,    0,  148,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
+      140,  140,  140,  140,  140,  140,  140,  140,  140,  140
+    } ;
+
+extern int xyy_flex_debug;
+int xyy_flex_debug = 0;
+
+static yy_state_type *yy_state_buf=0, *yy_state_ptr=0;
+static char *yy_full_match;
+static int yy_lp;
+static int yy_looking_for_trail_begin = 0;
+static int yy_full_lp;
+static int *yy_full_state;
+#define YY_TRAILING_MASK 0x2000
+#define YY_TRAILING_HEAD_MASK 0x4000
+#define REJECT \
+{ \
+*yy_cp = (yy_hold_char); /* undo effects of setting up xyytext */ \
+yy_cp = (yy_full_match); /* restore poss. backed-over text */ \
+(yy_lp) = (yy_full_lp); /* restore orig. accepting pos. */ \
+(yy_state_ptr) = (yy_full_state); /* restore orig. state */ \
+yy_current_state = *(yy_state_ptr); /* restore curr. state */ \
+++(yy_lp); \
+goto find_rule; \
+}
+
+#define yymore() yymore_used_but_not_detected
+#define YY_MORE_ADJ 0
+#define YY_RESTORE_YY_MORE_OFFSET
+char *xyytext;
+#line 1 "xLexer.lxx"
+/*
+// Filename: xLexer.lxx
+// Created by:  drose (03Oct04)
+// 
+////////////////////////////////////////////////////////////////////
+*/
+#line 9 "xLexer.lxx"
+#include "xLexerDefs.h"
+#include "xParserDefs.h"
+#include "xParser.h"
+#include "indent.h"
+#include "string_utils.h"
+#include "config_xfile.h"
+
+static int yyinput(void);        // declared by flex.
+extern "C" int xyywrap();
+
+////////////////////////////////////////////////////////////////////
+// Static variables
+////////////////////////////////////////////////////////////////////
+
+// We'll increment line_number and col_number as we parse the file, so
+// that we can report the position of an error.
+int x_line_number = 0;
+int x_col_number = 0;
+
+// current_line holds as much of the current line as will fit.  Its
+// only purpose is for printing it out to report an error to the user.
+static const int max_error_width = 1024;
+char x_current_line[max_error_width + 1];
+
+static int error_count = 0;
+static int warning_count = 0;
+
+// This is the pointer to the current input stream.
+static istream *input_p = NULL;
+
+// This is the name of the x file we're parsing.  We keep it so we
+// can print it out for error messages.
+static string x_filename;
+
+
+////////////////////////////////////////////////////////////////////
+// Defining the interface to the lexer.
+////////////////////////////////////////////////////////////////////
+
+void
+x_init_lexer(istream &in, const string &filename) {
+  input_p = &in;
+  x_filename = filename;
+  x_line_number = 0;
+  x_col_number = 0;
+  error_count = 0;
+  warning_count = 0;
+}
+
+int
+x_error_count() {
+  return error_count;
+}
+
+int
+x_warning_count() {
+  return warning_count;
+}
+
+
+////////////////////////////////////////////////////////////////////
+// Internal support functions.
+////////////////////////////////////////////////////////////////////
+
+int
+xyywrap(void) {
+  return 1;
+}
+
+void
+xyyerror(const string &msg) {
+  xyyerror(msg, x_line_number, x_col_number, x_current_line);
+}
+
+void
+xyyerror(const string &msg, int line_number, int col_number, 
+         const string &current_line) {
+  xfile_cat.error(false) << "\nError";
+  if (!x_filename.empty()) {
+    xfile_cat.error(false) << " in " << x_filename;
+  }
+  xfile_cat.error(false) 
+    << " at line " << line_number << ", column " << col_number << ":\n"
+    << current_line << "\n";
+  indent(xfile_cat.error(false), col_number-1) 
+    << "^\n" << msg << "\n\n";
+  
+  error_count++;
+}
+
+void
+xyywarning(const string &msg) {
+  xfile_cat.warning(false) << "\nWarning";
+  if (!x_filename.empty()) {
+    xfile_cat.warning(false) << " in " << x_filename;
+  }
+  xfile_cat.warning(false) 
+    << " at line " << x_line_number << ", column " << x_col_number << ":\n"
+    << x_current_line << "\n";
+  indent(xfile_cat.warning(false), x_col_number-1) 
+    << "^\n" << msg << "\n\n";
+
+  warning_count++;
+}
+
+// Now define a function to take input from an istream instead of a
+// stdio FILE pointer.  This is flex-specific.
+static void
+input_chars(char *buffer, int &result, int max_size) {
+  nassertv(input_p != NULL);
+  if (*input_p) {
+    input_p->read(buffer, max_size);
+    result = input_p->gcount();
+    if (result >= 0 && result < max_size) {
+      // Truncate at the end of the read.
+      buffer[result] = '\0';
+    }
+
+    if (x_line_number == 0) {
+      // This is a special case.  If we are reading the very first bit
+      // from the stream, copy it into the x_current_line array.  This
+      // is because the \n.* rule below, which fills x_current_line
+      // normally, doesn't catch the first line.
+      strncpy(x_current_line, xyytext, max_error_width);
+      x_current_line[max_error_width] = '\0';
+      x_line_number++;
+      x_col_number = 0;
+
+      // Truncate it at the newline.
+      char *end = strchr(x_current_line, '\n');
+      if (end != NULL) {
+        *end = '\0';
+      }
+    }
+
+  } else {
+    // End of file or I/O error.
+    result = 0;
+  }
+}
+#undef YY_INPUT
+
+// Define this macro carefully, since different flex versions call it
+// with a different type for result.
+#define YY_INPUT(buffer, result, max_size) { \
+  int int_result; \
+  input_chars((buffer), int_result, (max_size)); \
+  (result) = int_result; \
+}
+
+// read_char reads and returns a single character, incrementing the
+// supplied line and column numbers as appropriate.  A convenience
+// function for the scanning functions below.
+static int
+read_char(int &line, int &col) {
+  int c = yyinput();
+  if (c == '\n') {
+    line++;
+    col = 0;
+  } else {
+    col++;
+  }
+  return c;
+}
+
+// scan_quoted_string reads a string delimited by quotation marks and
+// returns it.
+static string
+scan_quoted_string(char quote_mark) {
+  string result;
+
+  // We don't touch the current line number and column number during
+  // scanning, so that if we detect an error while scanning the string
+  // (e.g. an unterminated string), we'll report the error as
+  // occurring at the start of the string, not at the end--somewhat
+  // more convenient for the user.
+
+  // Instead of adjusting the global x_line_number and x_col_number
+  // variables, we'll operate on our own local variables for the
+  // interim.
+  int line = x_line_number;
+  int col = x_col_number;
+
+  int c;
+  c = read_char(line, col);
+  while (c != quote_mark && c != EOF) {
+    // A newline is not allowed within a string unless it is escaped.
+    if (c == '\n') {
+      c = EOF;
+      break;
+
+    } else if (c == '\\') {
+      // Backslash escapes the following character.  We also respect
+      // some C conventions.
+      c = read_char(line, col);
+      switch (c) {
+      case 'a':
+        result += '\a';
+        c = read_char(line, col);
+        break;
+
+      case 'n':
+        result += '\n';
+        c = read_char(line, col);
+        break;
+
+      case 'r':
+        result += '\r';
+        c = read_char(line, col);
+        break;
+
+      case 't':
+        result += '\t';
+        c = read_char(line, col);
+        break;
+
+      case 'x':
+        {
+          int hex = 0;
+          c = read_char(line, col);
+          for (int i = 0; i < 2 && isxdigit(c); i++) {
+            hex = hex * 16 + (isdigit(c) ? c - '0' : tolower(c) - 'a' + 10);
+            c = read_char(line, col);
+          }
+
+          result += hex;
+        }
+        break;
+
+      case '0':
+        {
+          int oct = 0;
+          c = read_char(line, col);
+          for (int i = 0; i < 3 && (c >= '0' && c < '7'); i++) {
+            oct = oct * 8 + (c - '0');
+            c = read_char(line, col);
+          }
+
+          result += oct;
+        }
+        break;
+
+      case '1':
+      case '2':
+      case '3':
+      case '4':
+      case '5':
+      case '6':
+      case '7':
+      case '8':
+      case '9':
+        {
+          int dec = 0;
+          c = read_char(line, col);
+          for (int i = 0; i < 3 && isdigit(c); i++) {
+            dec = dec * 10 + (c - '0');
+            c = read_char(line, col);
+          }
+
+          result += dec;
+        }
+        break;
+
+      case EOF:
+        break;
+
+      default:
+        result += c;
+        c = read_char(line, col);
+      }
+
+    } else {
+      result += c;
+      c = read_char(line, col);
+    }
+  }
+
+  if (c == EOF) {
+    xyyerror("This quotation mark is unterminated.");
+  }
+
+  x_line_number = line;
+  x_col_number = col;
+
+  return result;
+}
+
+// scan_guid_string reads a string of hexadecimal digits delimited by
+// angle brackets and returns the corresponding string.
+static string
+scan_guid_string() {
+  // We don't touch the current line number and column number during
+  // scanning, so that if we detect an error while scanning the string
+  // (e.g. an unterminated string), we'll report the error as
+  // occurring at the start of the string, not at the end--somewhat
+  // more convenient for the user.
+
+  // Instead of adjusting the global x_line_number and x_col_number
+  // variables, we'll operate on our own local variables for the
+  // interim.
+  int line = x_line_number;
+  int col = x_col_number;
+
+  int num_digits = 0;
+  int num_hyphens = 0;
+
+  string result;
+
+  int c;
+  c = read_char(line, col);
+  while (c != '>' && c != EOF) {
+    if (isxdigit(c)) {
+      num_digits++;
+
+    } else if (c == '-') {
+      num_hyphens++;
+
+    } else {
+      x_line_number = line;
+      x_col_number = col;
+      xyyerror("Invalid character in GUID.");
+      return string();
+    }
+
+    result += c;
+
+    c = read_char(line, col);
+  }
+
+  if (c == EOF) {
+    xyyerror("This GUID string is unterminated.");
+    return string();
+
+  } else if (num_digits != 32) {
+    xyyerror("Incorrect number of hex digits in GUID.");
+    return string();
+
+  } else if (num_hyphens != 4) {
+    xyyerror("Incorrect number of hyphens in GUID.");
+    return string();
+  }
+
+  x_line_number = line;
+  x_col_number = col;
+
+  return result;
+}
+
+// Parses the text into a list of integers and returns them.
+static PTA_int
+scan_int_list(const string &text) {
+  PTA_int result;
+
+  vector_string words;
+  tokenize(text, words, ",;");
+
+  vector_string::const_iterator wi;
+  for (wi = words.begin(); wi != words.end(); ++wi) {
+    string trimmed = trim(*wi);
+    if (!trimmed.empty()) {
+      int number = 0;
+      string_to_int(trimmed, number);
+      result.push_back(number);
+    }
+  }
+
+  return result;
+}
+
+// Parses the text into a list of doubles and returns them.
+static PTA_double
+scan_double_list(const string &text) {
+  PTA_double result;
+
+  vector_string words;
+  tokenize(text, words, ",;");
+
+  vector_string::const_iterator wi;
+  for (wi = words.begin(); wi != words.end(); ++wi) {
+    string trimmed = trim(*wi);
+    if (!trimmed.empty()) {
+      double number = 0.0;
+      string_to_double(trimmed, number);
+      result.push_back(number);
+    }
+  }
+
+  return result;
+}
+
+
+
+// accept() is called below as each piece is pulled off and
+// accepted by the lexer; it increments the current column number.
+inline void accept() {
+  x_col_number += xyyleng;
+}
+
+#line 1052 "lex.yy.c"
+
+#define INITIAL 0
+
+#ifndef YY_NO_UNISTD_H
+/* Special case for "unistd.h", since it is non-ANSI. We include it way
+ * down here because we want the user's section 1 to have been scanned first.
+ * The user has a chance to override it with an option.
+ */
+#endif
+
+#ifndef YY_EXTRA_TYPE
+#define YY_EXTRA_TYPE void *
+#endif
+
+static int yy_init_globals (void );
+
+/* Accessor methods to globals.
+   These are made visible to non-reentrant scanners for convenience. */
+
+int xyylex_destroy (void );
+
+int xyyget_debug (void );
+
+void xyyset_debug (int debug_flag  );
+
+YY_EXTRA_TYPE xyyget_extra (void );
+
+void xyyset_extra (YY_EXTRA_TYPE user_defined  );
+
+FILE *xyyget_in (void );
+
+void xyyset_in  (FILE * in_str  );
+
+FILE *xyyget_out (void );
+
+void xyyset_out  (FILE * out_str  );
+
+int xyyget_leng (void );
+
+char *xyyget_text (void );
+
+int xyyget_lineno (void );
+
+void xyyset_lineno (int line_number  );
+
+/* Macros after this point can all be overridden by user definitions in
+ * section 1.
+ */
+
+#ifndef YY_SKIP_YYWRAP
+#ifdef __cplusplus
+extern "C" int xyywrap (void );
+#else
+extern int xyywrap (void );
+#endif
+#endif
+
+    static void yyunput (int c,char *buf_ptr  );
+    
+#ifndef yytext_ptr
+static void yy_flex_strncpy (char *,yyconst char *,int );
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen (yyconst char * );
+#endif
+
+#ifndef YY_NO_INPUT
+
+#ifdef __cplusplus
+static int yyinput (void );
+#else
+static int input (void );
+#endif
+
+#endif
+
+/* Amount of stuff to slurp up with each read. */
+#ifndef YY_READ_BUF_SIZE
+#define YY_READ_BUF_SIZE 8192
+#endif
+
+/* Copy whatever the last rule matched to the standard output. */
+#ifndef ECHO
+/* This used to be an fputs(), but since the string might contain NUL's,
+ * we now use fwrite().
+ */
+#define ECHO fwrite( xyytext, xyyleng, 1, xyyout )
+#endif
+
+/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
+ * is returned in "result".
+ */
+#ifndef YY_INPUT
+#define YY_INPUT(buf,result,max_size) \
+	if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
+		{ \
+		int c = '*'; \
+		int n; \
+		for ( n = 0; n < max_size && \
+			     (c = getc( xyyin )) != EOF && c != '\n'; ++n ) \
+			buf[n] = (char) c; \
+		if ( c == '\n' ) \
+			buf[n++] = (char) c; \
+		if ( c == EOF && ferror( xyyin ) ) \
+			YY_FATAL_ERROR( "input in flex scanner failed" ); \
+		result = n; \
+		} \
+	else \
+		{ \
+		errno=0; \
+		while ( (result = fread(buf, 1, max_size, xyyin))==0 && ferror(xyyin)) \
+			{ \
+			if( errno != EINTR) \
+				{ \
+				YY_FATAL_ERROR( "input in flex scanner failed" ); \
+				break; \
+				} \
+			errno=0; \
+			clearerr(xyyin); \
+			} \
+		}\
+\
+
+#endif
+
+/* No semi-colon after return; correct usage is to write "yyterminate();" -
+ * we don't want an extra ';' after the "return" because that will cause
+ * some compilers to complain about unreachable statements.
+ */
+#ifndef yyterminate
+#define yyterminate() return YY_NULL
+#endif
+
+/* Number of entries by which start-condition stack grows. */
+#ifndef YY_START_STACK_INCR
+#define YY_START_STACK_INCR 25
+#endif
+
+/* Report a fatal error. */
+#ifndef YY_FATAL_ERROR
+#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
+#endif
+
+/* end tables serialization structures and prototypes */
+
+/* Default declaration of generated scanner - a define so the user can
+ * easily add parameters.
+ */
+#ifndef YY_DECL
+#define YY_DECL_IS_OURS 1
+
+extern int xyylex (void);
+
+#define YY_DECL int xyylex (void)
+#endif /* !YY_DECL */
+
+/* Code executed at the beginning of each rule, after xyytext and xyyleng
+ * have been set up.
+ */
+#ifndef YY_USER_ACTION
+#define YY_USER_ACTION
+#endif
+
+/* Code executed at the end of each rule. */
+#ifndef YY_BREAK
+#define YY_BREAK break;
+#endif
+
+#define YY_RULE_SETUP \
+	YY_USER_ACTION
+
+/** The main scanner function which does all the work.
+ */
+YY_DECL
+{
+	register yy_state_type yy_current_state;
+	register char *yy_cp, *yy_bp;
+	register int yy_act;
+    
+#line 414 "xLexer.lxx"
+
+
+
+
+
+#line 1240 "lex.yy.c"
+
+	if ( !(yy_init) )
+		{
+		(yy_init) = 1;
+
+#ifdef YY_USER_INIT
+		YY_USER_INIT;
+#endif
+
+        /* Create the reject buffer large enough to save one state per allowed character. */
+        if ( ! (yy_state_buf) )
+            (yy_state_buf) = (yy_state_type *)xyyalloc(YY_STATE_BUF_SIZE  );
+            if ( ! (yy_state_buf) )
+                YY_FATAL_ERROR( "out of dynamic memory in xyylex()" );
+
+		if ( ! (yy_start) )
+			(yy_start) = 1;	/* first start state */
+
+		if ( ! xyyin )
+			xyyin = stdin;
+
+		if ( ! xyyout )
+			xyyout = stdout;
+
+		if ( ! YY_CURRENT_BUFFER ) {
+			xyyensure_buffer_stack ();
+			YY_CURRENT_BUFFER_LVALUE =
+				xyy_create_buffer(xyyin,YY_BUF_SIZE );
+		}
+
+		xyy_load_buffer_state( );
+		}
+
+	while ( 1 )		/* loops until end-of-file is reached */
+		{
+		yy_cp = (yy_c_buf_p);
+
+		/* Support of xyytext. */
+		*yy_cp = (yy_hold_char);
+
+		/* yy_bp points to the position in yy_ch_buf of the start of
+		 * the current run.
+		 */
+		yy_bp = yy_cp;
+
+		yy_current_state = (yy_start);
+
+		(yy_state_ptr) = (yy_state_buf);
+		*(yy_state_ptr)++ = yy_current_state;
+
+yy_match:
+		do
+			{
+			register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
+			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+				{
+				yy_current_state = (int) yy_def[yy_current_state];
+				if ( yy_current_state >= 141 )
+					yy_c = yy_meta[(unsigned int) yy_c];
+				}
+			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+			*(yy_state_ptr)++ = yy_current_state;
+			++yy_cp;
+			}
+		while ( yy_base[yy_current_state] != 370 );
+
+yy_find_action:
+		yy_current_state = *--(yy_state_ptr);
+		(yy_lp) = yy_accept[yy_current_state];
+find_rule: /* we branch to this label when backing up */
+		for ( ; ; ) /* until we find what rule we matched */
+			{
+			if ( (yy_lp) && (yy_lp) < yy_accept[yy_current_state + 1] )
+				{
+				yy_act = yy_acclist[(yy_lp)];
+				if ( yy_act & YY_TRAILING_HEAD_MASK ||
+				     (yy_looking_for_trail_begin) )
+					{
+					if ( yy_act == (yy_looking_for_trail_begin) )
+						{
+						(yy_looking_for_trail_begin) = 0;
+						yy_act &= ~YY_TRAILING_HEAD_MASK;
+						break;
+						}
+					}
+				else if ( yy_act & YY_TRAILING_MASK )
+					{
+					(yy_looking_for_trail_begin) = yy_act & ~YY_TRAILING_MASK;
+					(yy_looking_for_trail_begin) |= YY_TRAILING_HEAD_MASK;
+					}
+				else
+					{
+					(yy_full_match) = yy_cp;
+					(yy_full_state) = (yy_state_ptr);
+					(yy_full_lp) = (yy_lp);
+					break;
+					}
+				++(yy_lp);
+				goto find_rule;
+				}
+			--yy_cp;
+			yy_current_state = *--(yy_state_ptr);
+			(yy_lp) = yy_accept[yy_current_state];
+			}
+
+		YY_DO_BEFORE_ACTION;
+
+do_action:	/* This label is used only to access EOF actions. */
+
+		switch ( yy_act )
+	{ /* beginning of action switch */
+case 1:
+/* rule 1 can match eol */
+YY_RULE_SETUP
+#line 419 "xLexer.lxx"
+{
+  // New line.  Save a copy of the line so we can print it out for the
+  // benefit of the user in case we get an error.
+
+  strncpy(x_current_line, xyytext+1, max_error_width);
+  x_current_line[max_error_width] = '\0';
+  x_line_number++;
+  x_col_number=0;
+
+  // Return the whole line to the lexer, except the newline character,
+  // which we eat.
+  yyless(1);
+}
+	YY_BREAK
+case 2:
+YY_RULE_SETUP
+#line 433 "xLexer.lxx"
+{ 
+  // Eat whitespace.
+  accept();
+}
+	YY_BREAK
+case 3:
+YY_RULE_SETUP
+#line 438 "xLexer.lxx"
+{ 
+  // Eat C++-style comments.
+  accept();
+}
+	YY_BREAK
+case 4:
+YY_RULE_SETUP
+#line 443 "xLexer.lxx"
+{ 
+  // Eat sh-style comments.
+  accept();
+}
+	YY_BREAK
+case 5:
+YY_RULE_SETUP
+#line 448 "xLexer.lxx"
+{
+  accept();
+  return TOKEN_OBRACE;
+}
+	YY_BREAK
+case 6:
+YY_RULE_SETUP
+#line 453 "xLexer.lxx"
+{
+  accept();
+  return TOKEN_CBRACE;
+}
+	YY_BREAK
+case 7:
+YY_RULE_SETUP
+#line 458 "xLexer.lxx"
+{
+  accept();
+  return TOKEN_OBRACKET;
+}
+	YY_BREAK
+case 8:
+YY_RULE_SETUP
+#line 463 "xLexer.lxx"
+{
+  accept();
+  return TOKEN_CBRACKET;
+}
+	YY_BREAK
+case 9:
+YY_RULE_SETUP
+#line 468 "xLexer.lxx"
+{
+  accept();
+  return TOKEN_DOT;
+}
+	YY_BREAK
+case 10:
+YY_RULE_SETUP
+#line 473 "xLexer.lxx"
+{
+  accept();
+  return TOKEN_COMMA;
+}
+	YY_BREAK
+case 11:
+YY_RULE_SETUP
+#line 478 "xLexer.lxx"
+{
+  accept();
+  return TOKEN_SEMICOLON;
+}
+	YY_BREAK
+case 12:
+YY_RULE_SETUP
+#line 483 "xLexer.lxx"
+{
+  accept();
+  return TOKEN_ARRAY;
+}
+	YY_BREAK
+case 13:
+YY_RULE_SETUP
+#line 488 "xLexer.lxx"
+{
+  accept();
+  return TOKEN_UCHAR;
+}
+	YY_BREAK
+case 14:
+YY_RULE_SETUP
+#line 493 "xLexer.lxx"
+{
+  accept();
+  return TOKEN_CHAR;
+}
+	YY_BREAK
+case 15:
+YY_RULE_SETUP
+#line 498 "xLexer.lxx"
+{
+  accept();
+  return TOKEN_CSTRING;
+}
+	YY_BREAK
+case 16:
+YY_RULE_SETUP
+#line 503 "xLexer.lxx"
+{
+  accept();
+  return TOKEN_DOUBLE;
+}
+	YY_BREAK
+case 17:
+YY_RULE_SETUP
+#line 508 "xLexer.lxx"
+{
+  accept();
+  return TOKEN_DWORD;
+}
+	YY_BREAK
+case 18:
+YY_RULE_SETUP
+#line 513 "xLexer.lxx"
+{
+  accept();
+  return TOKEN_SDWORD;
+}
+	YY_BREAK
+case 19:
+YY_RULE_SETUP
+#line 518 "xLexer.lxx"
+{
+  accept();
+  return TOKEN_FLOAT;
+}
+	YY_BREAK
+case 20:
+YY_RULE_SETUP
+#line 523 "xLexer.lxx"
+{
+  accept();
+  return TOKEN_LPSTR;
+}
+	YY_BREAK
+case 21:
+YY_RULE_SETUP
+#line 528 "xLexer.lxx"
+{
+  accept();
+  return TOKEN_TEMPLATE;
+}
+	YY_BREAK
+case 22:
+YY_RULE_SETUP
+#line 533 "xLexer.lxx"
+{
+  accept();
+  return TOKEN_UCHAR;
+}
+	YY_BREAK
+case 23:
+YY_RULE_SETUP
+#line 538 "xLexer.lxx"
+{
+  accept();
+  return TOKEN_UNICODE;
+}
+	YY_BREAK
+case 24:
+YY_RULE_SETUP
+#line 543 "xLexer.lxx"
+{
+  accept();
+  return TOKEN_SWORD;
+}
+	YY_BREAK
+case 25:
+YY_RULE_SETUP
+#line 548 "xLexer.lxx"
+{
+  accept();
+  return TOKEN_WORD;
+}
+	YY_BREAK
+case 26:
+YY_RULE_SETUP
+#line 553 "xLexer.lxx"
+{ 
+  // A signed or unsigned integer number.
+  accept();
+  xyylval.u.number = atol(xyytext); 
+  xyylval.str = trim_right(xyytext);
+
+  return TOKEN_INTEGER;
+}
+	YY_BREAK
+case 27:
+YY_RULE_SETUP
+#line 562 "xLexer.lxx"
+{ 
+  // An integer as part of a semicolon- or comma-delimited list.
+  accept();
+  xyylval.int_list = scan_int_list(xyytext);
+
+  return TOKEN_INTEGER_LIST;
+}
+	YY_BREAK
+case 28:
+YY_RULE_SETUP
+#line 570 "xLexer.lxx"
+{ 
+  // This rule is used to match an integer list that is followed by a
+  // floating-point number.  It's designed to prevent "0;0.5" from
+  // being interpreted as "0;0" followed by ".5".
+  accept();
+  xyylval.int_list = scan_int_list(xyytext);
+
+  return TOKEN_INTEGER_LIST;
+}
+	YY_BREAK
+case 29:
+YY_RULE_SETUP
+#line 580 "xLexer.lxx"
+{ 
+  // A floating-point number as part of a semicolon- or comma-delimited list.
+  accept(); 
+  xyylval.double_list = scan_double_list(xyytext);
+
+  return TOKEN_REALNUM_LIST;
+}
+	YY_BREAK
+case 30:
+YY_RULE_SETUP
+#line 588 "xLexer.lxx"
+{
+  // Quoted string.
+  accept();
+  xyylval.str = scan_quoted_string('"');
+  return TOKEN_STRING;
+}
+	YY_BREAK
+case 31:
+YY_RULE_SETUP
+#line 595 "xLexer.lxx"
+{
+  // Long GUID string.
+  accept();
+  xyylval.str = scan_guid_string();
+
+  if (!xyylval.guid.parse_string(xyylval.str)) {
+    xyyerror("Malformed GUID.");
+  }
+
+  return TOKEN_GUID;
+}
+	YY_BREAK
+case 32:
+YY_RULE_SETUP
+#line 607 "xLexer.lxx"
+{ 
+  // Identifier.
+  accept();
+  xyylval.str = xyytext;
+  return TOKEN_NAME;
+}
+	YY_BREAK
+case 33:
+YY_RULE_SETUP
+#line 614 "xLexer.lxx"
+{ 
+  // Identifier with leading digit.
+  accept();
+  xyylval.str = xyytext;
+  return TOKEN_NAME;
+}
+	YY_BREAK
+case 34:
+YY_RULE_SETUP
+#line 621 "xLexer.lxx"
+{
+  // Any other character is invalid.
+  accept();
+  xyyerror("Invalid character '" + string(xyytext) + "'.");
+}
+	YY_BREAK
+case 35:
+YY_RULE_SETUP
+#line 626 "xLexer.lxx"
+ECHO;
+	YY_BREAK
+#line 1668 "lex.yy.c"
+			case YY_STATE_EOF(INITIAL):
+				yyterminate();
+
+	case YY_END_OF_BUFFER:
+		{
+		/* Amount of text matched not including the EOB char. */
+		int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
+
+		/* Undo the effects of YY_DO_BEFORE_ACTION. */
+		*yy_cp = (yy_hold_char);
+		YY_RESTORE_YY_MORE_OFFSET
+
+		if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
+			{
+			/* We're scanning a new file or input source.  It's
+			 * possible that this happened because the user
+			 * just pointed xyyin at a new source and called
+			 * xyylex().  If so, then we have to assure
+			 * consistency between YY_CURRENT_BUFFER and our
+			 * globals.  Here is the right place to do so, because
+			 * this is the first action (other than possibly a
+			 * back-up) that will match for the new input source.
+			 */
+			(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
+			YY_CURRENT_BUFFER_LVALUE->yy_input_file = xyyin;
+			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
+			}
+
+		/* Note that here we test for yy_c_buf_p "<=" to the position
+		 * of the first EOB in the buffer, since yy_c_buf_p will
+		 * already have been incremented past the NUL character
+		 * (since all states make transitions on EOB to the
+		 * end-of-buffer state).  Contrast this with the test
+		 * in input().
+		 */
+		if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
+			{ /* This was really a NUL. */
+			yy_state_type yy_next_state;
+
+			(yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
+
+			yy_current_state = yy_get_previous_state(  );
+
+			/* Okay, we're now positioned to make the NUL
+			 * transition.  We couldn't have
+			 * yy_get_previous_state() go ahead and do it
+			 * for us because it doesn't know how to deal
+			 * with the possibility of jamming (and we don't
+			 * want to build jamming into it because then it
+			 * will run more slowly).
+			 */
+
+			yy_next_state = yy_try_NUL_trans( yy_current_state );
+
+			yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+
+			if ( yy_next_state )
+				{
+				/* Consume the NUL. */
+				yy_cp = ++(yy_c_buf_p);
+				yy_current_state = yy_next_state;
+				goto yy_match;
+				}
+
+			else
+				{
+				yy_cp = (yy_c_buf_p);
+				goto yy_find_action;
+				}
+			}
+
+		else switch ( yy_get_next_buffer(  ) )
+			{
+			case EOB_ACT_END_OF_FILE:
+				{
+				(yy_did_buffer_switch_on_eof) = 0;
+
+				if ( xyywrap( ) )
+					{
+					/* Note: because we've taken care in
+					 * yy_get_next_buffer() to have set up
+					 * xyytext, we can now set up
+					 * yy_c_buf_p so that if some total
+					 * hoser (like flex itself) wants to
+					 * call the scanner after we return the
+					 * YY_NULL, it'll still work - another
+					 * YY_NULL will get returned.
+					 */
+					(yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
+
+					yy_act = YY_STATE_EOF(YY_START);
+					goto do_action;
+					}
+
+				else
+					{
+					if ( ! (yy_did_buffer_switch_on_eof) )
+						YY_NEW_FILE;
+					}
+				break;
+				}
+
+			case EOB_ACT_CONTINUE_SCAN:
+				(yy_c_buf_p) =
+					(yytext_ptr) + yy_amount_of_matched_text;
+
+				yy_current_state = yy_get_previous_state(  );
+
+				yy_cp = (yy_c_buf_p);
+				yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+				goto yy_match;
+
+			case EOB_ACT_LAST_MATCH:
+				(yy_c_buf_p) =
+				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
+
+				yy_current_state = yy_get_previous_state(  );
+
+				yy_cp = (yy_c_buf_p);
+				yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+				goto yy_find_action;
+			}
+		break;
+		}
+
+	default:
+		YY_FATAL_ERROR(
+			"fatal flex scanner internal error--no action found" );
+	} /* end of action switch */
+		} /* end of scanning one token */
+} /* end of xyylex */
+
+/* yy_get_next_buffer - try to read in a new buffer
+ *
+ * Returns a code representing an action:
+ *	EOB_ACT_LAST_MATCH -
+ *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position
+ *	EOB_ACT_END_OF_FILE - end of file
+ */
+static int yy_get_next_buffer (void)
+{
+    	register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
+	register char *source = (yytext_ptr);
+	register int number_to_move, i;
+	int ret_val;
+
+	if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
+		YY_FATAL_ERROR(
+		"fatal flex scanner internal error--end of buffer missed" );
+
+	if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
+		{ /* Don't try to fill the buffer, so this is an EOF. */
+		if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
+			{
+			/* We matched a single character, the EOB, so
+			 * treat this as a final EOF.
+			 */
+			return EOB_ACT_END_OF_FILE;
+			}
+
+		else
+			{
+			/* We matched some text prior to the EOB, first
+			 * process it.
+			 */
+			return EOB_ACT_LAST_MATCH;
+			}
+		}
+
+	/* Try to read more data. */
+
+	/* First move last chars to start of buffer. */
+	number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
+
+	for ( i = 0; i < number_to_move; ++i )
+		*(dest++) = *(source++);
+
+	if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
+		/* don't do the read, it's not guaranteed to return an EOF,
+		 * just force an EOF
+		 */
+		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
+
+	else
+		{
+			int num_to_read =
+			YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
+
+		while ( num_to_read <= 0 )
+			{ /* Not enough room in the buffer - grow it. */
+
+			YY_FATAL_ERROR(
+"input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
+
+			}
+
+		if ( num_to_read > YY_READ_BUF_SIZE )
+			num_to_read = YY_READ_BUF_SIZE;
+
+		/* Read in more data. */
+		YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
+			(yy_n_chars), (size_t) num_to_read );
+
+		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+		}
+
+	if ( (yy_n_chars) == 0 )
+		{
+		if ( number_to_move == YY_MORE_ADJ )
+			{
+			ret_val = EOB_ACT_END_OF_FILE;
+			xyyrestart(xyyin  );
+			}
+
+		else
+			{
+			ret_val = EOB_ACT_LAST_MATCH;
+			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
+				YY_BUFFER_EOF_PENDING;
+			}
+		}
+
+	else
+		ret_val = EOB_ACT_CONTINUE_SCAN;
+
+	if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
+		/* Extend the array by 50%, plus the number we really need. */
+		yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
+		YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) xyyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size  );
+		if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
+			YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
+	}
+
+	(yy_n_chars) += number_to_move;
+	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
+	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
+
+	(yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
+
+	return ret_val;
+}
+
+/* yy_get_previous_state - get the state just before the EOB char was reached */
+
+    static yy_state_type yy_get_previous_state (void)
+{
+	register yy_state_type yy_current_state;
+	register char *yy_cp;
+    
+	yy_current_state = (yy_start);
+
+	(yy_state_ptr) = (yy_state_buf);
+	*(yy_state_ptr)++ = yy_current_state;
+
+	for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
+		{
+		register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
+		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+			{
+			yy_current_state = (int) yy_def[yy_current_state];
+			if ( yy_current_state >= 141 )
+				yy_c = yy_meta[(unsigned int) yy_c];
+			}
+		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+		*(yy_state_ptr)++ = yy_current_state;
+		}
+
+	return yy_current_state;
+}
+
+/* yy_try_NUL_trans - try to make a transition on the NUL character
+ *
+ * synopsis
+ *	next_state = yy_try_NUL_trans( current_state );
+ */
+    static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
+{
+	register int yy_is_jam;
+    
+	register YY_CHAR yy_c = 1;
+	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
+		{
+		yy_current_state = (int) yy_def[yy_current_state];
+		if ( yy_current_state >= 141 )
+			yy_c = yy_meta[(unsigned int) yy_c];
+		}
+	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+	yy_is_jam = (yy_current_state == 140);
+	if ( ! yy_is_jam )
+		*(yy_state_ptr)++ = yy_current_state;
+
+	return yy_is_jam ? 0 : yy_current_state;
+}
+
+    static void yyunput (int c, register char * yy_bp )
+{
+	register char *yy_cp;
+    
+    yy_cp = (yy_c_buf_p);
+
+	/* undo effects of setting up xyytext */
+	*yy_cp = (yy_hold_char);
+
+	if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
+		{ /* need to shift things up to make room */
+		/* +2 for EOB chars. */
+		register int number_to_move = (yy_n_chars) + 2;
+		register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
+					YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
+		register char *source =
+				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
+
+		while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
+			*--dest = *--source;
+
+		yy_cp += (int) (dest - source);
+		yy_bp += (int) (dest - source);
+		YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
+			(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
+
+		if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
+			YY_FATAL_ERROR( "flex scanner push-back overflow" );
+		}
+
+	*--yy_cp = (char) c;
+
+	(yytext_ptr) = yy_bp;
+	(yy_hold_char) = *yy_cp;
+	(yy_c_buf_p) = yy_cp;
+}
+
+#ifndef YY_NO_INPUT
+#ifdef __cplusplus
+    static int yyinput (void)
+#else
+    static int input  (void)
+#endif
+
+{
+	int c;
+    
+	*(yy_c_buf_p) = (yy_hold_char);
+
+	if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
+		{
+		/* yy_c_buf_p now points to the character we want to return.
+		 * If this occurs *before* the EOB characters, then it's a
+		 * valid NUL; if not, then we've hit the end of the buffer.
+		 */
+		if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
+			/* This was really a NUL. */
+			*(yy_c_buf_p) = '\0';
+
+		else
+			{ /* need more input */
+			int offset = (yy_c_buf_p) - (yytext_ptr);
+			++(yy_c_buf_p);
+
+			switch ( yy_get_next_buffer(  ) )
+				{
+				case EOB_ACT_LAST_MATCH:
+					/* This happens because yy_g_n_b()
+					 * sees that we've accumulated a
+					 * token and flags that we need to
+					 * try matching the token before
+					 * proceeding.  But for input(),
+					 * there's no matching to consider.
+					 * So convert the EOB_ACT_LAST_MATCH
+					 * to EOB_ACT_END_OF_FILE.
+					 */
+
+					/* Reset buffer status. */
+					xyyrestart(xyyin );
+
+					/*FALLTHROUGH*/
+
+				case EOB_ACT_END_OF_FILE:
+					{
+					if ( xyywrap( ) )
+						return EOF;
+
+					if ( ! (yy_did_buffer_switch_on_eof) )
+						YY_NEW_FILE;
+#ifdef __cplusplus
+					return yyinput();
+#else
+					return input();
+#endif
+					}
+
+				case EOB_ACT_CONTINUE_SCAN:
+					(yy_c_buf_p) = (yytext_ptr) + offset;
+					break;
+				}
+			}
+		}
+
+	c = *(unsigned char *) (yy_c_buf_p);	/* cast for 8-bit char's */
+	*(yy_c_buf_p) = '\0';	/* preserve xyytext */
+	(yy_hold_char) = *++(yy_c_buf_p);
+
+	return c;
+}
+#endif	/* ifndef YY_NO_INPUT */
+
+/** Immediately switch to a different input stream.
+ * @param input_file A readable stream.
+ * 
+ * @note This function does not reset the start condition to @c INITIAL .
+ */
+    void xyyrestart  (FILE * input_file )
+{
+    
+	if ( ! YY_CURRENT_BUFFER ){
+        xyyensure_buffer_stack ();
+		YY_CURRENT_BUFFER_LVALUE =
+            xyy_create_buffer(xyyin,YY_BUF_SIZE );
+	}
+
+	xyy_init_buffer(YY_CURRENT_BUFFER,input_file );
+	xyy_load_buffer_state( );
+}
+
+/** Switch to a different input buffer.
+ * @param new_buffer The new input buffer.
+ * 
+ */
+    void xyy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
+{
+    
+	/* TODO. We should be able to replace this entire function body
+	 * with
+	 *		xyypop_buffer_state();
+	 *		xyypush_buffer_state(new_buffer);
+     */
+	xyyensure_buffer_stack ();
+	if ( YY_CURRENT_BUFFER == new_buffer )
+		return;
+
+	if ( YY_CURRENT_BUFFER )
+		{
+		/* Flush out information for old buffer. */
+		*(yy_c_buf_p) = (yy_hold_char);
+		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
+		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+		}
+
+	YY_CURRENT_BUFFER_LVALUE = new_buffer;
+	xyy_load_buffer_state( );
+
+	/* We don't actually know whether we did this switch during
+	 * EOF (xyywrap()) processing, but the only time this flag
+	 * is looked at is after xyywrap() is called, so it's safe
+	 * to go ahead and always set it.
+	 */
+	(yy_did_buffer_switch_on_eof) = 1;
+}
+
+static void xyy_load_buffer_state  (void)
+{
+    	(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
+	(yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
+	xyyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
+	(yy_hold_char) = *(yy_c_buf_p);
+}
+
+/** Allocate and initialize an input buffer state.
+ * @param file A readable stream.
+ * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
+ * 
+ * @return the allocated buffer state.
+ */
+    YY_BUFFER_STATE xyy_create_buffer  (FILE * file, int  size )
+{
+	YY_BUFFER_STATE b;
+    
+	b = (YY_BUFFER_STATE) xyyalloc(sizeof( struct yy_buffer_state )  );
+	if ( ! b )
+		YY_FATAL_ERROR( "out of dynamic memory in xyy_create_buffer()" );
+
+	b->yy_buf_size = size;
+
+	/* yy_ch_buf has to be 2 characters longer than the size given because
+	 * we need to put in 2 end-of-buffer characters.
+	 */
+	b->yy_ch_buf = (char *) xyyalloc(b->yy_buf_size + 2  );
+	if ( ! b->yy_ch_buf )
+		YY_FATAL_ERROR( "out of dynamic memory in xyy_create_buffer()" );
+
+	b->yy_is_our_buffer = 1;
+
+	xyy_init_buffer(b,file );
+
+	return b;
+}
+
+/** Destroy the buffer.
+ * @param b a buffer created with xyy_create_buffer()
+ * 
+ */
+    void xyy_delete_buffer (YY_BUFFER_STATE  b )
+{
+    
+	if ( ! b )
+		return;
+
+	if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
+		YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
+
+	if ( b->yy_is_our_buffer )
+		xyyfree((void *) b->yy_ch_buf  );
+
+	xyyfree((void *) b  );
+}
+
+#ifndef __cplusplus
+extern int isatty (int );
+#endif /* __cplusplus */
+    
+/* Initializes or reinitializes a buffer.
+ * This function is sometimes called more than once on the same buffer,
+ * such as during a xyyrestart() or at EOF.
+ */
+    static void xyy_init_buffer  (YY_BUFFER_STATE  b, FILE * file )
+
+{
+	int oerrno = errno;
+    
+	xyy_flush_buffer(b );
+
+	b->yy_input_file = file;
+	b->yy_fill_buffer = 1;
+
+    /* If b is the current buffer, then xyy_init_buffer was _probably_
+     * called from xyyrestart() or through yy_get_next_buffer.
+     * In that case, we don't want to reset the lineno or column.
+     */
+    if (b != YY_CURRENT_BUFFER){
+        b->yy_bs_lineno = 1;
+        b->yy_bs_column = 0;
+    }
+
+        b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
+    
+	errno = oerrno;
+}
+
+/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
+ * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
+ * 
+ */
+    void xyy_flush_buffer (YY_BUFFER_STATE  b )
+{
+    	if ( ! b )
+		return;
+
+	b->yy_n_chars = 0;
+
+	/* We always need two end-of-buffer characters.  The first causes
+	 * a transition to the end-of-buffer state.  The second causes
+	 * a jam in that state.
+	 */
+	b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
+	b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
+
+	b->yy_buf_pos = &b->yy_ch_buf[0];
+
+	b->yy_at_bol = 1;
+	b->yy_buffer_status = YY_BUFFER_NEW;
+
+	if ( b == YY_CURRENT_BUFFER )
+		xyy_load_buffer_state( );
+}
+
+/** Pushes the new state onto the stack. The new state becomes
+ *  the current state. This function will allocate the stack
+ *  if necessary.
+ *  @param new_buffer The new state.
+ *  
+ */
+void xyypush_buffer_state (YY_BUFFER_STATE new_buffer )
+{
+    	if (new_buffer == NULL)
+		return;
+
+	xyyensure_buffer_stack();
+
+	/* This block is copied from xyy_switch_to_buffer. */
+	if ( YY_CURRENT_BUFFER )
+		{
+		/* Flush out information for old buffer. */
+		*(yy_c_buf_p) = (yy_hold_char);
+		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
+		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+		}
+
+	/* Only push if top exists. Otherwise, replace top. */
+	if (YY_CURRENT_BUFFER)
+		(yy_buffer_stack_top)++;
+	YY_CURRENT_BUFFER_LVALUE = new_buffer;
+
+	/* copied from xyy_switch_to_buffer. */
+	xyy_load_buffer_state( );
+	(yy_did_buffer_switch_on_eof) = 1;
+}
+
+/** Removes and deletes the top of the stack, if present.
+ *  The next element becomes the new top.
+ *  
+ */
+void xyypop_buffer_state (void)
+{
+    	if (!YY_CURRENT_BUFFER)
+		return;
+
+	xyy_delete_buffer(YY_CURRENT_BUFFER );
+	YY_CURRENT_BUFFER_LVALUE = NULL;
+	if ((yy_buffer_stack_top) > 0)
+		--(yy_buffer_stack_top);
+
+	if (YY_CURRENT_BUFFER) {
+		xyy_load_buffer_state( );
+		(yy_did_buffer_switch_on_eof) = 1;
+	}
+}
+
+/* Allocates the stack if it does not exist.
+ *  Guarantees space for at least one push.
+ */
+static void xyyensure_buffer_stack (void)
+{
+	int num_to_alloc;
+    
+	if (!(yy_buffer_stack)) {
+
+		/* First allocation is just for 2 elements, since we don't know if this
+		 * scanner will even need a stack. We use 2 instead of 1 to avoid an
+		 * immediate realloc on the next call.
+         */
+		num_to_alloc = 1;
+		(yy_buffer_stack) = (struct yy_buffer_state**)xyyalloc
+								(num_to_alloc * sizeof(struct yy_buffer_state*)
+								);
+		if ( ! (yy_buffer_stack) )
+			YY_FATAL_ERROR( "out of dynamic memory in xyyensure_buffer_stack()" );
+								  
+		memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
+				
+		(yy_buffer_stack_max) = num_to_alloc;
+		(yy_buffer_stack_top) = 0;
+		return;
+	}
+
+	if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
+
+		/* Increase the buffer to prepare for a possible push. */
+		int grow_size = 8 /* arbitrary grow size */;
+
+		num_to_alloc = (yy_buffer_stack_max) + grow_size;
+		(yy_buffer_stack) = (struct yy_buffer_state**)xyyrealloc
+								((yy_buffer_stack),
+								num_to_alloc * sizeof(struct yy_buffer_state*)
+								);
+		if ( ! (yy_buffer_stack) )
+			YY_FATAL_ERROR( "out of dynamic memory in xyyensure_buffer_stack()" );
+
+		/* zero only the new slots.*/
+		memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
+		(yy_buffer_stack_max) = num_to_alloc;
+	}
+}
+
+/** Setup the input buffer state to scan directly from a user-specified character buffer.
+ * @param base the character buffer
+ * @param size the size in bytes of the character buffer
+ * 
+ * @return the newly allocated buffer state object. 
+ */
+YY_BUFFER_STATE xyy_scan_buffer  (char * base, yy_size_t  size )
+{
+	YY_BUFFER_STATE b;
+    
+	if ( size < 2 ||
+	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
+	     base[size-1] != YY_END_OF_BUFFER_CHAR )
+		/* They forgot to leave room for the EOB's. */
+		return 0;
+
+	b = (YY_BUFFER_STATE) xyyalloc(sizeof( struct yy_buffer_state )  );
+	if ( ! b )
+		YY_FATAL_ERROR( "out of dynamic memory in xyy_scan_buffer()" );
+
+	b->yy_buf_size = size - 2;	/* "- 2" to take care of EOB's */
+	b->yy_buf_pos = b->yy_ch_buf = base;
+	b->yy_is_our_buffer = 0;
+	b->yy_input_file = 0;
+	b->yy_n_chars = b->yy_buf_size;
+	b->yy_is_interactive = 0;
+	b->yy_at_bol = 1;
+	b->yy_fill_buffer = 0;
+	b->yy_buffer_status = YY_BUFFER_NEW;
+
+	xyy_switch_to_buffer(b  );
+
+	return b;
+}
+
+/** Setup the input buffer state to scan a string. The next call to xyylex() will
+ * scan from a @e copy of @a str.
+ * @param yystr a NUL-terminated string to scan
+ * 
+ * @return the newly allocated buffer state object.
+ * @note If you want to scan bytes that may contain NUL values, then use
+ *       xyy_scan_bytes() instead.
+ */
+YY_BUFFER_STATE xyy_scan_string (yyconst char * yystr )
+{
+    
+	return xyy_scan_bytes(yystr,strlen(yystr) );
+}
+
+/** Setup the input buffer state to scan the given bytes. The next call to xyylex() will
+ * scan from a @e copy of @a bytes.
+ * @param bytes the byte buffer to scan
+ * @param len the number of bytes in the buffer pointed to by @a bytes.
+ * 
+ * @return the newly allocated buffer state object.
+ */
+YY_BUFFER_STATE xyy_scan_bytes  (yyconst char * yybytes, int  _yybytes_len )
+{
+	YY_BUFFER_STATE b;
+	char *buf;
+	yy_size_t n;
+	int i;
+    
+	/* Get memory for full buffer, including space for trailing EOB's. */
+	n = _yybytes_len + 2;
+	buf = (char *) xyyalloc(n  );
+	if ( ! buf )
+		YY_FATAL_ERROR( "out of dynamic memory in xyy_scan_bytes()" );
+
+	for ( i = 0; i < _yybytes_len; ++i )
+		buf[i] = yybytes[i];
+
+	buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
+
+	b = xyy_scan_buffer(buf,n );
+	if ( ! b )
+		YY_FATAL_ERROR( "bad buffer in xyy_scan_bytes()" );
+
+	/* It's okay to grow etc. this buffer, and we should throw it
+	 * away when we're done.
+	 */
+	b->yy_is_our_buffer = 1;
+
+	return b;
+}
+
+#ifndef YY_EXIT_FAILURE
+#define YY_EXIT_FAILURE 2
+#endif
+
+static void yy_fatal_error (yyconst char* msg )
+{
+    	(void) fprintf( stderr, "%s\n", msg );
+	exit( YY_EXIT_FAILURE );
+}
+
+/* Redefine yyless() so it works in section 3 code. */
+
+#undef yyless
+#define yyless(n) \
+	do \
+		{ \
+		/* Undo effects of setting up xyytext. */ \
+        int yyless_macro_arg = (n); \
+        YY_LESS_LINENO(yyless_macro_arg);\
+		xyytext[xyyleng] = (yy_hold_char); \
+		(yy_c_buf_p) = xyytext + yyless_macro_arg; \
+		(yy_hold_char) = *(yy_c_buf_p); \
+		*(yy_c_buf_p) = '\0'; \
+		xyyleng = yyless_macro_arg; \
+		} \
+	while ( 0 )
+
+/* Accessor  methods (get/set functions) to struct members. */
+
+/** Get the current line number.
+ * 
+ */
+int xyyget_lineno  (void)
+{
+        
+    return xyylineno;
+}
+
+/** Get the input stream.
+ * 
+ */
+FILE *xyyget_in  (void)
+{
+        return xyyin;
+}
+
+/** Get the output stream.
+ * 
+ */
+FILE *xyyget_out  (void)
+{
+        return xyyout;
+}
+
+/** Get the length of the current token.
+ * 
+ */
+int xyyget_leng  (void)
+{
+        return xyyleng;
+}
+
+/** Get the current token.
+ * 
+ */
+
+char *xyyget_text  (void)
+{
+        return xyytext;
+}
+
+/** Set the current line number.
+ * @param line_number
+ * 
+ */
+void xyyset_lineno (int  line_number )
+{
+    
+    xyylineno = line_number;
+}
+
+/** Set the input stream. This does not discard the current
+ * input buffer.
+ * @param in_str A readable stream.
+ * 
+ * @see xyy_switch_to_buffer
+ */
+void xyyset_in (FILE *  in_str )
+{
+        xyyin = in_str ;
+}
+
+void xyyset_out (FILE *  out_str )
+{
+        xyyout = out_str ;
+}
+
+int xyyget_debug  (void)
+{
+        return xyy_flex_debug;
+}
+
+void xyyset_debug (int  bdebug )
+{
+        xyy_flex_debug = bdebug ;
+}
+
+static int yy_init_globals (void)
+{
+        /* Initialization is the same as for the non-reentrant scanner.
+     * This function is called from xyylex_destroy(), so don't allocate here.
+     */
+
+    (yy_buffer_stack) = 0;
+    (yy_buffer_stack_top) = 0;
+    (yy_buffer_stack_max) = 0;
+    (yy_c_buf_p) = (char *) 0;
+    (yy_init) = 0;
+    (yy_start) = 0;
+
+    (yy_state_buf) = 0;
+    (yy_state_ptr) = 0;
+    (yy_full_match) = 0;
+    (yy_lp) = 0;
+
+/* Defined in main.c */
+#ifdef YY_STDINIT
+    xyyin = stdin;
+    xyyout = stdout;
+#else
+    xyyin = (FILE *) 0;
+    xyyout = (FILE *) 0;
+#endif
+
+    /* For future reference: Set errno on error, since we are called by
+     * xyylex_init()
+     */
+    return 0;
+}
+
+/* xyylex_destroy is for both reentrant and non-reentrant scanners. */
+int xyylex_destroy  (void)
+{
+    
+    /* Pop the buffer stack, destroying each element. */
+	while(YY_CURRENT_BUFFER){
+		xyy_delete_buffer(YY_CURRENT_BUFFER  );
+		YY_CURRENT_BUFFER_LVALUE = NULL;
+		xyypop_buffer_state();
+	}
+
+	/* Destroy the stack itself. */
+	xyyfree((yy_buffer_stack) );
+	(yy_buffer_stack) = NULL;
+
+    xyyfree ( (yy_state_buf) );
+    (yy_state_buf)  = NULL;
+
+    /* Reset the globals. This is important in a non-reentrant scanner so the next time
+     * xyylex() is called, initialization will occur. */
+    yy_init_globals( );
+
+    return 0;
+}
+
+/*
+ * Internal utility routines.
+ */
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
+{
+	register int i;
+	for ( i = 0; i < n; ++i )
+		s1[i] = s2[i];
+}
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen (yyconst char * s )
+{
+	register int n;
+	for ( n = 0; s[n]; ++n )
+		;
+
+	return n;
+}
+#endif
+
+void *xyyalloc (yy_size_t  size )
+{
+	return (void *) malloc( size );
+}
+
+void *xyyrealloc  (void * ptr, yy_size_t  size )
+{
+	/* The cast to (char *) in the following accommodates both
+	 * implementations that use char* generic pointers, and those
+	 * that use void* generic pointers.  It works with the latter
+	 * because both ANSI C and C++ allow castless assignment from
+	 * any pointer type to void*, and deal with argument conversions
+	 * as though doing an assignment.
+	 */
+	return (void *) realloc( (char *) ptr, size );
+}
+
+void xyyfree (void * ptr )
+{
+	free( (char *) ptr );	/* see xyyrealloc() for (char *) cast */
+}
+
+#define YYTABLES_NAME "yytables"
+
+#line 626 "xLexer.lxx"

+ 6 - 6
pandatool/src/xfile/xLexer.lxx

@@ -34,7 +34,7 @@ static int error_count = 0;
 static int warning_count = 0;
 
 // This is the pointer to the current input stream.
-static istream *inp = NULL;
+static istream *input_p = NULL;
 
 // This is the name of the x file we're parsing.  We keep it so we
 // can print it out for error messages.
@@ -47,7 +47,7 @@ static string x_filename;
 
 void
 x_init_lexer(istream &in, const string &filename) {
-  inp = &in;
+  input_p = &in;
   x_filename = filename;
   x_line_number = 0;
   x_col_number = 0;
@@ -115,10 +115,10 @@ xyywarning(const string &msg) {
 // stdio FILE pointer.  This is flex-specific.
 static void
 input_chars(char *buffer, int &result, int max_size) {
-  nassertv(inp != NULL);
-  if (*inp) {
-    inp->read(buffer, max_size);
-    result = inp->gcount();
+  nassertv(input_p != NULL);
+  if (*input_p) {
+    input_p->read(buffer, max_size);
+    result = input_p->gcount();
     if (result >= 0 && result < max_size) {
       // Truncate at the end of the read.
       buffer[result] = '\0';

+ 266 - 179
pandatool/src/xfile/xParser.cxx.prebuilt

@@ -1,24 +1,22 @@
-/* A Bison parser, made by GNU Bison 2.3.  */
+/* A Bison parser, made by GNU Bison 2.4.2.  */
 
 /* Skeleton implementation for Bison's Yacc-like parsers in C
-
-   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-   Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
+   
+      Copyright (C) 1984, 1989-1990, 2000-2006, 2009-2010 Free Software
+   Foundation, Inc.
+   
+   This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+   
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-
+   
    You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street, Fifth Floor,
-   Boston, MA 02110-1301, USA.  */
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 /* As a special exception, you may create a larger work that contains
    part or all of the Bison parser skeleton and distribute that work
@@ -29,7 +27,7 @@
    special exception, which will cause the skeleton and the resulting
    Bison output files to be licensed under the GNU General Public
    License without this special exception.
-
+   
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
@@ -47,7 +45,7 @@
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "2.3"
+#define YYBISON_VERSION "2.4.2"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
@@ -55,17 +53,92 @@
 /* Pure parsers.  */
 #define YYPURE 0
 
+/* Push parsers.  */
+#define YYPUSH 0
+
+/* Pull parsers.  */
+#define YYPULL 1
+
 /* Using locations.  */
 #define YYLSP_NEEDED 0
 
 /* Substitute the variable and function names.  */
-#define yyparse xyyparse
-#define yylex   xyylex
-#define yyerror xyyerror
-#define yylval  xyylval
-#define yychar  xyychar
-#define yydebug xyydebug
-#define yynerrs xyynerrs
+#define yyparse         xyyparse
+#define yylex           xyylex
+#define yyerror         xyyerror
+#define yylval          xyylval
+#define yychar          xyychar
+#define yydebug         xyydebug
+#define yynerrs         xyynerrs
+
+
+/* Copy the first part of user declarations.  */
+
+/* Line 189 of yacc.c  */
+#line 12 "xParser.yxx"
+
+#include "xLexerDefs.h"
+#include "xParserDefs.h"
+#include "xFile.h"
+#include "xFileTemplate.h"
+#include "xFileDataDef.h"
+#include "xFileArrayDef.h"
+#include "xFileDataNodeTemplate.h"
+#include "xFileDataNodeReference.h"
+#include "pointerTo.h"
+#include "dcast.h"
+
+// Because our token type contains objects of type string, which
+// require correct copy construction (and not simply memcpying), we
+// cannot use bison's built-in auto-stack-grow feature.  As an easy
+// solution, we ensure here that we have enough yacc stack to start
+// with, and that it doesn't ever try to grow.
+#define YYINITDEPTH 1000
+#define YYMAXDEPTH 1000
+
+static XFile *x_file = (XFile *)NULL;
+static XFileNode *current_node = (XFileNode *)NULL;
+static PT(XFileDataDef) current_data_def = (XFileDataDef *)NULL;
+
+////////////////////////////////////////////////////////////////////
+// Defining the interface to the parser.
+////////////////////////////////////////////////////////////////////
+
+void
+x_init_parser(istream &in, const string &filename, XFile &file) {
+  x_file = &file;
+  current_node = &file;
+  x_init_lexer(in, filename);
+}
+
+void
+x_cleanup_parser() {
+  x_file = (XFile *)NULL;
+  current_node = (XFileNode *)NULL;
+}
+
+
+
+/* Line 189 of yacc.c  */
+#line 124 "y.tab.c"
+
+/* Enabling traces.  */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+
+/* Enabling verbose error messages.  */
+#ifdef YYERROR_VERBOSE
+# undef YYERROR_VERBOSE
+# define YYERROR_VERBOSE 1
+#else
+# define YYERROR_VERBOSE 0
+#endif
+
+/* Enabling the token table.  */
+#ifndef YYTOKEN_TABLE
+# define YYTOKEN_TABLE 0
+#endif
 
 
 /* Tokens.  */
@@ -143,83 +216,18 @@
 
 
 
-/* Copy the first part of user declarations.  */
-#line 12 "xParser.yxx"
-
-#include "xLexerDefs.h"
-#include "xParserDefs.h"
-#include "xFile.h"
-#include "xFileTemplate.h"
-#include "xFileDataDef.h"
-#include "xFileArrayDef.h"
-#include "xFileDataNodeTemplate.h"
-#include "xFileDataNodeReference.h"
-#include "pointerTo.h"
-#include "dcast.h"
-
-// Because our token type contains objects of type string, which
-// require correct copy construction (and not simply memcpying), we
-// cannot use bison's built-in auto-stack-grow feature.  As an easy
-// solution, we ensure here that we have enough yacc stack to start
-// with, and that it doesn't ever try to grow.
-#define YYINITDEPTH 1000
-#define YYMAXDEPTH 1000
-
-static XFile *x_file = (XFile *)NULL;
-static XFileNode *current_node = (XFileNode *)NULL;
-static PT(XFileDataDef) current_data_def = (XFileDataDef *)NULL;
-
-////////////////////////////////////////////////////////////////////
-// Defining the interface to the parser.
-////////////////////////////////////////////////////////////////////
-
-void
-x_init_parser(istream &in, const string &filename, XFile &file) {
-  x_file = &file;
-  current_node = &file;
-  x_init_lexer(in, filename);
-}
-
-void
-x_cleanup_parser() {
-  x_file = (XFile *)NULL;
-  current_node = (XFileNode *)NULL;
-}
-
-
-
-/* Enabling traces.  */
-#ifndef YYDEBUG
-# define YYDEBUG 0
-#endif
-
-/* Enabling verbose error messages.  */
-#ifdef YYERROR_VERBOSE
-# undef YYERROR_VERBOSE
-# define YYERROR_VERBOSE 1
-#else
-# define YYERROR_VERBOSE 0
-#endif
-
-/* Enabling the token table.  */
-#ifndef YYTOKEN_TABLE
-# define YYTOKEN_TABLE 0
-#endif
-
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef int YYSTYPE;
+
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
-# define YYSTYPE_IS_TRIVIAL 1
 #endif
 
 
-
 /* Copy the second part of user declarations.  */
 
 
-/* Line 216 of yacc.c.  */
-#line 223 "y.tab.c"
+/* Line 264 of yacc.c  */
+#line 231 "y.tab.c"
 
 #ifdef short
 # undef short
@@ -269,7 +277,7 @@ typedef short int yytype_int16;
 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
 
 #ifndef YY_
-# if YYENABLE_NLS
+# if defined YYENABLE_NLS && YYENABLE_NLS
 #  if ENABLE_NLS
 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
 #   define YY_(msgid) dgettext ("bison-runtime", msgid)
@@ -294,14 +302,14 @@ typedef short int yytype_int16;
 #if (defined __STDC__ || defined __C99__FUNC__ \
      || defined __cplusplus || defined _MSC_VER)
 static int
-YYID (int i)
+YYID (int yyi)
 #else
 static int
-YYID (i)
-    int i;
+YYID (yyi)
+    int yyi;
 #endif
 {
-  return i;
+  return yyi;
 }
 #endif
 
@@ -382,9 +390,9 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */
 /* A type that is properly aligned for any stack member.  */
 union yyalloc
 {
-  yytype_int16 yyss;
-  YYSTYPE yyvs;
-  };
+  yytype_int16 yyss_alloc;
+  YYSTYPE yyvs_alloc;
+};
 
 /* The size of the maximum gap between one aligned stack and the next.  */
 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
@@ -418,12 +426,12 @@ union yyalloc
    elements in the stack, and YYPTR gives the new location of the
    stack.  Advance YYPTR to a properly aligned location for the next
    stack.  */
-# define YYSTACK_RELOCATE(Stack)					\
+# define YYSTACK_RELOCATE(Stack_alloc, Stack)				\
     do									\
       {									\
 	YYSIZE_T yynewbytes;						\
-	YYCOPY (&yyptr->Stack, Stack, yysize);				\
-	Stack = &yyptr->Stack;						\
+	YYCOPY (&yyptr->Stack_alloc, Stack, yysize);			\
+	Stack = &yyptr->Stack_alloc;					\
 	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
 	yyptr += yynewbytes / sizeof (*yyptr);				\
       }									\
@@ -716,9 +724,18 @@ static const yytype_uint8 yystos[] =
 
 /* Like YYERROR except do call yyerror.  This remains here temporarily
    to ease the transition to the new meaning of YYERROR, for GCC.
-   Once GCC version 2 has supplanted version 1, this can go.  */
+   Once GCC version 2 has supplanted version 1, this can go.  However,
+   YYFAIL appears to be in use.  Nevertheless, it is formally deprecated
+   in Bison 2.4.2's NEWS entry, where a plan to phase it out is
+   discussed.  */
 
 #define YYFAIL		goto yyerrlab
+#if defined YYFAIL
+  /* This is here to suppress warnings from the GCC cpp's
+     -Wunused-macros.  Normally we don't worry about that warning, but
+     some users do, and we want to make it easy for users to remove
+     YYFAIL uses, which will produce warnings from Bison 2.5.  */
+#endif
 
 #define YYRECOVERING()  (!!yyerrstatus)
 
@@ -775,7 +792,7 @@ while (YYID (0))
    we won't break user code: when these are the locations we know.  */
 
 #ifndef YY_LOCATION_PRINT
-# if YYLTYPE_IS_TRIVIAL
+# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
 #  define YY_LOCATION_PRINT(File, Loc)			\
      fprintf (File, "%d.%d-%d.%d",			\
 	      (Loc).first_line, (Loc).first_column,	\
@@ -886,17 +903,20 @@ yy_symbol_print (yyoutput, yytype, yyvaluep)
 #if (defined __STDC__ || defined __C99__FUNC__ \
      || defined __cplusplus || defined _MSC_VER)
 static void
-yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
+yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
 #else
 static void
-yy_stack_print (bottom, top)
-    yytype_int16 *bottom;
-    yytype_int16 *top;
+yy_stack_print (yybottom, yytop)
+    yytype_int16 *yybottom;
+    yytype_int16 *yytop;
 #endif
 {
   YYFPRINTF (stderr, "Stack now");
-  for (; bottom <= top; ++bottom)
-    YYFPRINTF (stderr, " %d", *bottom);
+  for (; yybottom <= yytop; yybottom++)
+    {
+      int yybot = *yybottom;
+      YYFPRINTF (stderr, " %d", yybot);
+    }
   YYFPRINTF (stderr, "\n");
 }
 
@@ -930,11 +950,11 @@ yy_reduce_print (yyvsp, yyrule)
   /* The symbols being reduced.  */
   for (yyi = 0; yyi < yynrhs; yyi++)
     {
-      fprintf (stderr, "   $%d = ", yyi + 1);
+      YYFPRINTF (stderr, "   $%d = ", yyi + 1);
       yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
 		       &(yyvsp[(yyi + 1) - (yynrhs)])
 		       		       );
-      fprintf (stderr, "\n");
+      YYFPRINTF (stderr, "\n");
     }
 }
 
@@ -1214,10 +1234,8 @@ yydestruct (yymsg, yytype, yyvaluep)
 	break;
     }
 }
-
 
 /* Prevent warnings from -Wmissing-prototypes.  */
-
 #ifdef YYPARSE_PARAM
 #if defined __STDC__ || defined __cplusplus
 int yyparse (void *YYPARSE_PARAM);
@@ -1233,11 +1251,10 @@ int yyparse ();
 #endif /* ! YYPARSE_PARAM */
 
 
-
-/* The look-ahead symbol.  */
+/* The lookahead symbol.  */
 int yychar;
 
-/* The semantic value of the look-ahead symbol.  */
+/* The semantic value of the lookahead symbol.  */
 YYSTYPE yylval;
 
 /* Number of syntax errors so far.  */
@@ -1245,9 +1262,9 @@ int yynerrs;
 
 
 
-/*----------.
-| yyparse.  |
-`----------*/
+/*-------------------------.
+| yyparse or yypush_parse.  |
+`-------------------------*/
 
 #ifdef YYPARSE_PARAM
 #if (defined __STDC__ || defined __C99__FUNC__ \
@@ -1271,66 +1288,68 @@ yyparse ()
 #endif
 #endif
 {
-  
-  int yystate;
-  int yyn;
-  int yyresult;
-  /* Number of tokens to shift before error messages enabled.  */
-  int yyerrstatus;
-  /* Look-ahead token as an internal (translated) token number.  */
-  int yytoken = 0;
-#if YYERROR_VERBOSE
-  /* Buffer for error messages, and its allocated size.  */
-  char yymsgbuf[128];
-  char *yymsg = yymsgbuf;
-  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
-#endif
 
-  /* Three stacks and their tools:
-     `yyss': related to states,
-     `yyvs': related to semantic values,
-     `yyls': related to locations.
 
-     Refer to the stacks thru separate pointers, to allow yyoverflow
-     to reallocate them elsewhere.  */
+    int yystate;
+    /* Number of tokens to shift before error messages enabled.  */
+    int yyerrstatus;
 
-  /* The state stack.  */
-  yytype_int16 yyssa[YYINITDEPTH];
-  yytype_int16 *yyss = yyssa;
-  yytype_int16 *yyssp;
+    /* The stacks and their tools:
+       `yyss': related to states.
+       `yyvs': related to semantic values.
 
-  /* The semantic value stack.  */
-  YYSTYPE yyvsa[YYINITDEPTH];
-  YYSTYPE *yyvs = yyvsa;
-  YYSTYPE *yyvsp;
+       Refer to the stacks thru separate pointers, to allow yyoverflow
+       to reallocate them elsewhere.  */
 
+    /* The state stack.  */
+    yytype_int16 yyssa[YYINITDEPTH];
+    yytype_int16 *yyss;
+    yytype_int16 *yyssp;
 
+    /* The semantic value stack.  */
+    YYSTYPE yyvsa[YYINITDEPTH];
+    YYSTYPE *yyvs;
+    YYSTYPE *yyvsp;
 
-#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
-
-  YYSIZE_T yystacksize = YYINITDEPTH;
+    YYSIZE_T yystacksize;
 
+  int yyn;
+  int yyresult;
+  /* Lookahead token as an internal (translated) token number.  */
+  int yytoken;
   /* The variables used to return semantic value and location from the
      action routines.  */
   YYSTYPE yyval;
 
+#if YYERROR_VERBOSE
+  /* Buffer for error messages, and its allocated size.  */
+  char yymsgbuf[128];
+  char *yymsg = yymsgbuf;
+  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
+#endif
+
+#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
 
   /* The number of symbols on the RHS of the reduced rule.
      Keep to zero when no symbol should be popped.  */
   int yylen = 0;
 
+  yytoken = 0;
+  yyss = yyssa;
+  yyvs = yyvsa;
+  yystacksize = YYINITDEPTH;
+
   YYDPRINTF ((stderr, "Starting parse\n"));
 
   yystate = 0;
   yyerrstatus = 0;
   yynerrs = 0;
-  yychar = YYEMPTY;		/* Cause a token to be read.  */
+  yychar = YYEMPTY; /* Cause a token to be read.  */
 
   /* Initialize stack pointers.
      Waste one element of value and location stack
      so that they stay on the same level as the state stack.
      The wasted elements are never initialized.  */
-
   yyssp = yyss;
   yyvsp = yyvs;
 
@@ -1360,7 +1379,6 @@ yyparse ()
 	YYSTYPE *yyvs1 = yyvs;
 	yytype_int16 *yyss1 = yyss;
 
-
 	/* Each stack pointer address is followed by the size of the
 	   data in use in that stack, in bytes.  This used to be a
 	   conditional around just the two extra args, but that might
@@ -1368,7 +1386,6 @@ yyparse ()
 	yyoverflow (YY_("memory exhausted"),
 		    &yyss1, yysize * sizeof (*yyssp),
 		    &yyvs1, yysize * sizeof (*yyvsp),
-
 		    &yystacksize);
 
 	yyss = yyss1;
@@ -1391,9 +1408,8 @@ yyparse ()
 	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
 	if (! yyptr)
 	  goto yyexhaustedlab;
-	YYSTACK_RELOCATE (yyss);
-	YYSTACK_RELOCATE (yyvs);
-
+	YYSTACK_RELOCATE (yyss_alloc, yyss);
+	YYSTACK_RELOCATE (yyvs_alloc, yyvs);
 #  undef YYSTACK_RELOCATE
 	if (yyss1 != yyssa)
 	  YYSTACK_FREE (yyss1);
@@ -1404,7 +1420,6 @@ yyparse ()
       yyssp = yyss + yysize - 1;
       yyvsp = yyvs + yysize - 1;
 
-
       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
 		  (unsigned long int) yystacksize));
 
@@ -1414,6 +1429,9 @@ yyparse ()
 
   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
 
+  if (yystate == YYFINAL)
+    YYACCEPT;
+
   goto yybackup;
 
 /*-----------.
@@ -1422,16 +1440,16 @@ yyparse ()
 yybackup:
 
   /* Do appropriate processing given the current state.  Read a
-     look-ahead token if we need one and don't already have one.  */
+     lookahead token if we need one and don't already have one.  */
 
-  /* First try to decide what to do without reference to look-ahead token.  */
+  /* First try to decide what to do without reference to lookahead token.  */
   yyn = yypact[yystate];
   if (yyn == YYPACT_NINF)
     goto yydefault;
 
-  /* Not known => get a look-ahead token if don't already have one.  */
+  /* Not known => get a lookahead token if don't already have one.  */
 
-  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
+  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
   if (yychar == YYEMPTY)
     {
       YYDPRINTF ((stderr, "Reading a token: "));
@@ -1463,20 +1481,16 @@ yybackup:
       goto yyreduce;
     }
 
-  if (yyn == YYFINAL)
-    YYACCEPT;
-
   /* Count tokens shifted since error; after three, turn off error
      status.  */
   if (yyerrstatus)
     yyerrstatus--;
 
-  /* Shift the look-ahead token.  */
+  /* Shift the lookahead token.  */
   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
 
-  /* Discard the shifted token unless it is eof.  */
-  if (yychar != YYEOF)
-    yychar = YYEMPTY;
+  /* Discard the shifted token.  */
+  yychar = YYEMPTY;
 
   yystate = yyn;
   *++yyvsp = yylval;
@@ -1516,6 +1530,8 @@ yyreduce:
   switch (yyn)
     {
         case 6:
+
+/* Line 1464 of yacc.c  */
 #line 116 "xParser.yxx"
     {
   (yyval.u.node) = current_node;
@@ -1526,6 +1542,8 @@ yyreduce:
     break;
 
   case 7:
+
+/* Line 1464 of yacc.c  */
 #line 123 "xParser.yxx"
     {
   (yyval.u.node) = current_node;
@@ -1534,6 +1552,8 @@ yyreduce:
     break;
 
   case 12:
+
+/* Line 1464 of yacc.c  */
 #line 141 "xParser.yxx"
     {
   DCAST(XFileTemplate, current_node)->set_open(true);
@@ -1541,6 +1561,8 @@ yyreduce:
     break;
 
   case 19:
+
+/* Line 1464 of yacc.c  */
 #line 160 "xParser.yxx"
     {
   current_data_def = new XFileDataDef(x_file, (yyvsp[(2) - (3)].str), (yyvsp[(1) - (3)].u.primitive_type));
@@ -1549,6 +1571,8 @@ yyreduce:
     break;
 
   case 21:
+
+/* Line 1464 of yacc.c  */
 #line 172 "xParser.yxx"
     {
   XFileTemplate *xtemplate = x_file->find_template((yyvsp[(1) - (3)].str));
@@ -1562,6 +1586,8 @@ yyreduce:
     break;
 
   case 22:
+
+/* Line 1464 of yacc.c  */
 #line 185 "xParser.yxx"
     {
   (yyval.u.primitive_type) = XFileDataDef::T_word;
@@ -1569,6 +1595,8 @@ yyreduce:
     break;
 
   case 23:
+
+/* Line 1464 of yacc.c  */
 #line 189 "xParser.yxx"
     {
   (yyval.u.primitive_type) = XFileDataDef::T_dword;
@@ -1576,6 +1604,8 @@ yyreduce:
     break;
 
   case 24:
+
+/* Line 1464 of yacc.c  */
 #line 193 "xParser.yxx"
     {
   (yyval.u.primitive_type) = XFileDataDef::T_float;
@@ -1583,6 +1613,8 @@ yyreduce:
     break;
 
   case 25:
+
+/* Line 1464 of yacc.c  */
 #line 197 "xParser.yxx"
     {
   (yyval.u.primitive_type) = XFileDataDef::T_double;
@@ -1590,6 +1622,8 @@ yyreduce:
     break;
 
   case 26:
+
+/* Line 1464 of yacc.c  */
 #line 201 "xParser.yxx"
     {
   (yyval.u.primitive_type) = XFileDataDef::T_char;
@@ -1597,6 +1631,8 @@ yyreduce:
     break;
 
   case 27:
+
+/* Line 1464 of yacc.c  */
 #line 205 "xParser.yxx"
     {
   (yyval.u.primitive_type) = XFileDataDef::T_uchar;
@@ -1604,6 +1640,8 @@ yyreduce:
     break;
 
   case 28:
+
+/* Line 1464 of yacc.c  */
 #line 209 "xParser.yxx"
     {
   (yyval.u.primitive_type) = XFileDataDef::T_sword;
@@ -1611,6 +1649,8 @@ yyreduce:
     break;
 
   case 29:
+
+/* Line 1464 of yacc.c  */
 #line 213 "xParser.yxx"
     {
   (yyval.u.primitive_type) = XFileDataDef::T_sdword;
@@ -1618,6 +1658,8 @@ yyreduce:
     break;
 
   case 30:
+
+/* Line 1464 of yacc.c  */
 #line 217 "xParser.yxx"
     {
   (yyval.u.primitive_type) = XFileDataDef::T_string;
@@ -1625,6 +1667,8 @@ yyreduce:
     break;
 
   case 31:
+
+/* Line 1464 of yacc.c  */
 #line 221 "xParser.yxx"
     {
   (yyval.u.primitive_type) = XFileDataDef::T_unicode;
@@ -1632,6 +1676,8 @@ yyreduce:
     break;
 
   case 32:
+
+/* Line 1464 of yacc.c  */
 #line 225 "xParser.yxx"
     {
   (yyval.u.primitive_type) = XFileDataDef::T_cstring;
@@ -1639,6 +1685,8 @@ yyreduce:
     break;
 
   case 33:
+
+/* Line 1464 of yacc.c  */
 #line 232 "xParser.yxx"
     {
   current_data_def = new XFileDataDef(x_file, (yyvsp[(2) - (2)].str), (yyvsp[(1) - (2)].u.primitive_type));
@@ -1647,6 +1695,8 @@ yyreduce:
     break;
 
   case 34:
+
+/* Line 1464 of yacc.c  */
 #line 237 "xParser.yxx"
     {
   XFileTemplate *xtemplate = x_file->find_template((yyvsp[(1) - (2)].str));
@@ -1660,6 +1710,8 @@ yyreduce:
     break;
 
   case 38:
+
+/* Line 1464 of yacc.c  */
 #line 259 "xParser.yxx"
     {
   current_data_def->add_array_def(XFileArrayDef((yyvsp[(1) - (1)].u.number)));
@@ -1667,6 +1719,8 @@ yyreduce:
     break;
 
   case 39:
+
+/* Line 1464 of yacc.c  */
 #line 263 "xParser.yxx"
     {
   XFileNode *data_def = current_node->find_child((yyvsp[(1) - (1)].str));
@@ -1679,18 +1733,24 @@ yyreduce:
     break;
 
   case 40:
+
+/* Line 1464 of yacc.c  */
 #line 275 "xParser.yxx"
     {
 }
     break;
 
   case 41:
+
+/* Line 1464 of yacc.c  */
 #line 278 "xParser.yxx"
     {
 }
     break;
 
   case 42:
+
+/* Line 1464 of yacc.c  */
 #line 284 "xParser.yxx"
     {
   XFileTemplate *xtemplate = x_file->find_template((yyvsp[(1) - (1)].str));
@@ -1703,6 +1763,8 @@ yyreduce:
     break;
 
   case 43:
+
+/* Line 1464 of yacc.c  */
 #line 293 "xParser.yxx"
     {
   XFileTemplate *xtemplate = x_file->find_template((yyvsp[(2) - (2)].guid));
@@ -1719,6 +1781,8 @@ yyreduce:
     break;
 
   case 46:
+
+/* Line 1464 of yacc.c  */
 #line 314 "xParser.yxx"
     {
   (yyval.str) = (yyvsp[(1) - (2)].str) + " " + (yyvsp[(2) - (2)].str);
@@ -1726,6 +1790,8 @@ yyreduce:
     break;
 
   case 47:
+
+/* Line 1464 of yacc.c  */
 #line 318 "xParser.yxx"
     {
   (yyval.str) = (yyvsp[(1) - (2)].str) + " " + (yyvsp[(2) - (2)].str);
@@ -1733,6 +1799,8 @@ yyreduce:
     break;
 
   case 48:
+
+/* Line 1464 of yacc.c  */
 #line 325 "xParser.yxx"
     {
   (yyval.str) = string();
@@ -1740,6 +1808,8 @@ yyreduce:
     break;
 
   case 51:
+
+/* Line 1464 of yacc.c  */
 #line 337 "xParser.yxx"
     {
   (yyval.guid) = WindowsGuid();
@@ -1747,6 +1817,8 @@ yyreduce:
     break;
 
   case 54:
+
+/* Line 1464 of yacc.c  */
 #line 349 "xParser.yxx"
     {
   XFileTemplate *xtemplate = x_file->find_template((yyvsp[(1) - (3)].str));
@@ -1764,6 +1836,8 @@ yyreduce:
     break;
 
   case 55:
+
+/* Line 1464 of yacc.c  */
 #line 363 "xParser.yxx"
     {
   if (current_node->is_exact_type(XFileDataNodeTemplate::get_class_type())) {
@@ -1778,6 +1852,8 @@ yyreduce:
     break;
 
   case 58:
+
+/* Line 1464 of yacc.c  */
 #line 382 "xParser.yxx"
     {
   // nested references should be added as children too.
@@ -1786,6 +1862,8 @@ yyreduce:
     break;
 
   case 59:
+
+/* Line 1464 of yacc.c  */
 #line 387 "xParser.yxx"
     {
   // nested objects are just quietly added as children.
@@ -1793,6 +1871,8 @@ yyreduce:
     break;
 
   case 60:
+
+/* Line 1464 of yacc.c  */
 #line 391 "xParser.yxx"
     {
   if (current_node->is_exact_type(XFileDataNodeTemplate::get_class_type())) {
@@ -1804,6 +1884,8 @@ yyreduce:
     break;
 
   case 61:
+
+/* Line 1464 of yacc.c  */
 #line 399 "xParser.yxx"
     {
   if (current_node->is_exact_type(XFileDataNodeTemplate::get_class_type())) {
@@ -1815,6 +1897,8 @@ yyreduce:
     break;
 
   case 62:
+
+/* Line 1464 of yacc.c  */
 #line 407 "xParser.yxx"
     {
   if (current_node->is_exact_type(XFileDataNodeTemplate::get_class_type())) {
@@ -1826,12 +1910,16 @@ yyreduce:
     break;
 
   case 63:
+
+/* Line 1464 of yacc.c  */
 #line 415 "xParser.yxx"
     {
 }
     break;
 
   case 69:
+
+/* Line 1464 of yacc.c  */
 #line 438 "xParser.yxx"
     {
   XFileDataNodeTemplate *data_object = x_file->find_data_object((yyvsp[(1) - (1)].str));
@@ -1844,6 +1932,8 @@ yyreduce:
     break;
 
   case 70:
+
+/* Line 1464 of yacc.c  */
 #line 447 "xParser.yxx"
     {
   XFileDataNodeTemplate *data_object = x_file->find_data_object((yyvsp[(2) - (2)].guid));
@@ -1861,8 +1951,9 @@ yyreduce:
     break;
 
 
-/* Line 1267 of yacc.c.  */
-#line 1866 "y.tab.c"
+
+/* Line 1464 of yacc.c  */
+#line 1957 "y.tab.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -1873,7 +1964,6 @@ yyreduce:
 
   *++yyvsp = yyval;
 
-
   /* Now `shift' the result of the reduction.  Determine what state
      that goes to, based on the state we popped back to and the rule
      number reduced by.  */
@@ -1938,7 +2028,7 @@ yyerrlab:
 
   if (yyerrstatus == 3)
     {
-      /* If just tried and failed to reuse look-ahead token after an
+      /* If just tried and failed to reuse lookahead token after an
 	 error, discard it.  */
 
       if (yychar <= YYEOF)
@@ -1955,7 +2045,7 @@ yyerrlab:
 	}
     }
 
-  /* Else will try to reuse look-ahead token after shifting the error
+  /* Else will try to reuse lookahead token after shifting the error
      token.  */
   goto yyerrlab1;
 
@@ -2012,9 +2102,6 @@ yyerrlab1:
       YY_STACK_PRINT (yyss, yyssp);
     }
 
-  if (yyn == YYFINAL)
-    YYACCEPT;
-
   *++yyvsp = yylval;
 
 
@@ -2039,7 +2126,7 @@ yyabortlab:
   yyresult = 1;
   goto yyreturn;
 
-#ifndef yyoverflow
+#if !defined(yyoverflow) || YYERROR_VERBOSE
 /*-------------------------------------------------.
 | yyexhaustedlab -- memory exhaustion comes here.  |
 `-------------------------------------------------*/
@@ -2050,7 +2137,7 @@ yyexhaustedlab:
 #endif
 
 yyreturn:
-  if (yychar != YYEOF && yychar != YYEMPTY)
+  if (yychar != YYEMPTY)
      yydestruct ("Cleanup: discarding lookahead",
 		 yytoken, &yylval);
   /* Do not reclaim the symbols of the rule which action triggered

+ 15 - 16
pandatool/src/xfile/xParser.h.prebuilt

@@ -1,24 +1,22 @@
-/* A Bison parser, made by GNU Bison 2.3.  */
+/* A Bison parser, made by GNU Bison 2.4.2.  */
 
 /* Skeleton interface for Bison's Yacc-like parsers in C
-
-   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
-   Free Software Foundation, Inc.
-
-   This program is free software; you can redistribute it and/or modify
+   
+      Copyright (C) 1984, 1989-1990, 2000-2006, 2009-2010 Free Software
+   Foundation, Inc.
+   
+   This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
-   any later version.
-
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+   
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-
+   
    You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street, Fifth Floor,
-   Boston, MA 02110-1301, USA.  */
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 /* As a special exception, you may create a larger work that contains
    part or all of the Bison parser skeleton and distribute that work
@@ -29,10 +27,11 @@
    special exception, which will cause the skeleton and the resulting
    Bison output files to be licensed under the GNU General Public
    License without this special exception.
-
+   
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
+
 /* Tokens.  */
 #ifndef YYTOKENTYPE
 # define YYTOKENTYPE
@@ -109,11 +108,11 @@
 
 
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef int YYSTYPE;
+
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
-# define YYSTYPE_IS_TRIVIAL 1
 #endif
 
 extern YYSTYPE xyylval;
 
+

Some files were not shown because too many files changed in this diff