#line 1 "tools/widl/parser.yy.c"

#line 3 "tools/widl/parser.yy.c"

#define  YY_INT_ALIGNED short int

/* A lexical scanner generated by flex */

#define yy_create_buffer parser__create_buffer
#define yy_delete_buffer parser__delete_buffer
#define yy_scan_buffer parser__scan_buffer
#define yy_scan_string parser__scan_string
#define yy_scan_bytes parser__scan_bytes
#define yy_init_buffer parser__init_buffer
#define yy_flush_buffer parser__flush_buffer
#define yy_load_buffer_state parser__load_buffer_state
#define yy_switch_to_buffer parser__switch_to_buffer
#define yypush_buffer_state parser_push_buffer_state
#define yypop_buffer_state parser_pop_buffer_state
#define yyensure_buffer_stack parser_ensure_buffer_stack
#define yy_flex_debug parser__flex_debug
#define yyin parser_in
#define yyleng parser_leng
#define yylex parser_lex
#define yylineno parser_lineno
#define yyout parser_out
#define yyrestart parser_restart
#define yytext parser_text
#define yywrap parser_wrap
#define yyalloc parser_alloc
#define yyrealloc parser_realloc
#define yyfree parser_free

#define FLEX_SCANNER
#define YY_FLEX_MAJOR_VERSION 2
#define YY_FLEX_MINOR_VERSION 6
#define YY_FLEX_SUBMINOR_VERSION 4
#if YY_FLEX_SUBMINOR_VERSION > 0
#define FLEX_BETA
#endif

#ifdef yy_create_buffer
#define parser__create_buffer_ALREADY_DEFINED
#else
#define yy_create_buffer parser__create_buffer
#endif

#ifdef yy_delete_buffer
#define parser__delete_buffer_ALREADY_DEFINED
#else
#define yy_delete_buffer parser__delete_buffer
#endif

#ifdef yy_scan_buffer
#define parser__scan_buffer_ALREADY_DEFINED
#else
#define yy_scan_buffer parser__scan_buffer
#endif

#ifdef yy_scan_string
#define parser__scan_string_ALREADY_DEFINED
#else
#define yy_scan_string parser__scan_string
#endif

#ifdef yy_scan_bytes
#define parser__scan_bytes_ALREADY_DEFINED
#else
#define yy_scan_bytes parser__scan_bytes
#endif

#ifdef yy_init_buffer
#define parser__init_buffer_ALREADY_DEFINED
#else
#define yy_init_buffer parser__init_buffer
#endif

#ifdef yy_flush_buffer
#define parser__flush_buffer_ALREADY_DEFINED
#else
#define yy_flush_buffer parser__flush_buffer
#endif

#ifdef yy_load_buffer_state
#define parser__load_buffer_state_ALREADY_DEFINED
#else
#define yy_load_buffer_state parser__load_buffer_state
#endif

#ifdef yy_switch_to_buffer
#define parser__switch_to_buffer_ALREADY_DEFINED
#else
#define yy_switch_to_buffer parser__switch_to_buffer
#endif

#ifdef yypush_buffer_state
#define parser_push_buffer_state_ALREADY_DEFINED
#else
#define yypush_buffer_state parser_push_buffer_state
#endif

#ifdef yypop_buffer_state
#define parser_pop_buffer_state_ALREADY_DEFINED
#else
#define yypop_buffer_state parser_pop_buffer_state
#endif

#ifdef yyensure_buffer_stack
#define parser_ensure_buffer_stack_ALREADY_DEFINED
#else
#define yyensure_buffer_stack parser_ensure_buffer_stack
#endif

#ifdef yylex
#define parser_lex_ALREADY_DEFINED
#else
#define yylex parser_lex
#endif

#ifdef yyrestart
#define parser_restart_ALREADY_DEFINED
#else
#define yyrestart parser_restart
#endif

#ifdef yylex_init
#define parser_lex_init_ALREADY_DEFINED
#else
#define yylex_init parser_lex_init
#endif

#ifdef yylex_init_extra
#define parser_lex_init_extra_ALREADY_DEFINED
#else
#define yylex_init_extra parser_lex_init_extra
#endif

#ifdef yylex_destroy
#define parser_lex_destroy_ALREADY_DEFINED
#else
#define yylex_destroy parser_lex_destroy
#endif

#ifdef yyget_debug
#define parser_get_debug_ALREADY_DEFINED
#else
#define yyget_debug parser_get_debug
#endif

#ifdef yyset_debug
#define parser_set_debug_ALREADY_DEFINED
#else
#define yyset_debug parser_set_debug
#endif

#ifdef yyget_extra
#define parser_get_extra_ALREADY_DEFINED
#else
#define yyget_extra parser_get_extra
#endif

#ifdef yyset_extra
#define parser_set_extra_ALREADY_DEFINED
#else
#define yyset_extra parser_set_extra
#endif

#ifdef yyget_in
#define parser_get_in_ALREADY_DEFINED
#else
#define yyget_in parser_get_in
#endif

#ifdef yyset_in
#define parser_set_in_ALREADY_DEFINED
#else
#define yyset_in parser_set_in
#endif

#ifdef yyget_out
#define parser_get_out_ALREADY_DEFINED
#else
#define yyget_out parser_get_out
#endif

#ifdef yyset_out
#define parser_set_out_ALREADY_DEFINED
#else
#define yyset_out parser_set_out
#endif

#ifdef yyget_leng
#define parser_get_leng_ALREADY_DEFINED
#else
#define yyget_leng parser_get_leng
#endif

#ifdef yyget_text
#define parser_get_text_ALREADY_DEFINED
#else
#define yyget_text parser_get_text
#endif

#ifdef yyget_lineno
#define parser_get_lineno_ALREADY_DEFINED
#else
#define yyget_lineno parser_get_lineno
#endif

#ifdef yyset_lineno
#define parser_set_lineno_ALREADY_DEFINED
#else
#define yyset_lineno parser_set_lineno
#endif

#ifdef yywrap
#define parser_wrap_ALREADY_DEFINED
#else
#define yywrap parser_wrap
#endif

#ifdef yyget_lval
#define parser_get_lval_ALREADY_DEFINED
#else
#define yyget_lval parser_get_lval
#endif

#ifdef yyset_lval
#define parser_set_lval_ALREADY_DEFINED
#else
#define yyset_lval parser_set_lval
#endif

#ifdef yyget_lloc
#define parser_get_lloc_ALREADY_DEFINED
#else
#define yyget_lloc parser_get_lloc
#endif

#ifdef yyset_lloc
#define parser_set_lloc_ALREADY_DEFINED
#else
#define yyset_lloc parser_set_lloc
#endif

#ifdef yyalloc
#define parser_alloc_ALREADY_DEFINED
#else
#define yyalloc parser_alloc
#endif

#ifdef yyrealloc
#define parser_realloc_ALREADY_DEFINED
#else
#define yyrealloc parser_realloc
#endif

#ifdef yyfree
#define parser_free_ALREADY_DEFINED
#else
#define yyfree parser_free
#endif

#ifdef yytext
#define parser_text_ALREADY_DEFINED
#else
#define yytext parser_text
#endif

#ifdef yyleng
#define parser_leng_ALREADY_DEFINED
#else
#define yyleng parser_leng
#endif

#ifdef yyin
#define parser_in_ALREADY_DEFINED
#else
#define yyin parser_in
#endif

#ifdef yyout
#define parser_out_ALREADY_DEFINED
#else
#define yyout parser_out
#endif

#ifdef yy_flex_debug
#define parser__flex_debug_ALREADY_DEFINED
#else
#define yy_flex_debug parser__flex_debug
#endif

#ifdef yylineno
#define parser_lineno_ALREADY_DEFINED
#else
#define yylineno parser_lineno
#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

/* C++ systems might need __STDC_LIMIT_MACROS defined 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;

/* 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

#ifndef SIZE_MAX
#define SIZE_MAX               (~(size_t)0)
#endif

#endif /* ! C99 */

#endif /* ! FLEXINT_H */

/* begin standard C++ headers. */

/* TODO: this is always defined, so inline it */
#define yyconst const

#if defined(__GNUC__) && __GNUC__ >= 3
#define yynoreturn __attribute__((__noreturn__))
#else
#define yynoreturn
#endif

/* Returned upon end-of-file. */
#define YY_NULL 0

/* Promotes a possibly negative, possibly signed char to an
 *   integer in range [0..255] for use as an array index.
 */
#define YY_SC_TO_UI(c) ((YY_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 yyrestart( yyin  )
#define YY_END_OF_BUFFER_CHAR 0

/* Size of default input buffer. */
#ifndef YY_BUF_SIZE
#ifdef __ia64__
/* On IA-64, the buffer size is 16k, not 8k.
 * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
 * Ditto for the __ia64__ case accordingly.
 */
#define YY_BUF_SIZE 32768
#else
#define YY_BUF_SIZE 16384
#endif /* __ia64__ */
#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

#ifndef YY_TYPEDEF_YY_SIZE_T
#define YY_TYPEDEF_YY_SIZE_T
typedef size_t yy_size_t;
#endif

extern int yyleng;

extern FILE *yyin, *yyout;

#define EOB_ACT_CONTINUE_SCAN 0
#define EOB_ACT_END_OF_FILE 1
#define EOB_ACT_LAST_MATCH 2
    
    #define YY_LESS_LINENO(n)
    #define YY_LINENO_REWIND_TO(ptr)
    
/* Return all but the first "n" matched characters back to the input stream. */
#define yyless(n) \
	do \
		{ \
		/* Undo effects of setting up yytext. */ \
        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 yytext again */ \
		} \
	while ( 0 )
#define unput(c) yyunput( c, (yytext_ptr)  )

#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.
	 */
	int 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 yyrestart()), so that the user can continue scanning by
	 * just pointing yyin 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 = NULL; /**< 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 yytext is formed. */
static char yy_hold_char;
static int yy_n_chars;		/* number of characters read into yy_ch_buf */
int yyleng;

/* Points to current character in buffer. */
static char *yy_c_buf_p = NULL;
static int yy_init = 0;		/* whether we need to initialize */
static int yy_start = 0;	/* start state number */

/* Flag which is used to allow yywrap()'s to do buffer switches
 * instead of setting up a fresh yyin.  A bit of a hack ...
 */
static int yy_did_buffer_switch_on_eof;

void yyrestart ( FILE *input_file  );
void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer  );
YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size  );
void yy_delete_buffer ( YY_BUFFER_STATE b  );
void yy_flush_buffer ( YY_BUFFER_STATE b  );
void yypush_buffer_state ( YY_BUFFER_STATE new_buffer  );
void yypop_buffer_state ( void );

static void yyensure_buffer_stack ( void );
static void yy_load_buffer_state ( void );
static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file  );
#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER )

YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size  );
YY_BUFFER_STATE yy_scan_string ( const char *yy_str  );
YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len  );

void *yyalloc ( yy_size_t  );
void *yyrealloc ( void *, yy_size_t  );
void yyfree ( void *  );

#define yy_new_buffer yy_create_buffer
#define yy_set_interactive(is_interactive) \
	{ \
	if ( ! YY_CURRENT_BUFFER ){ \
        yyensure_buffer_stack (); \
		YY_CURRENT_BUFFER_LVALUE =    \
            yy_create_buffer( yyin, YY_BUF_SIZE ); \
	} \
	YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
	}
#define yy_set_bol(at_bol) \
	{ \
	if ( ! YY_CURRENT_BUFFER ){\
        yyensure_buffer_stack (); \
		YY_CURRENT_BUFFER_LVALUE =    \
            yy_create_buffer( yyin, YY_BUF_SIZE ); \
	} \
	YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
	}
#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)

/* Begin user sect3 */

#define parser_wrap() (/*CONSTCOND*/1)
#define YY_SKIP_YYWRAP
typedef flex_uint8_t YY_CHAR;

FILE *yyin = NULL, *yyout = NULL;

typedef int yy_state_type;

extern int yylineno;
int yylineno = 1;

extern char *yytext;
#ifdef yytext_ptr
#undef yytext_ptr
#endif
#define yytext_ptr yytext

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 yynoreturn yy_fatal_error ( const char* msg  );

/* Done after the current pattern has been matched and before the
 * corresponding action - sets up yytext.
 */
#define YY_DO_BEFORE_ACTION \
	(yytext_ptr) = yy_bp; \
	yyleng = (int) (yy_cp - yy_bp); \
	(yy_hold_char) = *yy_cp; \
	*yy_cp = '\0'; \
	(yy_c_buf_p) = yy_cp;
