#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[1473] =
    {   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,  202,  202,  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,  201,  201,  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[1516] =
    {   0,
        0,   65,  113,   66,   60,   67, 2490, 2489,   88,   90,
     2493, 2496, 2496, 2496, 2471,   64, 2484,   62, 2468, 2477,
      164,   53,   68, 2467,   73,    0, 2464, 2481, 2452, 2461,
     2453, 2496,   64, 2427,   36,  146,   48,   51, 2430,   57,
       58,   59,   61, 2440,   84,   89,  143, 2415, 2425, 2423,
     2434, 2409,  157,  132,  140,  223,  256,  151,  307, 2451,
     2496,  165,  165,  248,  309,  198,  287,  186,  313,  292,
      314,  177,  321,  252,  218,  331,  188,  257,  356,  162,
      141, 2471, 2496,  399,    0,  207,    0, 2424, 2423, 2496,
      248, 2496, 2467, 2496,  195, 2496, 2466, 2496, 2456,  406,

      220,   65,   84,    0, 2496, 2496, 2496, 2496, 2496,    0,
     2439,  281, 2438, 2439, 2431,  329, 2420, 2422, 2421, 2401,
     2411, 2404, 2398, 2398, 2411, 2414,  234, 2398,  344, 2394,
     2391, 2390, 2392, 2389, 2393, 2393, 2390, 2389,  278, 2402,
     2389, 2382, 2397, 2387, 2380, 2383,  150, 2383, 2381,  248,
     2394,  105, 2385, 2377,  185, 2383, 2383, 2496,  386,  144,
     2381,  312, 2371, 2384,  426,  459,    0,  507, 2398, 2366,
      297, 2373, 2370,  351, 2358, 2362, 2367,  321, 2365, 2359,
      277, 2373,  355, 2358,  463, 2357, 2363,  349, 2373,  387,
     2368,  406, 2351,  439, 2353, 2365, 2355, 2356, 2363, 2361,

     2351, 2360,   68,  456, 2354, 2348,  215,  251,  369,  373,
     2360, 2339,  352, 2349, 2346, 2352, 2336, 2335, 2349,  377,
     2344, 2337, 2333, 2348, 2335,  498,  444, 2327,  502, 2338,
     2328, 2344, 2340,  405, 2338, 2333, 2341, 2322, 2321, 2338,
     2319,  452, 2373, 2372, 2371,  553,    0,  423, 2370,  433,
        0, 2328, 2317, 2496,  560, 2496, 2496,  429, 2338,  451,
     2496, 2365, 2339, 2341, 2340, 2311, 2305, 2319, 2319, 2309,
     2315, 2314, 2315, 2299, 2304, 2296, 2314, 2301, 2311, 2306,
     2294, 2307, 2295, 2292, 2301, 2304, 2300, 2298, 2287, 2292,
     2295, 2281, 2291, 2289, 2275, 2290, 2291, 2277, 2283, 2270,

     2270, 2271, 2274, 2282, 2274, 2265, 2281, 2262, 2262, 2276,
     2265, 2270, 2274, 2276, 2272, 2274, 2262,  592,  625,    0,
      673, 2264, 2254, 2259,  442, 2255, 2251, 2253, 2253, 2251,
     2261, 2256, 2262, 2257, 2249, 2257, 2254,  287,  454, 2238,
      440, 2256, 2238,  506, 2241, 2234, 2241, 2250, 2236, 2234,
     2231, 2234, 2235, 2234, 2233, 2237, 2240, 2237, 2237, 2224,
     2235, 2225, 2222, 2236, 2230,  483, 2222, 2212, 2226, 2219,
     2213, 2213, 2191, 2178, 2160,    0, 2158, 2162,  521, 2167,
     2170,    0, 2173, 2164,    0, 2154, 2151, 2156,  534,    0,
     2157, 2161, 2159,    0, 2144, 2140, 2127, 2124, 2138, 2139,

     2125,  476,  468, 2122, 2136, 2126, 2134,  485,  524, 2134,
     2132, 2135, 2116, 2114, 2124, 2165, 2102, 2095,  609,  404,
      489, 2126,    0, 2127,    0, 2090, 2089, 2093, 2102,    0,
        0, 2094,    0, 2104, 2084, 2086, 2101, 2076, 2089, 2086,
     2069,    0, 2062, 2061, 2058, 2065, 2058, 2057, 2060, 2055,
     2071,    0, 2056, 2058, 2050, 2063, 2058, 2043, 2039, 2038,
     2026, 2040, 2029, 2031, 2033, 2040, 2037, 2036, 2034, 2023,
     2029,    0, 2013, 2018, 2022, 2015,  706,  739,    0,  787,
     1992, 2008, 2007, 1997, 2007, 1989, 1988, 2005, 2003, 2005,
     2003,    0, 1999, 1998,  519, 1985,    0, 1996, 1967,  539,

     1966, 1976, 1958, 1973, 1975,  536, 1975, 1975,    0, 1962,
     1969, 1957, 1946, 1950, 1944, 1955, 1943, 1930, 1943,    0,
     1935,  556, 1941, 1929, 1926, 1934, 1938, 1932, 1931, 1919,
        0, 1918, 1923, 1920, 1923, 1925, 1915, 1897, 1910, 1895,
     1894, 1887, 1904, 1906, 1887,  534, 1895, 1897, 1885, 1895,
      548, 1894, 1873, 1888, 1878, 1867, 1876,  411, 1862, 1878,
     1866,  591, 1874, 1872, 1866,  549, 1871, 1872, 1853, 1865,
     1845, 1865, 1857,    0, 1836, 1831, 1839, 1829, 1846, 1845,
     1824,  664,  801, 2496, 2496,    0, 1852,  636, 1839, 1827,
     1839,    0, 1820,    0, 1817, 1815, 1820, 1830, 1803, 1811,

     1815, 1800,    0, 1808,    0, 1792, 1806, 1804, 1791, 1804,
     1802, 1790, 1793, 1782, 1779, 1780, 1771,    0, 1779, 1776,
        0, 1778, 1768, 1759, 1770, 1772,    0, 1762, 1775, 1774,
     1760, 1756,  833,  866,    0,  914, 1766, 1759,    0, 1750,
     1750, 1749, 1736, 1738, 1747, 1738, 1743, 1741, 1740, 1741,
     1740, 1721, 1720, 1710,  559, 1720, 1727, 1706, 1714, 1704,
     1714, 1701, 1707, 1707, 1706, 1701,    0,  555, 1690, 1705,
     1707,    0, 1706, 1696, 1685, 1690, 1665, 1670, 1668, 1677,
     1662, 1671, 1676, 1664, 1677, 1668, 1656,    0, 1673,    0,
     1666, 1667, 1662, 1651, 1647, 1631, 1625, 1629, 1628, 1638,

     1632, 1630, 1643, 1638, 1638, 1636, 1619, 1632,    0,  127,
        0,  155,  219,  297,  355,  447,  462,  479,  492,  524,
      548,  541,  575,  582,  588,  594,  607,  610,  604,  613,
      599,  614,  607,  608,  611,  620,  669,  642,  658,  657,
      635,  625,  640,  636,  641,  656,  642,  643,  644,    0,
      646,    0,  666,  655,    0,  667,  644,  651,    0,  670,
        0,  652,  668,  682,  683,    0,    0,    0,  677,    0,
        0,  688,  690,  676,  681,  697,  681,  947,  980,    0,
     1028,  680,  700,  698,  683,  684,  700,  701,  699,  720,
      710,  726,  714,  711,  728,  712,  733,  715,  733,  725,

        0,    0,  718,  738,  741,  722,  743,  731,  750,    0,
      738,  749,  749,  746,  747,  738,  757,  759,  754,  757,
      752,    0,  762,    0,    0,  782,  775,  780,  767,  794,
      790,  784,  792,  786,    0,  776,  799,  796,  802,    0,
      788,  778,  804,  813,  803,  798,    0,  801,  802,  803,
        0,  812,  820,  806,  824,    0,  828,  810,    0,  812,
        0,  831,    0,  832,  824,  838,  827,    0,  848,  834,
      843,    0,  843,  851,  858,  858,    0,  899,  879,  884,
        0,  853,  848,    0,    0,  853,    0,    0,  869,  870,
      856,  857,  870,  877,    0,    0,  878,  873,  865,  865,

      882,    0,    0,  882,    0,  877,  933,  896, 1061, 1094,
        0, 1142,  901,  883,  899,  900,  897,  893,  905,  888,
      896,  906,  893,  893,    0,  917,  928,  928,  935,  916,
        0,  939,  917,  938,  938,    0,  938,  943,  925,  942,
      934,  940,  943,  948,  958,  951,  967,  964,  970,  956,
      957,    0,  953,  970,  976,  978,    0,    0,  969,  969,
      976,  985,  980,  989,  983,  992,  997,  998,    0,  981,
      995,  984,  996, 1006,  996, 1003,    0, 1014, 1016, 1033,
     1006, 1001, 1010, 1005, 1012,    0,    0, 1016, 1008, 1019,
     1009, 1047, 1066, 1037, 1049, 1046,    0, 1034, 1053,    0,

     1053, 1051, 1052, 1053,    0,    0, 1047,    0, 1059, 1098,
     1068, 1175, 1210, 1104, 1105, 1080, 1083, 1066,    0, 1071,
     1067, 1069, 1081, 1087,    0, 1072, 1079,    0, 1074, 1089,
     1094, 1081, 1089, 1096, 1092, 1110, 1103, 1106, 1101, 1107,
     1101,    0,    0, 1099, 1118, 1124, 1124, 1119, 1127,    0,
     1119, 1120, 1130, 1136, 1123, 1119,    0, 1125, 1139, 1140,
     1123, 1144, 1156,    0,    0,    0, 1149, 1159, 1159, 1161,
        0, 1146, 1163, 1163, 1154,    0, 1155, 1152, 1147, 1166,
     1174, 1155, 1164, 1190, 1188, 1174, 1179, 1195, 1233,    0,
        0, 1194,    0, 1192, 1180,    0,    0,    0, 1182, 1201,

     1198, 1193, 1260,    0, 1235, 1196, 1207,    0, 1196,    0,
        0, 1207, 1200,    0, 1193, 1193, 1210, 1215, 1212, 1196,
     1205, 1208, 1209, 1222, 1220, 1210, 1212,    0, 1215, 1206,
     1209, 1222, 1213, 1226, 1218, 1236, 1228, 1247, 1242, 1248,
        0, 1245, 1251, 1252, 1246, 1255, 1237, 1251, 1254, 1254,
        0, 1267, 1259, 1265, 1266, 1257,    0, 1256,    0, 1272,
        0, 1266, 1256,    0, 1268, 1307, 1262, 1316, 2496, 1260,
     1280, 1261,    0, 1264, 1271, 1284, 1313,    0, 1289, 1283,
        0,    0, 1291,    0, 1282,    0, 1288, 1285, 1299, 1301,
     1294, 1286, 1306,    0, 1295, 1306, 1296, 1307, 1298, 1319,

     1300, 1319, 1303, 1321,    0, 1317, 1326,    0, 1328, 1317,
     1318, 1329, 1325, 1324, 1320, 1329,    0, 1335, 1317,    0,
     1333, 1319, 1335, 1322, 1341, 1323, 1343,    0, 1327,    0,
     1343, 1328, 1329, 1348, 1387, 1377,    0,    0, 1353,    0,
        0, 1355, 1341, 1347,    0, 1361, 1362, 1356, 1350,    0,
     1367,    0,    0, 1357, 1353, 1372,    0, 1359, 1363, 1362,
     1363, 1382, 1380, 1381, 1375,    0, 1373, 1374, 1389, 1372,
        0,    0, 1387,    0,    0, 1381, 1389, 1383, 1391, 1392,
     1398,    0, 1436, 1437, 1487,    0,    0, 1389, 1393, 1391,
     1392,    0, 1400, 1397, 1406, 1404,    0, 1389, 1396, 1399,

     1408, 1409, 1409,    0,    0, 1410, 1402, 1399, 1397,    0,
     1395,    0, 1402,    0, 1415,    0, 1402, 1422, 1520, 1452,
     1420, 1411, 1412, 1423,    0, 1410, 1410, 1419, 1427, 1413,
        0,    0, 1422, 1427,    0,    0, 1431, 1425, 1418, 1421,
     1431,    0, 1423, 1470,    0, 1443, 1430, 1444, 1433, 1427,
     1443, 1444,    0, 1445, 1446, 1451,    0, 1433, 1454, 1440,
     1432, 1443, 1553,    0, 1456,    0, 1454,    0, 1454,    0,
        0, 1444,    0, 1447,    0, 1468, 1459,    0, 1469, 1586,
        0, 1464, 1475,    0, 1467, 1462, 1474, 1483,    0,    0,
     1471, 1619,    0, 1467, 1469, 1498,    0, 1487, 1489, 1501,

     1652, 1537, 1505, 1502, 1487, 1495, 1510, 2496, 1543,    0,
     1498, 1516, 1518,    0, 1507, 1685,    0, 1511, 1522, 1532,
     1531, 1718,    0, 1540, 1533, 1535,    0, 1751,    0, 1532,
     1519, 1541, 1784, 1575, 1539, 1544, 1547, 1579,    0, 1526,
        0, 1542, 1817,    0, 1562,    0, 1850,    0,    0, 1883,
        0, 1916,    0, 1949,    0, 1982,    0, 2015,    0, 2048,
        0, 2081,    0, 2114,    0, 2147,    0, 2180, 2496, 1602,
     2496, 2496, 2225, 2229, 2233, 2237, 2241, 2243, 2247, 2251,
     2255, 1605, 2259, 1611, 1612, 1613, 1614, 2263, 1615, 1616,
     1617, 1618, 1619, 1620, 1621, 1622, 2267, 1636, 1637, 1638,

     1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652,
     1653, 1654, 1655, 1669, 1670
    } ;

static const flex_int16_t yy_def[1516] =
    {   0,
     1472,    1,    1,    3, 1473, 1473, 1474, 1474, 1475, 1475,
     1472, 1472, 1472, 1472, 1472, 1476, 1472, 1477, 1472, 1472,
     1472,   21, 1472, 1472, 1472, 1478, 1478, 1478, 1478, 1478,
     1478, 1472, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1472, 1472, 1472, 1478, 1476, 1472,   57, 1478,   59,
     1472,   59,   59,   59,   59,   59,   59, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1472, 1472, 1472, 1472, 1479, 1480, 1481, 1481, 1481, 1472,
     1476, 1472, 1476, 1472, 1477, 1472, 1477, 1472, 1472, 1472,

       21, 1472, 1472, 1482, 1472, 1472, 1472, 1472, 1472, 1478,
     1478, 1483, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1472, 1472, 1472,
     1472, 1472, 1472, 1478,   56, 1472, 1484, 1478,  168,  168,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
      168,  168, 1478, 1478,  168, 1478, 1478, 1478, 1478, 1478,
     1478, 1478,  168, 1478, 1478, 1478, 1478, 1478, 1478, 1478,

     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1472, 1472, 1472, 1472, 1472, 1479, 1480, 1472, 1480,
     1481, 1481, 1481, 1472, 1472, 1472, 1472, 1482, 1478, 1483,
     1472, 1483, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,

     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1472, 1472, 1478,   56, 1472, 1485,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478,  321, 1478, 1478, 1478, 1478,
      321,  321, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,

     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1472, 1481, 1481, 1472, 1472,
     1472, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1472, 1472, 1478,   56, 1472, 1486, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478,  480, 1478, 1478, 1478, 1478,

     1478, 1478,  480, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1481,
     1481, 1472, 1472, 1472, 1472, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,

     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1472,
     1472, 1478,   56, 1472, 1487, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,

     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1481, 1488, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1472, 1472, 1478,   56, 1472, 1489,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,

     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1481, 1488, 1488, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,

     1478, 1478, 1478, 1478, 1478, 1472, 1472, 1478,   56, 1472,
     1490, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1481,
     1488, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,

     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1472, 1472,
     1478,   56, 1472, 1472, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1481, 1488, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,

     1472, 1478,   56, 1491, 1013, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1481, 1488, 1472, 1472, 1478,
     1478, 1478, 1478, 1478, 1472, 1478,   56, 1492, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,

     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1481, 1488, 1478,
     1478, 1478, 1478, 1472, 1478,   56, 1493, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1488, 1478,
     1478, 1478, 1472, 1472,   56, 1494, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,

     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1488, 1478, 1478, 1472,   56, 1472,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1488, 1478, 1472, 1103, 1495, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478,
     1488, 1472,   56, 1496, 1478, 1478, 1478, 1478, 1478, 1478,
     1478, 1478, 1478, 1478, 1478, 1478, 1478, 1497, 1472,   56,
     1498, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1478, 1497,
     1472,   56, 1499, 1478, 1478, 1478, 1478, 1478, 1478, 1472,

       56, 1472, 1478, 1478, 1478, 1478, 1478, 1472, 1103, 1500,
     1478, 1478, 1478, 1478, 1478,   56, 1501, 1478, 1478, 1478,
     1478,   56, 1502, 1478, 1478, 1478, 1478,   56, 1503, 1478,
     1478, 1478,   56, 1472, 1478, 1478, 1478, 1103, 1504, 1478,
     1478, 1478,   56, 1505, 1478, 1478,   56, 1506, 1478,   56,
     1507,   56, 1508,   56, 1509,   56, 1510,   56, 1511,   56,
     1512,   56, 1513,   56, 1514,   56, 1515,   56, 1472, 1103,
     1472,    0, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472,
     1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472,
     1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472,

     1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472,
     1472, 1472, 1472, 1472, 1472
    } ;

static const flex_int16_t yy_nxt[2563] =
    {   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, 1472,  105,  106,  122,
       83,  129,   83,  108,  109,  130,  136,  256,   97,  123,

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

      128,  152,   96,  157,  153,  300,  170,  852,  161,  241,
      171,  249,  177, 1472,  102,  172,  144,  173,  178,  174,
      212,  179,  175,  103,  176,  197,  104,   92,  180,  198,
      213,   97,  311,  199,  231,  165,  165,  165,  165,  165,
      165,  165,  312,  250,  232,  165,  165,  165,  165,  137,
      190,  154,   92, 1472,  133,  292,  371,  225,  191,   93,
      192,  226,  165,  165,  165,  165,  165,  165,  166,  166,
      166,  166,  166,  166,  166,  275,  853,  148,  167,  167,
      167,  167, 1472,  102,   93,  261,  276,  181,  103,  104,
      182,  220,  372,  303,  126,  167,  167,  167,  167,  167,

      167,  183,  128,  293,  233,  221,  102,  184,  222,  234,
      223,  224,  304,  162,  235,  103,  236,  262,  104,  168,
      168,  168,  168,  168,  168,  168,  193,  335,  290,  168,
      168,  168,  168,  205,  272,  206,  291,  194,  498,  207,
      195,  499,  323,  196,  324,  208,  168,  168,  168,  168,
      168,  168,  185,  209,  854,  200,  186,  210,  201,  187,
      202,  214,  188,  215,  203,  204,  163,  143,  189,  237,
      117,  216,  211,  118,  270,  217,  266,  149,  227,  332,
      218,  219,  151,  119,  228,  278,  120,  159,  279,  229,
      327,  160,  230,  378,  280,  238,  275,  337,  269,  239,

      245,  346,  855,  240,  379,  328,  338,  339,  282,  156,
      380,  246,  246,  246,  246,  246,  246,  246,  255,  255,
      255,  255,  255,  255,  255,  373,  348,  249,  349,  350,
      375,  294,  374,  387,  297,  248,  584,  161,  318,  318,
      318,  318,  318,  318,  318,  351,  283,  353,  318,  318,
      318,  318,  408,  242,  714,  261,  420,  243,  616,  250,
      354,  421,  312,  584,  285,  318,  318,  318,  318,  318,
      318,  319,  319,  319,  319,  319,  319,  319,  356,  420,
      484,  320,  320,  320,  320, 1472,  102,  262,  421,  303,
      437,  103,  286,  502,  367,  485,  399,  856,  320,  320,

      320,  320,  320,  320,  341,  857,  290,  342,  400,  102,
      368,  435,  500,  280,  291,  566,  585,  343,  103,  321,
      321,  321,  321,  321,  321,  321,  858,  467,  564,  321,
      321,  321,  321,  528,  565,  859,  448,  393,  470,  585,
      571,  402,  394,  299,  307,  505,  321,  321,  321,  321,
      321,  321,  395,  396,  245,  397,  398,  650,  403,  651,
      506,  540,  541,  860,  542,  246,  246,  246,  246,  246,
      246,  246,  255,  255,  255,  255,  255,  255,  255,  550,
      572,  573,  654,  599,  419,  700,  661,  701,  551,  861,
      722,  614,  552,  706,  812,  655,  553,  675,  799,  862,

      676,  723,  707,  419,  477,  477,  477,  477,  477,  477,
      477,  813,  800,  677,  477,  477,  477,  477,  582,  582,
      863,  583,  583,  583,  583,  583,  583,  583,  864,  718,
      865,  477,  477,  477,  477,  477,  477,  478,  478,  478,
      478,  478,  478,  478,  620,  866,  867,  479,  479,  479,
      479,  739,  102,  868,  740,  869,  870,  103,  871,  872,
      873,  874,  875,  876,  479,  479,  479,  479,  479,  479,
      878,  879,  880,  881,  882,  102,  583,  583,  583,  583,
      583,  583,  583,  883,  103,  480,  480,  480,  480,  480,
      480,  480,  884,  885,  886,  480,  480,  480,  480,  887,

      888,  889,  890,  891,  892,  893,  894,  895,  896,  897,
      898,  899,  480,  480,  480,  480,  480,  480,  633,  633,
      633,  633,  633,  633,  633,  900,  901,  902,  633,  633,
      633,  633,  903,  904,  905,  906,  907,  908,  913,  914,
      915,  916,  917,  918,  919,  633,  633,  633,  633,  633,
      633,  634,  634,  634,  634,  634,  634,  634,  920,  921,
      922,  635,  635,  635,  635,  923,  102,  924,  925,  926,
      927,  103,  928,  929,  930,  931,  932,  933,  635,  635,
      635,  635,  635,  635,  934,  935,  936,  937,  938,  102,
      939,  940,  941,  942,  943,  944,  945,  892,  103,  636,

      636,  636,  636,  636,  636,  636,  946,  947,  948,  636,
      636,  636,  636,  583,  583,  583,  583,  583,  583,  583,
      949,  950,  951,  952,  953,  419,  636,  636,  636,  636,
      636,  636,  954,  955,  956,  957,  958,  959,  960,  961,
      962,  963,  964,  965,  419,  778,  778,  778,  778,  778,
      778,  778,  966,  967,  968,  778,  778,  778,  778,  969,
      970,  971,  972,  973,  974,  975,  976,  977,  978,  979,
      980,  981,  778,  778,  778,  778,  778,  778,  779,  779,
      779,  779,  779,  779,  779,  982,  983,  984,  780,  780,
      780,  780,  985,  102,  986,  987,  988,  989,  103,  990,

      878,  992,  993,  994,  995,  780,  780,  780,  780,  780,
      780,  996,  997,  998,  999, 1000,  102, 1001, 1002, 1003,
     1004, 1005, 1006, 1007, 1008,  103,  781,  781,  781,  781,
      781,  781,  781, 1009, 1010, 1011,  781,  781,  781,  781,
     1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025,
     1026,  991, 1027,  781,  781,  781,  781,  781,  781,  909,
      909,  909,  909,  909,  909,  909, 1028, 1029, 1030,  909,
      909,  909,  909, 1031, 1032, 1037, 1038, 1033, 1039, 1034,
     1035, 1040, 1041, 1042, 1043, 1044,  909,  909,  909,  909,
      909,  909,  910,  910,  910,  910,  910,  910,  910, 1036,

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

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

     1103, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157,
     1158, 1159, 1160, 1161, 1103, 1103, 1103, 1103, 1103, 1103,
     1104, 1162, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1163,
     1164, 1165, 1166, 1167, 1168, 1170, 1171,  102, 1172, 1173,
     1174, 1169,  103, 1175, 1176, 1472, 1179, 1180, 1181, 1182,
     1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192,
      102, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200,  103,
     1177, 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, 1226, 1227, 1228, 1229, 1168, 1230, 1231,
     1232, 1233, 1234, 1235, 1169, 1236, 1236, 1236, 1236, 1236,
     1236, 1236, 1238, 1239, 1240, 1236, 1236, 1236, 1236, 1241,
     1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251,
     1252, 1253, 1236, 1236, 1236, 1236, 1236, 1236, 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, 1282, 1283, 1284, 1285,
     1285, 1285, 1285, 1285, 1285, 1285, 1287, 1288, 1289, 1285,

     1285, 1285, 1285, 1290, 1291, 1292, 1293, 1294, 1295, 1296,
     1297, 1298, 1299, 1300, 1301, 1302, 1285, 1285, 1285, 1285,
     1285, 1285, 1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310,
     1311, 1312, 1313, 1314, 1315, 1316, 1317, 1284, 1284, 1321,
     1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331,
     1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341,
     1342, 1343, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352,
     1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362,
     1363, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373,
     1374, 1375, 1376, 1377, 1378, 1379, 1384, 1385, 1318, 1319,

     1319, 1319, 1319, 1319, 1319, 1319, 1386, 1387, 1382, 1319,
     1319, 1319, 1319, 1383, 1388, 1389, 1391, 1394, 1395, 1396,
     1397, 1398, 1399, 1400, 1403, 1404, 1319, 1319, 1319, 1319,
     1319, 1319, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1405,
     1406, 1407, 1344, 1344, 1344, 1344, 1408, 1410, 1411, 1412,
     1413, 1414, 1415, 1416, 1418, 1419, 1420, 1421, 1424, 1344,
     1344, 1344, 1344, 1344, 1344, 1380, 1380, 1380, 1380, 1380,
     1380, 1380, 1425, 1426, 1427, 1380, 1380, 1380, 1380, 1430,
     1431, 1432, 1435, 1436, 1437, 1439, 1440, 1441, 1442, 1443,
     1445, 1446, 1380, 1380, 1380, 1380, 1380, 1380, 1392, 1392,

     1392, 1392, 1392, 1392, 1392, 1449, 1471,  258, 1392, 1392,
     1392, 1392,   91,  320,  479,  635,  780,  911, 1014, 1178,
     1237, 1286, 1320, 1364, 1381, 1392, 1392, 1392, 1392, 1392,
     1392, 1401, 1401, 1401, 1401, 1401, 1401, 1401, 1393, 1402,
     1417, 1401, 1401, 1401, 1401, 1423, 1429, 1434, 1444, 1448,
     1451, 1453, 1455, 1457, 1459, 1461, 1463, 1465, 1401, 1401,
     1401, 1401, 1401, 1401, 1409, 1409, 1409, 1409, 1409, 1409,
     1409, 1467, 1469,  850, 1409, 1409, 1409, 1409,  849,  848,
      847,  846,  845,  844,  843,  842,  841,  840,  839,  838,
      837, 1409, 1409, 1409, 1409, 1409, 1409, 1422, 1422, 1422,

     1422, 1422, 1422, 1422,  836,  835,  834, 1422, 1422, 1422,
     1422,  833,  832,  831,  830,  829,  828,  827,  826,  825,
      824,  823,  822,  821, 1422, 1422, 1422, 1422, 1422, 1422,
     1428, 1428, 1428, 1428, 1428, 1428, 1428,  820,  819,  818,
     1428, 1428, 1428, 1428,  817,  816,  815,  814,  811,  810,
      809,  808,  807,  806,  805,  804,  803, 1428, 1428, 1428,
     1428, 1428, 1428, 1433, 1433, 1433, 1433, 1433, 1433, 1433,
      802,  801,  798, 1433, 1433, 1433, 1433,  797,  796,  795,
      794,  793,  792,  791,  790,  789,  788,  787,  786,  785,
     1433, 1433, 1433, 1433, 1433, 1433, 1438, 1438, 1438, 1438,

     1438, 1438, 1438,  784,  783,  782, 1438, 1438, 1438, 1438,
      777,  776,  775,  774,  773,  772,  771,  770,  769,  768,
      767,  766,  765, 1438, 1438, 1438, 1438, 1438, 1438, 1447,
     1447, 1447, 1447, 1447, 1447, 1447,  764,  763,  762, 1447,
     1447, 1447, 1447,  761,  760,  759,  758,  757,  756,  755,
      754,  753,  752,  751,  750,  749, 1447, 1447, 1447, 1447,
     1447, 1447, 1450, 1450, 1450, 1450, 1450, 1450, 1450,  748,
      747,  746, 1450, 1450, 1450, 1450,  745,  744,  743,  742,
      741,  738,  737,  736,  735,  734,  733,  732,  731, 1450,
     1450, 1450, 1450, 1450, 1450, 1452, 1452, 1452, 1452, 1452,

     1452, 1452,  730,  729,  728, 1452, 1452, 1452, 1452,  727,
      726,  725,  724,  721,  720,  719,  717,  716,  715,  713,
      712,  711, 1452, 1452, 1452, 1452, 1452, 1452, 1454, 1454,
     1454, 1454, 1454, 1454, 1454,  710,  709,  708, 1454, 1454,
     1454, 1454,  705,  704,  703,  702,  699,  698,  697,  696,
      695,  694,  693,  692,  691, 1454, 1454, 1454, 1454, 1454,
     1454, 1456, 1456, 1456, 1456, 1456, 1456, 1456,  690,  689,
      688, 1456, 1456, 1456, 1456,  687,  686,  685,  684,  683,
      682,  681,  680,  679,  678,  674,  673,  672, 1456, 1456,
     1456, 1456, 1456, 1456, 1458, 1458, 1458, 1458, 1458, 1458,

     1458,  671,  670,  669, 1458, 1458, 1458, 1458,  668,  667,
      666,  665,  664,  663,  662,  660,  659,  658,  657,  656,
      653, 1458, 1458, 1458, 1458, 1458, 1458, 1460, 1460, 1460,
     1460, 1460, 1460, 1460,  652,  592,  649, 1460, 1460, 1460,
     1460,  648,  647,  646,  645,  644,  643,  642,  641,  640,
      639,  638,  637,  632, 1460, 1460, 1460, 1460, 1460, 1460,
     1462, 1462, 1462, 1462, 1462, 1462, 1462,  631,  630,  629,
     1462, 1462, 1462, 1462,  628,  627,  626,  625,  624,  623,
      622,  621,  620,  619,  618,  617,  616, 1462, 1462, 1462,
     1462, 1462, 1462, 1464, 1464, 1464, 1464, 1464, 1464, 1464,

      615,  614,  613, 1464, 1464, 1464, 1464,  612,  611,  610,
      609,  608,  607,  606,  605,  604,  603,  602,  601,  600,
     1464, 1464, 1464, 1464, 1464, 1464, 1466, 1466, 1466, 1466,
     1466, 1466, 1466,  599,  598,  597, 1466, 1466, 1466, 1466,
      596,  595,  594,  593,  592,  591,  590,  589,  588,  587,
      586,  581,  580, 1466, 1466, 1466, 1466, 1466, 1466, 1468,
     1468, 1468, 1468, 1468, 1468, 1468,  416,  579,  578, 1468,
     1468, 1468, 1468,  577,  576,  575,  574,  570,  569,  568,
      567,  563,  562,  561,  560,  559, 1468, 1468, 1468, 1468,
     1468, 1468, 1470, 1470, 1470, 1470, 1470, 1470, 1470,  558,

      557,  556, 1470, 1470, 1470, 1470,  555,  554,  549,  548,
      547,  546,  545,  544,  543,  539,  538,  537,  536, 1470,
     1470, 1470, 1470, 1470, 1470,   83,   83,   83,   83,   85,
       85,   85,   85,   87,   87,   87,   87,   91,   91,   91,
       91,   95,   95,   95,   95,  110,  110,  247,  535,  247,
      247,  248,  534,  248,  248,  251,  533,  251,  251,  260,
      260,  260,  260,  877,  532,  877,  877, 1390,  531, 1390,
     1390,  530,  529,  527,  526,  525,  524,  523,  522,  521,
      520,  519,  518,  517,  516,  515,  514,  513,  512,  511,
      510,  509,  508,  507,  504,  503,  501,  497,  496,  495,

      494,  493,  492,  491,  490,  489,  488,  487,  486,  483,
      482,  481,  476,  475,  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,  307,  427,  426,  425,  424,  423, 1472,  422,  418,
      417,  416,  245,  244,  244,  415,  414,  413,  412,  411,
      410,  409,  407,  406,  405,  404,  401,  392,  391,  390,
      389,  388,  386,  385,  384,  383,  382,  381,  377,  376,

      370,  369,  364,  363,  362,  361,  360,  359,  358,  357,
      355,  352,  347,  345,  344,  340,  336,  334,  333,  331,
      330,  329,  326,  325,  322,  259,  317,  316,  315,  314,
      313,  310,  309,  305,  302,  301,  298,  297,  296,  295,
      294,  293,  292,  289,  288,  287,  286,  285,  284,  283,
      282,  281,  277,  274,  273,  272,  271,  270,  269,  268,
      145,  267,  125,  265,  264,  263,  259,  254, 1472, 1472,
      253,  252,  244,  169,  158,  157,  156,  155,  154,  144,
      135,  121,  115,  114,  113,  112,  111,  107,   99,   98,
       94,   90, 1472,   86,   86,   11, 1472, 1472, 1472, 1472,

     1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472,
     1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472,
     1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472,
     1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472,
     1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472,
     1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472,
     1472, 1472
    } ;

static const flex_int16_t yy_chk[2563] =
    {   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,  102,   18,   35,

       16,   37,   33,   38,   43,   33,   42,   38,   33,   41,
       41,  103,   42,   38,   43,   22,    2,    3,   33,  203,
       40,   33,  203,   45,  102,    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,  710,    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,  712,   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,  713,   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,  338,   70,
       67,  338,  171,   67,  171,   70,   59,   59,   59,   59,
       59,   59,   65,   71,  714,   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,  715,   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,  420,  159,  165,  165,
      165,  165,  165,  165,  165,  190,  190,  192,  165,  165,
      165,  165,  234,  242,  558,  260,  258,  242,  558,  248,
      192,  258,  234,  420,  192,  165,  165,  165,  165,  165,
      165,  166,  166,  166,  166,  166,  166,  166,  194,  258,
      325,  166,  166,  166,  166,  250,  166,  260,  258,  227,
      341,  166,  194,  341,  204,  325,  227,  716,  166,  166,

      166,  166,  166,  166,  185,  717,  204,  185,  227,  166,
      204,  339,  339,  185,  204,  403,  421,  185,  166,  168,
      168,  168,  168,  168,  168,  168,  718,  403,  402,  168,
      168,  168,  168,  366,  402,  719,  366,  226,  408,  421,
      408,  229,  226,  226,  229,  344,  168,  168,  168,  168,
      168,  168,  226,  226,  246,  226,  226,  495,  229,  495,
      344,  379,  379,  720,  379,  246,  246,  246,  246,  246,
      246,  246,  255,  255,  255,  255,  255,  255,  255,  389,
      409,  409,  500,  506,  255,  546,  506,  546,  389,  721,
      566,  551,  389,  551,  668,  500,  389,  522,  655,  722,

      522,  566,  551,  255,  318,  318,  318,  318,  318,  318,
      318,  668,  655,  522,  318,  318,  318,  318,  419,  419,
      723,  419,  419,  419,  419,  419,  419,  419,  724,  562,
      725,  318,  318,  318,  318,  318,  318,  319,  319,  319,
      319,  319,  319,  319,  562,  726,  727,  319,  319,  319,
      319,  588,  319,  728,  588,  729,  730,  319,  731,  732,
      733,  734,  735,  736,  319,  319,  319,  319,  319,  319,
      737,  738,  739,  740,  741,  319,  582,  582,  582,  582,
      582,  582,  582,  742,  319,  321,  321,  321,  321,  321,
      321,  321,  743,  744,  745,  321,  321,  321,  321,  746,

      747,  748,  749,  751,  753,  754,  756,  757,  758,  760,
      762,  763,  321,  321,  321,  321,  321,  321,  477,  477,
      477,  477,  477,  477,  477,  764,  765,  769,  477,  477,
      477,  477,  772,  773,  774,  775,  776,  777,  782,  783,
      784,  785,  786,  787,  788,  477,  477,  477,  477,  477,
      477,  478,  478,  478,  478,  478,  478,  478,  789,  790,
      791,  478,  478,  478,  478,  792,  478,  793,  794,  795,
      796,  478,  797,  798,  799,  800,  803,  804,  478,  478,
      478,  478,  478,  478,  805,  806,  807,  808,  809,  478,
      811,  812,  813,  814,  815,  816,  817,  818,  478,  480,

      480,  480,  480,  480,  480,  480,  819,  820,  821,  480,
      480,  480,  480,  583,  583,  583,  583,  583,  583,  583,
      823,  826,  827,  828,  829,  583,  480,  480,  480,  480,
      480,  480,  830,  831,  832,  833,  834,  836,  837,  838,
      839,  841,  842,  843,  583,  633,  633,  633,  633,  633,
      633,  633,  844,  845,  846,  633,  633,  633,  633,  848,
      849,  850,  852,  853,  854,  855,  857,  858,  860,  862,
      864,  865,  633,  633,  633,  633,  633,  633,  634,  634,
      634,  634,  634,  634,  634,  866,  867,  869,  634,  634,
      634,  634,  870,  634,  871,  873,  874,  875,  634,  876,

      878,  879,  880,  882,  883,  634,  634,  634,  634,  634,
      634,  886,  889,  890,  891,  892,  634,  893,  894,  897,
      898,  899,  900,  901,  904,  634,  636,  636,  636,  636,
      636,  636,  636,  906,  907,  908,  636,  636,  636,  636,
      913,  914,  915,  916,  917,  918,  919,  920,  921,  922,
      923,  878,  924,  636,  636,  636,  636,  636,  636,  778,
      778,  778,  778,  778,  778,  778,  926,  927,  928,  778,
      778,  778,  778,  929,  930,  933,  934,  932,  935,  932,
      932,  937,  938,  939,  940,  941,  778,  778,  778,  778,
      778,  778,  779,  779,  779,  779,  779,  779,  779,  932,

      942,  943,  779,  779,  779,  779,  944,  779,  945,  946,
      947,  948,  779,  949,  950,  951,  953,  954,  955,  779,
      779,  779,  779,  779,  779,  956,  959,  960,  961,  962,
      779,  963,  964,  965,  966,  967,  968,  970,  971,  779,
      781,  781,  781,  781,  781,  781,  781,  972,  973,  974,
      781,  781,  781,  781,  975,  976,  978,  979,  981,  982,
      983,  984,  985,  988,  989,  990,  991,  781,  781,  781,
      781,  781,  781,  909,  909,  909,  909,  909,  909,  909,
      980,  992,  993,  909,  909,  909,  909,  994,  995,  996,
      998,  980,  999, 1001, 1002, 1003, 1004, 1007, 1009, 1010,

      909,  909,  909,  909,  909,  909,  910,  910,  910,  910,
      910,  910,  910, 1011, 1014, 1015,  910,  910,  910,  910,
     1016,  910, 1017, 1018, 1020, 1021,  910, 1022, 1023, 1024,
     1026, 1027, 1029,  910,  910,  910,  910,  910,  910, 1030,
     1031, 1032, 1033, 1034,  910, 1035, 1037, 1038, 1039, 1036,
     1040, 1041, 1044,  910,  912,  912,  912,  912,  912,  912,
      912, 1045, 1046, 1047,  912,  912,  912,  912, 1036, 1048,
     1049, 1051, 1052, 1053, 1054, 1055, 1056, 1058, 1059, 1060,
     1061,  912,  912,  912,  912,  912,  912, 1012, 1012, 1012,
     1012, 1012, 1012, 1012, 1062, 1063, 1067, 1012, 1012, 1012,

     1012, 1068, 1069, 1070, 1072, 1073, 1074, 1075, 1077, 1078,
     1079, 1080, 1081, 1082, 1012, 1012, 1012, 1012, 1012, 1012,
     1013, 1083, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1084,
     1085, 1086, 1087, 1088, 1089, 1092, 1094, 1013, 1095, 1099,
     1100, 1089, 1013, 1101, 1102, 1105, 1106, 1107, 1109, 1112,
     1113, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123,
     1013, 1124, 1125, 1126, 1127, 1129, 1130, 1131, 1132, 1013,
     1103, 1133, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1134,
     1135, 1136, 1103, 1103, 1103, 1103, 1137, 1138, 1139, 1140,
     1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1103,

     1103, 1103, 1103, 1103, 1103, 1152, 1153, 1154, 1155, 1156,
     1158, 1160, 1162, 1163, 1165, 1166, 1167, 1168, 1170, 1171,
     1172, 1174, 1175, 1176, 1168, 1177, 1177, 1177, 1177, 1177,
     1177, 1177, 1179, 1180, 1183, 1177, 1177, 1177, 1177, 1185,
     1187, 1188, 1189, 1190, 1191, 1192, 1193, 1195, 1196, 1197,
     1198, 1199, 1177, 1177, 1177, 1177, 1177, 1177, 1200, 1201,
     1202, 1203, 1204, 1204, 1206, 1207, 1209, 1210, 1211, 1212,
     1213, 1214, 1215, 1216, 1218, 1219, 1221, 1222, 1223, 1224,
     1225, 1226, 1227, 1229, 1231, 1232, 1233, 1234, 1235, 1236,
     1236, 1236, 1236, 1236, 1236, 1236, 1239, 1242, 1243, 1236,

     1236, 1236, 1236, 1244, 1246, 1247, 1248, 1249, 1251, 1254,
     1255, 1256, 1258, 1259, 1260, 1261, 1236, 1236, 1236, 1236,
     1236, 1236, 1262, 1263, 1264, 1265, 1267, 1268, 1269, 1270,
     1273, 1276, 1277, 1278, 1279, 1280, 1281, 1283, 1284, 1288,
     1289, 1290, 1291, 1293, 1294, 1295, 1296, 1298, 1299, 1300,
     1301, 1302, 1303, 1306, 1307, 1308, 1309, 1311, 1313, 1315,
     1317, 1318, 1320, 1321, 1322, 1323, 1324, 1326, 1327, 1328,
     1329, 1330, 1333, 1334, 1337, 1338, 1339, 1340, 1341, 1343,
     1344, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1354, 1355,
     1356, 1358, 1359, 1360, 1361, 1362, 1367, 1369, 1284, 1285,

     1285, 1285, 1285, 1285, 1285, 1285, 1372, 1374, 1365, 1285,
     1285, 1285, 1285, 1365, 1376, 1377, 1379, 1382, 1383, 1385,
     1386, 1387, 1388, 1391, 1394, 1395, 1285, 1285, 1285, 1285,
     1285, 1285, 1319, 1319, 1319, 1319, 1319, 1319, 1319, 1396,
     1398, 1399, 1319, 1319, 1319, 1319, 1400, 1402, 1403, 1404,
     1405, 1406, 1407, 1409, 1411, 1412, 1413, 1415, 1418, 1319,
     1319, 1319, 1319, 1319, 1319, 1363, 1363, 1363, 1363, 1363,
     1363, 1363, 1419, 1420, 1421, 1363, 1363, 1363, 1363, 1424,
     1425, 1426, 1430, 1431, 1432, 1434, 1435, 1436, 1437, 1438,
     1440, 1442, 1363, 1363, 1363, 1363, 1363, 1363, 1380, 1380,

     1380, 1380, 1380, 1380, 1380, 1445, 1470, 1482, 1380, 1380,
     1380, 1380, 1470, 1484, 1485, 1486, 1487, 1489, 1490, 1491,
     1492, 1493, 1494, 1495, 1496, 1380, 1380, 1380, 1380, 1380,
     1380, 1392, 1392, 1392, 1392, 1392, 1392, 1392, 1498, 1499,
     1500, 1392, 1392, 1392, 1392, 1501, 1502, 1503, 1504, 1505,
     1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1392, 1392,
     1392, 1392, 1392, 1392, 1401, 1401, 1401, 1401, 1401, 1401,
     1401, 1514, 1515,  708, 1401, 1401, 1401, 1401,  707,  706,
      705,  704,  703,  702,  701,  700,  699,  698,  697,  696,
      695, 1401, 1401, 1401, 1401, 1401, 1401, 1416, 1416, 1416,

     1416, 1416, 1416, 1416,  694,  693,  692, 1416, 1416, 1416,
     1416,  691,  689,  687,  686,  685,  684,  683,  682,  681,
      680,  679,  678,  677, 1416, 1416, 1416, 1416, 1416, 1416,
     1422, 1422, 1422, 1422, 1422, 1422, 1422,  676,  675,  674,
     1422, 1422, 1422, 1422,  673,  671,  670,  669,  666,  665,
      664,  663,  662,  661,  660,  659,  658, 1422, 1422, 1422,
     1422, 1422, 1422, 1428, 1428, 1428, 1428, 1428, 1428, 1428,
      657,  656,  654, 1428, 1428, 1428, 1428,  653,  652,  651,
      650,  649,  648,  647,  646,  645,  644,  643,  642,  641,
     1428, 1428, 1428, 1428, 1428, 1428, 1433, 1433, 1433, 1433,

     1433, 1433, 1433,  640,  638,  637, 1433, 1433, 1433, 1433,
      632,  631,  630,  629,  628,  626,  625,  624,  623,  622,
      620,  619,  617, 1433, 1433, 1433, 1433, 1433, 1433, 1443,
     1443, 1443, 1443, 1443, 1443, 1443,  616,  615,  614, 1443,
     1443, 1443, 1443,  613,  612,  611,  610,  609,  608,  607,
      606,  604,  602,  601,  600,  599, 1443, 1443, 1443, 1443,
     1443, 1443, 1447, 1447, 1447, 1447, 1447, 1447, 1447,  598,
      597,  596, 1447, 1447, 1447, 1447,  595,  593,  591,  590,
      589,  587,  581,  580,  579,  578,  577,  576,  575, 1447,
     1447, 1447, 1447, 1447, 1447, 1450, 1450, 1450, 1450, 1450,

     1450, 1450,  573,  572,  571, 1450, 1450, 1450, 1450,  570,
      569,  568,  567,  565,  564,  563,  561,  560,  559,  557,
      556,  555, 1450, 1450, 1450, 1450, 1450, 1450, 1452, 1452,
     1452, 1452, 1452, 1452, 1452,  554,  553,  552, 1452, 1452,
     1452, 1452,  550,  549,  548,  547,  545,  544,  543,  542,
      541,  540,  539,  538,  537, 1452, 1452, 1452, 1452, 1452,
     1452, 1454, 1454, 1454, 1454, 1454, 1454, 1454,  536,  535,
      534, 1454, 1454, 1454, 1454,  533,  532,  530,  529,  528,
      527,  526,  525,  524,  523,  521,  519,  518, 1454, 1454,
     1454, 1454, 1454, 1454, 1456, 1456, 1456, 1456, 1456, 1456,

     1456,  517,  516,  515, 1456, 1456, 1456, 1456,  514,  513,
      512,  511,  510,  508,  507,  505,  504,  503,  502,  501,
      499, 1456, 1456, 1456, 1456, 1456, 1456, 1458, 1458, 1458,
     1458, 1458, 1458, 1458,  498,  496,  494, 1458, 1458, 1458,
     1458,  493,  491,  490,  489,  488,  487,  486,  485,  484,
      483,  482,  481,  476, 1458, 1458, 1458, 1458, 1458, 1458,
     1460, 1460, 1460, 1460, 1460, 1460, 1460,  475,  474,  473,
     1460, 1460, 1460, 1460,  471,  470,  469,  468,  467,  466,
      465,  464,  463,  462,  461,  460,  459, 1460, 1460, 1460,
     1460, 1460, 1460, 1462, 1462, 1462, 1462, 1462, 1462, 1462,

      458,  457,  456, 1462, 1462, 1462, 1462,  455,  454,  453,
      451,  450,  449,  448,  447,  446,  445,  444,  443,  441,
     1462, 1462, 1462, 1462, 1462, 1462, 1464, 1464, 1464, 1464,
     1464, 1464, 1464,  440,  439,  438, 1464, 1464, 1464, 1464,
      437,  436,  435,  434,  432,  429,  428,  427,  426,  424,
      422,  418,  417, 1464, 1464, 1464, 1464, 1464, 1464, 1466,
     1466, 1466, 1466, 1466, 1466, 1466,  416,  415,  414, 1466,
     1466, 1466, 1466,  413,  412,  411,  410,  407,  406,  405,
      404,  401,  400,  399,  398,  397, 1466, 1466, 1466, 1466,
     1466, 1466, 1468, 1468, 1468, 1468, 1468, 1468, 1468,  396,

      395,  393, 1468, 1468, 1468, 1468,  392,  391,  388,  387,
      386,  384,  383,  381,  380,  378,  377,  375,  374, 1468,
     1468, 1468, 1468, 1468, 1468, 1473, 1473, 1473, 1473, 1474,
     1474, 1474, 1474, 1475, 1475, 1475, 1475, 1476, 1476, 1476,
     1476, 1477, 1477, 1477, 1477, 1478, 1478, 1479,  373, 1479,
     1479, 1480,  372, 1480, 1480, 1481,  371, 1481, 1481, 1483,
     1483, 1483, 1483, 1488,  370, 1488, 1488, 1497,  369, 1497,
     1497,  368,  367,  365,  364,  363,  362,  361,  360,  359,
      358,  357,  356,  355,  354,  353,  352,  351,  350,  349,
      348,  347,  346,  345,  343,  342,  340,  337,  336,  335,

      334,  333,  332,  331,  330,  329,  328,  327,  326,  324,
      323,  322,  317,  316,  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,  259,  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, 1472, 1472, 1472, 1472, 1472,

     1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472,
     1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472,
     1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472,
     1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472,
     1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472,
     1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472, 1472,
     1472, 1472
    } ;

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( int token, const char *yytext, YYSTYPE *yylval )
{
    yylval->num = xstrtoul( yytext, NULL, 0 );
    return token;
}

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 189 "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 >= 1473 )
					yy_c = yy_meta[yy_c];
				}
			yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
			++yy_cp;
			}
		while ( yy_current_state != 1472 );
		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 191 "tools/widl/parser.l"
{
                                                    yy_pop_state();
                                                    yylloc->first_line -= 1;
                                                    return tCPPQUOTE;
                                                }
	YY_BREAK