#define YY_NUM_RULES 219
#define YY_END_OF_BUFFER 220
/* 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 const flex_int16_t yy_accept[1469] =
    {   0,
        0,    0,    0,    0,    0,    0,    0,    0,    4,    4,
      220,  218,  207,  206,  218,  218,  218,  218,  218,  218,
      202,  202,  218,  218,  218,  200,  200,  200,  200,  200,
      200,  144,  200,  200,  200,  200,  200,  200,  200,  200,
      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
      200,  218,  207,  143,  200,  218,  202,  202,  200,  200,
        8,  200,  200,  200,  200,  200,  200,  200,  200,  200,
      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
      207,  143,  219,    5,    7,  219,    4,    4,    4,  212,
        0,  204,    0,  216,    0,  205,    0,  210,    0,    0,

      202,  202,  202,    0,  208,  214,  211,  213,  209,  200,
      200,    0,  200,  200,  200,  200,  200,  200,  200,  200,
      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
      200,  200,  200,  200,  200,  200,  200,  215,    0,  143,
        0,  143,    0,  200,    0,  202,    0,  200,  200,  200,
      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
      200,  200,  200,  200,  200,  200,  200,  200,  200,   68,

      200,  200,  200,   74,  200,  200,  200,  200,  200,  200,
      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
      200,    0,  143,  143,    5,    5,    7,    0,    6,    0,
        4,    4,    4,  217,  141,  201,  200,    0,  203,    0,
      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
      200,  200,  200,  200,  200,  200,  200,  200,  177,  200,
      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,

      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
      200,  200,    0,    0,  200,    0,  202,    0,  200,  200,
      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
      200,  200,  200,   84,  200,  200,  200,  200,  200,   94,
      200,  200,   98,  200,  200,  200,  200,  108,  200,  200,
      200,  112,  200,  200,  200,  200,  200,  200,  200,  200,

      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
      200,  200,  200,    6,    4,    4,    0,  201,  201,  200,
      146,  200,  147,  200,  200,  200,  200,  157,  158,  200,
      159,  200,  200,  200,  200,  200,  200,  200,  200,  168,
      200,  200,  200,  200,  200,  200,  200,  200,  200,  180,
      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
      200,  200,  200,  200,  200,  200,  200,  200,  200,  198,
      200,    0,    0,  200,    0,  202,    0,  200,  200,  200,
      200,  200,  200,  200,  200,  200,  200,  200,  200,   22,
      200,  157,  200,  200,   27,  200,  200,  200,  200,  200,

      200,  200,  200,  200,  200,  200,   48,  200,  200,  200,
      200,  200,  200,  200,  200,  200,  200,   60,  200,  200,
      200,  200,  200,  200,  200,  200,  200,  200,   77,  200,
      200,  200,  200,  200,  200,  200,  200,  200,  200,   89,
      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
      200,  133,  200,  200,  200,  200,  200,    4,    4,    0,
      141,  145,  200,  200,  200,  200,  200,  148,  200,  161,
      200,  200,  200,  200,  200,  200,  200,  200,  171,  200,

      173,  200,  200,  200,  200,  200,  200,  200,  200,  200,
      200,  200,  200,  188,  200,  200,  191,  200,  200,  200,
      200,  200,  196,  200,  200,    0,    0,  200,    0,  202,
        0,  200,  200,  200,   12,  200,  200,  200,  200,  200,
       18,  200,  200,  200,  200,  200,  200,  200,  200,  200,
      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
      200,  200,   52,  200,  200,  200,  200,   58,  200,  200,
      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
      200,  200,  200,   80,  200,   82,  200,  200,  200,  200,
      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,

      200,  200,  200,  200,  107,  200,  110,  200,  200,  200,
      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
      200,    4,    3,  200,  200,  200,  200,  200,  200,  200,
      200,  200,  200,  200,  200,  167,  200,  170,  200,  174,
      176,  200,  200,  200,  182,  200,  149,  200,  200,  200,
      200,  189,  190,  192,  200,  193,  194,  200,  200,  200,
        0,    0,  200,    0,  202,    0,  200,  200,  200,  200,
      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
      200,  200,  200,  200,  200,  200,   36,   37,  200,  200,

      200,  200,  200,  200,  200,   50,  200,  200,  200,  200,
      200,  200,  200,   61,  200,  200,  200,   67,  200,   70,
       71,  200,  200,  200,  200,  200,  200,  200,  200,  200,
       86,  200,  200,  200,   91,   93,  200,  200,  200,  200,
      200,  200,  102,  200,  200,  200,  109,  200,  200,  200,
      200,  116,  117,  200,  120,  200,  122,  200,  124,  194,
      200,  200,  200,  130,  200,  200,  200,  135,  200,  200,
      200,    4,    3,    3,  200,  152,  154,  200,  200,  156,
      160,  200,  163,  164,  200,  200,  200,  200,  200,  200,
      179,  181,  200,  200,  200,  200,  200,  150,  195,  200,

      199,    0,    0,  200,    0,  202,    0,  200,  200,  200,
      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
       25,  200,  200,  200,  200,  200,   35,  164,  200,  200,
      200,   46,  200,  200,  200,  200,  200,  200,  200,  200,
      200,  200,  200,  200,  200,  200,  200,   75,  200,  200,
      200,  200,   83,   85,  200,  200,  200,  200,  200,  200,
      200,  200,  200,  200,  103,  104,  200,  200,  200,  200,
      200,  200,  119,  200,  200,  200,  200,  200,  200,  200,
      200,  134,  136,  200,  200,    4,    3,  200,  200,  200,
      200,  200,  165,  200,  200,  172,  200,  200,  200,  200,

      185,  186,  200,  197,    0,  139,  200,    0,  202,    0,
      200,  200,  200,  200,   14,  200,  200,  200,  200,  200,
       21,  200,  200,   26,  200,  200,  200,   33,  200,  200,
      200,  200,  200,  200,  200,  200,  200,   51,   53,  200,
      200,  200,  200,  200,  200,   63,  200,  200,  200,  200,
      200,  200,   79,  200,  200,  200,  200,  200,  200,   96,
       97,   99,  200,  200,  200,  200,  111,  200,  200,  200,
      200,  121,  200,  200,  200,  200,  200,  200,  200,  200,
      200,  200,    4,    3,  200,  153,  151,  200,  162,  200,
      200,  175,  178,  183,  200,  200,    0,  200,    0,    0,

      202,  200,  200,   13,  200,   16,   17,  200,  200,   23,
      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
      200,  200,  200,   47,  200,  200,  200,  200,  200,  200,
      200,  200,  200,  200,  200,  200,   78,  200,  200,  200,
      200,  200,  200,  200,  200,  200,  106,  200,  200,  200,
      200,  200,  125,  200,  127,  200,  129,  200,  200,  137,
      200,    4,    3,    0,  142,  200,  200,  200,  184,  200,
        0,  200,    0,    0,  200,  200,   15,   19,  200,   24,
      200,   29,  200,  200,  200,  200,  200,  200,  200,   43,
      200,  200,  200,  200,  200,  200,  200,  200,  200,   64,

       69,  200,  200,   76,  200,  200,  200,  200,  200,  200,
      200,  200,  105,  200,  200,  115,  200,  200,  200,  200,
      200,  200,  200,    1,    3,  155,  200,  200,  200,    0,
      200,    0,    0,   10,  200,   20,   28,  200,  200,  200,
       39,  200,  200,  200,  200,   45,  200,   54,   55,  200,
      200,  200,   62,  200,  200,  200,  200,  200,  200,  200,
      200,   92,  200,  200,  200,  200,  114,  118,  200,  126,
      128,  200,  200,  200,    3,  200,  200,  187,    0,    0,
        0,    0,   11,  200,  200,  200,  200,   41,  200,  200,
      200,  200,   57,  200,  200,  200,  200,  200,  200,   87,

       88,  200,  200,  200,  200,  113,  200,  131,  200,  138,
        3,  166,  200,    0,    0,    0,  200,  200,  200,  200,
       42,  200,  200,  200,  200,  200,   66,   72,  200,  200,
       90,   95,  200,  200,  200,  200,    3,  169,    0,    0,
        0,   30,  200,  200,  200,  200,  200,  200,   59,  200,
      200,  200,  100,  200,  200,  200,    3,    0,    0,    0,
      200,   34,  200,   40,  200,   49,   56,  200,   73,  200,
      101,  200,  200,    2,    0,    0,    0,  200,  200,   38,
      200,  200,  200,  200,  132,    2,    0,    0,    0,  200,
      200,  200,   65,  200,  200,    0,    0,    0,  200,  200,

      200,  200,  200,  140,    0,    0,  200,  200,  200,   81,
      200,    0,    0,  200,  200,  200,  200,    0,    0,  200,
      200,  200,  123,    0,    0,  200,  200,  200,    0,    0,
      200,  200,  200,    0,    0,  200,   32,  200,    0,    0,
      200,   44,    0,    0,   31,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    9,    0,    9,    0
    } ;

static const YY_CHAR yy_ec[256] =
    {   0,
        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
        1,    2,    2,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    2,    4,    5,    6,    1,    1,    7,    8,    9,
        1,    1,   10,    1,   11,   12,    1,   13,   14,   15,
       16,   17,   18,   19,   18,   18,   18,    1,    1,   20,
       21,   22,    1,    1,   23,   24,   24,   24,   25,   26,
       27,   27,   27,   27,   27,   28,   27,   29,   27,   27,
       27,   30,   31,   32,   33,   27,   27,   34,   35,   27,
       36,   37,   38,    1,   39,    1,   40,   41,   42,   43,

       44,   45,   46,   47,   48,   49,   50,   51,   52,   53,
       54,   55,   56,   57,   58,   59,   60,   61,   62,   63,
       64,   65,    1,   66,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,

        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    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 const YY_CHAR yy_meta[67] =
    {   0,
        1,    1,    2,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    3,    3,    3,    3,    3,    3,    3,    1,
        1,    1,    3,    3,    3,    3,    4,    4,    4,    4,
        4,    4,    4,    4,    4,    1,    1,    1,    4,    3,
        3,    3,    3,    3,    3,    4,    4,    4,    4,    4,
        4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
        4,    4,    4,    4,    4,    1
    } ;

static const flex_int16_t yy_base[1512] =
    {   0,
        0,   65,  113,   66,   60,   67, 2486, 2485,   88,   90,
     2489, 2492, 2492, 2492, 2467,   64, 2480,   62, 2464, 2473,
      164,   53,   68, 2463,   73,    0, 2460, 2477, 2448, 2457,
     2449, 2492,   64, 2423,   36,  146,   48,   51, 2426,   57,
       58,   59,   61, 2436,   84,   89,  143, 2411, 2421, 2419,
     2430, 2405,  157,  132,  140,  223,  256,  151,  307, 2447,
     2492,  165,  165,  248,  309,  198,  287,  186,  313,  292,
      314,  177,  321,  252,  218,  331,  188,  257,  356,  162,
      141, 2467, 2492,  399,    0,  207,    0, 2420, 2419, 2492,
      248, 2492, 2463, 2492,  195, 2492, 2462, 2492, 2452,  406,

      220, 2492,   84,    0, 2492, 2492, 2492, 2492, 2492,    0,
     2435,  281, 2434, 2435, 2427,  329, 2416, 2418, 2417, 2397,
     2407, 2400, 2394, 2394, 2407, 2410,  234, 2394,  344, 2390,
     2387, 2386, 2388, 2385, 2389, 2389, 2386, 2385,  278, 2398,
     2385, 2378, 2393, 2383, 2376, 2379,  150, 2379, 2377,  248,
     2390,  105, 2381, 2373,  185, 2379, 2379, 2492,  386,  144,
     2377,  312, 2367, 2380,  426,  459,    0,  507, 2394, 2362,
       77, 2369, 2366,  351, 2354, 2358, 2363,  321, 2361, 2355,
      277, 2369,  355, 2354,  463, 2353, 2359,  349, 2369,  387,
     2364,  406, 2347,  439, 2349, 2361, 2351, 2352, 2359, 2357,

     2347, 2356,  287,  456, 2350, 2344,  215,  251,  369,  373,
     2356, 2335,  352, 2345, 2342, 2348, 2332, 2331, 2345,  377,
     2340, 2333, 2329, 2344, 2331,  498,  444, 2323,  502, 2334,
     2324, 2340, 2336,  297, 2334, 2329, 2337, 2318, 2317, 2334,
     2315,  451, 2369, 2368, 2367,  553,    0,  423, 2366,  433,
        0, 2324, 2313, 2492,  560,  530, 2334,  451, 2492, 2361,
     2335, 2337, 2336, 2307, 2301, 2315, 2315, 2305, 2311, 2310,
     2311, 2295, 2300, 2292, 2310, 2297, 2307, 2302, 2290, 2303,
     2291, 2288, 2297, 2300, 2296, 2294, 2283, 2288, 2291, 2277,
     2287, 2285, 2271, 2286, 2287, 2273, 2279, 2266, 2266, 2267,

     2270, 2278, 2270, 2261, 2277, 2258, 2258, 2272, 2261, 2266,
     2270, 2272, 2268, 2270, 2258,  592,  625,    0,  673, 2260,
     2250, 2255,  442, 2251, 2247, 2249, 2249, 2247, 2257, 2252,
     2258, 2253, 2245, 2253, 2250,  403,  404, 2234,  440, 2252,
     2234,  458, 2237, 2230, 2237, 2246, 2232, 2230, 2227, 2230,
     2231, 2230, 2229, 2233, 2236, 2233, 2233, 2220, 2231, 2221,
     2218, 2232, 2226,  483, 2218, 2208, 2222, 2215, 2209, 2209,
     2187, 2174, 2156,    0, 2154, 2158,  520, 2163, 2166,    0,
     2169, 2160,    0, 2150, 2147, 2152,  534,    0, 2153, 2157,
     2155,    0, 2140, 2136, 2123, 2120, 2134, 2135, 2121,  453,

      468, 2118, 2132, 2122, 2130,  473,  478, 2130, 2128, 2131,
     2112, 2110, 2120, 2161, 2098, 2091,  609, 2492,  489, 2122,
        0, 2123,    0, 2086, 2085, 2089, 2098,    0,    0, 2090,
        0, 2100, 2080, 2082, 2097, 2072, 2085, 2082, 2065,    0,
     2058, 2057, 2054, 2061, 2054, 2053, 2056, 2051, 2067,    0,
     2052, 2054, 2046, 2059, 2054, 2039, 2035, 2034, 2022, 2036,
     2025, 2027, 2029, 2036, 2033, 2032, 2030, 2019, 2025,    0,
     2009, 2014, 2018, 2011,  706,  739,    0,  787, 1988, 2004,
     2003, 1993, 2003, 1985, 1984, 2001, 1999, 2001, 1999,    0,
     1995, 1994,  500, 1981,    0, 1992, 1963,  538, 1962, 1972,

     1954, 1969, 1971,  535, 1971, 1971,    0, 1958, 1965, 1953,
     1942, 1946, 1940, 1951, 1939, 1926, 1939,    0, 1931,  542,
     1937, 1925, 1922, 1930, 1934, 1928, 1927, 1915,    0, 1914,
     1919, 1916, 1919, 1921, 1911, 1893, 1906, 1891, 1890, 1883,
     1900, 1902, 1883,  540, 1891, 1893, 1881, 1891,  557, 1890,
     1869, 1884, 1874, 1863, 1872,  554, 1858, 1874, 1862,  560,
     1870, 1868, 1862,  603, 1867, 1868, 1849, 1861, 1841, 1861,
     1853,    0, 1832, 1827, 1835, 1825, 1842, 1841, 1820,  664,
      801,    0, 1848,  572, 1835, 1823, 1835,    0, 1816,    0,
     1813, 1811, 1816, 1826, 1799, 1807, 1811, 1796,    0, 1804,

        0, 1788, 1802, 1800, 1787, 1800, 1798, 1786, 1789, 1778,
     1775, 1776, 1767,    0, 1775, 1772,    0, 1774, 1764, 1755,
     1766, 1768,    0, 1758, 1771, 1770, 1756, 1752,  833,  866,
        0,  914, 1762, 1755,    0, 1746, 1746, 1745, 1732, 1734,
     1743, 1734, 1739, 1737, 1736, 1737, 1736, 1717, 1716, 1706,
      506, 1716, 1723, 1702, 1710, 1700, 1710, 1697, 1703, 1703,
     1702, 1697,    0,  397, 1686, 1701, 1703,    0, 1702, 1692,
     1681, 1686, 1661, 1666, 1664, 1673, 1658, 1667, 1672, 1660,
     1673, 1664, 1652,    0, 1669,    0, 1662, 1663, 1658, 1647,
     1643, 1627, 1621, 1625, 1624, 1634, 1628, 1626, 1639, 1634,

     1634, 1632, 1615, 1628,    0,   56,    0,   67,  111,  150,
      229,  292,  359,  411,  420,  440,  447,  506,  550,  566,
      578,  577,  590,  587,  594,  603,  592,  608,  601,  603,
      607,  616,  659,  632,  648,  647,  631,  613,  620,  616,
      621,  640,  634,  635,  636,    0,  642,    0,  662,  651,
        0,  663,  640,  647,    0,  666,    0,  648,  664,  665,
      666,    0,    0,    0,  660,    0,    0,  667,  682,  668,
      673,  693,  677,  947,  980,    0, 1028,  676,  696,  694,
      679,  680,  696,  697,  682,  703,  693,  705,  705,  702,
      719,  707,  728,  710,  728,  720,    0,    0,  714,  734,

      731,  712,  733,  721,  746,    0,  733,  744,  744,  741,
      743,  734,  753,  755,  742,  745,  740,    0,  739,    0,
        0,  767,  760,  765,  763,  783,  779,  773,  781,  782,
        0,  772,  795,  792,  798,    0,  784,  774,  800,  801,
      791,  786,    0,  785,  794,  795,    0,  804,  816,  802,
      820,    0,  824,  806,    0,  808,    0,  827,    0,  828,
      820,  821,  810,    0,  831,  813,  834,    0,  834,  842,
      853,  853,    0,  894,  874,  879,    0,  849,  844,    0,
        0,  843,    0,    0,  859,  860,  846,  853,  865,  872,
        0,    0,  873,  868,  861,  861,  878,    0,    0,  878,

        0,  865,  921,  884, 1061, 1094,    0, 1142,  885,  875,
      891,  892,  893,  889,  901,  884,  892,  902,  890,  889,
        0,  900,  911,  911,  914,  908,    0,  939,  909,  930,
      933,    0,  931,  936,  918,  936,  930,  922,  925,  926,
      935,  942,  958,  959,  965,  951,  952,    0,  948,  966,
      972,  968,    0,    0,  959,  959,  966,  981,  975,  984,
      978,  987,  993,  994,    0,  977,  991,  972,  984,  994,
      980,  995,    0, 1006, 1008, 1007, 1003,  998, 1007, 1002,
     1009,    0,    0, 1013, 1005, 1016, 1006, 1030, 1050, 1030,
     1042, 1039,    0, 1031, 1049,    0, 1049, 1047, 1048, 1049,

        0,    0, 1043,    0, 1055, 1094, 1051, 1175, 1210, 1087,
     1088, 1059, 1074, 1057,    0, 1062, 1062, 1064, 1076, 1082,
        0, 1067, 1075,    0, 1070, 1079, 1084, 1071, 1079, 1092,
     1087, 1103, 1098, 1102, 1098, 1103, 1097,    0,    0, 1095,
     1106, 1112, 1112, 1102, 1119,    0, 1111, 1116, 1126, 1132,
     1119, 1115,    0, 1121, 1135, 1136, 1119, 1127, 1139,    0,
        0,    0, 1132, 1138, 1151, 1153,    0, 1138, 1159, 1159,
     1150,    0, 1151, 1148, 1143, 1162, 1170, 1151, 1153, 1172,
     1170, 1156, 1168, 1191, 1230,    0,    0, 1189,    0, 1188,
     1175,    0,    0,    0, 1177, 1196, 1191, 1188, 1260,    0,

     1230, 1191, 1203,    0, 1192,    0,    0, 1203, 1196,    0,
     1189, 1189, 1206, 1211, 1208, 1192, 1201, 1204, 1205, 1217,
     1215, 1205, 1207,    0, 1211, 1202, 1205, 1218, 1207, 1213,
     1205, 1223, 1213, 1239, 1234, 1240,    0, 1241, 1247, 1248,
     1242, 1251, 1233, 1247, 1250, 1250,    0, 1257, 1249, 1255,
     1256, 1253,    0, 1252,    0, 1268,    0, 1262, 1252,    0,
     1264, 1303, 1258, 1312, 2492, 1256, 1276, 1257,    0, 1260,
     1267, 1280, 1309,    0, 1285, 1279,    0,    0, 1287,    0,
     1278,    0, 1284, 1281, 1295, 1297, 1290, 1282, 1302,    0,
     1291, 1302, 1292, 1303, 1294, 1315, 1296, 1315, 1299, 1317,

        0, 1313, 1322,    0, 1324, 1313, 1314, 1325, 1321, 1320,
     1316, 1325,    0, 1331, 1313,    0, 1329, 1315, 1331, 1318,
     1337, 1319, 1339,    0, 1323,    0, 1339, 1324, 1325, 1344,
     1383, 1373,    0,    0, 1349,    0,    0, 1351, 1337, 1343,
        0, 1357, 1358, 1352, 1346,    0, 1363,    0,    0, 1353,
     1349, 1368,    0, 1355, 1359, 1358, 1359, 1378, 1376, 1377,
     1371,    0, 1369, 1370, 1385, 1368,    0,    0, 1383,    0,
        0, 1377, 1385, 1379, 1387, 1388, 1394,    0, 1432, 1433,
     1483,    0,    0, 1385, 1389, 1387, 1388,    0, 1396, 1393,
     1402, 1400,    0, 1385, 1392, 1395, 1404, 1405, 1405,    0,

        0, 1406, 1398, 1395, 1393,    0, 1391,    0, 1398,    0,
     1411,    0, 1398, 1418, 1516, 1448, 1416, 1407, 1408, 1419,
        0, 1406, 1406, 1415, 1423, 1409,    0,    0, 1418, 1423,
        0,    0, 1427, 1421, 1414, 1417, 1427,    0, 1419, 1466,
        0, 1439, 1426, 1440, 1429, 1423, 1439, 1440,    0, 1441,
     1442, 1447,    0, 1429, 1450, 1436, 1428, 1439, 1549,    0,
     1452,    0, 1450,    0, 1450,    0,    0, 1440,    0, 1443,
        0, 1464, 1455,    0, 1465, 1582,    0, 1460, 1471,    0,
     1463, 1458, 1470, 1479,    0,    0, 1467, 1615,    0, 1463,
     1465, 1494,    0, 1483, 1485, 1497, 1648, 1533, 1501, 1498,

     1483, 1491, 1506, 2492, 1539,    0, 1494, 1512, 1514,    0,
     1503, 1681,    0, 1507, 1518, 1528, 1527, 1714,    0, 1536,
     1529, 1531,    0, 1747,    0, 1528, 1515, 1537, 1780, 1571,
     1535, 1540, 1543, 1575,    0, 1522,    0, 1538, 1813,    0,
     1558,    0, 1846,    0,    0, 1879,    0, 1912,    0, 1945,
        0, 1978,    0, 2011,    0, 2044,    0, 2077,    0, 2110,
        0, 2143,    0, 2176, 2492, 1598, 2492, 2492, 2221, 2225,
     2229, 2233, 2237, 2239, 2243, 2247, 2251, 1601, 2255, 1607,
     1608, 1609, 1610, 2259, 1611, 1612, 1613, 1614, 1615, 1616,
     1617, 1618, 2263, 1632, 1633, 1634, 1639, 1640, 1641, 1642,

     1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1665,
     1666
    } ;

static const flex_int16_t yy_def[1512] =
    {   0,
     1468,    1,    1,    3, 1469, 1469, 1470, 1470, 1471, 1471,
     1468, 1468, 1468, 1468, 1468, 1472, 1468, 1473, 1468, 1468,
     1468,   21, 1468, 1468, 1468, 1474, 1474, 1474, 1474, 1474,
     1474, 1468, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1468, 1468, 1468, 1474, 1472, 1468,   57, 1474,   59,
     1468,   59,   59,   59,   59,   59,   59, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1468, 1468, 1468, 1468, 1475, 1476, 1477, 1477, 1477, 1468,
     1472, 1468, 1472, 1468, 1473, 1468, 1473, 1468, 1468, 1468,

       21, 1468, 1468, 1478, 1468, 1468, 1468, 1468, 1468, 1474,
     1474, 1479, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1468, 1468, 1468,
     1468, 1468, 1468, 1474,   56, 1468, 1480, 1474,  168,  168,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
      168,  168, 1474, 1474,  168, 1474, 1474, 1474, 1474, 1474,
     1474, 1474,  168, 1474, 1474, 1474, 1474, 1474, 1474, 1474,

     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1468, 1468, 1468, 1468, 1468, 1475, 1476, 1468, 1476,
     1477, 1477, 1477, 1468, 1468, 1478, 1474, 1479, 1468, 1479,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,

     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1468, 1468, 1474,   56, 1468, 1481, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474,  319, 1474, 1474, 1474, 1474,  319,  319,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,

     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1468, 1477, 1477, 1468, 1468, 1468, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1468, 1468, 1474,   56, 1468, 1482, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474,  478, 1474, 1474, 1474, 1474, 1474, 1474,

      478, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1477, 1477, 1468,
     1468, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,

     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1468, 1468, 1474,   56, 1468,
     1483, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,

     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1477, 1484, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1468, 1468, 1474,   56, 1468, 1485, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,

     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1477, 1484, 1484, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,

     1474, 1468, 1468, 1474,   56, 1468, 1486, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1477, 1484, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,

     1474, 1474, 1474, 1474, 1468, 1468, 1474,   56, 1468, 1468,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1477, 1484, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1468, 1474,   56, 1487,

     1009, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1477, 1484, 1468, 1468, 1474, 1474, 1474, 1474, 1474,
     1468, 1474,   56, 1488, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,

     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1477, 1484, 1474, 1474, 1474, 1474, 1468,
     1474,   56, 1489, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1484, 1474, 1474, 1474, 1468, 1468,
       56, 1490, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,

     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1484, 1474, 1474, 1468,   56, 1468, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1484, 1474, 1468, 1099,
     1491, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1474, 1484, 1468,   56, 1492,
     1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474,
     1474, 1474, 1474, 1493, 1468,   56, 1494, 1474, 1474, 1474,
     1474, 1474, 1474, 1474, 1474, 1493, 1468,   56, 1495, 1474,
     1474, 1474, 1474, 1474, 1474, 1468,   56, 1468, 1474, 1474,

     1474, 1474, 1474, 1468, 1099, 1496, 1474, 1474, 1474, 1474,
     1474,   56, 1497, 1474, 1474, 1474, 1474,   56, 1498, 1474,
     1474, 1474, 1474,   56, 1499, 1474, 1474, 1474,   56, 1468,
     1474, 1474, 1474, 1099, 1500, 1474, 1474, 1474,   56, 1501,
     1474, 1474,   56, 1502, 1474,   56, 1503,   56, 1504,   56,
     1505,   56, 1506,   56, 1507,   56, 1508,   56, 1509,   56,
     1510,   56, 1511,   56, 1468, 1099, 1468,    0, 1468, 1468,
     1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
     1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
     1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,

     1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
     1468
    } ;

static const flex_int16_t yy_nxt[2559] =
    {   0,
       12,   13,   14,   15,   16,   12,   17,   18,   12,   12,
       19,   20,   21,   22,   22,   22,   22,   22,   22,   23,
       24,   25,   26,   26,   26,   27,   26,   28,   29,   26,
       30,   31,   26,   26,   26,   32,   12,   12,   33,   34,
       35,   36,   37,   38,   39,   26,   40,   41,   26,   26,
       42,   43,   44,   26,   45,   26,   46,   47,   48,   49,
       50,   51,   26,   26,   26,   52,   53,   81,   92,   96,
       54,   82,   84,   84,   84,   84,   84,   84,   84,   84,
       84,   84,   84,   84,   84,   84, 1468,  105,  106,  122,
       83,  129,   83,  108,  109,  130,  136,  847,   97,  123,

       93,  131,  116,  132,  142,  117,  140,  133,  118,  138,
      139,  102,  141,  134,  143, 1468,   55,   56,  119,  848,
      137,  120,  321,  145,  322,   57,   58,   58,   58,   58,
       58,   58,  147,  162,  102,   59,   59,   59,   60,   88,
      146,   88,  242,   26,  304,  162,  243,  305,  148,   89,
       61,   89,   62,   63,   64,   65,   66,   67,  159,   68,
       69,  306,  160,   70,   71,   72,   73,   74,  849,   75,
       76,   77,   78,   79,   80,  100,  101,  101,  101,  101,
      101,  101,  101,  142, 1468,  124,  163,  164,  125,  149,
      150,  102,  126,  143,  151,  297,  103,  104,  163,  127,

      128,  152,   96,  157,  153,  298,  170,  850,  161,  241,
      171,  249,  177, 1468,  102,  172,  144,  173,  178,  174,
      212,  179,  175,  103,  176,  197,  104,   92,  180,  198,
      213,   97,  309,  199,  231,  165,  165,  165,  165,  165,
      165,  165,  310,  250,  232,  165,  165,  165,  165,  137,
      190,  154,   92, 1468,  133,  290,  369,  225,  191,   93,
      192,  226,  165,  165,  165,  165,  165,  165,  166,  166,
      166,  166,  166,  166,  166,  273,  851,  148,  167,  167,
      167,  167, 1468,  102,   93,  259,  274,  181,  103,  104,
      182,  220,  370,  301,  126,  167,  167,  167,  167,  167,

      167,  183,  128,  291,  233,  221,  102,  184,  222,  234,
      223,  224,  302,  162,  235,  103,  236,  260,  104,  168,
      168,  168,  168,  168,  168,  168,  193,  333,  288,  168,
      168,  168,  168,  205,  270,  206,  289,  194,  363,  207,
      195,  364,  852,  196,  406,  208,  168,  168,  168,  168,
      168,  168,  185,  209,  310,  200,  186,  210,  201,  187,
      202,  214,  188,  215,  203,  204,  163,  143,  189,  237,
      117,  216,  211,  118,  268,  217,  264,  149,  227,  330,
      218,  219,  151,  119,  228,  276,  120,  159,  277,  229,
      325,  160,  230,  376,  278,  238,  273,  335,  267,  239,

      245,  344,  853,  240,  377,  326,  336,  337,  280,  156,
      378,  246,  246,  246,  246,  246,  246,  246,  255,  255,
      255,  255,  255,  255,  255,  371,  346,  249,  347,  348,
      373,  292,  372,  385,  295,  248,  808,  161,  316,  316,
      316,  316,  316,  316,  316,  349,  281,  351,  316,  316,
      316,  316,  242,  809,  496,  259,  243,  497,  854,  250,
      352,  433,  498,  855,  283,  316,  316,  316,  316,  316,
      316,  317,  317,  317,  317,  317,  317,  317,  354,  856,
      482,  318,  318,  318,  318, 1468,  102,  260,  857,  301,
      435,  103,  284,  500,  365,  483,  397,  503,  318,  318,

      318,  318,  318,  318,  339,  562,  288,  340,  398,  102,
      366,  563,  504,  278,  289,  564,  418,  341,  103,  319,
      319,  319,  319,  319,  319,  319,  468,  465,  569,  319,
      319,  319,  319,  526,  570,  571,  446,  391,  646,  418,
      647,  400,  392,  297,  305,  795,  319,  319,  319,  319,
      319,  319,  393,  394,  245,  395,  396,  418,  401,  796,
      538,  539,  419,  540,  858,  246,  246,  246,  246,  246,
      246,  246,  255,  255,  255,  255,  255,  255,  255,  548,
      418,  650,  595,  671,  417,  657,  672,  735,  549,  419,
      736,  696,  550,  697,  651,  859,  551,  710,  714,  673,

      610,  612,  702,  417,  475,  475,  475,  475,  475,  475,
      475,  703,  860,  616,  475,  475,  475,  475,  580,  580,
      861,  581,  581,  581,  581,  581,  581,  581,  862,  863,
      864,  475,  475,  475,  475,  475,  475,  476,  476,  476,
      476,  476,  476,  476,  718,  865,  866,  477,  477,  477,
      477,  867,  102,  868,  869,  719,  870,  103,  871,  872,
      874,  875,  876,  877,  477,  477,  477,  477,  477,  477,
      878,  879,  880,  881,  882,  102,  581,  581,  581,  581,
      581,  581,  581,  883,  103,  478,  478,  478,  478,  478,
      478,  478,  884,  885,  886,  478,  478,  478,  478,  887,

      888,  889,  890,  891,  892,  893,  894,  895,  896,  897,
      898,  899,  478,  478,  478,  478,  478,  478,  629,  629,
      629,  629,  629,  629,  629,  900,  901,  902,  629,  629,
      629,  629,  903,  904,  909,  910,  911,  912,  913,  914,
      915,  916,  917,  918,  919,  629,  629,  629,  629,  629,
      629,  630,  630,  630,  630,  630,  630,  630,  920,  921,
      922,  631,  631,  631,  631,  923,  102,  924,  925,  926,
      927,  103,  928,  929,  930,  931,  932,  933,  631,  631,
      631,  631,  631,  631,  934,  935,  936,  937,  938,  102,
      939,  940,  941,  888,  942,  943,  944,  945,  103,  632,

      632,  632,  632,  632,  632,  632,  946,  947,  948,  632,
      632,  632,  632,  581,  581,  581,  581,  581,  581,  581,
      949,  950,  951,  952,  953,  417,  632,  632,  632,  632,
      632,  632,  954,  955,  956,  957,  958,  959,  960,  961,
      962,  963,  964,  965,  417,  774,  774,  774,  774,  774,
      774,  774,  966,  967,  968,  774,  774,  774,  774,  969,
      970,  971,  972,  973,  974,  975,  976,  977,  978,  979,
      980,  981,  774,  774,  774,  774,  774,  774,  775,  775,
      775,  775,  775,  775,  775,  982,  983,  984,  776,  776,
      776,  776,  985,  102,  986,  874,  988,  989,  103,  990,

      991,  992,  993,  994,  995,  776,  776,  776,  776,  776,
      776,  996,  997,  998,  999, 1000,  102, 1001, 1002, 1003,
     1004, 1005, 1006, 1007, 1012,  103,  777,  777,  777,  777,
      777,  777,  777, 1013, 1014, 1015,  777,  777,  777,  777,
     1016, 1017, 1018, 1019, 1020, 1021,  987, 1022, 1023, 1024,
     1025, 1026, 1027,  777,  777,  777,  777,  777,  777,  905,
      905,  905,  905,  905,  905,  905, 1028, 1033, 1034,  905,
      905,  905,  905, 1035, 1036, 1037, 1038, 1029, 1039, 1030,
     1031, 1040, 1041, 1042, 1043, 1044,  905,  905,  905,  905,
      905,  905,  906,  906,  906,  906,  906,  906,  906, 1032,

     1045, 1046,  907,  907,  907,  907, 1047,  102, 1048, 1049,
     1050, 1051,  103, 1052, 1053, 1054, 1055, 1056, 1057,  907,
      907,  907,  907,  907,  907, 1058, 1059, 1060, 1061, 1062,
      102, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070,  103,
      908,  908,  908,  908,  908,  908,  908, 1071, 1072, 1073,
      908,  908,  908,  908, 1074, 1076, 1077, 1078, 1079, 1080,
     1081, 1082, 1083, 1084, 1085, 1075, 1086,  908,  908,  908,
      908,  908,  908, 1008, 1008, 1008, 1008, 1008, 1008, 1008,
     1087, 1088, 1089, 1008, 1008, 1008, 1008, 1090, 1091, 1092,
     1093, 1094, 1095, 1096, 1097, 1006, 1098, 1100, 1100, 1102,

     1008, 1008, 1008, 1008, 1008, 1008, 1009, 1009, 1009, 1009,
     1009, 1009, 1009, 1103, 1104, 1105, 1010, 1010, 1010, 1010,
     1106,  102, 1107, 1108, 1109, 1110,  103, 1111, 1112, 1113,
     1114, 1115, 1116, 1010, 1010, 1010, 1010, 1010, 1010, 1117,
     1118, 1121, 1119, 1122,  102, 1123, 1124, 1125, 1126, 1127,
     1128, 1129, 1130,  103, 1011, 1011, 1011, 1011, 1011, 1011,
     1011, 1120, 1131, 1132, 1011, 1011, 1011, 1011, 1133, 1134,
     1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144,
     1145, 1011, 1011, 1011, 1011, 1011, 1011, 1099, 1099, 1099,
     1099, 1099, 1099, 1099, 1146, 1147, 1148, 1099, 1099, 1099,

     1099, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157,
     1158, 1159, 1160, 1161, 1099, 1099, 1099, 1099, 1099, 1099,
     1100, 1162, 1101, 1101, 1101, 1101, 1101, 1101, 1101, 1163,
     1166, 1164, 1167, 1168, 1169, 1170, 1171,  102, 1165, 1172,
     1468, 1175,  103, 1176, 1177, 1178, 1179, 1180, 1181, 1182,
     1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192,
      102, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200,  103,
     1173, 1201,   91,   91,   91,   91,   91,   91,   91, 1202,
     1203, 1204,   91,   91,   91,   91, 1205, 1206, 1207, 1208,
     1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217,   91,

       91,   91,   91,   91,   91, 1218, 1219, 1220, 1221, 1222,
     1223, 1224, 1225, 1164, 1226, 1227, 1228, 1229, 1230, 1231,
     1165, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1234, 1235,
     1236, 1232, 1232, 1232, 1232, 1237, 1238, 1239, 1240, 1241,
     1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1232, 1232,
     1232, 1232, 1232, 1232, 1250, 1251, 1252, 1253, 1254, 1255,
     1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265,
     1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275,
     1276, 1277, 1278, 1279, 1280, 1281, 1281, 1281, 1281, 1281,
     1281, 1281, 1283, 1284, 1285, 1281, 1281, 1281, 1281, 1286,

     1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296,
     1297, 1298, 1281, 1281, 1281, 1281, 1281, 1281, 1299, 1300,
     1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310,
     1311, 1312, 1313, 1280, 1280, 1317, 1318, 1319, 1320, 1321,
     1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331,
     1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1341, 1342,
     1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352,
     1353, 1354, 1355, 1356, 1357, 1358, 1359, 1361, 1362, 1363,
     1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373,
     1374, 1375, 1380, 1381, 1314, 1315, 1315, 1315, 1315, 1315,

     1315, 1315, 1382, 1383, 1378, 1315, 1315, 1315, 1315, 1379,
     1384, 1385, 1387, 1390, 1391, 1392, 1393, 1394, 1395, 1396,
     1399, 1400, 1315, 1315, 1315, 1315, 1315, 1315, 1340, 1340,
     1340, 1340, 1340, 1340, 1340, 1401, 1402, 1403, 1340, 1340,
     1340, 1340, 1404, 1406, 1407, 1408, 1409, 1410, 1411, 1412,
     1414, 1415, 1416, 1417, 1420, 1340, 1340, 1340, 1340, 1340,
     1340, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1421, 1422,
     1423, 1376, 1376, 1376, 1376, 1426, 1427, 1428, 1431, 1432,
     1433, 1435, 1436, 1437, 1438, 1439, 1441, 1442, 1376, 1376,
     1376, 1376, 1376, 1376, 1388, 1388, 1388, 1388, 1388, 1388,

     1388, 1445, 1467,  256, 1388, 1388, 1388, 1388,   91,  318,
      477,  631,  776,  907, 1010, 1174, 1233, 1282, 1316, 1360,
     1377, 1388, 1388, 1388, 1388, 1388, 1388, 1397, 1397, 1397,
     1397, 1397, 1397, 1397, 1389, 1398, 1413, 1397, 1397, 1397,
     1397, 1419, 1425, 1430, 1440, 1444, 1447, 1449, 1451, 1453,
     1455, 1457, 1459, 1461, 1397, 1397, 1397, 1397, 1397, 1397,
     1405, 1405, 1405, 1405, 1405, 1405, 1405, 1463, 1465,  846,
     1405, 1405, 1405, 1405,  845,  844,  843,  842,  841,  840,
      839,  838,  837,  836,  835,  834,  833, 1405, 1405, 1405,
     1405, 1405, 1405, 1418, 1418, 1418, 1418, 1418, 1418, 1418,

      832,  831,  830, 1418, 1418, 1418, 1418,  829,  828,  827,
      826,  825,  824,  823,  822,  821,  820,  819,  818,  817,
     1418, 1418, 1418, 1418, 1418, 1418, 1424, 1424, 1424, 1424,
     1424, 1424, 1424,  816,  815,  814, 1424, 1424, 1424, 1424,
      813,  812,  811,  810,  807,  806,  805,  804,  803,  802,
      801,  800,  799, 1424, 1424, 1424, 1424, 1424, 1424, 1429,
     1429, 1429, 1429, 1429, 1429, 1429,  798,  797,  794, 1429,
     1429, 1429, 1429,  793,  792,  791,  790,  789,  788,  787,
      786,  785,  784,  783,  782,  781, 1429, 1429, 1429, 1429,
     1429, 1429, 1434, 1434, 1434, 1434, 1434, 1434, 1434,  780,

      779,  778, 1434, 1434, 1434, 1434,  773,  772,  771,  770,
      769,  768,  767,  766,  765,  764,  763,  762,  761, 1434,
     1434, 1434, 1434, 1434, 1434, 1443, 1443, 1443, 1443, 1443,
     1443, 1443,  760,  759,  758, 1443, 1443, 1443, 1443,  757,
      756,  755,  754,  753,  752,  751,  750,  749,  748,  747,
      746,  745, 1443, 1443, 1443, 1443, 1443, 1443, 1446, 1446,
     1446, 1446, 1446, 1446, 1446,  744,  743,  742, 1446, 1446,
     1446, 1446,  741,  740,  739,  738,  737,  734,  733,  732,
      731,  730,  729,  728,  727, 1446, 1446, 1446, 1446, 1446,
     1446, 1448, 1448, 1448, 1448, 1448, 1448, 1448,  726,  725,

      724, 1448, 1448, 1448, 1448,  723,  722,  721,  720,  717,
      716,  715,  713,  712,  711,  709,  708,  707, 1448, 1448,
     1448, 1448, 1448, 1448, 1450, 1450, 1450, 1450, 1450, 1450,
     1450,  706,  705,  704, 1450, 1450, 1450, 1450,  701,  700,
      699,  698,  695,  694,  693,  692,  691,  690,  689,  688,
      687, 1450, 1450, 1450, 1450, 1450, 1450, 1452, 1452, 1452,
     1452, 1452, 1452, 1452,  686,  685,  684, 1452, 1452, 1452,
     1452,  683,  682,  681,  680,  679,  678,  677,  676,  675,
      674,  670,  669,  668, 1452, 1452, 1452, 1452, 1452, 1452,
     1454, 1454, 1454, 1454, 1454, 1454, 1454,  667,  666,  665,

     1454, 1454, 1454, 1454,  664,  663,  662,  661,  660,  659,
      658,  656,  655,  654,  653,  652,  649, 1454, 1454, 1454,
     1454, 1454, 1454, 1456, 1456, 1456, 1456, 1456, 1456, 1456,
      648,  588,  645, 1456, 1456, 1456, 1456,  644,  643,  642,
      641,  640,  639,  638,  637,  636,  635,  634,  633,  628,
     1456, 1456, 1456, 1456, 1456, 1456, 1458, 1458, 1458, 1458,
     1458, 1458, 1458,  627,  626,  625, 1458, 1458, 1458, 1458,
      624,  623,  622,  621,  620,  619,  618,  617,  616,  615,
      614,  613,  612, 1458, 1458, 1458, 1458, 1458, 1458, 1460,
     1460, 1460, 1460, 1460, 1460, 1460,  611,  610,  609, 1460,

     1460, 1460, 1460,  608,  607,  606,  605,  604,  603,  602,
      601,  600,  599,  598,  597,  596, 1460, 1460, 1460, 1460,
     1460, 1460, 1462, 1462, 1462, 1462, 1462, 1462, 1462,  595,
      594,  593, 1462, 1462, 1462, 1462,  592,  591,  590,  589,
      588,  587,  586,  585,  584,  583,  582,  579,  578, 1462,
     1462, 1462, 1462, 1462, 1462, 1464, 1464, 1464, 1464, 1464,
     1464, 1464,  414,  577,  576, 1464, 1464, 1464, 1464,  575,
      574,  573,  572,  568,  567,  566,  565,  561,  560,  559,
      558,  557, 1464, 1464, 1464, 1464, 1464, 1464, 1466, 1466,
     1466, 1466, 1466, 1466, 1466,  556,  555,  554, 1466, 1466,

     1466, 1466,  553,  552,  547,  546,  545,  544,  543,  542,
      541,  537,  536,  535,  534, 1466, 1466, 1466, 1466, 1466,
     1466,   83,   83,   83,   83,   85,   85,   85,   85,   87,
       87,   87,   87,   91,   91,   91,   91,   95,   95,   95,
       95,  110,  110,  247,  533,  247,  247,  248,  532,  248,
      248,  251,  531,  251,  251,  258,  258,  258,  258,  873,
      530,  873,  873, 1386,  529, 1386, 1386,  528,  527,  525,
      524,  523,  522,  521,  520,  519,  518,  517,  516,  515,
      514,  513,  512,  511,  510,  509,  508,  507,  506,  505,
      502,  501,  499,  495,  494,  493,  492,  491,  490,  489,

      488,  487,  486,  485,  484,  481,  480,  479,  474,  473,
      472,  471,  470,  469,  468,  467,  466,  465,  464,  463,
      462,  461,  460,  459,  458,  457,  456,  455,  454,  453,
      452,  451,  450,  449,  448,  447,  446,  445,  444,  443,
      442,  441,  440,  439,  438,  437,  436,  435,  434,  433,
      432,  431,  430,  429,  428,  427,  426,  305,  425,  424,
      423,  422,  421, 1468,  420,  416,  415,  414,  245,  244,
      244,  413,  412,  411,  410,  409,  408,  407,  405,  404,
      403,  402,  399,  390,  389,  388,  387,  386,  384,  383,
      382,  381,  380,  379,  375,  374,  368,  367,  362,  361,

      360,  359,  358,  357,  356,  355,  353,  350,  345,  343,
      342,  338,  334,  332,  331,  329,  328,  327,  324,  323,
      320,  257,  315,  314,  313,  312,  311,  308,  307,  303,
      300,  299,  296,  295,  294,  293,  292,  291,  290,  287,
      286,  285,  284,  283,  282,  281,  280,  279,  275,  272,
      271,  270,  269,  268,  267,  266,  145,  265,  125,  263,
      262,  261,  257,  254, 1468, 1468,  253,  252,  244,  169,
      158,  157,  156,  155,  154,  144,  135,  121,  115,  114,
      113,  112,  111,  107,   99,   98,   94,   90, 1468,   86,
       86,   11, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,

     1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
     1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
     1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
     1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
     1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
     1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468
    } ;

static const flex_int16_t yy_chk[2559] =
    {   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,
        1,    1,    1,    1,    1,    1,    2,    4,   16,   18,
        2,    4,    5,    5,    5,    5,    5,    5,    5,    6,
        6,    6,    6,    6,    6,    6,   22,   23,   23,   35,
        9,   37,   10,   25,   25,   37,   40,  706,   18,   35,

       16,   37,   33,   38,   43,   33,   42,   38,   33,   41,
       41,  103,   42,   38,   43,   22,    2,    3,   33,  708,
       40,   33,  171,   45,  171,    3,    3,    3,    3,    3,
        3,    3,   46,   54,  103,    3,    3,    3,    3,    9,
       45,   10,   81,    3,  152,  160,   81,  152,   46,    9,
        3,   10,    3,    3,    3,    3,    3,    3,   53,    3,
        3,  152,   53,    3,    3,    3,    3,    3,  709,    3,
        3,    3,    3,    3,    3,   21,   21,   21,   21,   21,
       21,   21,   21,   55,   58,   36,   54,   55,   36,   47,
       47,   21,   36,   55,   47,  147,   21,   21,  160,   36,

       36,   47,   95,   80,   47,  147,   62,  710,   53,   80,
       62,   86,   63,   58,   21,   62,   72,   62,   63,   62,
       72,   63,   62,   21,   62,   68,   21,   56,   63,   68,
       72,   95,  155,   68,   77,   56,   56,   56,   56,   56,
       56,   56,  155,   86,   77,   56,   56,   56,   56,   68,
       66,   77,   91,  101,   66,  207,  207,   75,   66,   56,
       66,   75,   56,   56,   56,   56,   56,   56,   57,   57,
       57,   57,   57,   57,   57,  127,  711,   75,   57,   57,
       57,   57,  101,   57,   91,  112,  127,   64,   57,   57,
       64,   74,  208,  150,   64,   57,   57,   57,   57,   57,

       57,   64,   64,  208,   78,   74,   57,   64,   74,   78,
       74,   74,  150,  162,   78,   57,   78,  112,   57,   59,
       59,   59,   59,   59,   59,   59,   67,  181,  139,   59,
       59,   59,   59,   70,  181,   70,  139,   67,  203,   70,
       67,  203,  712,   67,  234,   70,   59,   59,   59,   59,
       59,   59,   65,   71,  234,   69,   65,   71,   69,   65,
       69,   73,   65,   73,   69,   69,  162,   71,   65,   79,
      116,   73,   71,  116,  178,   73,  116,   76,   76,  178,
       73,   73,   76,  116,   76,  129,  116,  159,  129,   76,
      174,  159,   76,  213,  129,   79,  183,  183,  174,   79,

       84,  188,  713,   79,  213,  174,  183,  183,  188,   79,
      213,   84,   84,   84,   84,   84,   84,   84,  100,  100,
      100,  100,  100,  100,  100,  209,  190,  248,  190,  190,
      210,  210,  209,  220,  220,  250,  664,  159,  165,  165,
      165,  165,  165,  165,  165,  190,  190,  192,  165,  165,
      165,  165,  242,  664,  336,  258,  242,  336,  714,  248,
      192,  337,  337,  715,  192,  165,  165,  165,  165,  165,
      165,  166,  166,  166,  166,  166,  166,  166,  194,  716,
      323,  166,  166,  166,  166,  250,  166,  258,  717,  227,
      339,  166,  194,  339,  204,  323,  227,  342,  166,  166,

      166,  166,  166,  166,  185,  400,  204,  185,  227,  166,
      204,  400,  342,  185,  204,  401,  419,  185,  166,  168,
      168,  168,  168,  168,  168,  168,  406,  401,  406,  168,
      168,  168,  168,  364,  407,  407,  364,  226,  493,  419,
      493,  229,  226,  226,  229,  651,  168,  168,  168,  168,
      168,  168,  226,  226,  246,  226,  226,  256,  229,  651,
      377,  377,  256,  377,  718,  246,  246,  246,  246,  246,
      246,  246,  255,  255,  255,  255,  255,  255,  255,  387,
      256,  498,  504,  520,  255,  504,  520,  584,  387,  256,
      584,  544,  387,  544,  498,  719,  387,  556,  560,  520,

      549,  556,  549,  255,  316,  316,  316,  316,  316,  316,
      316,  549,  720,  560,  316,  316,  316,  316,  417,  417,
      721,  417,  417,  417,  417,  417,  417,  417,  722,  723,
      724,  316,  316,  316,  316,  316,  316,  317,  317,  317,
      317,  317,  317,  317,  564,  725,  726,  317,  317,  317,
      317,  727,  317,  728,  729,  564,  730,  317,  731,  732,
      733,  734,  735,  736,  317,  317,  317,  317,  317,  317,
      737,  738,  739,  740,  741,  317,  580,  580,  580,  580,
      580,  580,  580,  742,  317,  319,  319,  319,  319,  319,
      319,  319,  743,  744,  745,  319,  319,  319,  319,  747,

      749,  750,  752,  753,  754,  756,  758,  759,  760,  761,
      765,  768,  319,  319,  319,  319,  319,  319,  475,  475,
      475,  475,  475,  475,  475,  769,  770,  771,  475,  475,
      475,  475,  772,  773,  778,  779,  780,  781,  782,  783,
      784,  785,  786,  787,  788,  475,  475,  475,  475,  475,
      475,  476,  476,  476,  476,  476,  476,  476,  789,  790,
      791,  476,  476,  476,  476,  792,  476,  793,  794,  795,
      796,  476,  799,  800,  801,  802,  803,  804,  476,  476,
      476,  476,  476,  476,  805,  807,  808,  809,  810,  476,
      811,  812,  813,  814,  815,  816,  817,  819,  476,  478,

      478,  478,  478,  478,  478,  478,  822,  823,  824,  478,
      478,  478,  478,  581,  581,  581,  581,  581,  581,  581,
      825,  826,  827,  828,  829,  581,  478,  478,  478,  478,
      478,  478,  830,  832,  833,  834,  835,  837,  838,  839,
      840,  841,  842,  844,  581,  629,  629,  629,  629,  629,
      629,  629,  845,  846,  848,  629,  629,  629,  629,  849,
      850,  851,  853,  854,  856,  858,  860,  861,  862,  863,
      865,  866,  629,  629,  629,  629,  629,  629,  630,  630,
      630,  630,  630,  630,  630,  867,  869,  870,  630,  630,
      630,  630,  871,  630,  872,  874,  875,  876,  630,  878,

      879,  882,  885,  886,  887,  630,  630,  630,  630,  630,
      630,  888,  889,  890,  893,  894,  630,  895,  896,  897,
      900,  902,  903,  904,  909,  630,  632,  632,  632,  632,
      632,  632,  632,  910,  911,  912,  632,  632,  632,  632,
      913,  914,  915,  916,  917,  918,  874,  919,  920,  922,
      923,  924,  925,  632,  632,  632,  632,  632,  632,  774,
      774,  774,  774,  774,  774,  774,  926,  929,  930,  774,
      774,  774,  774,  931,  933,  934,  935,  928,  936,  928,
      928,  937,  938,  939,  940,  941,  774,  774,  774,  774,
      774,  774,  775,  775,  775,  775,  775,  775,  775,  928,

      942,  943,  775,  775,  775,  775,  944,  775,  945,  946,
      947,  949,  775,  950,  951,  952,  955,  956,  957,  775,
      775,  775,  775,  775,  775,  958,  959,  960,  961,  962,
      775,  963,  964,  966,  967,  968,  969,  970,  971,  775,
      777,  777,  777,  777,  777,  777,  777,  972,  974,  975,
      777,  777,  777,  777,  976,  977,  978,  979,  980,  981,
      984,  985,  986,  987,  988,  976,  989,  777,  777,  777,
      777,  777,  777,  905,  905,  905,  905,  905,  905,  905,
      990,  991,  992,  905,  905,  905,  905,  994,  995,  997,
      998,  999, 1000, 1003, 1005, 1006, 1007, 1010, 1011, 1012,

      905,  905,  905,  905,  905,  905,  906,  906,  906,  906,
      906,  906,  906, 1013, 1014, 1016,  906,  906,  906,  906,
     1017,  906, 1018, 1019, 1020, 1022,  906, 1023, 1025, 1026,
     1027, 1028, 1029,  906,  906,  906,  906,  906,  906, 1030,
     1031, 1033, 1032, 1034,  906, 1035, 1036, 1037, 1040, 1041,
     1042, 1043, 1044,  906,  908,  908,  908,  908,  908,  908,
      908, 1032, 1045, 1047,  908,  908,  908,  908, 1048, 1049,
     1050, 1051, 1052, 1054, 1055, 1056, 1057, 1058, 1059, 1063,
     1064,  908,  908,  908,  908,  908,  908, 1008, 1008, 1008,
     1008, 1008, 1008, 1008, 1065, 1066, 1068, 1008, 1008, 1008,

     1008, 1069, 1070, 1071, 1073, 1074, 1075, 1076, 1077, 1078,
     1079, 1080, 1081, 1082, 1008, 1008, 1008, 1008, 1008, 1008,
     1009, 1083, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1084,
     1088, 1085, 1090, 1091, 1095, 1096, 1097, 1009, 1085, 1098,
     1101, 1102, 1009, 1103, 1105, 1108, 1109, 1111, 1112, 1113,
     1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123,
     1009, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1009,
     1099, 1133, 1099, 1099, 1099, 1099, 1099, 1099, 1099, 1134,
     1135, 1136, 1099, 1099, 1099, 1099, 1138, 1139, 1140, 1141,
     1142, 1143, 1144, 1145, 1146, 1148, 1149, 1150, 1151, 1099,

     1099, 1099, 1099, 1099, 1099, 1152, 1154, 1156, 1158, 1159,
     1161, 1162, 1163, 1164, 1166, 1167, 1168, 1170, 1171, 1172,
     1164, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1175, 1176,
     1179, 1173, 1173, 1173, 1173, 1181, 1183, 1184, 1185, 1186,
     1187, 1188, 1189, 1191, 1192, 1193, 1194, 1195, 1173, 1173,
     1173, 1173, 1173, 1173, 1196, 1197, 1198, 1199, 1200, 1200,
     1202, 1203, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212,
     1214, 1215, 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1225,
     1227, 1228, 1229, 1230, 1231, 1232, 1232, 1232, 1232, 1232,
     1232, 1232, 1235, 1238, 1239, 1232, 1232, 1232, 1232, 1240,

     1242, 1243, 1244, 1245, 1247, 1250, 1251, 1252, 1254, 1255,
     1256, 1257, 1232, 1232, 1232, 1232, 1232, 1232, 1258, 1259,
     1260, 1261, 1263, 1264, 1265, 1266, 1269, 1272, 1273, 1274,
     1275, 1276, 1277, 1279, 1280, 1284, 1285, 1286, 1287, 1289,
     1290, 1291, 1292, 1294, 1295, 1296, 1297, 1298, 1299, 1302,
     1303, 1304, 1305, 1307, 1309, 1311, 1313, 1314, 1316, 1317,
     1318, 1319, 1320, 1322, 1323, 1324, 1325, 1326, 1329, 1330,
     1333, 1334, 1335, 1336, 1337, 1339, 1340, 1342, 1343, 1344,
     1345, 1346, 1347, 1348, 1350, 1351, 1352, 1354, 1355, 1356,
     1357, 1358, 1363, 1365, 1280, 1281, 1281, 1281, 1281, 1281,

     1281, 1281, 1368, 1370, 1361, 1281, 1281, 1281, 1281, 1361,
     1372, 1373, 1375, 1378, 1379, 1381, 1382, 1383, 1384, 1387,
     1390, 1391, 1281, 1281, 1281, 1281, 1281, 1281, 1315, 1315,
     1315, 1315, 1315, 1315, 1315, 1392, 1394, 1395, 1315, 1315,
     1315, 1315, 1396, 1398, 1399, 1400, 1401, 1402, 1403, 1405,
     1407, 1408, 1409, 1411, 1414, 1315, 1315, 1315, 1315, 1315,
     1315, 1359, 1359, 1359, 1359, 1359, 1359, 1359, 1415, 1416,
     1417, 1359, 1359, 1359, 1359, 1420, 1421, 1422, 1426, 1427,
     1428, 1430, 1431, 1432, 1433, 1434, 1436, 1438, 1359, 1359,
     1359, 1359, 1359, 1359, 1376, 1376, 1376, 1376, 1376, 1376,

     1376, 1441, 1466, 1478, 1376, 1376, 1376, 1376, 1466, 1480,
     1481, 1482, 1483, 1485, 1486, 1487, 1488, 1489, 1490, 1491,
     1492, 1376, 1376, 1376, 1376, 1376, 1376, 1388, 1388, 1388,
     1388, 1388, 1388, 1388, 1494, 1495, 1496, 1388, 1388, 1388,
     1388, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505,
     1506, 1507, 1508, 1509, 1388, 1388, 1388, 1388, 1388, 1388,
     1397, 1397, 1397, 1397, 1397, 1397, 1397, 1510, 1511,  704,
     1397, 1397, 1397, 1397,  703,  702,  701,  700,  699,  698,
      697,  696,  695,  694,  693,  692,  691, 1397, 1397, 1397,
     1397, 1397, 1397, 1412, 1412, 1412, 1412, 1412, 1412, 1412,

      690,  689,  688, 1412, 1412, 1412, 1412,  687,  685,  683,
      682,  681,  680,  679,  678,  677,  676,  675,  674,  673,
     1412, 1412, 1412, 1412, 1412, 1412, 1418, 1418, 1418, 1418,
     1418, 1418, 1418,  672,  671,  670, 1418, 1418, 1418, 1418,
      669,  667,  666,  665,  662,  661,  660,  659,  658,  657,
      656,  655,  654, 1418, 1418, 1418, 1418, 1418, 1418, 1424,
     1424, 1424, 1424, 1424, 1424, 1424,  653,  652,  650, 1424,
     1424, 1424, 1424,  649,  648,  647,  646,  645,  644,  643,
      642,  641,  640,  639,  638,  637, 1424, 1424, 1424, 1424,
     1424, 1424, 1429, 1429, 1429, 1429, 1429, 1429, 1429,  636,

      634,  633, 1429, 1429, 1429, 1429,  628,  627,  626,  625,
      624,  622,  621,  620,  619,  618,  616,  615,  613, 1429,
     1429, 1429, 1429, 1429, 1429, 1439, 1439, 1439, 1439, 1439,
     1439, 1439,  612,  611,  610, 1439, 1439, 1439, 1439,  609,
      608,  607,  606,  605,  604,  603,  602,  600,  598,  597,
      596,  595, 1439, 1439, 1439, 1439, 1439, 1439, 1443, 1443,
     1443, 1443, 1443, 1443, 1443,  594,  593,  592, 1443, 1443,
     1443, 1443,  591,  589,  587,  586,  585,  583,  579,  578,
      577,  576,  575,  574,  573, 1443, 1443, 1443, 1443, 1443,
     1443, 1446, 1446, 1446, 1446, 1446, 1446, 1446,  571,  570,

      569, 1446, 1446, 1446, 1446,  568,  567,  566,  565,  563,
      562,  561,  559,  558,  557,  555,  554,  553, 1446, 1446,
     1446, 1446, 1446, 1446, 1448, 1448, 1448, 1448, 1448, 1448,
     1448,  552,  551,  550, 1448, 1448, 1448, 1448,  548,  547,
      546,  545,  543,  542,  541,  540,  539,  538,  537,  536,
      535, 1448, 1448, 1448, 1448, 1448, 1448, 1450, 1450, 1450,
     1450, 1450, 1450, 1450,  534,  533,  532, 1450, 1450, 1450,
     1450,  531,  530,  528,  527,  526,  525,  524,  523,  522,
      521,  519,  517,  516, 1450, 1450, 1450, 1450, 1450, 1450,
     1452, 1452, 1452, 1452, 1452, 1452, 1452,  515,  514,  513,

     1452, 1452, 1452, 1452,  512,  511,  510,  509,  508,  506,
      505,  503,  502,  501,  500,  499,  497, 1452, 1452, 1452,
     1452, 1452, 1452, 1454, 1454, 1454, 1454, 1454, 1454, 1454,
      496,  494,  492, 1454, 1454, 1454, 1454,  491,  489,  488,
      487,  486,  485,  484,  483,  482,  481,  480,  479,  474,
     1454, 1454, 1454, 1454, 1454, 1454, 1456, 1456, 1456, 1456,
     1456, 1456, 1456,  473,  472,  471, 1456, 1456, 1456, 1456,
      469,  468,  467,  466,  465,  464,  463,  462,  461,  460,
      459,  458,  457, 1456, 1456, 1456, 1456, 1456, 1456, 1458,
     1458, 1458, 1458, 1458, 1458, 1458,  456,  455,  454, 1458,

     1458, 1458, 1458,  453,  452,  451,  449,  448,  447,  446,
      445,  444,  443,  442,  441,  439, 1458, 1458, 1458, 1458,
     1458, 1458, 1460, 1460, 1460, 1460, 1460, 1460, 1460,  438,
      437,  436, 1460, 1460, 1460, 1460,  435,  434,  433,  432,
      430,  427,  426,  425,  424,  422,  420,  416,  415, 1460,
     1460, 1460, 1460, 1460, 1460, 1462, 1462, 1462, 1462, 1462,
     1462, 1462,  414,  413,  412, 1462, 1462, 1462, 1462,  411,
      410,  409,  408,  405,  404,  403,  402,  399,  398,  397,
      396,  395, 1462, 1462, 1462, 1462, 1462, 1462, 1464, 1464,
     1464, 1464, 1464, 1464, 1464,  394,  393,  391, 1464, 1464,

     1464, 1464,  390,  389,  386,  385,  384,  382,  381,  379,
      378,  376,  375,  373,  372, 1464, 1464, 1464, 1464, 1464,
     1464, 1469, 1469, 1469, 1469, 1470, 1470, 1470, 1470, 1471,
     1471, 1471, 1471, 1472, 1472, 1472, 1472, 1473, 1473, 1473,
     1473, 1474, 1474, 1475,  371, 1475, 1475, 1476,  370, 1476,
     1476, 1477,  369, 1477, 1477, 1479, 1479, 1479, 1479, 1484,
      368, 1484, 1484, 1493,  367, 1493, 1493,  366,  365,  363,
      362,  361,  360,  359,  358,  357,  356,  355,  354,  353,
      352,  351,  350,  349,  348,  347,  346,  345,  344,  343,
      341,  340,  338,  335,  334,  333,  332,  331,  330,  329,

      328,  327,  326,  325,  324,  322,  321,  320,  315,  314,
      313,  312,  311,  310,  309,  308,  307,  306,  305,  304,
      303,  302,  301,  300,  299,  298,  297,  296,  295,  294,
      293,  292,  291,  290,  289,  288,  287,  286,  285,  284,
      283,  282,  281,  280,  279,  278,  277,  276,  275,  274,
      273,  272,  271,  270,  269,  268,  267,  266,  265,  264,
      263,  262,  261,  260,  257,  253,  252,  249,  245,  244,
      243,  241,  240,  239,  238,  237,  236,  235,  233,  232,
      231,  230,  228,  225,  224,  223,  222,  221,  219,  218,
      217,  216,  215,  214,  212,  211,  206,  205,  202,  201,

      200,  199,  198,  197,  196,  195,  193,  191,  189,  187,
      186,  184,  182,  180,  179,  177,  176,  175,  173,  172,
      170,  169,  164,  163,  161,  157,  156,  154,  153,  151,
      149,  148,  146,  145,  144,  143,  142,  141,  140,  138,
      137,  136,  135,  134,  133,  132,  131,  130,  128,  126,
      125,  124,  123,  122,  121,  120,  119,  118,  117,  115,
      114,  113,  111,   99,   97,   93,   89,   88,   82,   60,
       52,   51,   50,   49,   48,   44,   39,   34,   31,   30,
       29,   28,   27,   24,   20,   19,   17,   15,   11,    8,
        7, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,

     1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
     1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
     1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
     1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
     1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468,
     1468, 1468, 1468, 1468, 1468, 1468, 1468, 1468
    } ;

static yy_state_type yy_last_accepting_state;
static char *yy_last_accepting_cpos;

extern int yy_flex_debug;
int yy_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 *yytext;
#line 1 "tools/widl/parser.l"
/* -*-C-*-
 * IDL Compiler
 *
 * Copyright 2002 Ove Kaaven
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library 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
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 */
#define YY_NO_INPUT 1




#line 38 "tools/widl/parser.l"

#include "config.h"

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <assert.h>
#include <errno.h>
#include <limits.h>
#define YY_NO_UNISTD_H

#include "widl.h"
#include "utils.h"
#include "parser.h"
#include "wpp_private.h"

#define YYerror PARSER_error
#define YYSTYPE PARSER_STYPE
#define YYLTYPE PARSER_LTYPE
#define YYUNDEF PARSER_UNDEF
#define yyerror parser_error

#include "parser.tab.h"

static void reset_location( struct location *where, const char *input_name );
static void update_location( struct location *where, const char *yytext );
static void end_of_line( struct location *where );

#define YY_USER_INIT    reset_location( yylloc, input_name )
#define YY_USER_ACTION  update_location( yylloc, yytext );

static void switch_to_acf(void);

static warning_list_t *disabled_warnings = NULL;

struct import_state
{
    YY_BUFFER_STATE buffer;
    char *input_name;
    struct location where;
    struct list entry;
};
static struct list import_stack = LIST_INIT( import_stack );
int parse_only = 0;

struct import
{
    const char *name;
    struct list entry;
};
static struct list imports = LIST_INIT( imports );
static struct location previous_location;

/* converts an integer in string form to an unsigned long and prints an error
 * on overflow */