case 2:
YY_RULE_SETUP
#line 196 "tools/widl/parser.l"
{
                                                    yy_pop_state();
                                                    yylloc->first_line -= 1;
                                                    winrt_enable( TRUE );
                                                }
	YY_BREAK
case 3:
YY_RULE_SETUP
#line 201 "tools/widl/parser.l"
{
                                                    yy_pop_state();
                                                    yylloc->first_line -= 1;
                                                    winrt_enable( FALSE );
                                                }
	YY_BREAK
case 4:
YY_RULE_SETUP
#line 206 "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 212 "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 218 "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 223 "tools/widl/parser.l"
{ yy_pop_state(); }
	YY_BREAK

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


case 139:
YY_RULE_SETUP
#line 361 "tools/widl/parser.l"
{ yy_push_state( PP_PRAGMA ); }
	YY_BREAK
case 140:
YY_RULE_SETUP
#line 362 "tools/widl/parser.l"
{ return tPRAGMA_WARNING; }
	YY_BREAK
case 141:
YY_RULE_SETUP
#line 364 "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 370 "tools/widl/parser.l"
return tSAFEARRAY;
	YY_BREAK

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

		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 466 "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 );
}

void pop_import( struct location *where )
{
    struct list *entry = list_head( &import_stack );
    struct import_state *state;
    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 );
}

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 ) );
}

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 += sprintf( line, " " );
    line += sprintf( line, "^" );
    for (i = where->first_column + 1; i < where->last_column; i++) line += sprintf( line, "~" );
    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;
}