static unsigned int xstrtoul(const char *nptr, char **endptr, int base)
{
    unsigned long val;

    errno = 0;
    val = strtoul(nptr, endptr, base);
    if ((val == ULONG_MAX && errno == ERANGE) || ((unsigned int)val != val))
        error_loc("integer constant %s is too large\n", nptr);
    return val;
}

static int token_uuid( const char *str, YYSTYPE *yylval )
{
    struct uuid *uuid;
    char tmp[3] = {0};

    if (*str == '\"') str++;

    uuid = xmalloc( sizeof(*uuid) );
    uuid->Data1 = strtoul( str , NULL, 16 );
    uuid->Data2 = strtoul( str + 9, NULL, 16 );
    uuid->Data3 = strtoul( str + 14, NULL, 16 );
    memcpy( tmp, str + 19, 2 );
    uuid->Data4[0] = strtoul( tmp, NULL, 16 );
    memcpy( tmp, str + 21, 2 );
    uuid->Data4[1] = strtoul( tmp, NULL, 16 );
    memcpy( tmp, str + 24, 2 );
    uuid->Data4[2] = strtoul( tmp, NULL, 16 );
    memcpy( tmp, str + 26, 2 );
    uuid->Data4[3] = strtoul( tmp, NULL, 16 );
    memcpy( tmp, str + 28, 2 );
    uuid->Data4[4] = strtoul( tmp, NULL, 16 );
    memcpy( tmp, str + 30, 2 );
    uuid->Data4[5] = strtoul( tmp, NULL, 16 );
    memcpy( tmp, str + 32, 2 );
    uuid->Data4[6] = strtoul( tmp, NULL, 16 );
    memcpy( tmp, str + 34, 2 );
    uuid->Data4[7] = strtoul( tmp, NULL, 16 );

    yylval->uuid = uuid;
    return aUUID;
}

static int token_str( int token, const char *str, YYSTYPE *yylval )
{
    char *tmp = xstrdup( str );

    if (token == aWSTRING || token == aSTRING || token == aSQSTRING)
    {
        char *src, *dst;
        src = dst = ++tmp; /* skip first quote */
        while (*src)
        {
            if (*src == '\\') src++;
            *dst++ = *src++;
        }
        dst[-1] = 0; /* strip last quote */
    }

    yylval->str = tmp;
    return token;
}

static int token_num( const char *yytext, YYSTYPE *yylval, int is_hex )
{
    yylval->integer.value = xstrtoul( yytext, NULL, 0 );
    yylval->integer.is_hex = is_hex;
    yylval->integer.is_long = !!strchr(yytext, 'l');
    yylval->integer.is_unsigned = !!strchr(yytext, 'u');
    return is_hex ? aHEXNUM : aNUM;
}

static int token_ident( const char *str, YYSTYPE *yylval )
{
    return token_str( is_type( str ) ? aKNOWNTYPE : aIDENTIFIER, str, yylval );
}

static int token_winrt( int token, const char *str, YYSTYPE *yylval )
{
    if (winrt_mode) return token;
    return token_ident( str, yylval );
}

static void winrt_enable( int ns_prefix )
{
    if (!list_empty( &import_stack ) && !winrt_mode) error_loc( "WinRT IDL file imported in non-winrt mode.\n" );

    use_abi_namespace = ns_prefix;
    winrt_mode = TRUE;
}

#line 1958 "tools/widl/parser.yy.c"
/*
 **************************************************************************
 * The flexer starts here
 **************************************************************************
 */
#line 1964 "tools/widl/parser.yy.c"

#define INITIAL 0
#define ATTR 1
#define PP_LINE 2
#define PP_FILE 3
#define PP_PRAGMA 4

#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.
 */
#include <unistd.h>
#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 yylex_destroy ( void );

int yyget_debug ( void );

void yyset_debug ( int debug_flag  );

YY_EXTRA_TYPE yyget_extra ( void );

void yyset_extra ( YY_EXTRA_TYPE user_defined  );

FILE *yyget_in ( void );

void yyset_in  ( FILE * _in_str  );

FILE *yyget_out ( void );

void yyset_out  ( FILE * _out_str  );

			int yyget_leng ( void );

char *yyget_text ( void );

int yyget_lineno ( void );

void yyset_lineno ( int _line_number  );

YYSTYPE * yyget_lval ( void );

void yyset_lval ( YYSTYPE * yylval_param  );

       YYLTYPE *yyget_lloc ( void );
    
        void yyset_lloc ( YYLTYPE * yylloc_param  );
    
/* Macros after this point can all be overridden by user definitions in
 * section 1.
 */

#ifndef YY_SKIP_YYWRAP
#ifdef __cplusplus
extern "C" int yywrap ( void );
#else
extern int yywrap ( void );
#endif
#endif

#ifndef YY_NO_UNPUT
    
#endif

#ifndef yytext_ptr
static void yy_flex_strncpy ( char *, const char *, int );
#endif

#ifdef YY_NEED_STRLEN
static int yy_flex_strlen ( const char * );
#endif

#ifndef YY_NO_INPUT
#ifdef __cplusplus
static int yyinput ( void );
#else
static int input ( void );
#endif

#endif

        static int yy_start_stack_ptr = 0;
        static int yy_start_stack_depth = 0;
        static int *yy_start_stack = NULL;
    
    static void yy_push_state ( int _new_state );
    
    static void yy_pop_state ( void );
    
/* Amount of stuff to slurp up with each read. */
#ifndef YY_READ_BUF_SIZE
#ifdef __ia64__
/* On IA-64, the buffer size is 16k, not 8k */
#define YY_READ_BUF_SIZE 16384
#else
#define YY_READ_BUF_SIZE 8192
#endif /* __ia64__ */
#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 do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0)
#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( yyin )) != EOF && c != '\n'; ++n ) \
			buf[n] = (char) c; \
		if ( c == '\n' ) \
			buf[n++] = (char) c; \
		if ( c == EOF && ferror( yyin ) ) \
			YY_FATAL_ERROR( "input in flex scanner failed" ); \
		result = n; \
		} \
	else \
		{ \
		errno=0; \
		while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \
			{ \
			if( errno != EINTR) \
				{ \
				YY_FATAL_ERROR( "input in flex scanner failed" ); \
				break; \
				} \
			errno=0; \
			clearerr(yyin); \
			} \
		}\
\

#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 yylex \
               (YYSTYPE * yylval_param, YYLTYPE * yylloc_param );

#define YY_DECL int yylex \
               (YYSTYPE * yylval_param, YYLTYPE * yylloc_param )
#endif /* !YY_DECL */

/* Code executed at the beginning of each rule, after yytext and yyleng
 * 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 /*LINTED*/break;
#endif

#define YY_RULE_SETUP \
	if ( yyleng > 0 ) \
		YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \
				(yytext[yyleng - 1] == '\n'); \
	YY_USER_ACTION

/** The main scanner function which does all the work.
 */
YY_DECL
{
	yy_state_type yy_current_state;
	char *yy_cp, *yy_bp;
	int yy_act;
    
        YYSTYPE * yylval;
    
        YYLTYPE * yylloc;
    
    yylval = yylval_param;

    yylloc = yylloc_param;

	if ( !(yy_init) )
		{
		(yy_init) = 1;

#ifdef YY_USER_INIT
		YY_USER_INIT;
#endif

		if ( ! (yy_start) )
			(yy_start) = 1;	/* first start state */

		if ( ! yyin )
			yyin = stdin;

		if ( ! yyout )
			yyout = stdout;

		if ( ! YY_CURRENT_BUFFER ) {
			yyensure_buffer_stack ();
			YY_CURRENT_BUFFER_LVALUE =
				yy_create_buffer( yyin, YY_BUF_SIZE );
		}

		yy_load_buffer_state(  );
		}

	{
#line 192 "tools/widl/parser.l"

#line 2214 "tools/widl/parser.yy.c"

	while ( /*CONSTCOND*/1 )		/* loops until end-of-file is reached */
		{
		yy_cp = (yy_c_buf_p);

		/* Support of yytext. */
		*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_current_state += YY_AT_BOL();
yy_match:
		do
			{
			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 >= 1469 )
					yy_c = yy_meta[yy_c];
				}
			yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
			++yy_cp;
			}
		while ( yy_current_state != 1468 );
		yy_cp = (yy_last_accepting_cpos);
		yy_current_state = (yy_last_accepting_state);

yy_find_action:
		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:
*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
(yy_c_buf_p) = yy_cp = yy_bp + 9;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
#line 194 "tools/widl/parser.l"
{
                                                    yy_pop_state();
                                                    yylloc->first_line -= 1;
                                                    return tCPPQUOTE;
                                                }
	YY_BREAK
case 2:
YY_RULE_SETUP
#line 199 "tools/widl/parser.l"
{
                                                    yy_pop_state();
                                                    yylloc->first_line -= 1;
                                                    winrt_enable( TRUE );
                                                }
	YY_BREAK
case 3:
YY_RULE_SETUP
#line 204 "tools/widl/parser.l"
{
                                                    yy_pop_state();
                                                    yylloc->first_line -= 1;
                                                    winrt_enable( FALSE );
                                                }
	YY_BREAK
case 4:
YY_RULE_SETUP
#line 209 "tools/widl/parser.l"
{
                                                    yy_pop_state();
                                                    yylloc->first_line -= 1;
                                                    return token_str( aPRAGMA, yytext, yylval );
                                                }
	YY_BREAK

case 5:
YY_RULE_SETUP
#line 215 "tools/widl/parser.l"
{
                                                    yylloc->first_line = strtoul( yytext, NULL, 10 ) - 1;
                                                    yylloc->last_line = yylloc->first_line;
                                                    yy_pop_state();
                                                    yy_push_state(PP_FILE);
                                                }
	YY_BREAK
case 6:
/* rule 6 can match eol */
YY_RULE_SETUP
#line 221 "tools/widl/parser.l"
{
                                                    input_name = xstrdup( yytext + 1 );
                                                    *strchr( input_name, '"' ) = 0;
                                                    yylloc->input_name = input_name;
                                                }
	YY_BREAK
case 7:
/* rule 7 can match eol */
YY_RULE_SETUP
#line 226 "tools/widl/parser.l"
{ yy_pop_state(); }
	YY_BREAK

case 8:
YY_RULE_SETUP
#line 229 "tools/widl/parser.l"
{ yy_pop_state(); return ']'; }
	YY_BREAK
case 9:
YY_RULE_SETUP
#line 231 "tools/widl/parser.l"
{ return token_uuid( yytext, yylval ); }
	YY_BREAK
case 10:
YY_RULE_SETUP
#line 232 "tools/widl/parser.l"
{ return token_winrt( tACTIVATABLE, yytext, yylval ); }
	YY_BREAK
case 11:
YY_RULE_SETUP
#line 233 "tools/widl/parser.l"
{ return tAGGREGATABLE; }
	YY_BREAK
case 12:
YY_RULE_SETUP
#line 234 "tools/widl/parser.l"
{ return token_winrt( tAGILE, yytext, yylval ); }
	YY_BREAK
case 13:
YY_RULE_SETUP
#line 235 "tools/widl/parser.l"
{ return tALLNODES; }
	YY_BREAK
case 14:
YY_RULE_SETUP
#line 236 "tools/widl/parser.l"
{ return tALLOCATE; }
	YY_BREAK
case 15:
YY_RULE_SETUP
#line 237 "tools/widl/parser.l"
{ return tANNOTATION; }
	YY_BREAK
case 16:
YY_RULE_SETUP
#line 238 "tools/widl/parser.l"
{ return tAPARTMENT; }
	YY_BREAK
case 17:
YY_RULE_SETUP
#line 239 "tools/widl/parser.l"
{ return tAPPOBJECT; }
	YY_BREAK
case 18:
YY_RULE_SETUP
#line 240 "tools/widl/parser.l"
{ return tASYNC; }
	YY_BREAK
case 19:
YY_RULE_SETUP
#line 241 "tools/widl/parser.l"
{ return tASYNCUUID; }
	YY_BREAK
case 20:
YY_RULE_SETUP
#line 242 "tools/widl/parser.l"
{ return tAUTOHANDLE; }
	YY_BREAK
case 21:
YY_RULE_SETUP
#line 243 "tools/widl/parser.l"
{ return tBINDABLE; }
	YY_BREAK
case 22:
YY_RULE_SETUP
#line 244 "tools/widl/parser.l"
{ return tBOTH; }
	YY_BREAK
case 23:
YY_RULE_SETUP
#line 245 "tools/widl/parser.l"
{ return tBROADCAST; }
	YY_BREAK
case 24:
YY_RULE_SETUP
#line 246 "tools/widl/parser.l"
{ return tBYTECOUNT; }
	YY_BREAK
case 25:
YY_RULE_SETUP
#line 247 "tools/widl/parser.l"
{ return tCALLAS; }
	YY_BREAK
case 26:
YY_RULE_SETUP
#line 248 "tools/widl/parser.l"
{ return tCALLBACK; }
	YY_BREAK
case 27:
YY_RULE_SETUP
#line 249 "tools/widl/parser.l"
{ return tCODE; }
	YY_BREAK
case 28:
YY_RULE_SETUP
#line 250 "tools/widl/parser.l"
{ return tCOMMSTATUS; }
	YY_BREAK
case 29:
YY_RULE_SETUP
#line 251 "tools/widl/parser.l"
{ return token_winrt( tCOMPOSABLE, yytext, yylval ); }
	YY_BREAK
case 30:
YY_RULE_SETUP
#line 252 "tools/widl/parser.l"
{ return tCONTEXTHANDLE; }
	YY_BREAK
case 31:
YY_RULE_SETUP
#line 253 "tools/widl/parser.l"
{ return tCONTEXTHANDLENOSERIALIZE; }
	YY_BREAK
case 32:
YY_RULE_SETUP
#line 254 "tools/widl/parser.l"
{ return tCONTEXTHANDLENOSERIALIZE; }
	YY_BREAK
case 33:
YY_RULE_SETUP
#line 255 "tools/widl/parser.l"
{ return token_winrt( tCONTRACT, yytext, yylval ); }
	YY_BREAK
case 34:
YY_RULE_SETUP
#line 256 "tools/widl/parser.l"
{ return token_winrt( tCONTRACTVERSION, yytext, yylval ); }
	YY_BREAK
case 35:
YY_RULE_SETUP
#line 257 "tools/widl/parser.l"
{ return tCONTROL; }
	YY_BREAK
case 36:
YY_RULE_SETUP
#line 258 "tools/widl/parser.l"
{ return tCUSTOM; }
	YY_BREAK
case 37:
YY_RULE_SETUP
#line 259 "tools/widl/parser.l"
{ return tDECODE; }
	YY_BREAK
case 38:
YY_RULE_SETUP
#line 260 "tools/widl/parser.l"
{ return tDEFAULT_OVERLOAD; }
	YY_BREAK
case 39:
YY_RULE_SETUP
#line 261 "tools/widl/parser.l"
{ return tDEFAULTBIND; }
	YY_BREAK
case 40:
YY_RULE_SETUP
#line 262 "tools/widl/parser.l"
{ return tDEFAULTCOLLELEM; }
	YY_BREAK
case 41:
YY_RULE_SETUP
#line 263 "tools/widl/parser.l"
{ return tDEFAULTVALUE; }
	YY_BREAK
case 42:
YY_RULE_SETUP
#line 264 "tools/widl/parser.l"
{ return tDEFAULTVTABLE; }
	YY_BREAK
case 43:
YY_RULE_SETUP
#line 265 "tools/widl/parser.l"
{ return token_winrt( tDEPRECATED, yytext, yylval ); }
	YY_BREAK
case 44:
YY_RULE_SETUP
#line 266 "tools/widl/parser.l"
{ return tDISABLECONSISTENCYCHECK; }
	YY_BREAK
case 45:
YY_RULE_SETUP
#line 267 "tools/widl/parser.l"
{ return tDISPLAYBIND; }
	YY_BREAK
case 46:
YY_RULE_SETUP
#line 268 "tools/widl/parser.l"
{ return tDLLNAME; }
	YY_BREAK
case 47:
YY_RULE_SETUP
#line 269 "tools/widl/parser.l"
{ return tDONTFREE; }
	YY_BREAK
case 48:
YY_RULE_SETUP
#line 270 "tools/widl/parser.l"
{ return tDUAL; }
	YY_BREAK
case 49:
YY_RULE_SETUP
#line 271 "tools/widl/parser.l"
{ return tENABLEALLOCATE; }
	YY_BREAK
case 50:
YY_RULE_SETUP
#line 272 "tools/widl/parser.l"
{ return tENCODE; }
	YY_BREAK
case 51:
YY_RULE_SETUP
#line 273 "tools/widl/parser.l"
{ return tENDPOINT; }
	YY_BREAK
case 52:
YY_RULE_SETUP
#line 274 "tools/widl/parser.l"
{ return tENTRY; }
	YY_BREAK
case 53:
YY_RULE_SETUP
#line 275 "tools/widl/parser.l"
{ return token_winrt( tEVENTADD, yytext, yylval ); }
	YY_BREAK
case 54:
YY_RULE_SETUP
#line 276 "tools/widl/parser.l"
{ return token_winrt( tEVENTREMOVE, yytext, yylval ); }
	YY_BREAK
case 55:
YY_RULE_SETUP
#line 277 "tools/widl/parser.l"
{ return token_winrt( tEXCLUSIVETO, yytext, yylval ); }
	YY_BREAK
case 56:
YY_RULE_SETUP
#line 278 "tools/widl/parser.l"
{ return tEXPLICITHANDLE; }
	YY_BREAK
case 57:
YY_RULE_SETUP
#line 279 "tools/widl/parser.l"
{ return tFAULTSTATUS; }
	YY_BREAK
case 58:
YY_RULE_SETUP
#line 280 "tools/widl/parser.l"
{ return token_winrt( tFLAGS, yytext, yylval ); }
	YY_BREAK
case 59:
YY_RULE_SETUP
#line 281 "tools/widl/parser.l"
{ return tFORCEALLOCATE; }
	YY_BREAK
case 60:
YY_RULE_SETUP
#line 282 "tools/widl/parser.l"
{ return tFREE; }
	YY_BREAK
case 61:
YY_RULE_SETUP
#line 283 "tools/widl/parser.l"
{ return tHANDLE; }
	YY_BREAK
case 62:
YY_RULE_SETUP
#line 284 "tools/widl/parser.l"
{ return tHELPCONTEXT; }
	YY_BREAK
case 63:
YY_RULE_SETUP
#line 285 "tools/widl/parser.l"
{ return tHELPFILE; }
	YY_BREAK
case 64:
YY_RULE_SETUP
#line 286 "tools/widl/parser.l"
{ return tHELPSTRING; }
	YY_BREAK
case 65:
YY_RULE_SETUP
#line 287 "tools/widl/parser.l"
{ return tHELPSTRINGCONTEXT; }
	YY_BREAK
case 66:
YY_RULE_SETUP
#line 288 "tools/widl/parser.l"
{ return tHELPSTRINGDLL; }
	YY_BREAK
case 67:
YY_RULE_SETUP
#line 289 "tools/widl/parser.l"
{ return tHIDDEN; }
	YY_BREAK
case 68:
YY_RULE_SETUP
#line 290 "tools/widl/parser.l"
{ return tID; }
	YY_BREAK
case 69:
YY_RULE_SETUP
#line 291 "tools/widl/parser.l"
{ return tIDEMPOTENT; }
	YY_BREAK
case 70:
YY_RULE_SETUP
#line 292 "tools/widl/parser.l"
{ return tIGNORE; }
	YY_BREAK
case 71:
YY_RULE_SETUP
#line 293 "tools/widl/parser.l"
{ return tIIDIS; }
	YY_BREAK
case 72:
YY_RULE_SETUP
#line 294 "tools/widl/parser.l"
{ return tIMMEDIATEBIND; }
	YY_BREAK
case 73:
YY_RULE_SETUP
#line 295 "tools/widl/parser.l"
{ return tIMPLICITHANDLE; }
	YY_BREAK
case 74:
YY_RULE_SETUP
#line 296 "tools/widl/parser.l"
{ return tIN; }
	YY_BREAK
case 75:
YY_RULE_SETUP
#line 297 "tools/widl/parser.l"
{ return tIN_LINE; }
	YY_BREAK
case 76:
YY_RULE_SETUP
#line 298 "tools/widl/parser.l"
{ return tINPUTSYNC; }
	YY_BREAK
case 77:
YY_RULE_SETUP
#line 299 "tools/widl/parser.l"
{ return tLCID; }
	YY_BREAK
case 78:
YY_RULE_SETUP
#line 300 "tools/widl/parser.l"
{ return tLENGTHIS; }
	YY_BREAK
case 79:
YY_RULE_SETUP
#line 301 "tools/widl/parser.l"
{ return tLICENSED; }
	YY_BREAK
case 80:
YY_RULE_SETUP
#line 302 "tools/widl/parser.l"
{ return tLOCAL; }
	YY_BREAK
case 81:
YY_RULE_SETUP
#line 303 "tools/widl/parser.l"
{ return token_winrt( tMARSHALINGBEHAVIOR, yytext, yylval ); }
	YY_BREAK
case 82:
YY_RULE_SETUP
#line 304 "tools/widl/parser.l"
{ return tMAYBE; }
	YY_BREAK
case 83:
YY_RULE_SETUP
#line 305 "tools/widl/parser.l"
{ return tMESSAGE; }
	YY_BREAK
case 84:
YY_RULE_SETUP
#line 306 "tools/widl/parser.l"
{ return tMTA; }
	YY_BREAK
case 85:
YY_RULE_SETUP
#line 307 "tools/widl/parser.l"
{ return tNEUTRAL; }
	YY_BREAK
case 86:
YY_RULE_SETUP
#line 308 "tools/widl/parser.l"
{ return tNOCODE; }
	YY_BREAK
case 87:
YY_RULE_SETUP
#line 309 "tools/widl/parser.l"
{ return tNONBROWSABLE; }
	YY_BREAK
case 88:
YY_RULE_SETUP
#line 310 "tools/widl/parser.l"
{ return tNONCREATABLE; }
	YY_BREAK
case 89:
YY_RULE_SETUP
#line 311 "tools/widl/parser.l"
{ return token_winrt( tNONE, yytext, yylval ); }
	YY_BREAK
case 90:
YY_RULE_SETUP
#line 312 "tools/widl/parser.l"
{ return tNONEXTENSIBLE; }
	YY_BREAK
case 91:
YY_RULE_SETUP
#line 313 "tools/widl/parser.l"
{ return tNOTIFY; }
	YY_BREAK
case 92:
YY_RULE_SETUP
#line 314 "tools/widl/parser.l"
{ return tNOTIFYFLAG; }
	YY_BREAK
case 93:
YY_RULE_SETUP
#line 315 "tools/widl/parser.l"
{ return tOBJECT; }
	YY_BREAK
case 94:
YY_RULE_SETUP
#line 316 "tools/widl/parser.l"
{ return tODL; }
	YY_BREAK
case 95:
YY_RULE_SETUP
#line 317 "tools/widl/parser.l"
{ return tOLEAUTOMATION; }
	YY_BREAK
case 96:
YY_RULE_SETUP
#line 318 "tools/widl/parser.l"
{ return tOPTIMIZE; }
	YY_BREAK
case 97:
YY_RULE_SETUP
#line 319 "tools/widl/parser.l"
{ return tOPTIONAL; }
	YY_BREAK
case 98:
YY_RULE_SETUP
#line 320 "tools/widl/parser.l"
{ return tOUT; }
	YY_BREAK
case 99:
YY_RULE_SETUP
#line 321 "tools/widl/parser.l"
{ return tOVERLOAD; }
	YY_BREAK
case 100:
YY_RULE_SETUP
#line 322 "tools/widl/parser.l"
{ return tPARTIALIGNORE; }
	YY_BREAK
case 101:
YY_RULE_SETUP
#line 323 "tools/widl/parser.l"
{ return tPOINTERDEFAULT; }
	YY_BREAK
case 102:
YY_RULE_SETUP
#line 324 "tools/widl/parser.l"
{ return tPROGID; }
	YY_BREAK
case 103:
YY_RULE_SETUP
#line 325 "tools/widl/parser.l"
{ return tPROPGET; }
	YY_BREAK
case 104:
YY_RULE_SETUP
#line 326 "tools/widl/parser.l"
{ return tPROPPUT; }
	YY_BREAK
case 105:
YY_RULE_SETUP
#line 327 "tools/widl/parser.l"
{ return tPROPPUTREF; }
	YY_BREAK
case 106:
YY_RULE_SETUP
#line 328 "tools/widl/parser.l"
{ return tPROTECTED; }
	YY_BREAK
case 107:
YY_RULE_SETUP
#line 329 "tools/widl/parser.l"
{ return tPROXY; }
	YY_BREAK
case 108:
YY_RULE_SETUP
#line 330 "tools/widl/parser.l"
{ return tPTR; }
	YY_BREAK
case 109:
YY_RULE_SETUP
#line 331 "tools/widl/parser.l"
{ return tPUBLIC; }
	YY_BREAK
case 110:
YY_RULE_SETUP
#line 332 "tools/widl/parser.l"
{ return tRANGE; }
	YY_BREAK
case 111:
YY_RULE_SETUP
#line 333 "tools/widl/parser.l"
{ return tREADONLY; }
	YY_BREAK
case 112:
YY_RULE_SETUP
#line 334 "tools/widl/parser.l"
{ return tREF; }
	YY_BREAK
case 113:
YY_RULE_SETUP
#line 335 "tools/widl/parser.l"
{ return tREPRESENTAS; }
	YY_BREAK
case 114:
YY_RULE_SETUP
#line 336 "tools/widl/parser.l"
{ return tREQUESTEDIT; }
	YY_BREAK
case 115:
YY_RULE_SETUP
#line 337 "tools/widl/parser.l"
{ return tRESTRICTED; }
	YY_BREAK
case 116:
YY_RULE_SETUP
#line 338 "tools/widl/parser.l"
{ return tRETVAL; }
	YY_BREAK
case 117:
YY_RULE_SETUP
#line 339 "tools/widl/parser.l"
{ return tSINGLE; }
	YY_BREAK
case 118:
YY_RULE_SETUP
#line 340 "tools/widl/parser.l"
{ return tSINGLENODE; }
	YY_BREAK
case 119:
YY_RULE_SETUP
#line 341 "tools/widl/parser.l"
{ return tSIZEIS; }
	YY_BREAK
case 120:
YY_RULE_SETUP
#line 342 "tools/widl/parser.l"
{ return tSOURCE; }
	YY_BREAK
case 121:
YY_RULE_SETUP
#line 343 "tools/widl/parser.l"
{ return token_winrt( tSTANDARD, yytext, yylval ); }
	YY_BREAK
case 122:
YY_RULE_SETUP
#line 344 "tools/widl/parser.l"
{ return token_winrt( tSTATIC, yytext, yylval ); }
	YY_BREAK
case 123:
YY_RULE_SETUP
#line 345 "tools/widl/parser.l"
{ return tSTRICTCONTEXTHANDLE; }
	YY_BREAK
case 124:
YY_RULE_SETUP
#line 346 "tools/widl/parser.l"
{ return tSTRING; }
	YY_BREAK
case 125:
YY_RULE_SETUP
#line 347 "tools/widl/parser.l"
{ return tSWITCHIS; }
	YY_BREAK
case 126:
YY_RULE_SETUP
#line 348 "tools/widl/parser.l"
{ return tSWITCHTYPE; }
	YY_BREAK
case 127:
YY_RULE_SETUP
#line 349 "tools/widl/parser.l"
{ return tTHREADING; }
	YY_BREAK
case 128:
YY_RULE_SETUP
#line 350 "tools/widl/parser.l"
{ return tTRANSMITAS; }
	YY_BREAK
case 129:
YY_RULE_SETUP
#line 351 "tools/widl/parser.l"
{ return tUIDEFAULT; }
	YY_BREAK
case 130:
YY_RULE_SETUP
#line 352 "tools/widl/parser.l"
{ return tUNIQUE; }
	YY_BREAK
case 131:
YY_RULE_SETUP
#line 353 "tools/widl/parser.l"
{ return tUSERMARSHAL; }
	YY_BREAK
case 132:
YY_RULE_SETUP
#line 354 "tools/widl/parser.l"
{ return tUSESGETLASTERROR; }
	YY_BREAK
case 133:
YY_RULE_SETUP
#line 355 "tools/widl/parser.l"
{ return tUUID; }
	YY_BREAK
case 134:
YY_RULE_SETUP
#line 356 "tools/widl/parser.l"
{ return tV1ENUM; }
	YY_BREAK
case 135:
YY_RULE_SETUP
#line 357 "tools/widl/parser.l"
{ return tVARARG; }
	YY_BREAK
case 136:
YY_RULE_SETUP
#line 358 "tools/widl/parser.l"
{ return tVERSION; }
	YY_BREAK
case 137:
YY_RULE_SETUP
#line 359 "tools/widl/parser.l"
{ return tVIPROGID; }
	YY_BREAK
case 138:
YY_RULE_SETUP
#line 360 "tools/widl/parser.l"
{ return tWIREMARSHAL; }
	YY_BREAK


case 139:
YY_RULE_SETUP
#line 364 "tools/widl/parser.l"
{ yy_push_state( PP_PRAGMA ); }
	YY_BREAK
case 140:
YY_RULE_SETUP
#line 365 "tools/widl/parser.l"
{ return tPRAGMA_WARNING; }
	YY_BREAK
case 141:
YY_RULE_SETUP
#line 367 "tools/widl/parser.l"
{
                                                    yylval->dbl = strtod( yytext, NULL );
                                                    return aDOUBLE;
                                                }
	YY_BREAK

case 142:
*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
(yy_c_buf_p) = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
#line 373 "tools/widl/parser.l"
return tSAFEARRAY;
	YY_BREAK

case 143:
YY_RULE_SETUP
#line 376 "tools/widl/parser.l"
{ yy_push_state(PP_LINE); }
	YY_BREAK
case 144:
YY_RULE_SETUP
#line 377 "tools/widl/parser.l"
{ yy_push_state(ATTR); return '['; }
	YY_BREAK
case 145:
YY_RULE_SETUP
#line 379 "tools/widl/parser.l"
{ return tFALSE; }
	YY_BREAK
case 146:
YY_RULE_SETUP
#line 380 "tools/widl/parser.l"
{ return tNULL; }
	YY_BREAK
case 147:
YY_RULE_SETUP
#line 381 "tools/widl/parser.l"
{ return tTRUE; }
	YY_BREAK
case 148:
YY_RULE_SETUP
#line 382 "tools/widl/parser.l"
{ return token_str( tCDECL, "__cdecl", yylval ); }
	YY_BREAK
case 149:
YY_RULE_SETUP
#line 383 "tools/widl/parser.l"
{ return token_str( tPASCAL, "__pascal", yylval ); }
	YY_BREAK
case 150:
YY_RULE_SETUP
#line 384 "tools/widl/parser.l"
{ return token_str( tSTDCALL, "__stdcall", yylval ); }
	YY_BREAK
case 151:
YY_RULE_SETUP
#line 385 "tools/widl/parser.l"
{ return token_str( tFASTCALL, "__fastcall", yylval ); }
	YY_BREAK
case 152:
YY_RULE_SETUP
#line 386 "tools/widl/parser.l"
{ return tINT32; }
	YY_BREAK
case 153:
YY_RULE_SETUP
#line 387 "tools/widl/parser.l"
{ return tINT3264; }
	YY_BREAK
case 154:
YY_RULE_SETUP
#line 388 "tools/widl/parser.l"
{ return tINT64; }
	YY_BREAK
case 155:
YY_RULE_SETUP
#line 389 "tools/widl/parser.l"
{ return token_winrt( tAPICONTRACT, yytext, yylval ); }
	YY_BREAK
case 156:
YY_RULE_SETUP
#line 390 "tools/widl/parser.l"
{ return tBOOLEAN; }
	YY_BREAK
case 157:
YY_RULE_SETUP
#line 391 "tools/widl/parser.l"
{ return tBYTE; }
	YY_BREAK
case 158:
YY_RULE_SETUP
#line 392 "tools/widl/parser.l"
{ return tCASE; }
	YY_BREAK
case 159:
YY_RULE_SETUP
#line 393 "tools/widl/parser.l"
{ return tCHAR; }
	YY_BREAK
case 160:
YY_RULE_SETUP
#line 394 "tools/widl/parser.l"
{ return tCOCLASS; }
	YY_BREAK
case 161:
YY_RULE_SETUP
#line 395 "tools/widl/parser.l"
{ return tCONST; }
	YY_BREAK
case 162:
YY_RULE_SETUP
#line 396 "tools/widl/parser.l"
{ return tCPPQUOTE; }
	YY_BREAK
case 163:
YY_RULE_SETUP
#line 397 "tools/widl/parser.l"
{ return token_winrt( tDECLARE, yytext, yylval ); }
	YY_BREAK
case 164:
YY_RULE_SETUP
#line 398 "tools/widl/parser.l"
{ return tDEFAULT; }
	YY_BREAK
case 165:
YY_RULE_SETUP
#line 399 "tools/widl/parser.l"
{ return token_winrt( tDELEGATE, yytext, yylval ); }
	YY_BREAK
case 166:
YY_RULE_SETUP
#line 400 "tools/widl/parser.l"
{ return tDISPINTERFACE; }
	YY_BREAK
case 167:
YY_RULE_SETUP
#line 401 "tools/widl/parser.l"
{ return tDOUBLE; }
	YY_BREAK
case 168:
YY_RULE_SETUP
#line 402 "tools/widl/parser.l"
{ return tENUM; }
	YY_BREAK
case 169:
YY_RULE_SETUP
#line 403 "tools/widl/parser.l"
{ return tERRORSTATUST; }
	YY_BREAK
case 170:
YY_RULE_SETUP
#line 404 "tools/widl/parser.l"
{ return tEXTERN; }
	YY_BREAK
case 171:
YY_RULE_SETUP
#line 405 "tools/widl/parser.l"
{ return tFLOAT; }
	YY_BREAK
case 172:
YY_RULE_SETUP
#line 406 "tools/widl/parser.l"
{ return tHANDLET; }
	YY_BREAK
case 173:
YY_RULE_SETUP
#line 407 "tools/widl/parser.l"
{ return tHYPER; }
	YY_BREAK
case 174:
YY_RULE_SETUP
#line 408 "tools/widl/parser.l"
{ return tIMPORT; }
	YY_BREAK
case 175:
YY_RULE_SETUP
#line 409 "tools/widl/parser.l"
{ return tIMPORTLIB; }
	YY_BREAK
case 176:
YY_RULE_SETUP
#line 410 "tools/widl/parser.l"
{ return tINLINE; }
	YY_BREAK
case 177:
YY_RULE_SETUP
#line 411 "tools/widl/parser.l"
{ return tINT; }
	YY_BREAK
case 178:
YY_RULE_SETUP
#line 412 "tools/widl/parser.l"
{ return tINTERFACE; }
	YY_BREAK
case 179:
YY_RULE_SETUP
#line 413 "tools/widl/parser.l"
{ return tLIBRARY; }
	YY_BREAK
case 180:
YY_RULE_SETUP
#line 414 "tools/widl/parser.l"
{ return tLONG; }
	YY_BREAK
case 181:
YY_RULE_SETUP
#line 415 "tools/widl/parser.l"
{ return tMETHODS; }
	YY_BREAK
case 182:
YY_RULE_SETUP
#line 416 "tools/widl/parser.l"
{ return tMODULE; }
	YY_BREAK
case 183:
YY_RULE_SETUP
#line 417 "tools/widl/parser.l"
{ return token_winrt( tNAMESPACE, yytext, yylval ); }
	YY_BREAK
case 184:
YY_RULE_SETUP
#line 418 "tools/widl/parser.l"
{ return tPROPERTIES; }
	YY_BREAK
case 185:
YY_RULE_SETUP
#line 419 "tools/widl/parser.l"
{ return tREGISTER; }
	YY_BREAK
case 186:
YY_RULE_SETUP
#line 420 "tools/widl/parser.l"
{ return token_winrt( tREQUIRES, yytext, yylval ); }
	YY_BREAK
case 187:
YY_RULE_SETUP
#line 421 "tools/widl/parser.l"
{ return token_winrt( tRUNTIMECLASS, yytext, yylval ); }
	YY_BREAK
case 188:
YY_RULE_SETUP
#line 422 "tools/widl/parser.l"
{ return tSHORT; }
	YY_BREAK
case 189:
YY_RULE_SETUP
#line 423 "tools/widl/parser.l"
{ return tSIGNED; }
	YY_BREAK
case 190:
YY_RULE_SETUP
#line 424 "tools/widl/parser.l"
{ return tSIZEOF; }
	YY_BREAK
case 191:
YY_RULE_SETUP
#line 425 "tools/widl/parser.l"
{ return tSMALL; }
	YY_BREAK
case 192:
YY_RULE_SETUP
#line 426 "tools/widl/parser.l"
{ return tSTATIC; }
	YY_BREAK
case 193:
YY_RULE_SETUP
#line 427 "tools/widl/parser.l"
{ return tSTRUCT; }
	YY_BREAK
case 194:
YY_RULE_SETUP
#line 428 "tools/widl/parser.l"
{ return tSWITCH; }
	YY_BREAK
case 195:
YY_RULE_SETUP
#line 429 "tools/widl/parser.l"
{ return tTYPEDEF; }
	YY_BREAK
case 196:
YY_RULE_SETUP
#line 430 "tools/widl/parser.l"
{ return tUNION; }
	YY_BREAK
case 197:
YY_RULE_SETUP
#line 431 "tools/widl/parser.l"
{ return tUNSIGNED; }
	YY_BREAK
case 198:
YY_RULE_SETUP
#line 432 "tools/widl/parser.l"
{ return tVOID; }
	YY_BREAK
case 199:
YY_RULE_SETUP
#line 433 "tools/widl/parser.l"
{ return tWCHAR; }
	YY_BREAK
case 200:
YY_RULE_SETUP
#line 435 "tools/widl/parser.l"
{ return token_ident( yytext, yylval ); }
	YY_BREAK
case 201:
YY_RULE_SETUP
#line 437 "tools/widl/parser.l"
{ return token_num( yytext, yylval, TRUE ); }
	YY_BREAK
case 202:
YY_RULE_SETUP
#line 438 "tools/widl/parser.l"
{ return token_num( yytext, yylval, FALSE ); }
	YY_BREAK
case 203:
/* rule 203 can match eol */
YY_RULE_SETUP
#line 440 "tools/widl/parser.l"
{ return token_str( aWSTRING, yytext + 1, yylval ); }
	YY_BREAK
case 204:
/* rule 204 can match eol */
YY_RULE_SETUP
#line 441 "tools/widl/parser.l"
{ return token_str( aSTRING, yytext, yylval ); }
	YY_BREAK
case 205:
/* rule 205 can match eol */
YY_RULE_SETUP
#line 442 "tools/widl/parser.l"
{ return token_str( aSQSTRING, yytext, yylval ); }
	YY_BREAK
case 206:
/* rule 206 can match eol */
YY_RULE_SETUP
#line 444 "tools/widl/parser.l"
{ end_of_line( yylloc ); }
	YY_BREAK
case 207:
YY_RULE_SETUP
#line 445 "tools/widl/parser.l"
{}
	YY_BREAK
case 208:
YY_RULE_SETUP
#line 446 "tools/widl/parser.l"
{ return SHL; }
	YY_BREAK
case 209:
YY_RULE_SETUP
#line 447 "tools/widl/parser.l"
{ return SHR; }
	YY_BREAK
case 210:
YY_RULE_SETUP
#line 448 "tools/widl/parser.l"
{ return MEMBERPTR; }
	YY_BREAK
case 211:
YY_RULE_SETUP
#line 449 "tools/widl/parser.l"
{ return EQUALITY; }
	YY_BREAK
case 212:
YY_RULE_SETUP
#line 450 "tools/widl/parser.l"
{ return INEQUALITY; }
	YY_BREAK
case 213:
YY_RULE_SETUP
#line 451 "tools/widl/parser.l"
{ return GREATEREQUAL; }
	YY_BREAK
case 214:
YY_RULE_SETUP
#line 452 "tools/widl/parser.l"
{ return LESSEQUAL; }
	YY_BREAK
case 215:
YY_RULE_SETUP
#line 453 "tools/widl/parser.l"
{ return LOGICALOR; }
	YY_BREAK
case 216:
YY_RULE_SETUP
#line 454 "tools/widl/parser.l"
{ return LOGICALAND; }
	YY_BREAK
case 217:
YY_RULE_SETUP
#line 455 "tools/widl/parser.l"
{ return ELLIPSIS; }
	YY_BREAK
case 218:
YY_RULE_SETUP
#line 456 "tools/widl/parser.l"
{ return yytext[0]; }
	YY_BREAK

case YY_STATE_EOF(INITIAL):
case YY_STATE_EOF(ATTR):
case YY_STATE_EOF(PP_LINE):
case YY_STATE_EOF(PP_FILE):
case YY_STATE_EOF(PP_PRAGMA):
#line 459 "tools/widl/parser.l"
{
                            if (!list_empty( &import_stack ))
                                return aEOF;
                            if (acf_name)
                            {
                                switch_to_acf();
                                return aACF;
                            }
                            yyterminate();
			}
	YY_BREAK
case 219:
YY_RULE_SETUP
#line 469 "tools/widl/parser.l"
ECHO;
	YY_BREAK
#line 3427 "tools/widl/parser.yy.c"

	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 yyin at a new source and called
			 * yylex().  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 = yyin;
			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_last_accepting_cpos);
				yy_current_state = (yy_last_accepting_state);
				goto yy_find_action;
				}
			}

		else switch ( yy_get_next_buffer(  ) )
			{
			case EOB_ACT_END_OF_FILE:
				{
				(yy_did_buffer_switch_on_eof) = 0;

				if ( yywrap(  ) )
					{
					/* Note: because we've taken care in
					 * yy_get_next_buffer() to have set up
					 * yytext, 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 user's declarations */
} /* end of yylex */

/* 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)
{
    	char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
	char *source = (yytext_ptr);
	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_LVALUE;

			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. */
					yyrealloc( (void *) b->yy_ch_buf,
							 (yy_size_t) (b->yy_buf_size + 2)  );
				}
			else
				/* Can't grow it, we don't own it. */
				b->yy_ch_buf = NULL;

			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), 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;
			yyrestart( yyin  );
			}

		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_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
		/* Extend the array by 50%, plus the number we really need. */
		int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
		YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc(
			(void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size  );
		if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
			YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
		/* "- 2" to take care of EOB's */
		YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2);
	}

	(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)
{
	yy_state_type yy_current_state;
	char *yy_cp;
    
	yy_current_state = (yy_start);
	yy_current_state += YY_AT_BOL();

	for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
		{
		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 >= 1469 )
				yy_c = yy_meta[yy_c];
			}
		yy_current_state = yy_nxt[yy_base[yy_current_state] + 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 )
{
	int yy_is_jam;
    	char *yy_cp = (yy_c_buf_p);

	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 >= 1469 )
			yy_c = yy_meta[yy_c];
		}
	yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
	yy_is_jam = (yy_current_state == 1468);

		return yy_is_jam ? 0 : yy_current_state;
}

#ifndef YY_NO_UNPUT

#endif

#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 = (int) ((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. */
					yyrestart( yyin );

					/*FALLTHROUGH*/

				case EOB_ACT_END_OF_FILE:
					{
					if ( yywrap(  ) )
						return 0;

					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 yytext */
	(yy_hold_char) = *++(yy_c_buf_p);

	YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n');

	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 yyrestart  (FILE * input_file )
{
    
	if ( ! YY_CURRENT_BUFFER ){
        yyensure_buffer_stack ();
		YY_CURRENT_BUFFER_LVALUE =
            yy_create_buffer( yyin, YY_BUF_SIZE );
	}

	yy_init_buffer( YY_CURRENT_BUFFER, input_file );
	yy_load_buffer_state(  );
}

/** Switch to a different input buffer.
 * @param new_buffer The new input buffer.
 * 
 */
    void yy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
{
    
	/* TODO. We should be able to replace this entire function body
	 * with
	 *		yypop_buffer_state();
	 *		yypush_buffer_state(new_buffer);
     */
	yyensure_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;
	yy_load_buffer_state(  );

	/* We don't actually know whether we did this switch during
	 * EOF (yywrap()) processing, but the only time this flag
	 * is looked at is after yywrap() is called, so it's safe
	 * to go ahead and always set it.
	 */
	(yy_did_buffer_switch_on_eof) = 1;
}

static void yy_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;
	yyin = 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 yy_create_buffer  (FILE * file, int  size )
{
	YY_BUFFER_STATE b;
    
	b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state )  );
	if ( ! b )
		YY_FATAL_ERROR( "out of dynamic memory in yy_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 *) yyalloc( (yy_size_t) (b->yy_buf_size + 2)  );
	if ( ! b->yy_ch_buf )
		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );

	b->yy_is_our_buffer = 1;

	yy_init_buffer( b, file );

	return b;
}

/** Destroy the buffer.
 * @param b a buffer created with yy_create_buffer()
 * 
 */
    void yy_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 )
		yyfree( (void *) b->yy_ch_buf  );

	yyfree( (void *) b  );
}

/* Initializes or reinitializes a buffer.
 * This function is sometimes called more than once on the same buffer,
 * such as during a yyrestart() or at EOF.
 */
    static void yy_init_buffer  (YY_BUFFER_STATE  b, FILE * file )

{
	int oerrno = errno;
    
	yy_flush_buffer( b );

	b->yy_input_file = file;
	b->yy_fill_buffer = 1;

    /* If b is the current buffer, then yy_init_buffer was _probably_
     * called from yyrestart() 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 = 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 yy_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 )
		yy_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 yypush_buffer_state (YY_BUFFER_STATE new_buffer )
{
    	if (new_buffer == NULL)
		return;

	yyensure_buffer_stack();

	/* This block is copied from yy_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 yy_switch_to_buffer. */
	yy_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 yypop_buffer_state (void)
{
    	if (!YY_CURRENT_BUFFER)
		return;

	yy_delete_buffer(YY_CURRENT_BUFFER );
	YY_CURRENT_BUFFER_LVALUE = NULL;
	if ((yy_buffer_stack_top) > 0)
		--(yy_buffer_stack_top);

	if (YY_CURRENT_BUFFER) {
		yy_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 yyensure_buffer_stack (void)
{
	yy_size_t 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; /* After all that talk, this was set to 1 anyways... */
		(yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
								(num_to_alloc * sizeof(struct yy_buffer_state*)
								);
		if ( ! (yy_buffer_stack) )
			YY_FATAL_ERROR( "out of dynamic memory in yyensure_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. */
		yy_size_t grow_size = 8 /* arbitrary grow size */;

		num_to_alloc = (yy_buffer_stack_max) + grow_size;
		(yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
								((yy_buffer_stack),
								num_to_alloc * sizeof(struct yy_buffer_state*)
								);
		if ( ! (yy_buffer_stack) )
			YY_FATAL_ERROR( "out of dynamic memory in yyensure_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 yy_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 NULL;

	b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state )  );
	if ( ! b )
		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );

	b->yy_buf_size = (int) (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 = NULL;
	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;

	yy_switch_to_buffer( b  );

	return b;
}

/** Setup the input buffer state to scan a string. The next call to yylex() 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
 *       yy_scan_bytes() instead.
 */
YY_BUFFER_STATE yy_scan_string (const char * yystr )
{
    
	return yy_scan_bytes( yystr, (int) strlen(yystr) );
}

/** Setup the input buffer state to scan the given bytes. The next call to yylex() will
 * scan from a @e copy of @a bytes.
 * @param yybytes the byte buffer to scan
 * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
 * 
 * @return the newly allocated buffer state object.
 */
YY_BUFFER_STATE yy_scan_bytes  (const 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 = (yy_size_t) (_yybytes_len + 2);
	buf = (char *) yyalloc( n  );
	if ( ! buf )
		YY_FATAL_ERROR( "out of dynamic memory in yy_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 = yy_scan_buffer( buf, n );
	if ( ! b )
		YY_FATAL_ERROR( "bad buffer in yy_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;
}

    static void yy_push_state (int  _new_state )
{
    	if ( (yy_start_stack_ptr) >= (yy_start_stack_depth) )
		{
		yy_size_t new_size;

		(yy_start_stack_depth) += YY_START_STACK_INCR;
		new_size = (yy_size_t) (yy_start_stack_depth) * sizeof( int );

		if ( ! (yy_start_stack) )
			(yy_start_stack) = (int *) yyalloc( new_size  );

		else
			(yy_start_stack) = (int *) yyrealloc(
					(void *) (yy_start_stack), new_size  );

		if ( ! (yy_start_stack) )
			YY_FATAL_ERROR( "out of memory expanding start-condition stack" );
		}

	(yy_start_stack)[(yy_start_stack_ptr)++] = YY_START;

	BEGIN(_new_state);
}

    static void yy_pop_state  (void)
{
    	if ( --(yy_start_stack_ptr) < 0 )
		YY_FATAL_ERROR( "start-condition stack underflow" );

	BEGIN((yy_start_stack)[(yy_start_stack_ptr)]);
}

#ifndef YY_EXIT_FAILURE
#define YY_EXIT_FAILURE 2
#endif

static void yynoreturn yy_fatal_error (const char* msg )
{
			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 yytext. */ \
        int yyless_macro_arg = (n); \
        YY_LESS_LINENO(yyless_macro_arg);\
		yytext[yyleng] = (yy_hold_char); \
		(yy_c_buf_p) = yytext + yyless_macro_arg; \
		(yy_hold_char) = *(yy_c_buf_p); \
		*(yy_c_buf_p) = '\0'; \
		yyleng = yyless_macro_arg; \
		} \
	while ( 0 )

/* Accessor  methods (get/set functions) to struct members. */

/** Get the current line number.
 * 
 */
int yyget_lineno  (void)
{
    
    return yylineno;
}

/** Get the input stream.
 * 
 */
FILE *yyget_in  (void)
{
        return yyin;
}

/** Get the output stream.
 * 
 */
FILE *yyget_out  (void)
{
        return yyout;
}

/** Get the length of the current token.
 * 
 */
int yyget_leng  (void)
{
        return yyleng;
}

/** Get the current token.
 * 
 */

char *yyget_text  (void)
{
        return yytext;
}

/** Set the current line number.
 * @param _line_number line number
 * 
 */
void yyset_lineno (int  _line_number )
{
    
    yylineno = _line_number;
}

/** Set the input stream. This does not discard the current
 * input buffer.
 * @param _in_str A readable stream.
 * 
 * @see yy_switch_to_buffer
 */
void yyset_in (FILE *  _in_str )
{
        yyin = _in_str ;
}

void yyset_out (FILE *  _out_str )
{
        yyout = _out_str ;
}

int yyget_debug  (void)
{
        return yy_flex_debug;
}

void yyset_debug (int  _bdebug )
{
        yy_flex_debug = _bdebug ;
}

static int yy_init_globals (void)
{
        /* Initialization is the same as for the non-reentrant scanner.
     * This function is called from yylex_destroy(), so don't allocate here.
     */

    (yy_buffer_stack) = NULL;
    (yy_buffer_stack_top) = 0;
    (yy_buffer_stack_max) = 0;
    (yy_c_buf_p) = NULL;
    (yy_init) = 0;
    (yy_start) = 0;

    (yy_start_stack_ptr) = 0;
    (yy_start_stack_depth) = 0;
    (yy_start_stack) =  NULL;

/* Defined in main.c */
#ifdef YY_STDINIT
    yyin = stdin;
    yyout = stdout;
#else
    yyin = NULL;
    yyout = NULL;
#endif

    /* For future reference: Set errno on error, since we are called by
     * yylex_init()
     */
    return 0;
}

/* yylex_destroy is for both reentrant and non-reentrant scanners. */
int yylex_destroy  (void)
{
    
    /* Pop the buffer stack, destroying each element. */
	while(YY_CURRENT_BUFFER){
		yy_delete_buffer( YY_CURRENT_BUFFER  );
		YY_CURRENT_BUFFER_LVALUE = NULL;
		yypop_buffer_state();
	}

	/* Destroy the stack itself. */
	yyfree((yy_buffer_stack) );
	(yy_buffer_stack) = NULL;

    /* Destroy the start condition stack. */
        yyfree( (yy_start_stack)  );
        (yy_start_stack) = NULL;

    /* Reset the globals. This is important in a non-reentrant scanner so the next time
     * yylex() is called, initialization will occur. */
    yy_init_globals( );

    return 0;
}

/*
 * Internal utility routines.
 */

#ifndef yytext_ptr
static void yy_flex_strncpy (char* s1, const char * s2, int n )
{
		
	int i;
	for ( i = 0; i < n; ++i )
		s1[i] = s2[i];
}
#endif

#ifdef YY_NEED_STRLEN
static int yy_flex_strlen (const char * s )
{
	int n;
	for ( n = 0; s[n]; ++n )
		;

	return n;
}
#endif

void *yyalloc (yy_size_t  size )
{
			return malloc(size);
}

void *yyrealloc  (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 realloc(ptr, size);
}

void yyfree (void * ptr )
{
			free( (char *) ptr );	/* see yyrealloc() for (char *) cast */
}

#define YYTABLES_NAME "yytables"

#line 469 "tools/widl/parser.l"


static void print_imports(void)
{
    struct import_state *state, *next;

    if (list_empty( &import_stack )) return;

    fprintf( stderr, "In file included from " );
    LIST_FOR_EACH_ENTRY_SAFE_REV( state, next, &import_stack, struct import_state, entry )
    {
        if (&next->entry == &import_stack) break;
        fprintf( stderr, "%s:%d,\n", state->input_name, state->where.first_line );
        fprintf( stderr, "                 from ");
    }
    fprintf( stderr, "%s:%d:\n", state->input_name, state->where.first_line );
}

struct location pop_import(void)
{
    struct list *entry = list_head( &import_stack );
    struct import_state *state;
    struct location where;
    assert( entry );

    state = LIST_ENTRY( entry, struct import_state, entry );
    list_remove( &state->entry );
    parse_only = !list_empty( &import_stack );

    if (yyin) fclose( yyin );
    yy_delete_buffer( YY_CURRENT_BUFFER );
    yy_switch_to_buffer( state->buffer );

    input_name = state->input_name;
    where = state->where;
    free( state );
    return where;
}

void push_import( const char *import_name, struct location *where )
{
    struct import_state *state;
    struct import *import;
    FILE *file;

    state = xmalloc( sizeof(struct import_state ));
    list_add_head( &import_stack, &state->entry );
    parse_only = !list_empty( &import_stack );

    state->buffer = YY_CURRENT_BUFFER;
    state->input_name = input_name;
    state->where = *where;
    input_name = NULL;

    /* reset buffer for <<EOF>>, in case import fails or already imported */
    yy_scan_string( "" );

    LIST_FOR_EACH_ENTRY( import, &imports, struct import, entry )
        if (!strcmp( import->name, import_name )) return;  /* already imported */
    if (!strcmp( idl_name, import_name )) return;  /* already imported */

    import = xmalloc( sizeof(struct import) );
    import->name = xstrdup( import_name );
    list_add_tail( &imports, &import->entry );

    input_name = find_input_file( import_name, state->input_name );
    file = open_input_file( input_name );
    reset_location( where, input_name );

    yy_switch_to_buffer( yy_create_buffer( file, YY_BUF_SIZE ) );
}

static void switch_to_acf(void)
{
    FILE *file;

    if (yyin) fclose( yyin );
    yy_delete_buffer( YY_CURRENT_BUFFER );

    input_name = xstrdup( acf_name );
    file = open_input_file( input_name );
    acf_name = NULL;

    yy_switch_to_buffer( yy_create_buffer( file, YY_BUF_SIZE ) );
}

void close_all_inputs(void)
{
    while (!list_empty( &import_stack )) pop_import();
    if (yyin) fclose( yyin );
}

static void reset_location( struct location *where, const char *input_name )
{
    where->first_line = 1;
    where->last_line = 1;
    where->first_column = 1;
    where->last_column = 1;
    where->input_name = xstrdup( input_name );
}

static void update_location( struct location *where, const char *yytext )
{
    int len = strlen( yytext );
    previous_location = *where;
    where->first_column = where->last_column;
    where->last_column += len;
}

static void end_of_line( struct location *where )
{
    where->first_line++;
    where->last_line++;
    where->first_column = 1;
    where->last_column = 1;
}

void init_location( struct location *where, const struct location *begin, const struct location *end )
{
    if (!begin) begin = &previous_location;
    *where = *begin;

    if (end)
    {
        where->last_line   = end->last_line;
        where->last_column = end->last_column;
    }
    else
    {
        where->first_line   = begin->last_line;
        where->first_column = begin->last_column;
    }
}

static void diagnostic( const struct location *where, const char *type, const char *message )
{
    char buffer[1024], *line = NULL;
    FILE *file;
    int i;

    if (!where) where = &previous_location;

    print_imports();

    fprintf( stderr, "%s:%d:%d: %s: %s\n", where->input_name, where->first_line, where->first_column, type, message );

    if (!where->input_name || !(file = fopen( where->input_name, "r" ))) return;
    for (i = 0; i < where->first_line; i++) if (!(line = fgets( buffer, sizeof(buffer), file ))) break;
    fclose( file );
    if (!line) return;
    fprintf( stderr, "%s", line );

    line = buffer;
    for (i = 0; i < where->first_column - 1; i++) *line++ = ' ';
    *line++ = '^';
    for (i = where->first_column + 1; i < where->last_column; i++) *line++ = '~';
    *line = '\0';
    fprintf( stderr, "%s\n", buffer );
}

void parser_error( const struct location *where, const char *message )
{
    diagnostic( where, "error", message );
}

void parser_warning( const struct location *where, const char *message )
{
    diagnostic( where, "warning", message );
}

static void warning_disable(int warning)
{
    warning_t *warning_entry;
    LIST_FOR_EACH_ENTRY(warning_entry, disabled_warnings, warning_t, entry)
        if(warning_entry->num == warning)
            return;
    warning_entry = xmalloc( sizeof(*warning_entry) );
    warning_entry->num = warning;
    list_add_tail(disabled_warnings, &warning_entry->entry);
}

static void warning_enable(int warning)
{
    warning_t *warning_entry;
    LIST_FOR_EACH_ENTRY(warning_entry, disabled_warnings, warning_t, entry)
        if(warning_entry->num == warning)
        {
            list_remove(&warning_entry->entry);
            free(warning_entry);
            break;
        }
}

int do_warning(const char *toggle, warning_list_t *wnum)
{
    warning_t *warning, *next;
    int ret = 1;
    if(!disabled_warnings)
    {
        disabled_warnings = xmalloc( sizeof(*disabled_warnings) );
        list_init( disabled_warnings );
    }

    if(!strcmp(toggle, "disable"))
        LIST_FOR_EACH_ENTRY(warning, wnum, warning_t, entry)
            warning_disable(warning->num);
    else if(!strcmp(toggle, "enable") || !strcmp(toggle, "default"))
        LIST_FOR_EACH_ENTRY(warning, wnum, warning_t, entry)
            warning_enable(warning->num);
    else
        ret = 0;

    LIST_FOR_EACH_ENTRY_SAFE(warning, next, wnum, warning_t, entry)
        free(warning);
    return ret;
}

int is_warning_enabled(int warning)
{
    warning_t *warning_entry;
    if(!disabled_warnings)
        return 1;
    LIST_FOR_EACH_ENTRY(warning_entry, disabled_warnings, warning_t, entry)
        if(warning_entry->num == warning)
            return 0;
    return 1;
}

