diff --git a/pandatool/src/vrml/vrmlLexer.cxx.prebuilt b/pandatool/src/vrml/vrmlLexer.cxx.prebuilt index a1b294457a..87565a5ea2 100644 --- a/pandatool/src/vrml/vrmlLexer.cxx.prebuilt +++ b/pandatool/src/vrml/vrmlLexer.cxx.prebuilt @@ -1,4765 +1,4765 @@ -#line 2 "lex.yy.c" - -#line 4 "lex.yy.c" - -#define YY_INT_ALIGNED short int - -/* A lexical scanner generated by flex */ - -#define yy_create_buffer vrmlyy_create_buffer -#define yy_delete_buffer vrmlyy_delete_buffer -#define yy_flex_debug vrmlyy_flex_debug -#define yy_init_buffer vrmlyy_init_buffer -#define yy_flush_buffer vrmlyy_flush_buffer -#define yy_load_buffer_state vrmlyy_load_buffer_state -#define yy_switch_to_buffer vrmlyy_switch_to_buffer -#define yyin vrmlyyin -#define yyleng vrmlyyleng -#define yylex vrmlyylex -#define yylineno vrmlyylineno -#define yyout vrmlyyout -#define yyrestart vrmlyyrestart -#define yytext vrmlyytext -#define yywrap vrmlyywrap -#define yyalloc vrmlyyalloc -#define yyrealloc vrmlyyrealloc -#define yyfree vrmlyyfree - -#define FLEX_SCANNER -#define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 5 -#define YY_FLEX_SUBMINOR_VERSION 35 -#if YY_FLEX_SUBMINOR_VERSION > 0 -#define FLEX_BETA -#endif - -/* First, we deal with platform-specific or compiler-specific issues. */ - -/* begin standard C headers. */ -#include -#include -#include -#include - -/* end standard C headers. */ - -/* flex integer type definitions */ - -#ifndef FLEXINT_H -#define FLEXINT_H - -/* C99 systems have . Non-C99 systems may or may not. */ - -#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - -/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, - * if you want the limit (max/min) macros for int types. - */ -#ifndef __STDC_LIMIT_MACROS -#define __STDC_LIMIT_MACROS 1 -#endif - -#include -typedef int8_t flex_int8_t; -typedef uint8_t flex_uint8_t; -typedef int16_t flex_int16_t; -typedef uint16_t flex_uint16_t; -typedef int32_t flex_int32_t; -typedef uint32_t flex_uint32_t; -#else -typedef signed char flex_int8_t; -typedef short int flex_int16_t; -typedef int flex_int32_t; -typedef unsigned char flex_uint8_t; -typedef unsigned short int flex_uint16_t; -typedef unsigned int flex_uint32_t; -#endif /* ! C99 */ - -/* Limits of integral types. */ -#ifndef INT8_MIN -#define INT8_MIN (-128) -#endif -#ifndef INT16_MIN -#define INT16_MIN (-32767-1) -#endif -#ifndef INT32_MIN -#define INT32_MIN (-2147483647-1) -#endif -#ifndef INT8_MAX -#define INT8_MAX (127) -#endif -#ifndef INT16_MAX -#define INT16_MAX (32767) -#endif -#ifndef INT32_MAX -#define INT32_MAX (2147483647) -#endif -#ifndef UINT8_MAX -#define UINT8_MAX (255U) -#endif -#ifndef UINT16_MAX -#define UINT16_MAX (65535U) -#endif -#ifndef UINT32_MAX -#define UINT32_MAX (4294967295U) -#endif - -#endif /* ! FLEXINT_H */ - -#ifdef __cplusplus - -/* The "const" storage-class-modifier is valid. */ -#define YY_USE_CONST - -#else /* ! __cplusplus */ - -/* C99 requires __STDC__ to be defined as 1. */ -#if defined (__STDC__) - -#define YY_USE_CONST - -#endif /* defined (__STDC__) */ -#endif /* ! __cplusplus */ - -#ifdef YY_USE_CONST -#define yyconst const -#else -#define yyconst -#endif - -/* Returned upon end-of-file. */ -#define YY_NULL 0 - -/* Promotes a possibly negative, possibly signed char to an unsigned - * integer for use as an array index. If the signed char is negative, - * we want to instead treat it as an 8-bit unsigned char, hence the - * double cast. - */ -#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) - -/* Enter a start condition. This macro really ought to take a parameter, - * but we do it the disgusting crufty way forced on us by the ()-less - * definition of BEGIN. - */ -#define BEGIN (yy_start) = 1 + 2 * - -/* Translate the current start state into a value that can be later handed - * to BEGIN to return to the state. The YYSTATE alias is for lex - * compatibility. - */ -#define YY_START (((yy_start) - 1) / 2) -#define YYSTATE YY_START - -/* Action number for EOF rule of a given start state. */ -#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) - -/* Special action meaning "start processing a new file". */ -#define YY_NEW_FILE vrmlyyrestart(vrmlyyin ) - -#define YY_END_OF_BUFFER_CHAR 0 - -/* Size of default input buffer. */ -#ifndef YY_BUF_SIZE -#define YY_BUF_SIZE 16384 -#endif - -/* The state buf must be large enough to hold one state per character in the main buffer. - */ -#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) - -#ifndef YY_TYPEDEF_YY_BUFFER_STATE -#define YY_TYPEDEF_YY_BUFFER_STATE -typedef struct yy_buffer_state *YY_BUFFER_STATE; -#endif - -extern int vrmlyyleng; - -extern FILE *vrmlyyin, *vrmlyyout; - -#define EOB_ACT_CONTINUE_SCAN 0 -#define EOB_ACT_END_OF_FILE 1 -#define EOB_ACT_LAST_MATCH 2 - - #define YY_LESS_LINENO(n) - -/* Return all but the first "n" matched characters back to the input stream. */ -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up vrmlyytext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - *yy_cp = (yy_hold_char); \ - YY_RESTORE_YY_MORE_OFFSET \ - (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ - YY_DO_BEFORE_ACTION; /* set up vrmlyytext again */ \ - } \ - while ( 0 ) - -#define unput(c) yyunput( c, (yytext_ptr) ) - -#ifndef YY_TYPEDEF_YY_SIZE_T -#define YY_TYPEDEF_YY_SIZE_T -typedef size_t yy_size_t; -#endif - -#ifndef YY_STRUCT_YY_BUFFER_STATE -#define YY_STRUCT_YY_BUFFER_STATE -struct yy_buffer_state - { - FILE *yy_input_file; - - char *yy_ch_buf; /* input buffer */ - char *yy_buf_pos; /* current position in input buffer */ - - /* Size of input buffer in bytes, not including room for EOB - * characters. - */ - yy_size_t yy_buf_size; - - /* Number of characters read into yy_ch_buf, not including EOB - * characters. - */ - int yy_n_chars; - - /* Whether we "own" the buffer - i.e., we know we created it, - * and can realloc() it to grow it, and should free() it to - * delete it. - */ - int yy_is_our_buffer; - - /* Whether this is an "interactive" input source; if so, and - * if we're using stdio for input, then we want to use getc() - * instead of fread(), to make sure we stop fetching input after - * each newline. - */ - int yy_is_interactive; - - /* Whether we're considered to be at the beginning of a line. - * If so, '^' rules will be active on the next match, otherwise - * not. - */ - int yy_at_bol; - - int yy_bs_lineno; /**< The line count. */ - int yy_bs_column; /**< The column count. */ - - /* Whether to try to fill the input buffer when we reach the - * end of it. - */ - int yy_fill_buffer; - - int yy_buffer_status; - -#define YY_BUFFER_NEW 0 -#define YY_BUFFER_NORMAL 1 - /* When an EOF's been seen but there's still some text to process - * then we mark the buffer as YY_EOF_PENDING, to indicate that we - * shouldn't try reading from the input source any more. We might - * still have a bunch of tokens to match, though, because of - * possible backing-up. - * - * When we actually see the EOF, we change the status to "new" - * (via vrmlyyrestart()), so that the user can continue scanning by - * just pointing vrmlyyin at a new input file. - */ -#define YY_BUFFER_EOF_PENDING 2 - - }; -#endif /* !YY_STRUCT_YY_BUFFER_STATE */ - -/* Stack of input buffers. */ -static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ -static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ -static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ - -/* We provide macros for accessing buffer states in case in the - * future we want to put the buffer states in a more general - * "scanner state". - * - * Returns the top of the stack, or NULL. - */ -#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ - ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ - : NULL) - -/* Same as previous macro, but useful when we know that the buffer stack is not - * NULL or when we need an lvalue. For internal use only. - */ -#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] - -/* yy_hold_char holds the character lost when vrmlyytext is formed. */ -static char yy_hold_char; -static int yy_n_chars; /* number of characters read into yy_ch_buf */ -int vrmlyyleng; - -/* Points to current character in buffer. */ -static char *yy_c_buf_p = (char *) 0; -static int yy_init = 0; /* whether we need to initialize */ -static int yy_start = 0; /* start state number */ - -/* Flag which is used to allow vrmlyywrap()'s to do buffer switches - * instead of setting up a fresh vrmlyyin. A bit of a hack ... - */ -static int yy_did_buffer_switch_on_eof; - -void vrmlyyrestart (FILE *input_file ); -void vrmlyy_switch_to_buffer (YY_BUFFER_STATE new_buffer ); -YY_BUFFER_STATE vrmlyy_create_buffer (FILE *file,int size ); -void vrmlyy_delete_buffer (YY_BUFFER_STATE b ); -void vrmlyy_flush_buffer (YY_BUFFER_STATE b ); -void vrmlyypush_buffer_state (YY_BUFFER_STATE new_buffer ); -void vrmlyypop_buffer_state (void ); - -static void vrmlyyensure_buffer_stack (void ); -static void vrmlyy_load_buffer_state (void ); -static void vrmlyy_init_buffer (YY_BUFFER_STATE b,FILE *file ); - -#define YY_FLUSH_BUFFER vrmlyy_flush_buffer(YY_CURRENT_BUFFER ) - -YY_BUFFER_STATE vrmlyy_scan_buffer (char *base,yy_size_t size ); -YY_BUFFER_STATE vrmlyy_scan_string (yyconst char *yy_str ); -YY_BUFFER_STATE vrmlyy_scan_bytes (yyconst char *bytes,int len ); - -void *vrmlyyalloc (yy_size_t ); -void *vrmlyyrealloc (void *,yy_size_t ); -void vrmlyyfree (void * ); - -#define yy_new_buffer vrmlyy_create_buffer - -#define yy_set_interactive(is_interactive) \ - { \ - if ( ! YY_CURRENT_BUFFER ){ \ - vrmlyyensure_buffer_stack (); \ - YY_CURRENT_BUFFER_LVALUE = \ - vrmlyy_create_buffer(vrmlyyin,YY_BUF_SIZE ); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ - } - -#define yy_set_bol(at_bol) \ - { \ - if ( ! YY_CURRENT_BUFFER ){\ - vrmlyyensure_buffer_stack (); \ - YY_CURRENT_BUFFER_LVALUE = \ - vrmlyy_create_buffer(vrmlyyin,YY_BUF_SIZE ); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ - } - -#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) - -typedef unsigned char YY_CHAR; - -FILE *vrmlyyin = (FILE *) 0, *vrmlyyout = (FILE *) 0; - -typedef int yy_state_type; - -extern int vrmlyylineno; - -int vrmlyylineno = 1; - -extern char *vrmlyytext; -#define yytext_ptr vrmlyytext - -static yy_state_type yy_get_previous_state (void ); -static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); -static int yy_get_next_buffer (void ); -static void yy_fatal_error (yyconst char msg[] ); - -/* Done after the current pattern has been matched and before the - * corresponding action - sets up vrmlyytext. - */ -#define YY_DO_BEFORE_ACTION \ - (yytext_ptr) = yy_bp; \ - vrmlyyleng = (size_t) (yy_cp - yy_bp); \ - (yy_hold_char) = *yy_cp; \ - *yy_cp = '\0'; \ - (yy_c_buf_p) = yy_cp; - -#define YY_NUM_RULES 48 -#define YY_END_OF_BUFFER 49 -/* This struct is not used in this scanner, - but its presence is necessary. */ -struct yy_trans_info - { - flex_int32_t yy_verify; - flex_int32_t yy_nxt; - }; -static yyconst flex_int16_t yy_accept[977] = - { 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 49, 47, 45, 46, 45, 14, - 45, 15, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 47, 47, 47, 47, 47, 47, 47, 47, - 24, 47, 47, 47, 47, 22, 22, 47, 47, 47, - 37, 35, 37, 37, 47, 47, 34, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 18, 19, 47, - - 47, 25, 47, 23, 23, 47, 47, 47, 38, 36, - 38, 38, 47, 47, 47, 47, 47, 47, 40, 40, - 41, 40, 40, 42, 47, 44, 44, 45, 45, 46, - 45, 45, 45, 14, 15, 14, 14, 7, 14, 14, - 14, 6, 14, 14, 14, 14, 0, 16, 0, 0, - 0, 0, 0, 0, 0, 0, 24, 24, 0, 0, - 0, 0, 0, 22, 22, 0, 0, 0, 0, 0, - 0, 37, 37, 37, 16, 0, 34, 34, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 17, 0, 25, - - 25, 0, 23, 23, 0, 0, 0, 0, 0, 0, - 38, 38, 38, 17, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 40, 40, 40, 40, - 40, 39, 44, 44, 45, 4, 14, 14, 14, 14, - 5, 14, 14, 14, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, - 43, 43, 0, 0, 0, 0, 43, 43, 0, 22, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 34, 0, 0, 26, 0, 0, 0, 0, - 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 25, 23, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 27, 0, 0, 0, 0, 0, 27, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 44, 45, 14, 9, 14, 14, 14, 14, - 14, 0, 20, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 43, 43, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 26, 0, 26, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 27, 0, 27, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 45, 14, 2, - 8, 14, 14, 12, 21, 0, 0, 32, 0, 0, - 0, 0, 0, 32, 0, 0, 0, 0, 32, 0, - 0, 0, 32, 0, 0, 0, 0, 0, 32, 0, - 0, 0, 43, 43, 43, 43, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 26, 0, 0, 26, 0, 0, - - 28, 0, 0, 0, 0, 0, 28, 0, 0, 0, - 0, 28, 0, 0, 0, 28, 0, 0, 0, 0, - 0, 28, 0, 0, 0, 0, 0, 33, 0, 0, - 0, 0, 0, 33, 0, 0, 0, 0, 33, 0, - 0, 0, 33, 0, 0, 0, 0, 0, 33, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 27, 0, 0, 27, 0, 0, 29, 0, 0, 0, - 0, 0, 29, 0, 0, 0, 0, 29, 0, 0, - - 0, 29, 0, 0, 0, 0, 0, 29, 0, 0, - 0, 45, 14, 14, 14, 14, 32, 0, 32, 0, - 32, 0, 32, 0, 32, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 28, 0, 28, - 0, 28, 0, 28, 0, 28, 0, 33, 0, 33, - 0, 33, 0, 33, 0, 33, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, - 29, 0, 29, 0, 29, 0, 29, 0, 45, 14, - - 10, 14, 14, 0, 32, 0, 0, 32, 0, 0, - 32, 0, 32, 0, 0, 32, 0, 0, 30, 0, - 0, 0, 0, 0, 30, 0, 0, 0, 0, 30, - 0, 0, 30, 0, 0, 0, 0, 0, 30, 0, - 0, 0, 0, 0, 30, 0, 0, 0, 30, 0, - 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, - 0, 0, 30, 0, 0, 0, 0, 28, 0, 0, - 28, 0, 0, 28, 0, 28, 0, 0, 28, 0, - 33, 0, 0, 33, 0, 0, 33, 0, 33, 0, - 0, 33, 0, 0, 31, 0, 0, 0, 0, 0, - - 31, 0, 0, 0, 0, 31, 0, 0, 31, 0, - 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, - 31, 0, 0, 0, 31, 0, 0, 0, 0, 0, - 31, 0, 0, 0, 0, 0, 0, 0, 31, 0, - 0, 0, 0, 29, 0, 0, 29, 0, 0, 29, - 0, 29, 0, 0, 29, 45, 14, 11, 14, 30, - 0, 30, 0, 30, 0, 30, 0, 30, 0, 30, - 0, 30, 0, 30, 0, 30, 0, 31, 0, 31, - 0, 31, 0, 31, 0, 31, 0, 31, 0, 31, - 0, 31, 0, 31, 0, 45, 14, 14, 0, 30, - - 0, 0, 30, 0, 0, 30, 0, 30, 0, 0, - 30, 0, 0, 30, 0, 30, 0, 0, 30, 0, - 0, 30, 0, 31, 0, 0, 31, 0, 0, 31, - 0, 31, 0, 0, 31, 0, 0, 31, 0, 31, - 0, 0, 31, 0, 0, 31, 45, 14, 14, 45, - 3, 14, 45, 13, 45, 45, 45, 45, 1, 1, - 45, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 0 - } ; - -static yyconst flex_int32_t yy_ec[256] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, - 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 5, 6, 7, 8, 6, 6, 6, 1, 6, - 6, 6, 9, 2, 10, 11, 6, 12, 13, 14, - 13, 13, 13, 13, 13, 15, 13, 6, 6, 6, - 6, 6, 6, 6, 16, 17, 17, 18, 19, 20, - 6, 6, 21, 6, 6, 22, 23, 24, 25, 26, - 6, 27, 28, 29, 30, 31, 6, 32, 6, 6, - 33, 34, 35, 6, 6, 6, 17, 17, 17, 36, - - 37, 38, 6, 6, 39, 6, 6, 40, 6, 41, - 42, 43, 6, 6, 44, 45, 46, 47, 6, 48, - 6, 6, 1, 6, 1, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6 - } ; - -static yyconst flex_int32_t yy_meta[49] = - { 0, - 1, 2, 3, 2, 2, 4, 5, 6, 1, 4, - 1, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 8, 1, 8, 7, 7, 7, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4 - } ; - -static yyconst flex_int16_t yy_base[1120] = - { 0, - 0, 7, 15, 0, 62, 90, 118, 0, 61, 74, - 89, 102, 130, 136, 142, 148, 162, 169, 174, 181, - 187, 193, 199, 205, 211, 237, 263, 289, 315, 341, - 367, 393, 427, 461, 487, 513, 539, 565, 226, 233, - 261, 278, 328, 354, 1038, 8632, 251, 0, 231, 0, - 1019, 0, 1006, 992, 985, 981, 983, 974, 972, 968, - 21, 946, 967, 954, 944, 66, 93, 599, 123, 166, - 278, 293, 635, 77, 304, 377, 319, 346, 332, 682, - 0, 8632, 391, 941, 372, 358, 404, 425, 398, 718, - 431, 437, 754, 442, 458, 790, 940, 8632, 8632, 463, - - 471, 476, 491, 497, 502, 524, 518, 826, 0, 8632, - 554, 929, 529, 551, 862, 556, 569, 898, 0, 586, - 8632, 6, 947, 8632, 607, 612, 616, 591, 935, 0, - 933, 932, 234, 0, 0, 914, 900, 0, 892, 883, - 877, 0, 886, 867, 855, 847, 857, 8632, 848, 620, - 0, 640, 934, 948, 649, 656, 661, 690, 698, 0, - 726, 962, 740, 702, 0, 737, 0, 763, 976, 990, - 770, 0, 806, 813, 0, 774, 835, 843, 873, 810, - 0, 878, 1004, 1018, 906, 882, 0, 911, 1032, 1046, - 918, 1050, 0, 1055, 1069, 1083, 1090, 8632, 1094, 1099, - - 1107, 1115, 1119, 0, 1125, 0, 1134, 1148, 1162, 1169, - 0, 1183, 1190, 0, 1187, 1224, 1192, 1260, 1274, 1199, - 1207, 1288, 1233, 1324, 1338, 1240, 0, 1304, 89, 280, - 306, 8632, 1244, 0, 271, 0, 852, 847, 839, 830, - 0, 811, 794, 792, 791, 797, 1302, 1306, 1352, 1388, - 1402, 0, 0, 1360, 1416, 1364, 1452, 1368, 1372, 1413, - 1426, 1417, 1473, 1487, 0, 0, 195, 0, 1440, 0, - 1457, 1437, 1501, 1537, 1551, 0, 0, 1509, 1565, 1513, - 1601, 1517, 1521, 1563, 1567, 1574, 1615, 0, 0, 0, - 1582, 442, 1586, 1629, 1634, 1638, 1652, 1688, 0, 0, - - 0, 1660, 1675, 1672, 1711, 1693, 1715, 1729, 1765, 0, - 0, 0, 1737, 1752, 1749, 1788, 1769, 1773, 0, 1793, - 1797, 1811, 1847, 0, 0, 0, 1819, 1834, 1831, 1870, - 1852, 1874, 1879, 1915, 0, 0, 0, 1887, 536, 1891, - 1929, 1896, 1900, 1943, 1979, 0, 0, 0, 1951, 1966, - 1963, 2002, 0, 160, 785, 0, 782, 787, 755, 755, - 760, 728, 8632, 1984, 2016, 2030, 2037, 2051, 2079, 2115, - 2129, 2059, 0, 2133, 2064, 2170, 2184, 2071, 2198, 2226, - 2262, 2276, 2290, 2087, 2095, 2326, 2362, 2376, 2412, 2426, - 2145, 2440, 2476, 2490, 2504, 2518, 2532, 2568, 2582, 2152, - - 2596, 2632, 2646, 2660, 2674, 2688, 2724, 2738, 2206, 2752, - 2788, 2802, 2816, 2830, 2210, 2218, 2844, 2880, 2894, 2930, - 2944, 2239, 2958, 2994, 3008, 3022, 3036, 119, 694, 0, - 0, 376, 652, 0, 8632, 2100, 2243, 2305, 3050, 3064, - 0, 0, 2247, 578, 2298, 3078, 3092, 3106, 3120, 3156, - 2335, 2339, 3170, 3206, 0, 0, 0, 2343, 586, 2347, - 2384, 3185, 0, 3222, 289, 560, 2389, 2393, 3269, 3305, - 3319, 0, 0, 2397, 2867, 2448, 3333, 3347, 3361, 3375, - 3411, 2453, 2457, 3425, 3461, 0, 0, 0, 2461, 3143, - 2540, 2544, 3475, 2548, 2552, 3511, 3525, 662, 2605, 2609, - - 3530, 3566, 3580, 0, 0, 2613, 663, 2617, 3594, 3608, - 3622, 3636, 3672, 2697, 2701, 3686, 3722, 0, 0, 0, - 2705, 669, 2709, 2760, 3701, 2765, 2769, 3728, 3764, 3778, - 0, 0, 2773, 709, 2852, 3792, 3806, 3820, 3834, 3870, - 2865, 2902, 3884, 3920, 0, 0, 0, 2906, 716, 2910, - 2914, 3899, 2967, 2971, 3935, 3971, 3985, 0, 0, 2975, - 3398, 2979, 3999, 4013, 4027, 4041, 4077, 3129, 3140, 4091, - 4127, 0, 0, 0, 3178, 3448, 3277, 3281, 4141, 3285, - 3289, 4177, 4191, 735, 3384, 3395, 4196, 4232, 4246, 0, - 0, 3433, 744, 3445, 4260, 4274, 4288, 4302, 4338, 3484, - - 3488, 4352, 4388, 0, 0, 0, 3492, 807, 3496, 3538, - 4367, 416, 653, 601, 560, 549, 3644, 3545, 4403, 4439, - 4453, 4489, 4503, 3652, 4539, 4575, 4589, 4625, 4639, 3694, - 4653, 4689, 4703, 4717, 4731, 4745, 4781, 4795, 4809, 4823, - 4837, 4873, 3736, 4887, 4923, 4937, 4951, 3842, 3743, 4965, - 5001, 5015, 5051, 5065, 3850, 5101, 5137, 3943, 3892, 5151, - 5187, 5201, 5237, 5251, 3951, 5287, 5323, 5337, 5373, 5387, - 4049, 5401, 5437, 5451, 5465, 5479, 5493, 5529, 5543, 5557, - 5571, 5585, 5621, 4056, 5635, 5671, 5685, 5699, 4099, 4107, - 5713, 5749, 5763, 5799, 5813, 4149, 5849, 5885, 413, 530, - - 0, 502, 501, 3549, 3656, 5899, 5913, 814, 5927, 5941, - 4325, 3747, 5955, 5969, 5983, 816, 3855, 3955, 4518, 5997, - 6011, 0, 0, 4060, 823, 4111, 6025, 6039, 6053, 6067, - 4154, 4158, 6103, 6139, 6153, 0, 0, 4162, 824, 4204, - 4208, 5080, 6167, 6181, 6195, 6231, 4213, 4217, 6245, 6281, - 0, 0, 0, 4310, 936, 4322, 4360, 5266, 4411, 6295, - 6309, 6323, 6337, 4415, 4419, 5828, 4423, 4461, 6373, 6387, - 1098, 6401, 6415, 4476, 4473, 6429, 6443, 6457, 1104, 4511, - 4547, 6471, 6485, 1149, 6499, 6513, 4562, 4559, 6527, 6541, - 6555, 1152, 4598, 4602, 6076, 6569, 6583, 0, 0, 4606, - - 1196, 4610, 6597, 6611, 6625, 6639, 4662, 4666, 6675, 6711, - 6725, 0, 0, 4670, 1205, 4674, 4753, 6648, 6739, 6753, - 6767, 6803, 4758, 4762, 6817, 6853, 0, 0, 0, 4766, - 1232, 4845, 4849, 6832, 4853, 6868, 6882, 6896, 6910, 4857, - 4895, 6919, 4899, 4903, 6955, 6969, 1261, 6983, 6997, 5038, - 4907, 7011, 7025, 7039, 1285, 246, 482, 0, 428, 5345, - 4973, 7053, 7089, 7103, 7139, 7153, 4980, 7189, 7225, 7239, - 7275, 7289, 5023, 7325, 7361, 7375, 7411, 5409, 5035, 5501, - 5073, 4985, 5109, 5114, 5121, 5593, 5159, 5164, 5171, 5210, - 5217, 5643, 5259, 5222, 5295, 633, 404, 385, 5299, 5303, - - 449, 471, 1701, 483, 509, 7425, 5307, 7461, 607, 647, - 1860, 656, 668, 7475, 5353, 7511, 682, 715, 1930, 751, - 761, 7525, 5357, 5417, 5421, 5509, 6084, 5513, 5601, 7168, - 5605, 7561, 5651, 5655, 6111, 5721, 5725, 7304, 5729, 5733, - 5771, 5775, 6203, 5779, 5783, 7434, 315, 395, 354, 263, - 0, 327, 601, 0, 726, 782, 1476, 1490, 5829, 5867, - 1604, 5872, 5877, 6127, 6221, 6261, 6268, 6355, 6273, 6360, - 6365, 6666, 6693, 6700, 6785, 8632, 7576, 7584, 7592, 7600, - 7608, 7616, 7621, 7625, 7632, 7640, 7648, 7655, 7663, 7671, - 7679, 7687, 7694, 328, 7701, 7709, 7717, 7725, 304, 7733, - - 7741, 7749, 7757, 7765, 7773, 238, 7781, 7786, 7793, 7801, - 7808, 168, 7815, 111, 7823, 7831, 83, 7839, 7847, 7855, - 7863, 7871, 7879, 7887, 7895, 7903, 7911, 7919, 7927, 7935, - 7943, 7951, 7959, 7967, 7972, 7979, 7987, 7995, 0, 8003, - 8011, 8019, 8027, 8035, 8043, 8051, 8059, 8067, 8075, 8083, - 8091, 8099, 8107, 8115, 8123, 8131, 8139, 8144, 8151, 8159, - 8167, 8175, 8183, 8191, 8199, 8207, 8215, 8223, 8231, 8239, - 8247, 8255, 8263, 8271, 8279, 8287, 8295, 8303, 8311, 8319, - 8327, 8335, 8343, 8348, 8355, 8363, 8371, 8379, 8387, 8395, - 8403, 8411, 8419, 8427, 8435, 8443, 8451, 8459, 8467, 8475, - - 8483, 8491, 8499, 8507, 8515, 8523, 8531, 8539, 8547, 8552, - 8559, 8567, 8575, 8583, 8591, 8599, 8607, 8615, 8623 - } ; - -static yyconst flex_int16_t yy_def[1120] = - { 0, - 977, 977, 976, 3, 977, 977, 977, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 978, 978, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 979, 979, 7, 7, 7, 7, 980, 980, - 980, 980, 7, 7, 976, 976, 976, 981, 982, 983, - 982, 984, 983, 983, 983, 983, 983, 983, 983, 983, - 983, 983, 976, 976, 976, 976, 976, 976, 976, 976, - 976, 976, 976, 73, 976, 976, 976, 976, 976, 976, - 985, 976, 986, 985, 976, 976, 976, 976, 976, 976, - 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, - - 976, 976, 976, 976, 976, 976, 976, 976, 987, 976, - 988, 987, 976, 976, 976, 976, 976, 976, 989, 989, - 976, 990, 989, 976, 976, 976, 976, 976, 982, 981, - 982, 982, 982, 983, 984, 983, 983, 983, 983, 983, - 983, 983, 983, 983, 983, 983, 976, 976, 976, 976, - 68, 68, 976, 991, 976, 976, 976, 976, 976, 74, - 74, 992, 993, 976, 994, 976, 80, 80, 976, 995, - 976, 985, 986, 986, 985, 976, 976, 976, 976, 976, - 90, 90, 976, 996, 976, 976, 93, 93, 976, 997, - 976, 976, 96, 96, 976, 998, 976, 976, 976, 976, - - 976, 976, 976, 999, 976, 108, 108, 976, 1000, 976, - 987, 1001, 1001, 987, 976, 976, 216, 976, 1002, 976, - 976, 976, 222, 976, 1003, 976, 1004, 1004, 1005, 1005, - 1005, 976, 976, 1006, 1007, 1008, 1008, 1008, 1008, 1008, - 1008, 1008, 1008, 1008, 976, 976, 976, 976, 976, 1009, - 1009, 251, 251, 251, 251, 976, 976, 976, 976, 976, - 976, 976, 1010, 1010, 264, 264, 264, 264, 1011, 1012, - 976, 976, 976, 1013, 1013, 275, 275, 275, 275, 976, - 976, 976, 976, 976, 976, 976, 996, 287, 287, 287, - 287, 287, 976, 976, 976, 976, 976, 997, 298, 298, - - 298, 298, 298, 976, 976, 976, 976, 976, 998, 309, - 309, 309, 309, 309, 976, 976, 976, 976, 1014, 976, - 976, 976, 1000, 323, 323, 323, 323, 323, 976, 976, - 976, 976, 976, 1002, 334, 334, 334, 334, 334, 976, - 976, 976, 976, 976, 1003, 345, 345, 345, 345, 345, - 976, 976, 1006, 1007, 1008, 1008, 1008, 1008, 1008, 1008, - 1008, 976, 976, 249, 976, 1015, 976, 251, 368, 976, - 1016, 251, 1017, 264, 273, 976, 1018, 976, 275, 379, - 976, 1019, 379, 976, 976, 1020, 1020, 976, 976, 1021, - 976, 1022, 1022, 976, 1023, 1022, 976, 976, 1024, 976, - - 1025, 1025, 976, 1026, 1025, 976, 976, 1027, 976, 1028, - 1028, 976, 1029, 1028, 976, 976, 1030, 1030, 976, 976, - 1031, 976, 1032, 1032, 976, 1033, 1032, 1034, 1035, 1035, - 1035, 1035, 1035, 1035, 976, 976, 976, 976, 1036, 1036, - 440, 440, 440, 440, 976, 976, 1037, 1037, 448, 1038, - 976, 976, 976, 1038, 454, 454, 454, 454, 454, 448, - 448, 449, 1039, 976, 464, 464, 976, 976, 976, 1040, - 1040, 471, 471, 471, 471, 976, 976, 1041, 1041, 479, - 1042, 976, 976, 976, 1042, 485, 485, 485, 485, 485, - 479, 479, 479, 976, 976, 1043, 1043, 497, 976, 976, - - 976, 1044, 1044, 503, 503, 503, 503, 976, 976, 1045, - 1045, 511, 1046, 976, 976, 976, 1046, 517, 517, 517, - 517, 517, 511, 511, 512, 976, 976, 976, 1047, 1047, - 530, 530, 530, 530, 976, 976, 1048, 1048, 538, 1049, - 976, 976, 976, 1049, 544, 544, 544, 544, 544, 538, - 538, 539, 976, 976, 976, 1050, 1050, 557, 557, 557, - 557, 976, 976, 1051, 1051, 565, 1052, 976, 976, 976, - 1052, 571, 571, 571, 571, 571, 565, 565, 565, 976, - 976, 1053, 1053, 583, 976, 976, 976, 1054, 1054, 589, - 589, 589, 589, 976, 976, 1055, 1055, 597, 1056, 976, - - 976, 976, 1056, 603, 603, 603, 603, 603, 597, 597, - 598, 1057, 1058, 1058, 1058, 1058, 976, 976, 1059, 1059, - 1060, 1060, 976, 976, 1061, 1061, 976, 976, 1062, 976, - 1063, 1063, 976, 1064, 1063, 1065, 1065, 976, 1066, 1065, - 976, 1064, 976, 1067, 1067, 1066, 1067, 976, 976, 1068, - 1068, 1069, 1069, 976, 976, 1070, 1070, 976, 976, 1071, - 1071, 1072, 1072, 976, 976, 1073, 1073, 976, 976, 1074, - 976, 1075, 1075, 976, 1076, 1075, 1077, 1077, 976, 1078, - 1077, 976, 1076, 976, 1079, 1079, 1078, 1079, 976, 976, - 1080, 1080, 1081, 1081, 976, 976, 1082, 1082, 1083, 1084, - - 1084, 1084, 1084, 976, 976, 1085, 1085, 707, 1086, 1086, - 710, 976, 976, 1087, 1087, 715, 976, 976, 976, 1088, - 1088, 721, 721, 721, 721, 976, 976, 1089, 1089, 729, - 976, 976, 976, 1090, 1090, 735, 735, 735, 735, 729, - 729, 730, 1091, 1091, 744, 1092, 976, 976, 976, 1092, - 750, 750, 750, 750, 750, 744, 744, 745, 976, 976, - 1093, 1093, 762, 762, 762, 763, 976, 976, 1094, 1094, - 770, 1095, 1095, 773, 976, 976, 1096, 1096, 778, 976, - 976, 1097, 1097, 783, 1098, 1098, 786, 976, 976, 1099, - 1099, 791, 976, 976, 976, 1100, 1100, 797, 797, 797, - - 797, 976, 976, 1101, 1101, 805, 976, 976, 976, 1102, - 1102, 811, 811, 811, 811, 805, 805, 806, 1103, 1103, - 820, 1104, 976, 976, 976, 1104, 826, 826, 826, 826, - 826, 820, 820, 821, 976, 976, 1105, 1105, 838, 838, - 838, 839, 976, 976, 1106, 1106, 846, 1107, 1107, 849, - 976, 976, 1108, 1108, 854, 1109, 1110, 1110, 1110, 976, - 976, 1111, 1111, 1112, 1112, 976, 976, 1113, 1113, 1114, - 1114, 976, 976, 1115, 1115, 1116, 1116, 976, 976, 797, - 797, 806, 805, 809, 976, 811, 811, 821, 820, 825, - 976, 826, 826, 839, 838, 1109, 1110, 1110, 976, 976, - - 863, 863, 863, 865, 865, 865, 976, 976, 869, 869, - 869, 871, 871, 871, 976, 976, 875, 875, 875, 877, - 877, 877, 976, 976, 797, 797, 797, 805, 805, 806, - 976, 976, 811, 811, 811, 820, 820, 821, 976, 836, - 826, 826, 826, 838, 838, 839, 1109, 1110, 1110, 1109, - 1110, 1110, 1109, 1110, 1109, 1109, 1117, 1117, 976, 1117, - 1117, 976, 976, 1118, 1117, 976, 1117, 1119, 1118, 1118, - 1118, 1119, 1119, 1119, 1119, 0, 976, 976, 976, 976, - 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, - 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, - - 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, - 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, - 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, - 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, - 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, - 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, - 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, - 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, - 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, - 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, - - 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, - 976, 976, 976, 976, 976, 976, 976, 976, 976 - } ; - -static yyconst flex_int16_t yy_nxt[8681] = - { 0, - 976, 47, 48, 47, 47, 976, 463, 49, 47, 48, - 47, 47, 131, 231, 49, 46, 47, 48, 47, 47, - 50, 46, 51, 46, 46, 46, 52, 52, 52, 52, - 50, 50, 53, 54, 50, 55, 50, 50, 56, 50, - 57, 58, 50, 59, 60, 50, 50, 46, 46, 46, - 50, 61, 62, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 47, 48, 47, 47, 144, 145, 51, - 69, 70, 71, 71, 71, 71, 150, 151, 151, 151, - 151, 63, 64, 69, 70, 71, 71, 71, 71, 463, - 65, 47, 48, 47, 47, 131, 231, 51, 72, 46, - - 73, 74, 74, 74, 152, 152, 152, 152, 976, 63, - 64, 72, 46, 73, 74, 74, 74, 319, 65, 47, - 48, 47, 47, 612, 976, 51, 132, 66, 67, 68, - 68, 68, 68, 156, 157, 157, 157, 157, 64, 75, - 46, 76, 77, 77, 77, 75, 46, 76, 77, 77, - 77, 78, 79, 80, 80, 80, 80, 78, 79, 80, - 80, 80, 80, 47, 48, 47, 47, 132, 82, 83, - 47, 48, 47, 47, 270, 82, 83, 158, 158, 158, - 158, 428, 84, 85, 86, 87, 87, 87, 87, 84, - 85, 86, 87, 87, 87, 87, 88, 89, 90, 90, - - 90, 90, 88, 89, 90, 90, 90, 90, 91, 92, - 93, 93, 93, 93, 91, 92, 93, 93, 93, 93, - 94, 95, 96, 96, 96, 96, 374, 120, 48, 120, - 120, 97, 121, 122, 120, 48, 120, 120, 132, 121, - 122, 132, 374, 98, 353, 99, 94, 95, 96, 96, - 96, 96, 128, 132, 128, 128, 896, 97, 129, 123, - 235, 133, 120, 48, 120, 120, 123, 124, 122, 98, - 132, 99, 100, 101, 102, 102, 102, 102, 132, 120, - 48, 120, 120, 97, 124, 122, 131, 231, 156, 157, - 157, 157, 157, 354, 123, 98, 159, 99, 100, 101, - - 102, 102, 102, 102, 160, 160, 160, 160, 953, 97, - 319, 123, 131, 231, 159, 164, 164, 164, 164, 950, - 263, 98, 132, 99, 103, 46, 104, 105, 105, 105, - 164, 164, 164, 164, 270, 97, 263, 125, 46, 126, - 127, 127, 127, 168, 168, 168, 168, 98, 46, 99, - 103, 46, 104, 105, 105, 105, 166, 167, 167, 167, - 167, 97, 954, 125, 46, 126, 127, 127, 127, 178, - 178, 178, 178, 98, 46, 99, 106, 107, 108, 108, - 108, 108, 176, 177, 177, 177, 177, 97, 164, 164, - 164, 164, 131, 952, 131, 131, 614, 131, 174, 98, - - 615, 99, 106, 107, 108, 108, 108, 108, 165, 182, - 182, 182, 182, 97, 176, 177, 177, 177, 177, 951, - 132, 949, 179, 132, 165, 98, 856, 99, 47, 48, - 47, 47, 948, 110, 111, 180, 181, 181, 181, 181, - 179, 186, 187, 187, 187, 187, 699, 112, 188, 188, - 188, 188, 192, 193, 193, 193, 193, 720, 723, 98, - 387, 99, 47, 48, 47, 47, 898, 110, 111, 194, - 194, 194, 194, 199, 200, 200, 200, 200, 387, 720, - 723, 112, 201, 201, 201, 201, 199, 200, 200, 200, - 200, 470, 473, 98, 202, 99, 113, 114, 115, 115, - - 115, 115, 203, 203, 203, 203, 897, 97, 203, 203, - 203, 203, 202, 203, 203, 203, 203, 470, 473, 98, - 859, 99, 113, 114, 115, 115, 115, 115, 204, 207, - 207, 207, 207, 97, 205, 206, 206, 206, 206, 215, - 216, 216, 216, 216, 204, 98, 858, 99, 116, 117, - 118, 118, 118, 118, 418, 131, 857, 131, 131, 97, - 131, 213, 217, 217, 217, 217, 221, 222, 222, 222, - 222, 98, 418, 99, 116, 117, 118, 118, 118, 118, - 223, 223, 223, 223, 703, 97, 131, 228, 131, 228, - 228, 263, 128, 229, 128, 128, 620, 98, 129, 99, - - 153, 153, 153, 153, 626, 702, 154, 263, 132, 150, - 151, 151, 151, 151, 620, 734, 737, 155, 233, 233, - 233, 233, 626, 233, 233, 233, 233, 233, 233, 233, - 233, 152, 152, 152, 152, 155, 161, 161, 161, 161, - 132, 701, 162, 234, 947, 955, 160, 160, 160, 160, - 976, 152, 152, 152, 152, 734, 737, 256, 256, 234, - 257, 257, 257, 257, 274, 277, 163, 158, 158, 158, - 158, 156, 157, 157, 157, 157, 274, 277, 700, 159, - 387, 651, 163, 169, 169, 169, 169, 657, 616, 170, - 750, 753, 166, 167, 167, 167, 167, 159, 387, 651, - - 171, 158, 158, 158, 158, 657, 258, 258, 159, 259, - 259, 259, 259, 164, 164, 164, 164, 613, 171, 183, - 183, 183, 183, 750, 753, 184, 159, 661, 180, 181, - 181, 181, 181, 132, 667, 260, 185, 261, 262, 262, - 262, 161, 161, 161, 161, 661, 435, 162, 168, 168, - 168, 168, 667, 418, 185, 189, 189, 189, 189, 485, - 488, 190, 692, 956, 186, 187, 187, 187, 187, 485, - 488, 418, 191, 976, 168, 168, 168, 168, 280, 280, - 692, 281, 281, 281, 281, 178, 178, 178, 178, 132, - 191, 195, 195, 195, 195, 434, 957, 196, 433, 432, - - 192, 193, 193, 193, 193, 431, 430, 131, 197, 131, - 131, 429, 131, 174, 131, 363, 131, 131, 362, 131, - 174, 182, 182, 182, 182, 698, 197, 208, 208, 208, - 208, 361, 620, 209, 626, 360, 205, 206, 206, 206, - 206, 863, 869, 698, 210, 176, 177, 177, 177, 177, - 620, 359, 626, 179, 178, 178, 178, 178, 358, 863, - 869, 179, 210, 218, 218, 218, 218, 357, 356, 219, - 355, 179, 215, 216, 216, 216, 216, 246, 245, 179, - 220, 282, 282, 244, 283, 283, 283, 283, 976, 182, - 182, 182, 182, 188, 188, 188, 188, 243, 220, 224, - - 224, 224, 224, 242, 241, 225, 240, 239, 221, 222, - 222, 222, 222, 238, 293, 293, 226, 294, 294, 294, - 294, 976, 188, 188, 188, 188, 304, 304, 237, 305, - 305, 305, 305, 236, 226, 153, 153, 153, 153, 132, - 132, 154, 132, 247, 248, 249, 249, 249, 249, 251, - 153, 251, 251, 232, 875, 252, 214, 253, 254, 255, - 255, 255, 255, 264, 161, 264, 264, 198, 175, 265, - 149, 266, 875, 267, 268, 268, 268, 169, 169, 169, - 169, 148, 147, 170, 146, 271, 272, 273, 273, 273, - 273, 275, 169, 275, 275, 143, 142, 276, 141, 277, - - 278, 279, 279, 279, 279, 183, 183, 183, 183, 140, - 139, 184, 138, 284, 285, 286, 286, 286, 286, 288, - 183, 288, 288, 137, 136, 289, 132, 290, 291, 292, - 292, 292, 292, 189, 189, 189, 189, 976, 976, 190, - 976, 295, 296, 297, 297, 297, 297, 299, 189, 299, - 299, 976, 976, 300, 976, 301, 302, 303, 303, 303, - 303, 194, 194, 194, 194, 976, 194, 194, 194, 194, - 195, 195, 195, 195, 976, 976, 196, 976, 306, 307, - 308, 308, 308, 308, 310, 195, 310, 310, 976, 976, - 311, 976, 312, 313, 314, 314, 314, 314, 315, 315, - - 976, 316, 316, 316, 316, 201, 201, 201, 201, 199, - 200, 200, 200, 200, 976, 976, 651, 202, 201, 201, - 201, 201, 657, 317, 317, 202, 318, 318, 318, 318, - 203, 203, 203, 203, 651, 202, 207, 207, 207, 207, - 657, 976, 976, 202, 976, 207, 207, 207, 207, 208, - 208, 208, 208, 976, 976, 209, 976, 320, 321, 322, - 322, 322, 322, 324, 208, 324, 324, 661, 976, 325, - 667, 326, 327, 328, 328, 328, 328, 329, 329, 976, - 330, 330, 330, 330, 131, 661, 131, 131, 667, 131, - 213, 131, 976, 131, 131, 976, 131, 213, 217, 217, - - 217, 217, 976, 217, 217, 217, 217, 340, 340, 976, - 341, 341, 341, 341, 881, 131, 976, 131, 223, 223, - 223, 223, 131, 887, 131, 218, 218, 218, 218, 976, - 976, 219, 881, 976, 215, 216, 216, 216, 216, 976, - 976, 887, 220, 976, 223, 223, 223, 223, 351, 351, - 893, 352, 352, 352, 352, 233, 233, 233, 233, 976, - 220, 218, 218, 218, 218, 976, 976, 219, 893, 331, - 332, 333, 333, 333, 333, 335, 218, 335, 335, 692, - 976, 336, 976, 337, 338, 339, 339, 339, 339, 224, - 224, 224, 224, 976, 976, 225, 976, 692, 221, 222, - - 222, 222, 222, 698, 976, 228, 226, 228, 228, 976, - 976, 229, 248, 249, 249, 249, 249, 364, 364, 364, - 364, 698, 976, 976, 226, 224, 224, 224, 224, 976, - 976, 225, 976, 342, 343, 344, 344, 344, 344, 346, - 224, 346, 346, 976, 976, 347, 976, 348, 349, 350, - 350, 350, 350, 365, 365, 365, 365, 976, 976, 366, - 976, 976, 248, 249, 249, 249, 249, 976, 976, 976, - 367, 368, 368, 368, 368, 257, 257, 257, 257, 259, - 259, 259, 259, 259, 259, 259, 259, 976, 367, 251, - 153, 251, 251, 976, 976, 252, 976, 253, 254, 255, - - 255, 255, 255, 251, 153, 251, 251, 976, 976, 252, - 976, 253, 254, 255, 255, 255, 255, 369, 370, 369, - 369, 976, 976, 371, 262, 262, 262, 262, 262, 262, - 262, 262, 976, 976, 372, 976, 976, 262, 262, 262, - 262, 161, 161, 161, 161, 976, 976, 162, 375, 375, - 375, 375, 372, 153, 153, 153, 153, 373, 976, 154, - 976, 976, 976, 257, 257, 257, 257, 272, 273, 273, - 273, 273, 976, 373, 264, 161, 264, 264, 959, 960, - 265, 976, 266, 961, 267, 268, 268, 268, 264, 161, - 264, 264, 959, 960, 265, 976, 266, 961, 267, 268, - - 268, 268, 376, 376, 376, 376, 976, 976, 377, 976, - 976, 272, 273, 273, 273, 273, 976, 976, 976, 378, - 379, 379, 379, 379, 281, 281, 281, 281, 283, 283, - 283, 283, 283, 283, 283, 283, 976, 378, 275, 169, - 275, 275, 976, 976, 276, 976, 277, 278, 279, 279, - 279, 279, 275, 169, 275, 275, 976, 976, 276, 976, - 277, 278, 279, 279, 279, 279, 380, 381, 380, 380, - 976, 976, 382, 285, 286, 286, 286, 286, 384, 384, - 384, 384, 976, 383, 285, 286, 286, 286, 286, 976, - 976, 976, 385, 386, 386, 386, 386, 294, 294, 294, - - 294, 383, 169, 169, 169, 169, 959, 960, 170, 976, - 385, 961, 281, 281, 281, 281, 288, 183, 288, 288, - 976, 976, 289, 976, 290, 291, 292, 292, 292, 292, - 183, 183, 183, 183, 976, 976, 184, 976, 976, 976, - 294, 294, 294, 294, 296, 297, 297, 297, 297, 388, - 388, 388, 388, 389, 389, 389, 389, 976, 976, 390, - 976, 976, 296, 297, 297, 297, 297, 976, 976, 976, - 391, 392, 392, 392, 392, 976, 393, 394, 393, 393, - 976, 976, 395, 305, 305, 305, 305, 976, 391, 299, - 189, 299, 299, 396, 976, 300, 976, 301, 302, 303, - - 303, 303, 303, 307, 308, 308, 308, 308, 976, 720, - 723, 396, 189, 189, 189, 189, 976, 976, 190, 863, - 976, 976, 305, 305, 305, 305, 397, 397, 397, 397, - 398, 398, 398, 398, 976, 976, 399, 863, 976, 307, - 308, 308, 308, 308, 976, 976, 976, 400, 401, 401, - 401, 401, 976, 402, 403, 402, 402, 976, 976, 404, - 316, 316, 316, 316, 976, 400, 310, 195, 310, 310, - 405, 976, 311, 976, 312, 313, 314, 314, 314, 314, - 318, 318, 318, 318, 318, 318, 318, 318, 405, 195, - 195, 195, 195, 976, 976, 196, 976, 976, 976, 316, - - 316, 316, 316, 321, 322, 322, 322, 322, 406, 406, - 406, 406, 407, 407, 407, 407, 976, 976, 408, 976, - 976, 321, 322, 322, 322, 322, 976, 976, 976, 409, - 410, 410, 410, 410, 976, 411, 412, 411, 411, 976, - 976, 413, 330, 330, 330, 330, 976, 409, 324, 208, - 324, 324, 414, 976, 325, 976, 326, 327, 328, 328, - 328, 328, 332, 333, 333, 333, 333, 976, 734, 737, - 414, 208, 208, 208, 208, 976, 976, 209, 869, 976, - 976, 330, 330, 330, 330, 415, 415, 415, 415, 332, - 333, 333, 333, 333, 976, 976, 869, 416, 417, 417, - - 417, 417, 341, 341, 341, 341, 343, 344, 344, 344, - 344, 419, 419, 419, 419, 416, 335, 218, 335, 335, - 976, 976, 336, 976, 337, 338, 339, 339, 339, 339, - 218, 218, 218, 218, 976, 976, 219, 976, 750, 753, - 341, 341, 341, 341, 420, 420, 420, 420, 875, 976, - 421, 976, 976, 343, 344, 344, 344, 344, 976, 976, - 976, 422, 423, 423, 423, 423, 875, 424, 425, 424, - 424, 976, 976, 426, 352, 352, 352, 352, 976, 422, - 346, 224, 346, 346, 427, 976, 347, 976, 348, 349, - 350, 350, 350, 350, 976, 364, 364, 364, 364, 976, - - 976, 976, 427, 224, 224, 224, 224, 976, 976, 225, - 976, 976, 976, 352, 352, 352, 352, 365, 365, 365, - 365, 976, 976, 366, 976, 436, 437, 438, 438, 438, - 438, 440, 365, 440, 440, 976, 976, 441, 976, 442, - 443, 444, 444, 444, 444, 445, 445, 976, 446, 446, - 446, 446, 369, 370, 369, 369, 976, 976, 371, 976, - 976, 976, 368, 368, 368, 368, 976, 460, 461, 372, - 462, 462, 462, 462, 976, 375, 375, 375, 375, 476, - 476, 976, 477, 477, 477, 477, 976, 372, 447, 448, - 449, 449, 449, 449, 976, 976, 976, 250, 384, 384, - - 384, 384, 976, 494, 494, 385, 495, 495, 495, 495, - 437, 438, 438, 438, 438, 250, 370, 370, 370, 370, - 976, 976, 450, 385, 451, 452, 453, 453, 453, 453, - 455, 370, 455, 455, 976, 976, 456, 976, 457, 458, - 459, 459, 459, 459, 464, 465, 465, 465, 466, 466, - 466, 466, 466, 508, 508, 976, 509, 509, 509, 509, - 535, 535, 976, 536, 536, 536, 536, 976, 466, 466, - 466, 376, 376, 376, 376, 976, 976, 377, 976, 467, - 468, 469, 469, 469, 469, 471, 376, 471, 471, 976, - 976, 472, 976, 473, 474, 475, 475, 475, 475, 380, - - 381, 380, 380, 976, 976, 382, 976, 976, 976, 379, - 379, 379, 379, 976, 562, 562, 383, 563, 563, 563, - 563, 415, 415, 415, 415, 976, 580, 580, 416, 581, - 581, 581, 581, 976, 383, 478, 479, 480, 480, 480, - 480, 976, 976, 976, 274, 976, 416, 594, 594, 976, - 595, 595, 595, 595, 617, 617, 617, 617, 619, 619, - 619, 619, 274, 381, 381, 381, 381, 976, 976, 481, - 976, 482, 483, 484, 484, 484, 484, 486, 381, 486, - 486, 976, 976, 487, 976, 488, 489, 490, 490, 490, - 490, 275, 169, 275, 275, 976, 976, 276, 491, 492, - - 976, 493, 493, 493, 493, 976, 976, 976, 274, 446, - 446, 446, 446, 976, 976, 437, 438, 438, 438, 438, - 976, 976, 976, 618, 976, 976, 274, 288, 183, 288, - 288, 976, 976, 289, 976, 290, 291, 386, 386, 386, - 386, 618, 976, 976, 387, 452, 453, 453, 453, 453, - 623, 623, 623, 623, 625, 625, 625, 625, 462, 462, - 462, 462, 387, 288, 183, 288, 288, 976, 976, 289, - 496, 497, 291, 498, 498, 498, 498, 389, 389, 389, - 389, 976, 976, 390, 976, 976, 976, 388, 388, 388, - 388, 976, 976, 976, 391, 462, 462, 462, 462, 468, - - 469, 469, 469, 469, 627, 627, 627, 627, 631, 631, - 631, 631, 391, 389, 389, 389, 389, 976, 976, 390, - 976, 499, 500, 501, 501, 501, 501, 503, 389, 503, - 503, 976, 976, 504, 976, 505, 506, 507, 507, 507, - 507, 393, 394, 393, 393, 976, 976, 395, 976, 301, - 302, 392, 392, 392, 392, 976, 976, 976, 396, 477, - 477, 477, 477, 483, 484, 484, 484, 484, 641, 641, - 641, 641, 644, 644, 644, 644, 396, 393, 394, 393, - 393, 976, 976, 395, 976, 510, 511, 512, 512, 512, - 512, 394, 394, 394, 394, 976, 976, 513, 976, 514, - - 515, 516, 516, 516, 516, 518, 394, 518, 518, 976, - 976, 519, 976, 520, 521, 522, 522, 522, 522, 299, - 189, 299, 299, 976, 976, 300, 523, 524, 302, 525, - 525, 525, 525, 398, 398, 398, 398, 976, 976, 399, - 976, 976, 976, 397, 397, 397, 397, 976, 976, 976, - 400, 493, 493, 493, 493, 493, 493, 493, 493, 495, - 495, 495, 495, 495, 495, 495, 495, 976, 400, 398, - 398, 398, 398, 976, 976, 399, 976, 526, 527, 528, - 528, 528, 528, 530, 398, 530, 530, 976, 976, 531, - 976, 532, 533, 534, 534, 534, 534, 402, 403, 402, - - 402, 976, 976, 404, 976, 312, 313, 401, 401, 401, - 401, 976, 976, 976, 405, 500, 501, 501, 501, 501, - 648, 648, 648, 648, 650, 650, 650, 650, 509, 509, - 509, 509, 405, 402, 403, 402, 402, 976, 976, 404, - 976, 537, 538, 539, 539, 539, 539, 403, 403, 403, - 403, 976, 976, 540, 976, 541, 542, 543, 543, 543, - 543, 545, 403, 545, 545, 976, 976, 546, 976, 547, - 548, 549, 549, 549, 549, 310, 195, 310, 310, 976, - 976, 311, 550, 551, 313, 552, 552, 552, 552, 407, - 407, 407, 407, 976, 976, 408, 976, 976, 976, 406, - - 406, 406, 406, 976, 976, 976, 409, 515, 516, 516, - 516, 516, 654, 654, 654, 654, 656, 656, 656, 656, - 525, 525, 525, 525, 409, 407, 407, 407, 407, 976, - 976, 408, 976, 553, 554, 555, 555, 555, 555, 557, - 407, 557, 557, 976, 976, 558, 976, 559, 560, 561, - 561, 561, 561, 411, 412, 411, 411, 976, 976, 413, - 976, 326, 327, 410, 410, 410, 410, 976, 976, 976, - 414, 525, 525, 525, 525, 527, 528, 528, 528, 528, - 658, 658, 658, 658, 660, 660, 660, 660, 414, 411, - 412, 411, 411, 976, 976, 413, 976, 564, 565, 566, - - 566, 566, 566, 412, 412, 412, 412, 976, 976, 567, - 976, 568, 569, 570, 570, 570, 570, 572, 412, 572, - 572, 976, 976, 573, 976, 574, 575, 576, 576, 576, - 576, 324, 208, 324, 324, 976, 976, 325, 577, 578, - 327, 579, 579, 579, 579, 335, 218, 335, 335, 976, - 976, 336, 976, 337, 338, 417, 417, 417, 417, 976, - 976, 976, 418, 536, 536, 536, 536, 976, 632, 633, - 632, 632, 976, 976, 634, 542, 543, 543, 543, 543, - 418, 335, 218, 335, 335, 635, 976, 336, 582, 583, - 338, 584, 584, 584, 584, 420, 420, 420, 420, 976, - - 976, 421, 976, 635, 976, 419, 419, 419, 419, 976, - 976, 976, 422, 664, 664, 664, 664, 666, 666, 666, - 666, 552, 552, 552, 552, 552, 552, 552, 552, 976, - 422, 420, 420, 420, 420, 976, 976, 421, 976, 585, - 586, 587, 587, 587, 587, 589, 420, 589, 589, 976, - 976, 590, 976, 591, 592, 593, 593, 593, 593, 424, - 425, 424, 424, 976, 976, 426, 976, 348, 349, 423, - 423, 423, 423, 976, 976, 976, 427, 554, 555, 555, - 555, 555, 668, 668, 668, 668, 672, 672, 672, 672, - 563, 563, 563, 563, 427, 424, 425, 424, 424, 976, - - 976, 426, 976, 596, 597, 598, 598, 598, 598, 425, - 425, 425, 425, 976, 976, 599, 976, 600, 601, 602, - 602, 602, 602, 604, 425, 604, 604, 976, 976, 605, - 976, 606, 607, 608, 608, 608, 608, 346, 224, 346, - 346, 976, 976, 347, 609, 610, 349, 611, 611, 611, - 611, 440, 365, 440, 440, 976, 976, 441, 976, 442, - 443, 444, 444, 444, 444, 440, 365, 440, 440, 976, - 976, 441, 976, 442, 443, 444, 444, 444, 444, 365, - 365, 365, 365, 976, 976, 366, 976, 976, 976, 446, - 446, 446, 446, 251, 153, 251, 251, 976, 976, 252, - - 976, 253, 448, 449, 449, 449, 449, 251, 153, 251, - 251, 976, 976, 252, 976, 253, 254, 621, 621, 621, - 621, 369, 370, 369, 369, 976, 976, 371, 976, 976, - 448, 449, 449, 449, 449, 976, 976, 976, 622, 569, - 570, 570, 570, 570, 645, 638, 645, 645, 976, 976, - 646, 682, 682, 682, 682, 976, 622, 455, 370, 455, - 455, 647, 976, 456, 976, 457, 458, 459, 459, 459, - 459, 365, 365, 365, 365, 976, 976, 366, 976, 647, - 452, 453, 453, 453, 453, 976, 976, 976, 624, 685, - 685, 685, 685, 976, 976, 254, 462, 462, 462, 462, - - 976, 976, 976, 372, 976, 976, 624, 455, 370, 455, - 455, 976, 976, 456, 976, 457, 458, 459, 459, 459, - 459, 372, 263, 264, 161, 264, 264, 263, 263, 265, - 263, 266, 263, 464, 465, 465, 465, 466, 466, 466, - 466, 466, 263, 263, 263, 263, 263, 263, 263, 263, - 263, 263, 263, 374, 263, 263, 263, 466, 466, 466, - 263, 263, 263, 263, 263, 263, 263, 263, 263, 374, - 628, 628, 628, 628, 976, 976, 629, 976, 976, 468, - 469, 469, 469, 469, 976, 976, 976, 630, 579, 579, - 579, 579, 579, 579, 579, 579, 581, 581, 581, 581, - - 581, 581, 581, 581, 976, 630, 471, 376, 471, 471, - 976, 976, 472, 976, 473, 474, 475, 475, 475, 475, - 471, 376, 471, 471, 976, 976, 472, 976, 473, 474, - 475, 475, 475, 475, 376, 376, 376, 376, 976, 976, - 377, 976, 976, 976, 477, 477, 477, 477, 275, 169, - 275, 275, 976, 976, 276, 976, 277, 479, 480, 480, - 480, 480, 275, 169, 275, 275, 976, 976, 276, 976, - 277, 278, 636, 636, 636, 636, 637, 638, 637, 637, - 976, 976, 639, 976, 976, 479, 480, 480, 480, 480, - 976, 976, 976, 640, 586, 587, 587, 587, 587, 673, - - 674, 673, 673, 976, 976, 675, 689, 689, 689, 689, - 976, 640, 486, 381, 486, 486, 676, 976, 487, 976, - 488, 489, 490, 490, 490, 490, 633, 633, 633, 633, - 976, 976, 642, 976, 676, 483, 484, 484, 484, 484, - 976, 976, 976, 643, 691, 691, 691, 691, 976, 686, - 679, 686, 686, 976, 976, 687, 595, 595, 595, 595, - 976, 643, 486, 381, 486, 486, 688, 976, 487, 976, - 488, 489, 490, 490, 490, 490, 380, 381, 380, 380, - 976, 976, 382, 976, 688, 976, 493, 493, 493, 493, - 976, 976, 976, 383, 601, 602, 602, 602, 602, 695, - - 695, 695, 695, 697, 697, 697, 697, 611, 611, 611, - 611, 383, 288, 183, 288, 288, 976, 976, 289, 976, - 290, 291, 498, 498, 498, 498, 288, 183, 288, 288, - 976, 976, 289, 976, 290, 291, 498, 498, 498, 498, - 500, 501, 501, 501, 501, 976, 976, 976, 649, 611, - 611, 611, 611, 704, 704, 976, 705, 705, 705, 705, - 705, 705, 705, 705, 976, 976, 649, 503, 389, 503, - 503, 976, 976, 504, 976, 505, 506, 507, 507, 507, - 507, 503, 389, 503, 503, 976, 976, 504, 976, 505, - 506, 507, 507, 507, 507, 389, 389, 389, 389, 976, - - 976, 390, 976, 976, 976, 509, 509, 509, 509, 299, - 189, 299, 299, 976, 976, 300, 976, 301, 511, 512, - 512, 512, 512, 299, 189, 299, 299, 976, 976, 300, - 976, 301, 302, 652, 652, 652, 652, 393, 394, 393, - 393, 976, 976, 395, 976, 976, 511, 512, 512, 512, - 512, 976, 976, 976, 653, 617, 617, 617, 617, 976, - 712, 712, 618, 713, 713, 713, 713, 705, 705, 705, - 705, 976, 653, 518, 394, 518, 518, 976, 976, 519, - 618, 520, 521, 522, 522, 522, 522, 389, 389, 389, - 389, 976, 976, 390, 976, 976, 515, 516, 516, 516, - - 516, 976, 726, 726, 655, 727, 727, 727, 727, 976, - 976, 302, 525, 525, 525, 525, 976, 976, 976, 396, - 976, 976, 655, 518, 394, 518, 518, 976, 976, 519, - 976, 520, 521, 522, 522, 522, 522, 396, 527, 528, - 528, 528, 528, 976, 759, 759, 659, 760, 760, 760, - 760, 767, 767, 976, 768, 768, 768, 768, 713, 713, - 713, 713, 976, 976, 659, 530, 398, 530, 530, 976, - 976, 531, 976, 532, 533, 534, 534, 534, 534, 530, - 398, 530, 530, 976, 976, 531, 976, 532, 533, 534, - 534, 534, 534, 398, 398, 398, 398, 976, 976, 399, - - 976, 976, 976, 536, 536, 536, 536, 310, 195, 310, - 310, 976, 976, 311, 976, 312, 538, 539, 539, 539, - 539, 310, 195, 310, 310, 976, 976, 311, 976, 312, - 313, 662, 662, 662, 662, 402, 403, 402, 402, 976, - 976, 404, 976, 976, 538, 539, 539, 539, 539, 976, - 976, 976, 663, 648, 648, 648, 648, 976, 775, 775, - 649, 776, 776, 776, 776, 718, 719, 719, 719, 719, - 663, 545, 403, 545, 545, 976, 976, 546, 649, 547, - 548, 549, 549, 549, 549, 398, 398, 398, 398, 976, - 976, 399, 976, 976, 542, 543, 543, 543, 543, 976, - - 780, 780, 665, 781, 781, 781, 781, 976, 976, 313, - 552, 552, 552, 552, 976, 976, 976, 405, 976, 976, - 665, 545, 403, 545, 545, 976, 976, 546, 976, 547, - 548, 549, 549, 549, 549, 405, 669, 669, 669, 669, - 976, 976, 670, 976, 976, 554, 555, 555, 555, 555, - 976, 976, 976, 671, 658, 658, 658, 658, 976, 788, - 788, 659, 789, 789, 789, 789, 860, 860, 860, 860, - 976, 671, 557, 407, 557, 557, 976, 976, 558, 659, - 559, 560, 561, 561, 561, 561, 557, 407, 557, 557, - 976, 976, 558, 976, 559, 560, 561, 561, 561, 561, - - 407, 407, 407, 407, 976, 976, 408, 976, 976, 976, - 563, 563, 563, 563, 324, 208, 324, 324, 976, 976, - 325, 976, 326, 565, 566, 566, 566, 566, 324, 208, - 324, 324, 976, 976, 325, 976, 326, 327, 677, 677, - 677, 677, 678, 679, 678, 678, 976, 976, 680, 976, - 976, 565, 566, 566, 566, 566, 976, 802, 802, 681, - 803, 803, 803, 803, 835, 835, 976, 836, 836, 836, - 836, 862, 862, 862, 862, 976, 976, 681, 572, 412, - 572, 572, 976, 976, 573, 976, 574, 575, 576, 576, - 576, 576, 674, 674, 674, 674, 976, 976, 683, 976, - - 976, 569, 570, 570, 570, 570, 976, 976, 976, 684, - 689, 689, 689, 689, 976, 843, 843, 690, 844, 844, - 844, 844, 727, 727, 727, 727, 976, 684, 572, 412, - 572, 572, 976, 976, 573, 690, 574, 575, 576, 576, - 576, 576, 411, 412, 411, 411, 976, 976, 413, 976, - 976, 976, 579, 579, 579, 579, 976, 851, 851, 414, - 852, 852, 852, 852, 732, 733, 733, 733, 733, 866, - 866, 866, 866, 868, 868, 868, 868, 414, 335, 218, - 335, 335, 976, 976, 336, 976, 337, 338, 584, 584, - 584, 584, 335, 218, 335, 335, 976, 976, 336, 976, - - 337, 338, 584, 584, 584, 584, 586, 587, 587, 587, - 587, 976, 976, 976, 690, 742, 742, 742, 742, 742, - 742, 742, 742, 748, 749, 749, 749, 749, 872, 872, - 872, 872, 690, 589, 420, 589, 589, 976, 976, 590, - 976, 591, 592, 593, 593, 593, 593, 589, 420, 589, - 589, 976, 976, 590, 976, 591, 592, 593, 593, 593, - 593, 420, 420, 420, 420, 976, 976, 421, 976, 976, - 976, 595, 595, 595, 595, 346, 224, 346, 346, 976, - 976, 347, 976, 348, 597, 598, 598, 598, 598, 346, - 224, 346, 346, 976, 976, 347, 976, 348, 349, 693, - - 693, 693, 693, 424, 425, 424, 424, 976, 976, 426, - 976, 976, 597, 598, 598, 598, 598, 976, 976, 976, - 694, 874, 874, 874, 874, 976, 369, 370, 369, 369, - 976, 976, 371, 758, 758, 758, 758, 976, 694, 604, - 425, 604, 604, 372, 976, 605, 976, 606, 607, 608, - 608, 608, 608, 420, 420, 420, 420, 976, 976, 421, - 976, 372, 601, 602, 602, 602, 602, 976, 976, 976, - 696, 758, 758, 758, 758, 976, 976, 349, 611, 611, - 611, 611, 976, 976, 976, 427, 976, 976, 696, 604, - 425, 604, 604, 976, 976, 605, 976, 606, 607, 608, - - 608, 608, 608, 427, 440, 365, 440, 440, 976, 976, - 441, 976, 442, 443, 619, 619, 619, 619, 976, 976, - 976, 620, 760, 760, 760, 760, 766, 766, 766, 766, - 766, 766, 766, 766, 768, 768, 768, 768, 976, 620, - 440, 365, 440, 440, 976, 976, 441, 706, 707, 443, - 708, 708, 708, 708, 369, 370, 369, 369, 976, 976, - 371, 976, 253, 254, 621, 621, 621, 621, 976, 976, - 976, 622, 768, 768, 768, 768, 976, 393, 394, 393, - 393, 976, 976, 395, 776, 776, 776, 776, 976, 622, - 251, 153, 251, 251, 396, 976, 252, 709, 710, 254, - - 711, 711, 711, 711, 365, 365, 365, 365, 976, 976, - 366, 976, 396, 976, 623, 623, 623, 623, 976, 976, - 976, 624, 781, 781, 781, 781, 976, 976, 718, 719, - 719, 719, 719, 976, 976, 976, 861, 976, 976, 624, - 455, 370, 455, 455, 976, 976, 456, 976, 457, 458, - 625, 625, 625, 625, 861, 976, 976, 626, 781, 781, - 781, 781, 976, 402, 403, 402, 402, 976, 976, 404, - 789, 789, 789, 789, 976, 626, 455, 370, 455, 455, - 405, 976, 456, 714, 715, 458, 716, 716, 716, 716, - 628, 628, 628, 628, 976, 976, 629, 976, 405, 976, - - 627, 627, 627, 627, 976, 976, 976, 630, 794, 795, - 795, 795, 795, 878, 878, 878, 878, 880, 880, 880, - 880, 803, 803, 803, 803, 630, 628, 628, 628, 628, - 976, 976, 629, 976, 717, 718, 719, 719, 719, 719, - 721, 628, 721, 721, 976, 976, 722, 976, 723, 724, - 725, 725, 725, 725, 632, 633, 632, 632, 976, 976, - 634, 976, 473, 474, 631, 631, 631, 631, 976, 976, - 976, 635, 808, 809, 809, 809, 809, 884, 884, 884, - 884, 886, 886, 886, 886, 818, 818, 818, 818, 635, - 632, 633, 632, 632, 976, 976, 634, 976, 728, 729, - - 730, 730, 730, 730, 633, 633, 633, 633, 976, 976, - 642, 976, 731, 732, 733, 733, 733, 733, 735, 633, - 735, 735, 976, 976, 736, 976, 737, 738, 739, 739, - 739, 739, 471, 376, 471, 471, 976, 976, 472, 740, - 741, 474, 742, 742, 742, 742, 637, 638, 637, 637, - 976, 976, 639, 976, 277, 278, 636, 636, 636, 636, - 976, 976, 976, 640, 818, 818, 818, 818, 824, 825, - 825, 825, 825, 890, 890, 890, 890, 892, 892, 892, - 892, 640, 637, 638, 637, 637, 976, 976, 639, 976, - 743, 744, 745, 745, 745, 745, 638, 638, 638, 638, - - 976, 976, 746, 976, 747, 748, 749, 749, 749, 749, - 751, 638, 751, 751, 976, 976, 752, 976, 753, 754, - 755, 755, 755, 755, 275, 169, 275, 275, 976, 976, - 276, 756, 757, 278, 758, 758, 758, 758, 633, 633, - 633, 633, 976, 976, 642, 976, 976, 976, 641, 641, - 641, 641, 976, 976, 976, 643, 834, 834, 834, 834, - 834, 834, 834, 834, 836, 836, 836, 836, 842, 842, - 842, 842, 976, 643, 735, 633, 735, 735, 976, 976, - 736, 976, 737, 738, 739, 739, 739, 739, 645, 638, - 645, 645, 976, 976, 646, 976, 488, 489, 644, 644, - - 644, 644, 976, 976, 976, 647, 842, 842, 842, 842, - 844, 844, 844, 844, 844, 844, 844, 844, 852, 852, - 852, 852, 976, 647, 645, 638, 645, 645, 976, 976, - 646, 976, 761, 762, 763, 763, 763, 763, 751, 638, - 751, 751, 976, 976, 752, 976, 753, 754, 755, 755, - 755, 755, 486, 381, 486, 486, 976, 976, 487, 764, - 765, 489, 766, 766, 766, 766, 503, 389, 503, 503, - 976, 976, 504, 976, 505, 506, 650, 650, 650, 650, - 976, 899, 899, 651, 900, 900, 900, 900, 907, 907, - 976, 908, 908, 908, 908, 560, 882, 882, 882, 882, - - 976, 651, 503, 389, 503, 503, 976, 976, 504, 769, - 770, 506, 771, 771, 771, 771, 393, 394, 393, 393, - 976, 976, 395, 976, 301, 302, 652, 652, 652, 652, - 976, 915, 915, 653, 916, 916, 916, 916, 976, 424, - 425, 424, 424, 923, 923, 426, 924, 924, 924, 924, - 976, 653, 299, 189, 299, 299, 427, 976, 300, 772, - 773, 302, 774, 774, 774, 774, 389, 389, 389, 389, - 976, 976, 390, 976, 427, 976, 654, 654, 654, 654, - 976, 925, 926, 655, 927, 927, 927, 927, 976, 976, - 474, 742, 742, 742, 742, 976, 976, 976, 635, 976, - - 976, 655, 518, 394, 518, 518, 976, 976, 519, 976, - 520, 521, 656, 656, 656, 656, 635, 928, 929, 657, - 930, 930, 930, 930, 976, 884, 884, 884, 884, 931, - 931, 976, 932, 932, 932, 932, 976, 657, 518, 394, - 518, 518, 976, 976, 519, 777, 778, 521, 779, 779, - 779, 779, 530, 398, 530, 530, 976, 976, 531, 976, - 532, 533, 660, 660, 660, 660, 976, 933, 934, 661, - 935, 935, 935, 935, 327, 888, 888, 888, 888, 936, - 937, 976, 938, 938, 938, 938, 976, 661, 530, 398, - 530, 530, 976, 976, 531, 782, 783, 533, 784, 784, - - 784, 784, 402, 403, 402, 402, 976, 976, 404, 976, - 312, 313, 662, 662, 662, 662, 976, 976, 976, 663, - 976, 890, 890, 890, 890, 939, 939, 976, 940, 940, - 940, 940, 575, 894, 894, 894, 894, 663, 310, 195, - 310, 310, 976, 976, 311, 785, 786, 313, 787, 787, - 787, 787, 398, 398, 398, 398, 976, 976, 399, 976, - 976, 976, 664, 664, 664, 664, 976, 941, 942, 665, - 943, 943, 943, 943, 976, 976, 278, 758, 758, 758, - 758, 976, 976, 976, 383, 976, 976, 665, 545, 403, - 545, 545, 976, 976, 546, 976, 547, 548, 666, 666, - - 666, 666, 383, 944, 945, 667, 946, 946, 946, 946, - 900, 900, 900, 900, 900, 900, 900, 900, 908, 908, - 908, 908, 976, 667, 545, 403, 545, 545, 976, 976, - 546, 790, 791, 548, 792, 792, 792, 792, 669, 669, - 669, 669, 976, 976, 670, 976, 976, 976, 668, 668, - 668, 668, 976, 976, 976, 671, 860, 860, 860, 860, - 976, 976, 976, 861, 916, 916, 916, 916, 924, 924, - 924, 924, 976, 671, 669, 669, 669, 669, 976, 976, - 670, 861, 793, 794, 795, 795, 795, 795, 797, 669, - 797, 797, 976, 976, 798, 976, 799, 800, 801, 801, - - 801, 801, 673, 674, 673, 673, 976, 976, 675, 976, - 559, 560, 672, 672, 672, 672, 976, 976, 976, 676, - 878, 878, 878, 878, 976, 976, 976, 879, 924, 924, - 924, 924, 927, 927, 927, 927, 976, 676, 673, 674, - 673, 673, 976, 976, 675, 879, 804, 805, 806, 806, - 806, 806, 674, 674, 674, 674, 976, 976, 683, 976, - 807, 808, 809, 809, 809, 809, 811, 674, 811, 811, - 976, 976, 812, 976, 813, 814, 815, 815, 815, 815, - 557, 407, 557, 557, 976, 976, 558, 816, 817, 560, - 818, 818, 818, 818, 678, 679, 678, 678, 976, 976, - - 680, 976, 326, 327, 677, 677, 677, 677, 976, 976, - 976, 681, 880, 880, 880, 880, 976, 976, 976, 881, - 927, 927, 927, 927, 930, 930, 930, 930, 976, 681, - 678, 679, 678, 678, 976, 976, 680, 881, 819, 820, - 821, 821, 821, 821, 679, 679, 679, 679, 976, 976, - 822, 976, 823, 824, 825, 825, 825, 825, 827, 679, - 827, 827, 976, 976, 828, 976, 829, 830, 831, 831, - 831, 831, 324, 208, 324, 324, 976, 976, 325, 832, - 833, 327, 834, 834, 834, 834, 674, 674, 674, 674, - 976, 976, 683, 976, 976, 976, 682, 682, 682, 682, - - 976, 976, 976, 684, 886, 886, 886, 886, 976, 976, - 976, 887, 930, 930, 930, 930, 932, 932, 932, 932, - 976, 684, 811, 674, 811, 811, 976, 976, 812, 887, - 813, 814, 815, 815, 815, 815, 686, 679, 686, 686, - 976, 976, 687, 976, 574, 575, 685, 685, 685, 685, - 976, 976, 976, 688, 892, 892, 892, 892, 976, 976, - 976, 893, 935, 935, 935, 935, 935, 935, 935, 935, - 976, 688, 686, 679, 686, 686, 976, 976, 687, 893, - 837, 838, 839, 839, 839, 839, 827, 679, 827, 827, - 976, 976, 828, 976, 829, 830, 831, 831, 831, 831, - - 572, 412, 572, 572, 976, 976, 573, 840, 841, 575, - 842, 842, 842, 842, 589, 420, 589, 589, 976, 976, - 590, 976, 591, 592, 691, 691, 691, 691, 976, 976, - 976, 692, 938, 938, 938, 938, 938, 938, 938, 938, - 940, 940, 940, 940, 940, 940, 940, 940, 976, 692, - 589, 420, 589, 589, 976, 976, 590, 845, 846, 592, - 847, 847, 847, 847, 424, 425, 424, 424, 976, 976, - 426, 976, 348, 349, 693, 693, 693, 693, 976, 976, - 976, 694, 943, 943, 943, 943, 943, 943, 943, 943, - 946, 946, 946, 946, 946, 946, 946, 946, 976, 694, - - 346, 224, 346, 346, 976, 976, 347, 848, 849, 349, - 850, 850, 850, 850, 420, 420, 420, 420, 976, 976, - 421, 976, 976, 976, 695, 695, 695, 695, 976, 976, - 962, 696, 963, 962, 976, 976, 964, 976, 489, 766, - 766, 766, 766, 976, 976, 976, 647, 976, 976, 696, - 604, 425, 604, 604, 976, 976, 605, 976, 606, 607, - 697, 697, 697, 697, 647, 976, 976, 698, 965, 966, - 967, 965, 976, 962, 968, 962, 962, 976, 962, 964, - 962, 962, 976, 976, 964, 698, 604, 425, 604, 604, - 976, 976, 605, 853, 854, 607, 855, 855, 855, 855, - - 440, 365, 440, 440, 976, 976, 441, 976, 442, 443, - 708, 708, 708, 708, 440, 365, 440, 440, 976, 976, - 441, 976, 442, 443, 708, 708, 708, 708, 251, 153, - 251, 251, 976, 976, 252, 976, 253, 254, 711, 711, - 711, 711, 251, 153, 251, 251, 976, 976, 252, 976, - 253, 254, 711, 711, 711, 711, 365, 365, 365, 365, - 976, 976, 366, 976, 976, 976, 713, 713, 713, 713, - 455, 370, 455, 455, 976, 976, 456, 976, 457, 458, - 716, 716, 716, 716, 455, 370, 455, 455, 976, 976, - 456, 976, 457, 458, 716, 716, 716, 716, 721, 628, - - 721, 721, 976, 976, 722, 976, 723, 724, 725, 725, - 725, 725, 721, 628, 721, 721, 976, 976, 722, 976, - 723, 724, 725, 725, 725, 725, 628, 628, 628, 628, - 976, 976, 629, 976, 976, 976, 727, 727, 727, 727, - 471, 376, 471, 471, 976, 976, 472, 976, 473, 729, - 730, 730, 730, 730, 471, 376, 471, 471, 976, 976, - 472, 976, 473, 474, 864, 864, 864, 864, 632, 633, - 632, 632, 976, 976, 634, 976, 976, 729, 730, 730, - 730, 730, 976, 976, 976, 865, 794, 795, 795, 795, - 795, 976, 976, 976, 879, 927, 927, 927, 927, 976, - - 976, 976, 881, 865, 628, 628, 628, 628, 976, 976, - 629, 976, 879, 732, 733, 733, 733, 733, 976, 976, - 881, 867, 935, 935, 935, 935, 976, 976, 970, 887, - 970, 970, 976, 976, 971, 976, 976, 976, 976, 867, - 735, 633, 735, 735, 976, 976, 736, 887, 737, 738, - 739, 739, 739, 739, 735, 633, 735, 735, 976, 976, - 736, 976, 737, 738, 739, 739, 739, 739, 275, 169, - 275, 275, 976, 976, 276, 976, 277, 744, 745, 745, - 745, 745, 275, 169, 275, 275, 976, 976, 276, 976, - 277, 278, 870, 870, 870, 870, 637, 638, 637, 637, - - 976, 976, 639, 976, 976, 744, 745, 745, 745, 745, - 976, 976, 976, 871, 943, 943, 943, 943, 976, 976, - 976, 893, 965, 959, 967, 965, 976, 976, 968, 976, - 976, 871, 751, 638, 751, 751, 976, 976, 752, 893, - 753, 754, 755, 755, 755, 755, 633, 633, 633, 633, - 976, 976, 642, 976, 976, 748, 749, 749, 749, 749, - 976, 976, 962, 873, 963, 962, 976, 976, 964, 965, - 966, 967, 965, 976, 970, 968, 970, 970, 976, 976, - 971, 873, 751, 638, 751, 751, 976, 976, 752, 976, - 753, 754, 755, 755, 755, 755, 633, 633, 633, 633, - - 976, 976, 642, 976, 976, 976, 760, 760, 760, 760, - 486, 381, 486, 486, 976, 976, 487, 976, 488, 762, - 763, 763, 763, 763, 486, 381, 486, 486, 976, 976, - 487, 976, 488, 489, 876, 876, 876, 876, 645, 638, - 645, 645, 976, 976, 646, 976, 976, 762, 763, 763, - 763, 763, 976, 976, 976, 877, 973, 959, 974, 973, - 976, 970, 975, 970, 970, 976, 970, 971, 970, 970, - 976, 976, 971, 877, 503, 389, 503, 503, 976, 976, - 504, 976, 505, 506, 771, 771, 771, 771, 503, 389, - 503, 503, 976, 976, 504, 976, 505, 506, 771, 771, - - 771, 771, 299, 189, 299, 299, 976, 976, 300, 976, - 301, 302, 774, 774, 774, 774, 299, 189, 299, 299, - 976, 976, 300, 976, 301, 302, 774, 774, 774, 774, - 389, 389, 389, 389, 976, 976, 390, 976, 976, 976, - 776, 776, 776, 776, 518, 394, 518, 518, 976, 976, - 519, 976, 520, 521, 779, 779, 779, 779, 518, 394, - 518, 518, 976, 976, 519, 976, 520, 521, 779, 779, - 779, 779, 530, 398, 530, 530, 976, 976, 531, 976, - 532, 533, 784, 784, 784, 784, 530, 398, 530, 530, - 976, 976, 531, 976, 532, 533, 784, 784, 784, 784, - - 310, 195, 310, 310, 976, 976, 311, 976, 312, 313, - 787, 787, 787, 787, 310, 195, 310, 310, 976, 976, - 311, 976, 312, 313, 787, 787, 787, 787, 398, 398, - 398, 398, 976, 976, 399, 976, 976, 976, 789, 789, - 789, 789, 545, 403, 545, 545, 976, 976, 546, 976, - 547, 548, 792, 792, 792, 792, 545, 403, 545, 545, - 976, 976, 546, 976, 547, 548, 792, 792, 792, 792, - 797, 669, 797, 797, 976, 976, 798, 976, 799, 800, - 801, 801, 801, 801, 797, 669, 797, 797, 976, 976, - 798, 976, 799, 800, 801, 801, 801, 801, 669, 669, - - 669, 669, 976, 976, 670, 976, 976, 976, 803, 803, - 803, 803, 557, 407, 557, 557, 976, 976, 558, 976, - 559, 805, 806, 806, 806, 806, 557, 407, 557, 557, - 976, 976, 558, 976, 559, 560, 882, 882, 882, 882, - 673, 674, 673, 673, 976, 976, 675, 976, 976, 805, - 806, 806, 806, 806, 976, 976, 976, 883, 560, 818, - 818, 818, 818, 976, 976, 976, 676, 973, 959, 974, - 973, 976, 976, 975, 976, 883, 669, 669, 669, 669, - 976, 976, 670, 976, 676, 808, 809, 809, 809, 809, - 976, 976, 976, 885, 973, 959, 974, 973, 976, 976, - - 975, 973, 966, 974, 973, 976, 976, 975, 976, 976, - 976, 885, 811, 674, 811, 811, 976, 976, 812, 976, - 813, 814, 815, 815, 815, 815, 811, 674, 811, 811, - 976, 976, 812, 976, 813, 814, 815, 815, 815, 815, - 324, 208, 324, 324, 976, 976, 325, 976, 326, 820, - 821, 821, 821, 821, 324, 208, 324, 324, 976, 976, - 325, 976, 326, 327, 888, 888, 888, 888, 678, 679, - 678, 678, 976, 976, 680, 976, 976, 820, 821, 821, - 821, 821, 976, 976, 976, 889, 973, 959, 974, 973, - 976, 976, 975, 976, 976, 976, 976, 976, 976, 976, - - 976, 976, 976, 889, 827, 679, 827, 827, 976, 976, - 828, 976, 829, 830, 831, 831, 831, 831, 674, 674, - 674, 674, 976, 976, 683, 976, 976, 824, 825, 825, - 825, 825, 976, 976, 976, 891, 976, 976, 976, 976, - 976, 976, 327, 834, 834, 834, 834, 976, 976, 976, - 414, 976, 976, 891, 827, 679, 827, 827, 976, 976, - 828, 976, 829, 830, 831, 831, 831, 831, 414, 674, - 674, 674, 674, 976, 976, 683, 976, 976, 976, 836, - 836, 836, 836, 572, 412, 572, 572, 976, 976, 573, - 976, 574, 838, 839, 839, 839, 839, 572, 412, 572, - - 572, 976, 976, 573, 976, 574, 575, 894, 894, 894, - 894, 686, 679, 686, 686, 976, 976, 687, 976, 976, - 838, 839, 839, 839, 839, 976, 976, 976, 895, 575, - 842, 842, 842, 842, 976, 976, 976, 688, 976, 976, - 976, 976, 976, 976, 976, 976, 895, 976, 976, 976, - 976, 976, 976, 976, 976, 688, 589, 420, 589, 589, - 976, 976, 590, 976, 591, 592, 847, 847, 847, 847, - 589, 420, 589, 589, 976, 976, 590, 976, 591, 592, - 847, 847, 847, 847, 346, 224, 346, 346, 976, 976, - 347, 976, 348, 349, 850, 850, 850, 850, 346, 224, - - 346, 346, 976, 976, 347, 976, 348, 349, 850, 850, - 850, 850, 420, 420, 420, 420, 976, 976, 421, 976, - 976, 976, 852, 852, 852, 852, 604, 425, 604, 604, - 976, 976, 605, 976, 606, 607, 855, 855, 855, 855, - 604, 425, 604, 604, 976, 976, 605, 976, 606, 607, - 855, 855, 855, 855, 721, 628, 721, 721, 976, 976, - 722, 976, 723, 724, 862, 862, 862, 862, 976, 976, - 976, 863, 976, 976, 976, 976, 976, 976, 976, 976, - 976, 976, 976, 976, 976, 976, 976, 976, 976, 863, - 721, 628, 721, 721, 976, 976, 722, 901, 902, 724, - - 903, 903, 903, 903, 632, 633, 632, 632, 976, 976, - 634, 976, 473, 474, 864, 864, 864, 864, 976, 976, - 976, 865, 976, 976, 976, 976, 976, 976, 976, 976, - 976, 976, 976, 976, 976, 976, 976, 976, 976, 865, - 471, 376, 471, 471, 976, 976, 472, 904, 905, 474, - 906, 906, 906, 906, 628, 628, 628, 628, 976, 976, - 629, 976, 976, 976, 866, 866, 866, 866, 976, 976, - 976, 867, 976, 976, 976, 976, 976, 976, 560, 930, - 930, 930, 930, 976, 976, 976, 676, 976, 976, 867, - 735, 633, 735, 735, 976, 976, 736, 976, 737, 738, - - 868, 868, 868, 868, 676, 976, 976, 869, 976, 976, - 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, - 976, 976, 976, 976, 976, 869, 735, 633, 735, 735, - 976, 976, 736, 909, 910, 738, 911, 911, 911, 911, - 637, 638, 637, 637, 976, 976, 639, 976, 277, 278, - 870, 870, 870, 870, 976, 976, 976, 871, 976, 976, - 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, - 976, 976, 976, 976, 976, 871, 275, 169, 275, 275, - 976, 976, 276, 912, 913, 278, 914, 914, 914, 914, - 633, 633, 633, 633, 976, 976, 642, 976, 976, 976, - - 872, 872, 872, 872, 976, 976, 976, 873, 976, 976, - 976, 976, 976, 976, 327, 938, 938, 938, 938, 976, - 976, 976, 414, 976, 976, 873, 751, 638, 751, 751, - 976, 976, 752, 976, 753, 754, 874, 874, 874, 874, - 414, 976, 976, 875, 976, 976, 976, 976, 976, 976, - 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, - 976, 875, 751, 638, 751, 751, 976, 976, 752, 917, - 918, 754, 919, 919, 919, 919, 645, 638, 645, 645, - 976, 976, 646, 976, 488, 489, 876, 876, 876, 876, - 976, 976, 976, 877, 976, 976, 976, 976, 976, 976, - - 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, - 976, 877, 486, 381, 486, 486, 976, 976, 487, 920, - 921, 489, 922, 922, 922, 922, 632, 633, 632, 632, - 976, 976, 634, 470, 473, 976, 976, 976, 976, 976, - 976, 976, 976, 635, 575, 946, 946, 946, 946, 976, - 976, 976, 688, 976, 976, 976, 976, 976, 976, 976, - 976, 635, 628, 628, 628, 628, 976, 976, 629, 976, - 688, 976, 908, 908, 908, 908, 637, 638, 637, 637, - 976, 976, 639, 274, 277, 976, 976, 976, 976, 976, - 976, 976, 976, 383, 976, 976, 976, 976, 976, 976, - - 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, - 976, 383, 633, 633, 633, 633, 976, 976, 642, 976, - 976, 976, 916, 916, 916, 916, 645, 638, 645, 645, - 976, 976, 646, 485, 488, 976, 976, 976, 976, 976, - 976, 976, 976, 647, 976, 976, 976, 976, 976, 976, - 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, - 976, 647, 669, 669, 669, 669, 976, 976, 670, 976, - 976, 976, 932, 932, 932, 932, 46, 46, 46, 46, - 46, 46, 46, 46, 81, 81, 81, 81, 81, 81, - 81, 81, 109, 109, 109, 109, 109, 109, 109, 109, - - 119, 119, 119, 119, 119, 119, 119, 119, 130, 130, - 976, 130, 130, 130, 130, 130, 131, 131, 976, 131, - 131, 131, 131, 131, 134, 976, 976, 134, 135, 976, - 976, 135, 172, 976, 976, 172, 976, 172, 172, 172, - 173, 173, 976, 173, 173, 173, 173, 173, 211, 976, - 976, 211, 976, 211, 211, 212, 212, 976, 212, 212, - 212, 212, 212, 227, 227, 976, 227, 976, 227, 227, - 227, 230, 230, 976, 230, 230, 230, 230, 230, 250, - 250, 250, 250, 250, 250, 250, 250, 263, 263, 263, - 263, 263, 263, 263, 263, 269, 269, 976, 976, 269, - - 269, 274, 274, 274, 274, 274, 274, 274, 274, 287, - 287, 287, 287, 287, 287, 287, 287, 298, 298, 298, - 298, 298, 298, 298, 298, 309, 309, 309, 309, 309, - 309, 309, 309, 323, 323, 323, 323, 323, 323, 323, - 323, 212, 212, 976, 212, 212, 212, 212, 212, 334, - 334, 334, 334, 334, 334, 334, 334, 345, 345, 345, - 345, 345, 345, 345, 345, 227, 227, 976, 227, 976, - 227, 227, 227, 230, 230, 976, 230, 230, 230, 230, - 230, 131, 131, 976, 131, 131, 131, 131, 131, 134, - 976, 976, 134, 250, 250, 250, 250, 250, 250, 250, - - 250, 263, 263, 263, 263, 263, 263, 263, 263, 269, - 269, 976, 976, 269, 269, 274, 274, 274, 274, 274, - 274, 274, 274, 439, 439, 439, 439, 439, 439, 439, - 439, 454, 454, 454, 454, 454, 454, 454, 454, 470, - 470, 470, 470, 470, 470, 470, 470, 485, 485, 485, - 485, 485, 485, 485, 485, 287, 287, 287, 287, 287, - 287, 287, 287, 502, 502, 502, 502, 502, 502, 502, - 502, 298, 298, 298, 298, 298, 298, 298, 298, 517, - 517, 517, 517, 517, 517, 517, 517, 529, 529, 529, - 529, 529, 529, 529, 529, 309, 309, 309, 309, 309, - - 309, 309, 309, 544, 544, 544, 544, 544, 544, 544, - 544, 556, 556, 556, 556, 556, 556, 556, 556, 323, - 323, 323, 323, 323, 323, 323, 323, 571, 571, 571, - 571, 571, 571, 571, 571, 334, 334, 334, 334, 334, - 334, 334, 334, 588, 588, 588, 588, 588, 588, 588, - 588, 345, 345, 345, 345, 345, 345, 345, 345, 603, - 603, 603, 603, 603, 603, 603, 603, 131, 131, 976, - 131, 131, 131, 131, 131, 134, 976, 976, 134, 439, - 439, 439, 439, 439, 439, 439, 439, 250, 250, 250, - 250, 250, 250, 250, 250, 454, 454, 454, 454, 454, - - 454, 454, 454, 470, 470, 470, 470, 470, 470, 470, - 470, 274, 274, 274, 274, 274, 274, 274, 274, 485, - 485, 485, 485, 485, 485, 485, 485, 287, 287, 287, - 287, 287, 287, 287, 287, 502, 502, 502, 502, 502, - 502, 502, 502, 298, 298, 298, 298, 298, 298, 298, - 298, 517, 517, 517, 517, 517, 517, 517, 517, 529, - 529, 529, 529, 529, 529, 529, 529, 309, 309, 309, - 309, 309, 309, 309, 309, 544, 544, 544, 544, 544, - 544, 544, 544, 556, 556, 556, 556, 556, 556, 556, - 556, 323, 323, 323, 323, 323, 323, 323, 323, 571, - - 571, 571, 571, 571, 571, 571, 571, 334, 334, 334, - 334, 334, 334, 334, 334, 588, 588, 588, 588, 588, - 588, 588, 588, 345, 345, 345, 345, 345, 345, 345, - 345, 603, 603, 603, 603, 603, 603, 603, 603, 131, - 131, 976, 131, 131, 131, 131, 131, 134, 976, 976, - 134, 439, 439, 439, 439, 439, 439, 439, 439, 250, - 250, 250, 250, 250, 250, 250, 250, 454, 454, 454, - 454, 454, 454, 454, 454, 720, 720, 720, 720, 720, - 720, 720, 720, 470, 470, 470, 470, 470, 470, 470, - 470, 734, 734, 734, 734, 734, 734, 734, 734, 274, - - 274, 274, 274, 274, 274, 274, 274, 750, 750, 750, - 750, 750, 750, 750, 750, 485, 485, 485, 485, 485, - 485, 485, 485, 502, 502, 502, 502, 502, 502, 502, - 502, 298, 298, 298, 298, 298, 298, 298, 298, 517, - 517, 517, 517, 517, 517, 517, 517, 529, 529, 529, - 529, 529, 529, 529, 529, 309, 309, 309, 309, 309, - 309, 309, 309, 544, 544, 544, 544, 544, 544, 544, - 544, 796, 796, 796, 796, 796, 796, 796, 796, 556, - 556, 556, 556, 556, 556, 556, 556, 810, 810, 810, - 810, 810, 810, 810, 810, 323, 323, 323, 323, 323, - - 323, 323, 323, 826, 826, 826, 826, 826, 826, 826, - 826, 571, 571, 571, 571, 571, 571, 571, 571, 588, - 588, 588, 588, 588, 588, 588, 588, 345, 345, 345, - 345, 345, 345, 345, 345, 603, 603, 603, 603, 603, - 603, 603, 603, 131, 131, 976, 131, 131, 131, 131, - 131, 134, 976, 976, 134, 439, 439, 439, 439, 439, - 439, 439, 439, 250, 250, 250, 250, 250, 250, 250, - 250, 454, 454, 454, 454, 454, 454, 454, 454, 720, - 720, 720, 720, 720, 720, 720, 720, 470, 470, 470, - 470, 470, 470, 470, 470, 734, 734, 734, 734, 734, - - 734, 734, 734, 274, 274, 274, 274, 274, 274, 274, - 274, 750, 750, 750, 750, 750, 750, 750, 750, 485, - 485, 485, 485, 485, 485, 485, 485, 502, 502, 502, - 502, 502, 502, 502, 502, 298, 298, 298, 298, 298, - 298, 298, 298, 517, 517, 517, 517, 517, 517, 517, - 517, 529, 529, 529, 529, 529, 529, 529, 529, 309, - 309, 309, 309, 309, 309, 309, 309, 544, 544, 544, - 544, 544, 544, 544, 544, 796, 796, 796, 796, 796, - 796, 796, 796, 556, 556, 556, 556, 556, 556, 556, - 556, 810, 810, 810, 810, 810, 810, 810, 810, 323, - - 323, 323, 323, 323, 323, 323, 323, 826, 826, 826, - 826, 826, 826, 826, 826, 571, 571, 571, 571, 571, - 571, 571, 571, 588, 588, 588, 588, 588, 588, 588, - 588, 345, 345, 345, 345, 345, 345, 345, 345, 603, - 603, 603, 603, 603, 603, 603, 603, 131, 131, 976, - 131, 131, 131, 131, 131, 134, 976, 976, 134, 720, - 720, 720, 720, 720, 720, 720, 720, 470, 470, 470, - 470, 470, 470, 470, 470, 734, 734, 734, 734, 734, - 734, 734, 734, 274, 274, 274, 274, 274, 274, 274, - 274, 750, 750, 750, 750, 750, 750, 750, 750, 485, - - 485, 485, 485, 485, 485, 485, 485, 958, 958, 958, - 958, 958, 958, 958, 958, 969, 969, 976, 969, 969, - 969, 969, 969, 972, 972, 972, 972, 972, 972, 972, - 972, 45, 976, 976, 976, 976, 976, 976, 976, 976, - 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, - 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, - 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, - 976, 976, 976, 976, 976, 976, 976, 976, 976, 976 - } ; - -static yyconst flex_int16_t yy_chk[8681] = - { 0, - 0, 1, 1, 1, 1, 0, 1039, 1, 2, 2, - 2, 2, 122, 122, 2, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 5, 5, 5, 5, 61, 61, 5, - 9, 9, 9, 9, 9, 9, 66, 66, 66, 66, - 66, 5, 5, 10, 10, 10, 10, 10, 10, 1017, - 5, 6, 6, 6, 6, 229, 229, 6, 11, 11, - - 11, 11, 11, 11, 67, 67, 67, 67, 74, 6, - 6, 12, 12, 12, 12, 12, 12, 1014, 6, 7, - 7, 7, 7, 428, 74, 7, 428, 7, 7, 7, - 7, 7, 7, 69, 69, 69, 69, 69, 7, 13, - 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, - 14, 15, 15, 15, 15, 15, 15, 16, 16, 16, - 16, 16, 16, 17, 17, 17, 17, 354, 17, 17, - 18, 18, 18, 18, 1012, 18, 18, 70, 70, 70, - 70, 354, 17, 19, 19, 19, 19, 19, 19, 18, - 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, - - 21, 21, 22, 22, 22, 22, 22, 22, 23, 23, - 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, - 25, 25, 25, 25, 25, 25, 267, 39, 39, 39, - 39, 25, 39, 39, 40, 40, 40, 40, 49, 40, - 40, 133, 267, 25, 1006, 25, 26, 26, 26, 26, - 26, 26, 47, 856, 47, 47, 856, 26, 47, 39, - 133, 49, 41, 41, 41, 41, 40, 41, 41, 26, - 950, 26, 27, 27, 27, 27, 27, 27, 235, 42, - 42, 42, 42, 27, 42, 42, 230, 230, 71, 71, - 71, 71, 71, 235, 41, 27, 71, 27, 28, 28, - - 28, 28, 28, 28, 72, 72, 72, 72, 950, 28, - 999, 42, 231, 231, 71, 75, 75, 75, 75, 947, - 465, 28, 947, 28, 29, 29, 29, 29, 29, 29, - 77, 77, 77, 77, 994, 29, 465, 43, 43, 43, - 43, 43, 43, 79, 79, 79, 79, 29, 43, 29, - 30, 30, 30, 30, 30, 30, 78, 78, 78, 78, - 78, 30, 952, 44, 44, 44, 44, 44, 44, 86, - 86, 86, 86, 30, 44, 30, 31, 31, 31, 31, - 31, 31, 85, 85, 85, 85, 85, 31, 76, 76, - 76, 76, 83, 949, 83, 83, 432, 83, 83, 31, - - 432, 31, 32, 32, 32, 32, 32, 32, 76, 89, - 89, 89, 89, 32, 87, 87, 87, 87, 87, 948, - 699, 898, 87, 612, 76, 32, 699, 32, 33, 33, - 33, 33, 897, 33, 33, 88, 88, 88, 88, 88, - 87, 91, 91, 91, 91, 91, 612, 33, 92, 92, - 92, 92, 94, 94, 94, 94, 94, 901, 901, 33, - 292, 33, 34, 34, 34, 34, 859, 34, 34, 95, - 95, 95, 95, 100, 100, 100, 100, 100, 292, 902, - 902, 34, 101, 101, 101, 101, 102, 102, 102, 102, - 102, 904, 904, 34, 102, 34, 35, 35, 35, 35, - - 35, 35, 103, 103, 103, 103, 857, 35, 104, 104, - 104, 104, 102, 105, 105, 105, 105, 905, 905, 35, - 703, 35, 36, 36, 36, 36, 36, 36, 104, 107, - 107, 107, 107, 36, 106, 106, 106, 106, 106, 113, - 113, 113, 113, 113, 104, 36, 702, 36, 37, 37, - 37, 37, 37, 37, 339, 111, 700, 111, 111, 37, - 111, 111, 114, 114, 114, 114, 116, 116, 116, 116, - 116, 37, 339, 37, 38, 38, 38, 38, 38, 38, - 117, 117, 117, 117, 616, 38, 111, 120, 111, 120, - 120, 466, 128, 120, 128, 128, 444, 38, 128, 38, - - 68, 68, 68, 68, 459, 615, 68, 466, 953, 68, - 68, 68, 68, 68, 444, 909, 909, 68, 125, 125, - 125, 125, 459, 126, 126, 126, 126, 127, 127, 127, - 127, 150, 150, 150, 150, 68, 73, 73, 73, 73, - 896, 614, 73, 126, 896, 953, 73, 73, 73, 73, - 152, 152, 152, 152, 152, 910, 910, 155, 155, 126, - 155, 155, 155, 155, 912, 912, 73, 156, 156, 156, - 156, 157, 157, 157, 157, 157, 913, 913, 613, 157, - 498, 507, 73, 80, 80, 80, 80, 522, 433, 80, - 917, 917, 80, 80, 80, 80, 80, 157, 498, 507, - - 80, 158, 158, 158, 158, 522, 159, 159, 158, 159, - 159, 159, 159, 164, 164, 164, 164, 429, 80, 90, - 90, 90, 90, 918, 918, 90, 158, 534, 90, 90, - 90, 90, 90, 955, 549, 161, 90, 161, 161, 161, - 161, 163, 163, 163, 163, 534, 362, 163, 166, 166, - 166, 166, 549, 584, 90, 93, 93, 93, 93, 920, - 920, 93, 593, 955, 93, 93, 93, 93, 93, 921, - 921, 584, 93, 168, 168, 168, 168, 168, 171, 171, - 593, 171, 171, 171, 171, 176, 176, 176, 176, 956, - 93, 96, 96, 96, 96, 361, 956, 96, 360, 359, - - 96, 96, 96, 96, 96, 358, 357, 173, 96, 173, - 173, 355, 173, 173, 174, 246, 174, 174, 245, 174, - 174, 180, 180, 180, 180, 608, 96, 108, 108, 108, - 108, 244, 708, 108, 716, 243, 108, 108, 108, 108, - 108, 725, 739, 608, 108, 177, 177, 177, 177, 177, - 708, 242, 716, 177, 178, 178, 178, 178, 240, 725, - 739, 178, 108, 115, 115, 115, 115, 239, 238, 115, - 237, 177, 115, 115, 115, 115, 115, 149, 147, 178, - 115, 179, 179, 146, 179, 179, 179, 179, 182, 182, - 182, 182, 182, 186, 186, 186, 186, 145, 115, 118, - - 118, 118, 118, 144, 143, 118, 141, 140, 118, 118, - 118, 118, 118, 139, 185, 185, 118, 185, 185, 185, - 185, 188, 188, 188, 188, 188, 191, 191, 137, 191, - 191, 191, 191, 136, 118, 153, 153, 153, 153, 132, - 131, 153, 129, 153, 153, 153, 153, 153, 153, 154, - 154, 154, 154, 123, 755, 154, 112, 154, 154, 154, - 154, 154, 154, 162, 162, 162, 162, 97, 84, 162, - 65, 162, 755, 162, 162, 162, 162, 169, 169, 169, - 169, 64, 63, 169, 62, 169, 169, 169, 169, 169, - 169, 170, 170, 170, 170, 60, 59, 170, 58, 170, - - 170, 170, 170, 170, 170, 183, 183, 183, 183, 57, - 56, 183, 55, 183, 183, 183, 183, 183, 183, 184, - 184, 184, 184, 54, 53, 184, 51, 184, 184, 184, - 184, 184, 184, 189, 189, 189, 189, 45, 0, 189, - 0, 189, 189, 189, 189, 189, 189, 190, 190, 190, - 190, 0, 0, 190, 0, 190, 190, 190, 190, 190, - 190, 192, 192, 192, 192, 194, 194, 194, 194, 194, - 195, 195, 195, 195, 0, 0, 195, 0, 195, 195, - 195, 195, 195, 195, 196, 196, 196, 196, 0, 0, - 196, 0, 196, 196, 196, 196, 196, 196, 197, 197, - - 0, 197, 197, 197, 197, 199, 199, 199, 199, 200, - 200, 200, 200, 200, 0, 0, 771, 200, 201, 201, - 201, 201, 779, 202, 202, 201, 202, 202, 202, 202, - 203, 203, 203, 203, 771, 200, 205, 205, 205, 205, - 779, 0, 0, 201, 207, 207, 207, 207, 207, 208, - 208, 208, 208, 0, 0, 208, 0, 208, 208, 208, - 208, 208, 208, 209, 209, 209, 209, 784, 0, 209, - 792, 209, 209, 209, 209, 209, 209, 210, 210, 0, - 210, 210, 210, 210, 212, 784, 212, 212, 792, 212, - 212, 213, 0, 213, 213, 0, 213, 213, 215, 215, - - 215, 215, 217, 217, 217, 217, 217, 220, 220, 0, - 220, 220, 220, 220, 801, 212, 0, 212, 221, 221, - 221, 221, 213, 815, 213, 216, 216, 216, 216, 0, - 0, 216, 801, 0, 216, 216, 216, 216, 216, 0, - 0, 815, 216, 223, 223, 223, 223, 223, 226, 226, - 831, 226, 226, 226, 226, 233, 233, 233, 233, 0, - 216, 218, 218, 218, 218, 0, 0, 218, 831, 218, - 218, 218, 218, 218, 218, 219, 219, 219, 219, 847, - 0, 219, 0, 219, 219, 219, 219, 219, 219, 222, - 222, 222, 222, 0, 0, 222, 0, 847, 222, 222, - - 222, 222, 222, 855, 0, 228, 222, 228, 228, 0, - 0, 228, 247, 247, 247, 247, 247, 248, 248, 248, - 248, 855, 0, 0, 222, 224, 224, 224, 224, 0, - 0, 224, 0, 224, 224, 224, 224, 224, 224, 225, - 225, 225, 225, 0, 0, 225, 0, 225, 225, 225, - 225, 225, 225, 249, 249, 249, 249, 0, 0, 249, - 0, 0, 249, 249, 249, 249, 249, 0, 0, 0, - 249, 254, 254, 254, 254, 256, 256, 256, 256, 258, - 258, 258, 258, 259, 259, 259, 259, 0, 249, 250, - 250, 250, 250, 0, 0, 250, 0, 250, 250, 250, - - 250, 250, 250, 251, 251, 251, 251, 0, 0, 251, - 0, 251, 251, 251, 251, 251, 251, 255, 255, 255, - 255, 0, 0, 255, 260, 260, 260, 260, 262, 262, - 262, 262, 0, 0, 255, 0, 0, 261, 261, 261, - 261, 269, 269, 269, 269, 0, 0, 269, 272, 272, - 272, 272, 255, 257, 257, 257, 257, 261, 0, 257, - 0, 0, 0, 257, 257, 257, 257, 271, 271, 271, - 271, 271, 0, 261, 263, 263, 263, 263, 957, 957, - 263, 0, 263, 957, 263, 263, 263, 263, 264, 264, - 264, 264, 958, 958, 264, 0, 264, 958, 264, 264, - - 264, 264, 273, 273, 273, 273, 0, 0, 273, 0, - 0, 273, 273, 273, 273, 273, 0, 0, 0, 273, - 278, 278, 278, 278, 280, 280, 280, 280, 282, 282, - 282, 282, 283, 283, 283, 283, 0, 273, 274, 274, - 274, 274, 0, 0, 274, 0, 274, 274, 274, 274, - 274, 274, 275, 275, 275, 275, 0, 0, 275, 0, - 275, 275, 275, 275, 275, 275, 279, 279, 279, 279, - 0, 0, 279, 284, 284, 284, 284, 284, 285, 285, - 285, 285, 0, 279, 286, 286, 286, 286, 286, 0, - 0, 0, 286, 291, 291, 291, 291, 293, 293, 293, - - 293, 279, 281, 281, 281, 281, 961, 961, 281, 0, - 286, 961, 281, 281, 281, 281, 287, 287, 287, 287, - 0, 0, 287, 0, 287, 287, 287, 287, 287, 287, - 294, 294, 294, 294, 0, 0, 294, 0, 0, 0, - 294, 294, 294, 294, 295, 295, 295, 295, 295, 296, - 296, 296, 296, 297, 297, 297, 297, 0, 0, 297, - 0, 0, 297, 297, 297, 297, 297, 0, 0, 0, - 297, 302, 302, 302, 302, 0, 303, 303, 303, 303, - 0, 0, 303, 304, 304, 304, 304, 0, 297, 298, - 298, 298, 298, 303, 0, 298, 0, 298, 298, 298, - - 298, 298, 298, 306, 306, 306, 306, 306, 0, 903, - 903, 303, 305, 305, 305, 305, 0, 0, 305, 903, - 0, 0, 305, 305, 305, 305, 307, 307, 307, 307, - 308, 308, 308, 308, 0, 0, 308, 903, 0, 308, - 308, 308, 308, 308, 0, 0, 0, 308, 313, 313, - 313, 313, 0, 314, 314, 314, 314, 0, 0, 314, - 315, 315, 315, 315, 0, 308, 309, 309, 309, 309, - 314, 0, 309, 0, 309, 309, 309, 309, 309, 309, - 317, 317, 317, 317, 318, 318, 318, 318, 314, 316, - 316, 316, 316, 0, 0, 316, 0, 0, 0, 316, - - 316, 316, 316, 320, 320, 320, 320, 320, 321, 321, - 321, 321, 322, 322, 322, 322, 0, 0, 322, 0, - 0, 322, 322, 322, 322, 322, 0, 0, 0, 322, - 327, 327, 327, 327, 0, 328, 328, 328, 328, 0, - 0, 328, 329, 329, 329, 329, 0, 322, 323, 323, - 323, 323, 328, 0, 323, 0, 323, 323, 323, 323, - 323, 323, 331, 331, 331, 331, 331, 0, 911, 911, - 328, 330, 330, 330, 330, 0, 0, 330, 911, 0, - 0, 330, 330, 330, 330, 332, 332, 332, 332, 333, - 333, 333, 333, 333, 0, 0, 911, 333, 338, 338, - - 338, 338, 340, 340, 340, 340, 342, 342, 342, 342, - 342, 343, 343, 343, 343, 333, 334, 334, 334, 334, - 0, 0, 334, 0, 334, 334, 334, 334, 334, 334, - 341, 341, 341, 341, 0, 0, 341, 0, 919, 919, - 341, 341, 341, 341, 344, 344, 344, 344, 919, 0, - 344, 0, 0, 344, 344, 344, 344, 344, 0, 0, - 0, 344, 349, 349, 349, 349, 919, 350, 350, 350, - 350, 0, 0, 350, 351, 351, 351, 351, 0, 344, - 345, 345, 345, 345, 350, 0, 345, 0, 345, 345, - 345, 345, 345, 345, 364, 364, 364, 364, 364, 0, - - 0, 0, 350, 352, 352, 352, 352, 0, 0, 352, - 0, 0, 0, 352, 352, 352, 352, 365, 365, 365, - 365, 0, 0, 365, 0, 365, 365, 365, 365, 365, - 365, 366, 366, 366, 366, 0, 0, 366, 0, 366, - 366, 366, 366, 366, 366, 367, 367, 0, 367, 367, - 367, 367, 368, 368, 368, 368, 0, 0, 368, 0, - 0, 0, 368, 368, 368, 368, 0, 372, 372, 368, - 372, 372, 372, 372, 375, 375, 375, 375, 375, 378, - 378, 0, 378, 378, 378, 378, 0, 368, 369, 369, - 369, 369, 369, 369, 0, 0, 0, 369, 384, 384, - - 384, 384, 0, 385, 385, 384, 385, 385, 385, 385, - 436, 436, 436, 436, 436, 369, 370, 370, 370, 370, - 0, 0, 370, 384, 370, 370, 370, 370, 370, 370, - 371, 371, 371, 371, 0, 0, 371, 0, 371, 371, - 371, 371, 371, 371, 374, 374, 374, 374, 374, 374, - 374, 374, 374, 391, 391, 0, 391, 391, 391, 391, - 400, 400, 0, 400, 400, 400, 400, 0, 374, 374, - 374, 376, 376, 376, 376, 0, 0, 376, 0, 376, - 376, 376, 376, 376, 376, 377, 377, 377, 377, 0, - 0, 377, 0, 377, 377, 377, 377, 377, 377, 379, - - 379, 379, 379, 0, 0, 379, 0, 0, 0, 379, - 379, 379, 379, 0, 409, 409, 379, 409, 409, 409, - 409, 415, 415, 415, 415, 0, 416, 416, 415, 416, - 416, 416, 416, 0, 379, 380, 380, 380, 380, 380, - 380, 0, 0, 0, 380, 0, 415, 422, 422, 0, - 422, 422, 422, 422, 437, 437, 437, 437, 443, 443, - 443, 443, 380, 381, 381, 381, 381, 0, 0, 381, - 0, 381, 381, 381, 381, 381, 381, 382, 382, 382, - 382, 0, 0, 382, 0, 382, 382, 382, 382, 382, - 382, 383, 383, 383, 383, 0, 0, 383, 383, 383, - - 0, 383, 383, 383, 383, 0, 0, 0, 383, 445, - 445, 445, 445, 0, 0, 438, 438, 438, 438, 438, - 0, 0, 0, 438, 0, 0, 383, 386, 386, 386, - 386, 0, 0, 386, 0, 386, 386, 386, 386, 386, - 386, 438, 0, 0, 386, 451, 451, 451, 451, 451, - 452, 452, 452, 452, 458, 458, 458, 458, 460, 460, - 460, 460, 386, 387, 387, 387, 387, 0, 0, 387, - 387, 387, 387, 387, 387, 387, 387, 388, 388, 388, - 388, 0, 0, 388, 0, 0, 0, 388, 388, 388, - 388, 0, 0, 0, 388, 461, 461, 461, 461, 467, - - 467, 467, 467, 467, 468, 468, 468, 468, 474, 474, - 474, 474, 388, 389, 389, 389, 389, 0, 0, 389, - 0, 389, 389, 389, 389, 389, 389, 390, 390, 390, - 390, 0, 0, 390, 0, 390, 390, 390, 390, 390, - 390, 392, 392, 392, 392, 0, 0, 392, 0, 392, - 392, 392, 392, 392, 392, 0, 0, 0, 392, 476, - 476, 476, 476, 482, 482, 482, 482, 482, 483, 483, - 483, 483, 489, 489, 489, 489, 392, 393, 393, 393, - 393, 0, 0, 393, 0, 393, 393, 393, 393, 393, - 393, 394, 394, 394, 394, 0, 0, 394, 0, 394, - - 394, 394, 394, 394, 394, 395, 395, 395, 395, 0, - 0, 395, 0, 395, 395, 395, 395, 395, 395, 396, - 396, 396, 396, 0, 0, 396, 396, 396, 396, 396, - 396, 396, 396, 397, 397, 397, 397, 0, 0, 397, - 0, 0, 0, 397, 397, 397, 397, 0, 0, 0, - 397, 491, 491, 491, 491, 492, 492, 492, 492, 494, - 494, 494, 494, 495, 495, 495, 495, 0, 397, 398, - 398, 398, 398, 0, 0, 398, 0, 398, 398, 398, - 398, 398, 398, 399, 399, 399, 399, 0, 0, 399, - 0, 399, 399, 399, 399, 399, 399, 401, 401, 401, - - 401, 0, 0, 401, 0, 401, 401, 401, 401, 401, - 401, 0, 0, 0, 401, 499, 499, 499, 499, 499, - 500, 500, 500, 500, 506, 506, 506, 506, 508, 508, - 508, 508, 401, 402, 402, 402, 402, 0, 0, 402, - 0, 402, 402, 402, 402, 402, 402, 403, 403, 403, - 403, 0, 0, 403, 0, 403, 403, 403, 403, 403, - 403, 404, 404, 404, 404, 0, 0, 404, 0, 404, - 404, 404, 404, 404, 404, 405, 405, 405, 405, 0, - 0, 405, 405, 405, 405, 405, 405, 405, 405, 406, - 406, 406, 406, 0, 0, 406, 0, 0, 0, 406, - - 406, 406, 406, 0, 0, 0, 406, 514, 514, 514, - 514, 514, 515, 515, 515, 515, 521, 521, 521, 521, - 523, 523, 523, 523, 406, 407, 407, 407, 407, 0, - 0, 407, 0, 407, 407, 407, 407, 407, 407, 408, - 408, 408, 408, 0, 0, 408, 0, 408, 408, 408, - 408, 408, 408, 410, 410, 410, 410, 0, 0, 410, - 0, 410, 410, 410, 410, 410, 410, 0, 0, 0, - 410, 524, 524, 524, 524, 526, 526, 526, 526, 526, - 527, 527, 527, 527, 533, 533, 533, 533, 410, 411, - 411, 411, 411, 0, 0, 411, 0, 411, 411, 411, - - 411, 411, 411, 412, 412, 412, 412, 0, 0, 412, - 0, 412, 412, 412, 412, 412, 412, 413, 413, 413, - 413, 0, 0, 413, 0, 413, 413, 413, 413, 413, - 413, 414, 414, 414, 414, 0, 0, 414, 414, 414, - 414, 414, 414, 414, 414, 417, 417, 417, 417, 0, - 0, 417, 0, 417, 417, 417, 417, 417, 417, 0, - 0, 0, 417, 535, 535, 535, 535, 0, 475, 475, - 475, 475, 0, 0, 475, 541, 541, 541, 541, 541, - 417, 418, 418, 418, 418, 475, 0, 418, 418, 418, - 418, 418, 418, 418, 418, 419, 419, 419, 419, 0, - - 0, 419, 0, 475, 0, 419, 419, 419, 419, 0, - 0, 0, 419, 542, 542, 542, 542, 548, 548, 548, - 548, 550, 550, 550, 550, 551, 551, 551, 551, 0, - 419, 420, 420, 420, 420, 0, 0, 420, 0, 420, - 420, 420, 420, 420, 420, 421, 421, 421, 421, 0, - 0, 421, 0, 421, 421, 421, 421, 421, 421, 423, - 423, 423, 423, 0, 0, 423, 0, 423, 423, 423, - 423, 423, 423, 0, 0, 0, 423, 553, 553, 553, - 553, 553, 554, 554, 554, 554, 560, 560, 560, 560, - 562, 562, 562, 562, 423, 424, 424, 424, 424, 0, - - 0, 424, 0, 424, 424, 424, 424, 424, 424, 425, - 425, 425, 425, 0, 0, 425, 0, 425, 425, 425, - 425, 425, 425, 426, 426, 426, 426, 0, 0, 426, - 0, 426, 426, 426, 426, 426, 426, 427, 427, 427, - 427, 0, 0, 427, 427, 427, 427, 427, 427, 427, - 427, 439, 439, 439, 439, 0, 0, 439, 0, 439, - 439, 439, 439, 439, 439, 440, 440, 440, 440, 0, - 0, 440, 0, 440, 440, 440, 440, 440, 440, 446, - 446, 446, 446, 0, 0, 446, 0, 0, 0, 446, - 446, 446, 446, 447, 447, 447, 447, 0, 0, 447, - - 0, 447, 447, 447, 447, 447, 447, 448, 448, 448, - 448, 0, 0, 448, 0, 448, 448, 448, 448, 448, - 448, 449, 449, 449, 449, 0, 0, 449, 0, 0, - 449, 449, 449, 449, 449, 0, 0, 0, 449, 568, - 568, 568, 568, 568, 490, 490, 490, 490, 0, 0, - 490, 569, 569, 569, 569, 0, 449, 450, 450, 450, - 450, 490, 0, 450, 0, 450, 450, 450, 450, 450, - 450, 453, 453, 453, 453, 0, 0, 453, 0, 490, - 453, 453, 453, 453, 453, 0, 0, 0, 453, 575, - 575, 575, 575, 0, 0, 462, 462, 462, 462, 462, - - 0, 0, 0, 462, 0, 0, 453, 454, 454, 454, - 454, 0, 0, 454, 0, 454, 454, 454, 454, 454, - 454, 462, 464, 464, 464, 464, 464, 464, 464, 464, - 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, - 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, - 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, - 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, - 469, 469, 469, 469, 0, 0, 469, 0, 0, 469, - 469, 469, 469, 469, 0, 0, 0, 469, 577, 577, - 577, 577, 578, 578, 578, 578, 580, 580, 580, 580, - - 581, 581, 581, 581, 0, 469, 470, 470, 470, 470, - 0, 0, 470, 0, 470, 470, 470, 470, 470, 470, - 471, 471, 471, 471, 0, 0, 471, 0, 471, 471, - 471, 471, 471, 471, 477, 477, 477, 477, 0, 0, - 477, 0, 0, 0, 477, 477, 477, 477, 478, 478, - 478, 478, 0, 0, 478, 0, 478, 478, 478, 478, - 478, 478, 479, 479, 479, 479, 0, 0, 479, 0, - 479, 479, 479, 479, 479, 479, 480, 480, 480, 480, - 0, 0, 480, 0, 0, 480, 480, 480, 480, 480, - 0, 0, 0, 480, 585, 585, 585, 585, 585, 561, - - 561, 561, 561, 0, 0, 561, 586, 586, 586, 586, - 0, 480, 481, 481, 481, 481, 561, 0, 481, 0, - 481, 481, 481, 481, 481, 481, 484, 484, 484, 484, - 0, 0, 484, 0, 561, 484, 484, 484, 484, 484, - 0, 0, 0, 484, 592, 592, 592, 592, 0, 576, - 576, 576, 576, 0, 0, 576, 594, 594, 594, 594, - 0, 484, 485, 485, 485, 485, 576, 0, 485, 0, - 485, 485, 485, 485, 485, 485, 493, 493, 493, 493, - 0, 0, 493, 0, 576, 0, 493, 493, 493, 493, - 0, 0, 0, 493, 600, 600, 600, 600, 600, 601, - - 601, 601, 601, 607, 607, 607, 607, 609, 609, 609, - 609, 493, 496, 496, 496, 496, 0, 0, 496, 0, - 496, 496, 496, 496, 496, 496, 497, 497, 497, 497, - 0, 0, 497, 0, 497, 497, 497, 497, 497, 497, - 501, 501, 501, 501, 501, 0, 0, 0, 501, 610, - 610, 610, 610, 618, 618, 0, 618, 618, 618, 618, - 704, 704, 704, 704, 0, 0, 501, 502, 502, 502, - 502, 0, 0, 502, 0, 502, 502, 502, 502, 502, - 502, 503, 503, 503, 503, 0, 0, 503, 0, 503, - 503, 503, 503, 503, 503, 509, 509, 509, 509, 0, - - 0, 509, 0, 0, 0, 509, 509, 509, 509, 510, - 510, 510, 510, 0, 0, 510, 0, 510, 510, 510, - 510, 510, 510, 511, 511, 511, 511, 0, 0, 511, - 0, 511, 511, 511, 511, 511, 511, 512, 512, 512, - 512, 0, 0, 512, 0, 0, 512, 512, 512, 512, - 512, 0, 0, 0, 512, 617, 617, 617, 617, 0, - 624, 624, 617, 624, 624, 624, 624, 705, 705, 705, - 705, 0, 512, 513, 513, 513, 513, 0, 0, 513, - 617, 513, 513, 513, 513, 513, 513, 516, 516, 516, - 516, 0, 0, 516, 0, 0, 516, 516, 516, 516, - - 516, 0, 630, 630, 516, 630, 630, 630, 630, 0, - 0, 525, 525, 525, 525, 525, 0, 0, 0, 525, - 0, 0, 516, 517, 517, 517, 517, 0, 0, 517, - 0, 517, 517, 517, 517, 517, 517, 525, 528, 528, - 528, 528, 528, 0, 643, 643, 528, 643, 643, 643, - 643, 649, 649, 0, 649, 649, 649, 649, 712, 712, - 712, 712, 0, 0, 528, 529, 529, 529, 529, 0, - 0, 529, 0, 529, 529, 529, 529, 529, 529, 530, - 530, 530, 530, 0, 0, 530, 0, 530, 530, 530, - 530, 530, 530, 536, 536, 536, 536, 0, 0, 536, - - 0, 0, 0, 536, 536, 536, 536, 537, 537, 537, - 537, 0, 0, 537, 0, 537, 537, 537, 537, 537, - 537, 538, 538, 538, 538, 0, 0, 538, 0, 538, - 538, 538, 538, 538, 538, 539, 539, 539, 539, 0, - 0, 539, 0, 0, 539, 539, 539, 539, 539, 0, - 0, 0, 539, 648, 648, 648, 648, 0, 655, 655, - 648, 655, 655, 655, 655, 717, 717, 717, 717, 717, - 539, 540, 540, 540, 540, 0, 0, 540, 648, 540, - 540, 540, 540, 540, 540, 543, 543, 543, 543, 0, - 0, 543, 0, 0, 543, 543, 543, 543, 543, 0, - - 659, 659, 543, 659, 659, 659, 659, 0, 0, 552, - 552, 552, 552, 552, 0, 0, 0, 552, 0, 0, - 543, 544, 544, 544, 544, 0, 0, 544, 0, 544, - 544, 544, 544, 544, 544, 552, 555, 555, 555, 555, - 0, 0, 555, 0, 0, 555, 555, 555, 555, 555, - 0, 0, 0, 555, 658, 658, 658, 658, 0, 665, - 665, 658, 665, 665, 665, 665, 718, 718, 718, 718, - 0, 555, 556, 556, 556, 556, 0, 0, 556, 658, - 556, 556, 556, 556, 556, 556, 557, 557, 557, 557, - 0, 0, 557, 0, 557, 557, 557, 557, 557, 557, - - 563, 563, 563, 563, 0, 0, 563, 0, 0, 0, - 563, 563, 563, 563, 564, 564, 564, 564, 0, 0, - 564, 0, 564, 564, 564, 564, 564, 564, 565, 565, - 565, 565, 0, 0, 565, 0, 565, 565, 565, 565, - 565, 565, 566, 566, 566, 566, 0, 0, 566, 0, - 0, 566, 566, 566, 566, 566, 0, 671, 671, 566, - 671, 671, 671, 671, 684, 684, 0, 684, 684, 684, - 684, 724, 724, 724, 724, 0, 0, 566, 567, 567, - 567, 567, 0, 0, 567, 0, 567, 567, 567, 567, - 567, 567, 570, 570, 570, 570, 0, 0, 570, 0, - - 0, 570, 570, 570, 570, 570, 0, 0, 0, 570, - 689, 689, 689, 689, 0, 690, 690, 689, 690, 690, - 690, 690, 726, 726, 726, 726, 0, 570, 571, 571, - 571, 571, 0, 0, 571, 689, 571, 571, 571, 571, - 571, 571, 579, 579, 579, 579, 0, 0, 579, 0, - 0, 0, 579, 579, 579, 579, 0, 696, 696, 579, - 696, 696, 696, 696, 731, 731, 731, 731, 731, 732, - 732, 732, 732, 738, 738, 738, 738, 579, 582, 582, - 582, 582, 0, 0, 582, 0, 582, 582, 582, 582, - 582, 582, 583, 583, 583, 583, 0, 0, 583, 0, - - 583, 583, 583, 583, 583, 583, 587, 587, 587, 587, - 587, 0, 0, 0, 587, 740, 740, 740, 740, 741, - 741, 741, 741, 747, 747, 747, 747, 747, 748, 748, - 748, 748, 587, 588, 588, 588, 588, 0, 0, 588, - 0, 588, 588, 588, 588, 588, 588, 589, 589, 589, - 589, 0, 0, 589, 0, 589, 589, 589, 589, 589, - 589, 595, 595, 595, 595, 0, 0, 595, 0, 0, - 0, 595, 595, 595, 595, 596, 596, 596, 596, 0, - 0, 596, 0, 596, 596, 596, 596, 596, 596, 597, - 597, 597, 597, 0, 0, 597, 0, 597, 597, 597, - - 597, 597, 597, 598, 598, 598, 598, 0, 0, 598, - 0, 0, 598, 598, 598, 598, 598, 0, 0, 0, - 598, 754, 754, 754, 754, 0, 711, 711, 711, 711, - 0, 0, 711, 756, 756, 756, 756, 0, 598, 599, - 599, 599, 599, 711, 0, 599, 0, 599, 599, 599, - 599, 599, 599, 602, 602, 602, 602, 0, 0, 602, - 0, 711, 602, 602, 602, 602, 602, 0, 0, 0, - 602, 757, 757, 757, 757, 0, 0, 611, 611, 611, - 611, 611, 0, 0, 0, 611, 0, 0, 602, 603, - 603, 603, 603, 0, 0, 603, 0, 603, 603, 603, - - 603, 603, 603, 611, 619, 619, 619, 619, 0, 0, - 619, 0, 619, 619, 619, 619, 619, 619, 0, 0, - 0, 619, 759, 759, 759, 759, 764, 764, 764, 764, - 765, 765, 765, 765, 767, 767, 767, 767, 0, 619, - 620, 620, 620, 620, 0, 0, 620, 620, 620, 620, - 620, 620, 620, 620, 621, 621, 621, 621, 0, 0, - 621, 0, 621, 621, 621, 621, 621, 621, 0, 0, - 0, 621, 768, 768, 768, 768, 0, 774, 774, 774, - 774, 0, 0, 774, 775, 775, 775, 775, 0, 621, - 622, 622, 622, 622, 774, 0, 622, 622, 622, 622, - - 622, 622, 622, 622, 623, 623, 623, 623, 0, 0, - 623, 0, 774, 0, 623, 623, 623, 623, 0, 0, - 0, 623, 780, 780, 780, 780, 0, 0, 719, 719, - 719, 719, 719, 0, 0, 0, 719, 0, 0, 623, - 625, 625, 625, 625, 0, 0, 625, 0, 625, 625, - 625, 625, 625, 625, 719, 0, 0, 625, 781, 781, - 781, 781, 0, 787, 787, 787, 787, 0, 0, 787, - 788, 788, 788, 788, 0, 625, 626, 626, 626, 626, - 787, 0, 626, 626, 626, 626, 626, 626, 626, 626, - 627, 627, 627, 627, 0, 0, 627, 0, 787, 0, - - 627, 627, 627, 627, 0, 0, 0, 627, 793, 793, - 793, 793, 793, 794, 794, 794, 794, 800, 800, 800, - 800, 802, 802, 802, 802, 627, 628, 628, 628, 628, - 0, 0, 628, 0, 628, 628, 628, 628, 628, 628, - 629, 629, 629, 629, 0, 0, 629, 0, 629, 629, - 629, 629, 629, 629, 631, 631, 631, 631, 0, 0, - 631, 0, 631, 631, 631, 631, 631, 631, 0, 0, - 0, 631, 807, 807, 807, 807, 807, 808, 808, 808, - 808, 814, 814, 814, 814, 816, 816, 816, 816, 631, - 632, 632, 632, 632, 0, 0, 632, 0, 632, 632, - - 632, 632, 632, 632, 633, 633, 633, 633, 0, 0, - 633, 0, 633, 633, 633, 633, 633, 633, 634, 634, - 634, 634, 0, 0, 634, 0, 634, 634, 634, 634, - 634, 634, 635, 635, 635, 635, 0, 0, 635, 635, - 635, 635, 635, 635, 635, 635, 636, 636, 636, 636, - 0, 0, 636, 0, 636, 636, 636, 636, 636, 636, - 0, 0, 0, 636, 817, 817, 817, 817, 823, 823, - 823, 823, 823, 824, 824, 824, 824, 830, 830, 830, - 830, 636, 637, 637, 637, 637, 0, 0, 637, 0, - 637, 637, 637, 637, 637, 637, 638, 638, 638, 638, - - 0, 0, 638, 0, 638, 638, 638, 638, 638, 638, - 639, 639, 639, 639, 0, 0, 639, 0, 639, 639, - 639, 639, 639, 639, 640, 640, 640, 640, 0, 0, - 640, 640, 640, 640, 640, 640, 640, 640, 641, 641, - 641, 641, 0, 0, 641, 0, 0, 0, 641, 641, - 641, 641, 0, 0, 0, 641, 832, 832, 832, 832, - 833, 833, 833, 833, 835, 835, 835, 835, 840, 840, - 840, 840, 0, 641, 642, 642, 642, 642, 0, 0, - 642, 0, 642, 642, 642, 642, 642, 642, 644, 644, - 644, 644, 0, 0, 644, 0, 644, 644, 644, 644, - - 644, 644, 0, 0, 0, 644, 841, 841, 841, 841, - 843, 843, 843, 843, 844, 844, 844, 844, 851, 851, - 851, 851, 0, 644, 645, 645, 645, 645, 0, 0, - 645, 0, 645, 645, 645, 645, 645, 645, 646, 646, - 646, 646, 0, 0, 646, 0, 646, 646, 646, 646, - 646, 646, 647, 647, 647, 647, 0, 0, 647, 647, - 647, 647, 647, 647, 647, 647, 650, 650, 650, 650, - 0, 0, 650, 0, 650, 650, 650, 650, 650, 650, - 0, 861, 861, 650, 861, 861, 861, 861, 867, 867, - 0, 867, 867, 867, 867, 882, 882, 882, 882, 882, - - 0, 650, 651, 651, 651, 651, 0, 0, 651, 651, - 651, 651, 651, 651, 651, 651, 652, 652, 652, 652, - 0, 0, 652, 0, 652, 652, 652, 652, 652, 652, - 0, 873, 873, 652, 873, 873, 873, 873, 0, 850, - 850, 850, 850, 879, 879, 850, 879, 879, 879, 879, - 0, 652, 653, 653, 653, 653, 850, 0, 653, 653, - 653, 653, 653, 653, 653, 653, 654, 654, 654, 654, - 0, 0, 654, 0, 850, 0, 654, 654, 654, 654, - 0, 881, 881, 654, 881, 881, 881, 881, 0, 0, - 742, 742, 742, 742, 742, 0, 0, 0, 742, 0, - - 0, 654, 656, 656, 656, 656, 0, 0, 656, 0, - 656, 656, 656, 656, 656, 656, 742, 883, 883, 656, - 883, 883, 883, 883, 884, 884, 884, 884, 884, 885, - 885, 0, 885, 885, 885, 885, 0, 656, 657, 657, - 657, 657, 0, 0, 657, 657, 657, 657, 657, 657, - 657, 657, 660, 660, 660, 660, 0, 0, 660, 0, - 660, 660, 660, 660, 660, 660, 0, 887, 887, 660, - 887, 887, 887, 887, 888, 888, 888, 888, 888, 889, - 889, 0, 889, 889, 889, 889, 0, 660, 661, 661, - 661, 661, 0, 0, 661, 661, 661, 661, 661, 661, - - 661, 661, 662, 662, 662, 662, 0, 0, 662, 0, - 662, 662, 662, 662, 662, 662, 0, 0, 0, 662, - 890, 890, 890, 890, 890, 891, 891, 0, 891, 891, - 891, 891, 894, 894, 894, 894, 894, 662, 663, 663, - 663, 663, 0, 0, 663, 663, 663, 663, 663, 663, - 663, 663, 664, 664, 664, 664, 0, 0, 664, 0, - 0, 0, 664, 664, 664, 664, 0, 893, 893, 664, - 893, 893, 893, 893, 0, 0, 758, 758, 758, 758, - 758, 0, 0, 0, 758, 0, 0, 664, 666, 666, - 666, 666, 0, 0, 666, 0, 666, 666, 666, 666, - - 666, 666, 758, 895, 895, 666, 895, 895, 895, 895, - 899, 899, 899, 899, 900, 900, 900, 900, 907, 907, - 907, 907, 0, 666, 667, 667, 667, 667, 0, 0, - 667, 667, 667, 667, 667, 667, 667, 667, 668, 668, - 668, 668, 0, 0, 668, 0, 0, 0, 668, 668, - 668, 668, 0, 0, 0, 668, 860, 860, 860, 860, - 0, 0, 0, 860, 915, 915, 915, 915, 923, 923, - 923, 923, 0, 668, 669, 669, 669, 669, 0, 0, - 669, 860, 669, 669, 669, 669, 669, 669, 670, 670, - 670, 670, 0, 0, 670, 0, 670, 670, 670, 670, - - 670, 670, 672, 672, 672, 672, 0, 0, 672, 0, - 672, 672, 672, 672, 672, 672, 0, 0, 0, 672, - 878, 878, 878, 878, 0, 0, 0, 878, 924, 924, - 924, 924, 925, 925, 925, 925, 0, 672, 673, 673, - 673, 673, 0, 0, 673, 878, 673, 673, 673, 673, - 673, 673, 674, 674, 674, 674, 0, 0, 674, 0, - 674, 674, 674, 674, 674, 674, 675, 675, 675, 675, - 0, 0, 675, 0, 675, 675, 675, 675, 675, 675, - 676, 676, 676, 676, 0, 0, 676, 676, 676, 676, - 676, 676, 676, 676, 677, 677, 677, 677, 0, 0, - - 677, 0, 677, 677, 677, 677, 677, 677, 0, 0, - 0, 677, 880, 880, 880, 880, 0, 0, 0, 880, - 926, 926, 926, 926, 928, 928, 928, 928, 0, 677, - 678, 678, 678, 678, 0, 0, 678, 880, 678, 678, - 678, 678, 678, 678, 679, 679, 679, 679, 0, 0, - 679, 0, 679, 679, 679, 679, 679, 679, 680, 680, - 680, 680, 0, 0, 680, 0, 680, 680, 680, 680, - 680, 680, 681, 681, 681, 681, 0, 0, 681, 681, - 681, 681, 681, 681, 681, 681, 682, 682, 682, 682, - 0, 0, 682, 0, 0, 0, 682, 682, 682, 682, - - 0, 0, 0, 682, 886, 886, 886, 886, 0, 0, - 0, 886, 929, 929, 929, 929, 931, 931, 931, 931, - 0, 682, 683, 683, 683, 683, 0, 0, 683, 886, - 683, 683, 683, 683, 683, 683, 685, 685, 685, 685, - 0, 0, 685, 0, 685, 685, 685, 685, 685, 685, - 0, 0, 0, 685, 892, 892, 892, 892, 0, 0, - 0, 892, 933, 933, 933, 933, 934, 934, 934, 934, - 0, 685, 686, 686, 686, 686, 0, 0, 686, 892, - 686, 686, 686, 686, 686, 686, 687, 687, 687, 687, - 0, 0, 687, 0, 687, 687, 687, 687, 687, 687, - - 688, 688, 688, 688, 0, 0, 688, 688, 688, 688, - 688, 688, 688, 688, 691, 691, 691, 691, 0, 0, - 691, 0, 691, 691, 691, 691, 691, 691, 0, 0, - 0, 691, 936, 936, 936, 936, 937, 937, 937, 937, - 939, 939, 939, 939, 940, 940, 940, 940, 0, 691, - 692, 692, 692, 692, 0, 0, 692, 692, 692, 692, - 692, 692, 692, 692, 693, 693, 693, 693, 0, 0, - 693, 0, 693, 693, 693, 693, 693, 693, 0, 0, - 0, 693, 941, 941, 941, 941, 942, 942, 942, 942, - 944, 944, 944, 944, 945, 945, 945, 945, 0, 693, - - 694, 694, 694, 694, 0, 0, 694, 694, 694, 694, - 694, 694, 694, 694, 695, 695, 695, 695, 0, 0, - 695, 0, 0, 0, 695, 695, 695, 695, 0, 0, - 959, 695, 959, 959, 0, 0, 959, 0, 766, 766, - 766, 766, 766, 0, 0, 0, 766, 0, 0, 695, - 697, 697, 697, 697, 0, 0, 697, 0, 697, 697, - 697, 697, 697, 697, 766, 0, 0, 697, 960, 960, - 960, 960, 0, 962, 960, 962, 962, 0, 963, 962, - 963, 963, 0, 0, 963, 697, 698, 698, 698, 698, - 0, 0, 698, 698, 698, 698, 698, 698, 698, 698, - - 706, 706, 706, 706, 0, 0, 706, 0, 706, 706, - 706, 706, 706, 706, 707, 707, 707, 707, 0, 0, - 707, 0, 707, 707, 707, 707, 707, 707, 709, 709, - 709, 709, 0, 0, 709, 0, 709, 709, 709, 709, - 709, 709, 710, 710, 710, 710, 0, 0, 710, 0, - 710, 710, 710, 710, 710, 710, 713, 713, 713, 713, - 0, 0, 713, 0, 0, 0, 713, 713, 713, 713, - 714, 714, 714, 714, 0, 0, 714, 0, 714, 714, - 714, 714, 714, 714, 715, 715, 715, 715, 0, 0, - 715, 0, 715, 715, 715, 715, 715, 715, 720, 720, - - 720, 720, 0, 0, 720, 0, 720, 720, 720, 720, - 720, 720, 721, 721, 721, 721, 0, 0, 721, 0, - 721, 721, 721, 721, 721, 721, 727, 727, 727, 727, - 0, 0, 727, 0, 0, 0, 727, 727, 727, 727, - 728, 728, 728, 728, 0, 0, 728, 0, 728, 728, - 728, 728, 728, 728, 729, 729, 729, 729, 0, 0, - 729, 0, 729, 729, 729, 729, 729, 729, 730, 730, - 730, 730, 0, 0, 730, 0, 0, 730, 730, 730, - 730, 730, 0, 0, 0, 730, 795, 795, 795, 795, - 795, 0, 0, 0, 795, 927, 927, 927, 927, 0, - - 0, 0, 927, 730, 733, 733, 733, 733, 0, 0, - 733, 0, 795, 733, 733, 733, 733, 733, 0, 0, - 927, 733, 935, 935, 935, 935, 0, 0, 964, 935, - 964, 964, 0, 0, 964, 0, 0, 0, 0, 733, - 734, 734, 734, 734, 0, 0, 734, 935, 734, 734, - 734, 734, 734, 734, 735, 735, 735, 735, 0, 0, - 735, 0, 735, 735, 735, 735, 735, 735, 743, 743, - 743, 743, 0, 0, 743, 0, 743, 743, 743, 743, - 743, 743, 744, 744, 744, 744, 0, 0, 744, 0, - 744, 744, 744, 744, 744, 744, 745, 745, 745, 745, - - 0, 0, 745, 0, 0, 745, 745, 745, 745, 745, - 0, 0, 0, 745, 943, 943, 943, 943, 0, 0, - 0, 943, 965, 965, 965, 965, 0, 0, 965, 0, - 0, 745, 746, 746, 746, 746, 0, 0, 746, 943, - 746, 746, 746, 746, 746, 746, 749, 749, 749, 749, - 0, 0, 749, 0, 0, 749, 749, 749, 749, 749, - 0, 0, 966, 749, 966, 966, 0, 0, 966, 967, - 967, 967, 967, 0, 969, 967, 969, 969, 0, 0, - 969, 749, 750, 750, 750, 750, 0, 0, 750, 0, - 750, 750, 750, 750, 750, 750, 760, 760, 760, 760, - - 0, 0, 760, 0, 0, 0, 760, 760, 760, 760, - 761, 761, 761, 761, 0, 0, 761, 0, 761, 761, - 761, 761, 761, 761, 762, 762, 762, 762, 0, 0, - 762, 0, 762, 762, 762, 762, 762, 762, 763, 763, - 763, 763, 0, 0, 763, 0, 0, 763, 763, 763, - 763, 763, 0, 0, 0, 763, 968, 968, 968, 968, - 0, 970, 968, 970, 970, 0, 971, 970, 971, 971, - 0, 0, 971, 763, 769, 769, 769, 769, 0, 0, - 769, 0, 769, 769, 769, 769, 769, 769, 770, 770, - 770, 770, 0, 0, 770, 0, 770, 770, 770, 770, - - 770, 770, 772, 772, 772, 772, 0, 0, 772, 0, - 772, 772, 772, 772, 772, 772, 773, 773, 773, 773, - 0, 0, 773, 0, 773, 773, 773, 773, 773, 773, - 776, 776, 776, 776, 0, 0, 776, 0, 0, 0, - 776, 776, 776, 776, 777, 777, 777, 777, 0, 0, - 777, 0, 777, 777, 777, 777, 777, 777, 778, 778, - 778, 778, 0, 0, 778, 0, 778, 778, 778, 778, - 778, 778, 782, 782, 782, 782, 0, 0, 782, 0, - 782, 782, 782, 782, 782, 782, 783, 783, 783, 783, - 0, 0, 783, 0, 783, 783, 783, 783, 783, 783, - - 785, 785, 785, 785, 0, 0, 785, 0, 785, 785, - 785, 785, 785, 785, 786, 786, 786, 786, 0, 0, - 786, 0, 786, 786, 786, 786, 786, 786, 789, 789, - 789, 789, 0, 0, 789, 0, 0, 0, 789, 789, - 789, 789, 790, 790, 790, 790, 0, 0, 790, 0, - 790, 790, 790, 790, 790, 790, 791, 791, 791, 791, - 0, 0, 791, 0, 791, 791, 791, 791, 791, 791, - 796, 796, 796, 796, 0, 0, 796, 0, 796, 796, - 796, 796, 796, 796, 797, 797, 797, 797, 0, 0, - 797, 0, 797, 797, 797, 797, 797, 797, 803, 803, - - 803, 803, 0, 0, 803, 0, 0, 0, 803, 803, - 803, 803, 804, 804, 804, 804, 0, 0, 804, 0, - 804, 804, 804, 804, 804, 804, 805, 805, 805, 805, - 0, 0, 805, 0, 805, 805, 805, 805, 805, 805, - 806, 806, 806, 806, 0, 0, 806, 0, 0, 806, - 806, 806, 806, 806, 0, 0, 0, 806, 818, 818, - 818, 818, 818, 0, 0, 0, 818, 972, 972, 972, - 972, 0, 0, 972, 0, 806, 809, 809, 809, 809, - 0, 0, 809, 0, 818, 809, 809, 809, 809, 809, - 0, 0, 0, 809, 973, 973, 973, 973, 0, 0, - - 973, 974, 974, 974, 974, 0, 0, 974, 0, 0, - 0, 809, 810, 810, 810, 810, 0, 0, 810, 0, - 810, 810, 810, 810, 810, 810, 811, 811, 811, 811, - 0, 0, 811, 0, 811, 811, 811, 811, 811, 811, - 819, 819, 819, 819, 0, 0, 819, 0, 819, 819, - 819, 819, 819, 819, 820, 820, 820, 820, 0, 0, - 820, 0, 820, 820, 820, 820, 820, 820, 821, 821, - 821, 821, 0, 0, 821, 0, 0, 821, 821, 821, - 821, 821, 0, 0, 0, 821, 975, 975, 975, 975, - 0, 0, 975, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 821, 822, 822, 822, 822, 0, 0, - 822, 0, 822, 822, 822, 822, 822, 822, 825, 825, - 825, 825, 0, 0, 825, 0, 0, 825, 825, 825, - 825, 825, 0, 0, 0, 825, 0, 0, 0, 0, - 0, 0, 834, 834, 834, 834, 834, 0, 0, 0, - 834, 0, 0, 825, 826, 826, 826, 826, 0, 0, - 826, 0, 826, 826, 826, 826, 826, 826, 834, 836, - 836, 836, 836, 0, 0, 836, 0, 0, 0, 836, - 836, 836, 836, 837, 837, 837, 837, 0, 0, 837, - 0, 837, 837, 837, 837, 837, 837, 838, 838, 838, - - 838, 0, 0, 838, 0, 838, 838, 838, 838, 838, - 838, 839, 839, 839, 839, 0, 0, 839, 0, 0, - 839, 839, 839, 839, 839, 0, 0, 0, 839, 842, - 842, 842, 842, 842, 0, 0, 0, 842, 0, 0, - 0, 0, 0, 0, 0, 0, 839, 0, 0, 0, - 0, 0, 0, 0, 0, 842, 845, 845, 845, 845, - 0, 0, 845, 0, 845, 845, 845, 845, 845, 845, - 846, 846, 846, 846, 0, 0, 846, 0, 846, 846, - 846, 846, 846, 846, 848, 848, 848, 848, 0, 0, - 848, 0, 848, 848, 848, 848, 848, 848, 849, 849, - - 849, 849, 0, 0, 849, 0, 849, 849, 849, 849, - 849, 849, 852, 852, 852, 852, 0, 0, 852, 0, - 0, 0, 852, 852, 852, 852, 853, 853, 853, 853, - 0, 0, 853, 0, 853, 853, 853, 853, 853, 853, - 854, 854, 854, 854, 0, 0, 854, 0, 854, 854, - 854, 854, 854, 854, 862, 862, 862, 862, 0, 0, - 862, 0, 862, 862, 862, 862, 862, 862, 0, 0, - 0, 862, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 862, - 863, 863, 863, 863, 0, 0, 863, 863, 863, 863, - - 863, 863, 863, 863, 864, 864, 864, 864, 0, 0, - 864, 0, 864, 864, 864, 864, 864, 864, 0, 0, - 0, 864, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 864, - 865, 865, 865, 865, 0, 0, 865, 865, 865, 865, - 865, 865, 865, 865, 866, 866, 866, 866, 0, 0, - 866, 0, 0, 0, 866, 866, 866, 866, 0, 0, - 0, 866, 0, 0, 0, 0, 0, 0, 930, 930, - 930, 930, 930, 0, 0, 0, 930, 0, 0, 866, - 868, 868, 868, 868, 0, 0, 868, 0, 868, 868, - - 868, 868, 868, 868, 930, 0, 0, 868, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 868, 869, 869, 869, 869, - 0, 0, 869, 869, 869, 869, 869, 869, 869, 869, - 870, 870, 870, 870, 0, 0, 870, 0, 870, 870, - 870, 870, 870, 870, 0, 0, 0, 870, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 870, 871, 871, 871, 871, - 0, 0, 871, 871, 871, 871, 871, 871, 871, 871, - 872, 872, 872, 872, 0, 0, 872, 0, 0, 0, - - 872, 872, 872, 872, 0, 0, 0, 872, 0, 0, - 0, 0, 0, 0, 938, 938, 938, 938, 938, 0, - 0, 0, 938, 0, 0, 872, 874, 874, 874, 874, - 0, 0, 874, 0, 874, 874, 874, 874, 874, 874, - 938, 0, 0, 874, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 874, 875, 875, 875, 875, 0, 0, 875, 875, - 875, 875, 875, 875, 875, 875, 876, 876, 876, 876, - 0, 0, 876, 0, 876, 876, 876, 876, 876, 876, - 0, 0, 0, 876, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 876, 877, 877, 877, 877, 0, 0, 877, 877, - 877, 877, 877, 877, 877, 877, 906, 906, 906, 906, - 0, 0, 906, 906, 906, 0, 0, 0, 0, 0, - 0, 0, 0, 906, 946, 946, 946, 946, 946, 0, - 0, 0, 946, 0, 0, 0, 0, 0, 0, 0, - 0, 906, 908, 908, 908, 908, 0, 0, 908, 0, - 946, 0, 908, 908, 908, 908, 914, 914, 914, 914, - 0, 0, 914, 914, 914, 0, 0, 0, 0, 0, - 0, 0, 0, 914, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 914, 916, 916, 916, 916, 0, 0, 916, 0, - 0, 0, 916, 916, 916, 916, 922, 922, 922, 922, - 0, 0, 922, 922, 922, 0, 0, 0, 0, 0, - 0, 0, 0, 922, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 922, 932, 932, 932, 932, 0, 0, 932, 0, - 0, 0, 932, 932, 932, 932, 977, 977, 977, 977, - 977, 977, 977, 977, 978, 978, 978, 978, 978, 978, - 978, 978, 979, 979, 979, 979, 979, 979, 979, 979, - - 980, 980, 980, 980, 980, 980, 980, 980, 981, 981, - 0, 981, 981, 981, 981, 981, 982, 982, 0, 982, - 982, 982, 982, 982, 983, 0, 0, 983, 984, 0, - 0, 984, 985, 0, 0, 985, 0, 985, 985, 985, - 986, 986, 0, 986, 986, 986, 986, 986, 987, 0, - 0, 987, 0, 987, 987, 988, 988, 0, 988, 988, - 988, 988, 988, 989, 989, 0, 989, 0, 989, 989, - 989, 990, 990, 0, 990, 990, 990, 990, 990, 991, - 991, 991, 991, 991, 991, 991, 991, 992, 992, 992, - 992, 992, 992, 992, 992, 993, 993, 0, 0, 993, - - 993, 995, 995, 995, 995, 995, 995, 995, 995, 996, - 996, 996, 996, 996, 996, 996, 996, 997, 997, 997, - 997, 997, 997, 997, 997, 998, 998, 998, 998, 998, - 998, 998, 998, 1000, 1000, 1000, 1000, 1000, 1000, 1000, - 1000, 1001, 1001, 0, 1001, 1001, 1001, 1001, 1001, 1002, - 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1003, 1003, 1003, - 1003, 1003, 1003, 1003, 1003, 1004, 1004, 0, 1004, 0, - 1004, 1004, 1004, 1005, 1005, 0, 1005, 1005, 1005, 1005, - 1005, 1007, 1007, 0, 1007, 1007, 1007, 1007, 1007, 1008, - 0, 0, 1008, 1009, 1009, 1009, 1009, 1009, 1009, 1009, - - 1009, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1011, - 1011, 0, 0, 1011, 1011, 1013, 1013, 1013, 1013, 1013, - 1013, 1013, 1013, 1015, 1015, 1015, 1015, 1015, 1015, 1015, - 1015, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1018, - 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1019, 1019, 1019, - 1019, 1019, 1019, 1019, 1019, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1021, 1021, 1021, 1021, 1021, 1021, 1021, - 1021, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1023, - 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, - 1024, 1024, 1024, 1024, 1024, 1025, 1025, 1025, 1025, 1025, - - 1025, 1025, 1025, 1026, 1026, 1026, 1026, 1026, 1026, 1026, - 1026, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1028, - 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1029, 1029, 1029, - 1029, 1029, 1029, 1029, 1029, 1030, 1030, 1030, 1030, 1030, - 1030, 1030, 1030, 1031, 1031, 1031, 1031, 1031, 1031, 1031, - 1031, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1033, - 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1034, 1034, 0, - 1034, 1034, 1034, 1034, 1034, 1035, 0, 0, 1035, 1036, - 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1037, 1037, 1037, - 1037, 1037, 1037, 1037, 1037, 1038, 1038, 1038, 1038, 1038, - - 1038, 1038, 1038, 1040, 1040, 1040, 1040, 1040, 1040, 1040, - 1040, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1042, - 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1043, 1043, 1043, - 1043, 1043, 1043, 1043, 1043, 1044, 1044, 1044, 1044, 1044, - 1044, 1044, 1044, 1045, 1045, 1045, 1045, 1045, 1045, 1045, - 1045, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1047, - 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1048, 1048, 1048, - 1048, 1048, 1048, 1048, 1048, 1049, 1049, 1049, 1049, 1049, - 1049, 1049, 1049, 1050, 1050, 1050, 1050, 1050, 1050, 1050, - 1050, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1052, - - 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1053, 1053, 1053, - 1053, 1053, 1053, 1053, 1053, 1054, 1054, 1054, 1054, 1054, - 1054, 1054, 1054, 1055, 1055, 1055, 1055, 1055, 1055, 1055, - 1055, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1057, - 1057, 0, 1057, 1057, 1057, 1057, 1057, 1058, 0, 0, - 1058, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1060, - 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1061, 1061, 1061, - 1061, 1061, 1061, 1061, 1061, 1062, 1062, 1062, 1062, 1062, - 1062, 1062, 1062, 1063, 1063, 1063, 1063, 1063, 1063, 1063, - 1063, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1065, - - 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1066, 1066, 1066, - 1066, 1066, 1066, 1066, 1066, 1067, 1067, 1067, 1067, 1067, - 1067, 1067, 1067, 1068, 1068, 1068, 1068, 1068, 1068, 1068, - 1068, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1070, - 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1071, 1071, 1071, - 1071, 1071, 1071, 1071, 1071, 1072, 1072, 1072, 1072, 1072, - 1072, 1072, 1072, 1073, 1073, 1073, 1073, 1073, 1073, 1073, - 1073, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1075, - 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1076, 1076, 1076, - 1076, 1076, 1076, 1076, 1076, 1077, 1077, 1077, 1077, 1077, - - 1077, 1077, 1077, 1078, 1078, 1078, 1078, 1078, 1078, 1078, - 1078, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1080, - 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1081, 1081, 1081, - 1081, 1081, 1081, 1081, 1081, 1082, 1082, 1082, 1082, 1082, - 1082, 1082, 1082, 1083, 1083, 0, 1083, 1083, 1083, 1083, - 1083, 1084, 0, 0, 1084, 1085, 1085, 1085, 1085, 1085, - 1085, 1085, 1085, 1086, 1086, 1086, 1086, 1086, 1086, 1086, - 1086, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1088, - 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1089, 1089, 1089, - 1089, 1089, 1089, 1089, 1089, 1090, 1090, 1090, 1090, 1090, - - 1090, 1090, 1090, 1091, 1091, 1091, 1091, 1091, 1091, 1091, - 1091, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1093, - 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1094, 1094, 1094, - 1094, 1094, 1094, 1094, 1094, 1095, 1095, 1095, 1095, 1095, - 1095, 1095, 1095, 1096, 1096, 1096, 1096, 1096, 1096, 1096, - 1096, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1098, - 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1099, 1099, 1099, - 1099, 1099, 1099, 1099, 1099, 1100, 1100, 1100, 1100, 1100, - 1100, 1100, 1100, 1101, 1101, 1101, 1101, 1101, 1101, 1101, - 1101, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1103, - - 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1104, 1104, 1104, - 1104, 1104, 1104, 1104, 1104, 1105, 1105, 1105, 1105, 1105, - 1105, 1105, 1105, 1106, 1106, 1106, 1106, 1106, 1106, 1106, - 1106, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1108, - 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1109, 1109, 0, - 1109, 1109, 1109, 1109, 1109, 1110, 0, 0, 1110, 1111, - 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1112, 1112, 1112, - 1112, 1112, 1112, 1112, 1112, 1113, 1113, 1113, 1113, 1113, - 1113, 1113, 1113, 1114, 1114, 1114, 1114, 1114, 1114, 1114, - 1114, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1116, - - 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1117, 1117, 1117, - 1117, 1117, 1117, 1117, 1117, 1118, 1118, 0, 1118, 1118, - 1118, 1118, 1118, 1119, 1119, 1119, 1119, 1119, 1119, 1119, - 1119, 976, 976, 976, 976, 976, 976, 976, 976, 976, - 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, - 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, - 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, - 976, 976, 976, 976, 976, 976, 976, 976, 976, 976 - } ; - -static yy_state_type yy_last_accepting_state; -static char *yy_last_accepting_cpos; - -extern int vrmlyy_flex_debug; -int vrmlyy_flex_debug = 0; - -/* The intent behind this definition is that it'll catch - * any uses of REJECT which flex missed. - */ -#define REJECT reject_used_but_not_detected -#define yymore() yymore_used_but_not_detected -#define YY_MORE_ADJ 0 -#define YY_RESTORE_YY_MORE_OFFSET -char *vrmlyytext; -#line 1 "vrmlLexer.lxx" -/* -// Filename: vrmlLexer.lxx -// Created by: drose (01Oct04) -// -//////////////////////////////////////////////////////////////////// -// -// PANDA 3D SOFTWARE -// Copyright (c) Carnegie Mellon University. All rights reserved. -// -// All use of this software is subject to the terms of the revised BSD -// license. You should have received a copy of this license along -// with this source code in a file named "LICENSE." -// -//////////////////////////////////////////////////////////////////// -*/ -/************************************************** - * VRML 2.0 Parser - * Copyright (C) 1996 Silicon Graphics, Inc. - * - * Author(s) : Gavin Bell - * Daniel Woods (first port) - ************************************************** - */ -#line 26 "vrmlLexer.lxx" -#include "pandatoolbase.h" - -#include "vrmlNode.h" -#include "vrmlParser.h" -#include "pnotify.h" -#include "pstrtod.h" - -static int yyinput(void); // declared by flex. -extern "C" int vrmlyywrap(); - -//////////////////////////////////////////////////////////////////// -// Static variables -//////////////////////////////////////////////////////////////////// - -// We'll increment line_number as we parse the file, so -// that we can report the position of an error. -static int line_number = 0; - -// current_line holds as much of the current line as will fit. Its -// only purpose is for printing it out to report an error to the user. -static const int max_error_width = 1024; -static char current_line[max_error_width + 1]; - -static int error_count = 0; -static int warning_count = 0; - -// This is the pointer to the current input stream. -static istream *input_p = NULL; - -// This is the name of the vrml file we're parsing. We keep it so we -// can print it out for error messages. -static string vrml_filename; - -extern void vrmlyyerror(const string &); - - /* The YACC parser sets this to a token to direct the lexer */ - /* in cases where just syntax isn't enough: */ -int expectToken = 0; - - /* True when parsing a multiple-valued field: */ -static int parsing_mf = 0; - - /* These are used when parsing SFImage fields: */ -static int sfImageIntsParsed = 0; -static int sfImageIntsExpected = 0; - -// This is used while scanning a quoted string. -static string quoted_string; - -// And this keeps track of the currently-parsing array. -static MFArray *mfarray; - -void -vrml_init_lexer(istream &in, const string &filename) { - input_p = ∈ - vrml_filename = filename; - line_number = 0; - error_count = 0; - warning_count = 0; -} - -//////////////////////////////////////////////////////////////////// -// Internal support functions. -//////////////////////////////////////////////////////////////////// - -int -vrmlyywrap(void) { - return 1; -} - -void -vrmlyyerror(const string &msg) { - cerr << "\nError"; - if (!vrml_filename.empty()) { - cerr << " in " << vrml_filename; - } - cerr - << " at line " << line_number << ":\n" - << current_line << "\n"; - - error_count++; -} - -void -vrmlyywarning(const string &msg) { - cerr << "\nWarning"; - if (!vrml_filename.empty()) { - cerr << " in " << vrml_filename; - } - cerr - << " at line " << line_number << ":\n" - << current_line << "\n"; - - warning_count++; -} - -// Now define a function to take input from an istream instead of a -// stdio FILE pointer. This is flex-specific. -static void -input_chars(char *buffer, int &result, int max_size) { - nassertv(input_p != NULL); - if (*input_p) { - input_p->read(buffer, max_size); - result = input_p->gcount(); - if (result >= 0 && result < max_size) { - // Truncate at the end of the read. - buffer[result] = '\0'; - } - - if (line_number == 0) { - // This is a special case. If we are reading the very first bit - // from the stream, copy it into the current_line array. This - // is because the \n.* rule below, which fills current_line - // normally, doesn't catch the first line. - strncpy(current_line, vrmlyytext, max_error_width); - current_line[max_error_width] = '\0'; - line_number++; - - // Truncate it at the newline. - char *end = strchr(current_line, '\n'); - if (end != NULL) { - *end = '\0'; - } - } - - } else { - // End of file or I/O error. - result = 0; - } -} -#undef YY_INPUT - -// Define this macro carefully, since different flex versions call it -// with a different type for result. -#define YY_INPUT(buffer, result, max_size) { \ - int int_result; \ - input_chars((buffer), int_result, (max_size)); \ - (result) = int_result; \ -} - -int extract_int() { - return strtol(vrmlyytext, NULL, 0); -} - -double extract_float() { - return patof(vrmlyytext); -} - -void extract_vec(double vec[], int num_elements) { - char *p = vrmlyytext; - for (int i = 0; i < num_elements; i++) { - vec[i] = pstrtod(p, &p); - } -} - -/* Normal state: parsing nodes. The initial start state is used */ -/* only to recognize the VRML header. */ - -/* Start tokens for all of the field types, */ -/* except for MFNode and SFNode, which are almost completely handled */ -/* by the parser: */ - - - -/* Big hairy expression for floating point numbers: */ -/* Ints are decimal or hex (0x##): */ -/* Whitespace. Using this pattern can screw up currentLineNumber, */ -/* so it is only used wherever it is really convenient and it is */ -/* extremely unlikely that the user will put in a carriage return */ -/* (example: between the floats in an SFVec3f) */ -/* And the same pattern without the newline */ -/* Here's a pattern that matches a single newline character. */ -/* Legal characters to start an identifier */ -/* Legal other characters in an identifier */ -/*idRestChar ([^\x00-\x20\x22\x23\x27\x2b-\x2e\x5b-\x5d\x7b\x7d])*/ -/* Allow hyphen (0x2d) in identifiers. */ -#line 2927 "lex.yy.c" - -#define INITIAL 0 -#define NODE 1 -#define SFB 2 -#define SFC 3 -#define SFF 4 -#define SFIMG 5 -#define SFI 6 -#define SFR 7 -#define SFS 8 -#define SFT 9 -#define SFV2 10 -#define SFV3 11 -#define MFC 12 -#define MFF 13 -#define MFI 14 -#define MFR 15 -#define MFS 16 -#define MFV2 17 -#define MFV3 18 -#define IN_SFS 19 -#define IN_MFS 20 -#define IN_SFIMG 21 - -#ifndef YY_NO_UNISTD_H -/* Special case for "unistd.h", since it is non-ANSI. We include it way - * down here because we want the user's section 1 to have been scanned first. - * The user has a chance to override it with an option. - */ -#endif - -#ifndef YY_EXTRA_TYPE -#define YY_EXTRA_TYPE void * -#endif - -static int yy_init_globals (void ); - -/* Accessor methods to globals. - These are made visible to non-reentrant scanners for convenience. */ - -int vrmlyylex_destroy (void ); - -int vrmlyyget_debug (void ); - -void vrmlyyset_debug (int debug_flag ); - -YY_EXTRA_TYPE vrmlyyget_extra (void ); - -void vrmlyyset_extra (YY_EXTRA_TYPE user_defined ); - -FILE *vrmlyyget_in (void ); - -void vrmlyyset_in (FILE * in_str ); - -FILE *vrmlyyget_out (void ); - -void vrmlyyset_out (FILE * out_str ); - -int vrmlyyget_leng (void ); - -char *vrmlyyget_text (void ); - -int vrmlyyget_lineno (void ); - -void vrmlyyset_lineno (int line_number ); - -/* Macros after this point can all be overridden by user definitions in - * section 1. - */ - -#ifndef YY_SKIP_YYWRAP -#ifdef __cplusplus -extern "C" int vrmlyywrap (void ); -#else -extern int vrmlyywrap (void ); -#endif -#endif - - static void yyunput (int c,char *buf_ptr ); - -#ifndef yytext_ptr -static void yy_flex_strncpy (char *,yyconst char *,int ); -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen (yyconst char * ); -#endif - -#ifndef YY_NO_INPUT - -#ifdef __cplusplus -static int yyinput (void ); -#else -static int input (void ); -#endif - -#endif - -/* Amount of stuff to slurp up with each read. */ -#ifndef YY_READ_BUF_SIZE -#define YY_READ_BUF_SIZE 8192 -#endif - -/* Copy whatever the last rule matched to the standard output. */ -#ifndef ECHO -/* This used to be an fputs(), but since the string might contain NUL's, - * we now use fwrite(). - */ -#define ECHO fwrite( vrmlyytext, vrmlyyleng, 1, vrmlyyout ) -#endif - -/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, - * is returned in "result". - */ -#ifndef YY_INPUT -#define YY_INPUT(buf,result,max_size) \ - if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ - { \ - int c = '*'; \ - int n; \ - for ( n = 0; n < max_size && \ - (c = getc( vrmlyyin )) != EOF && c != '\n'; ++n ) \ - buf[n] = (char) c; \ - if ( c == '\n' ) \ - buf[n++] = (char) c; \ - if ( c == EOF && ferror( vrmlyyin ) ) \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - result = n; \ - } \ - else \ - { \ - errno=0; \ - while ( (result = fread(buf, 1, max_size, vrmlyyin))==0 && ferror(vrmlyyin)) \ - { \ - if( errno != EINTR) \ - { \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - break; \ - } \ - errno=0; \ - clearerr(vrmlyyin); \ - } \ - }\ -\ - -#endif - -/* No semi-colon after return; correct usage is to write "yyterminate();" - - * we don't want an extra ';' after the "return" because that will cause - * some compilers to complain about unreachable statements. - */ -#ifndef yyterminate -#define yyterminate() return YY_NULL -#endif - -/* Number of entries by which start-condition stack grows. */ -#ifndef YY_START_STACK_INCR -#define YY_START_STACK_INCR 25 -#endif - -/* Report a fatal error. */ -#ifndef YY_FATAL_ERROR -#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) -#endif - -/* end tables serialization structures and prototypes */ - -/* Default declaration of generated scanner - a define so the user can - * easily add parameters. - */ -#ifndef YY_DECL -#define YY_DECL_IS_OURS 1 - -extern int vrmlyylex (void); - -#define YY_DECL int vrmlyylex (void) -#endif /* !YY_DECL */ - -/* Code executed at the beginning of each rule, after vrmlyytext and vrmlyyleng - * have been set up. - */ -#ifndef YY_USER_ACTION -#define YY_USER_ACTION -#endif - -/* Code executed at the end of each rule. */ -#ifndef YY_BREAK -#define YY_BREAK break; -#endif - -#define YY_RULE_SETUP \ - YY_USER_ACTION - -/** The main scanner function which does all the work. - */ -YY_DECL -{ - register yy_state_type yy_current_state; - register char *yy_cp, *yy_bp; - register int yy_act; - -#line 217 "vrmlLexer.lxx" - - - - /* Switch into a new start state if the parser */ - /* just told us that we've read a field name */ - /* and should expect a field value (or IS) */ - if (expectToken != 0) { - - /* - * Annoying. This big switch is necessary because - * LEX wants to assign particular numbers to start - * tokens, and YACC wants to define all the tokens - * used, too. Sigh. - */ - switch(expectToken) { - case SFBOOL: BEGIN SFB; break; - case SFCOLOR: BEGIN SFC; break; - case SFFLOAT: BEGIN SFF; break; - case SFIMAGE: BEGIN SFIMG; break; - case SFINT32: BEGIN SFI; break; - case SFROTATION: BEGIN SFR; break; - case SFSTRING: BEGIN SFS; break; - case SFTIME: BEGIN SFT; break; - case SFVEC2F: BEGIN SFV2; break; - case SFVEC3F: BEGIN SFV3; break; - case MFCOLOR: BEGIN MFC; break; - case MFFLOAT: BEGIN MFF; break; - case MFINT32: BEGIN MFI; break; - case MFROTATION: BEGIN MFR; break; - case MFSTRING: BEGIN MFS; break; - case MFVEC2F: BEGIN MFV2; break; - case MFVEC3F: BEGIN MFV3; break; - - /* SFNode and MFNode are special. Here the lexer just returns */ - /* "marker tokens" so the parser knows what type of field is */ - /* being parsed; unlike the other fields, parsing of SFNode/MFNode */ - /* field happens in the parser. */ - case MFNODE: expectToken = 0; return MFNODE; - case SFNODE: expectToken = 0; return SFNODE; - - default: vrmlyyerror("ACK: Bad expectToken"); break; - } - } - - - /* This is more complicated than they really need to be because */ - /* I was ambitious and made the whitespace-matching rule aggressive */ -#line 3178 "lex.yy.c" - - if ( !(yy_init) ) - { - (yy_init) = 1; - -#ifdef YY_USER_INIT - YY_USER_INIT; -#endif - - if ( ! (yy_start) ) - (yy_start) = 1; /* first start state */ - - if ( ! vrmlyyin ) - vrmlyyin = stdin; - - if ( ! vrmlyyout ) - vrmlyyout = stdout; - - if ( ! YY_CURRENT_BUFFER ) { - vrmlyyensure_buffer_stack (); - YY_CURRENT_BUFFER_LVALUE = - vrmlyy_create_buffer(vrmlyyin,YY_BUF_SIZE ); - } - - vrmlyy_load_buffer_state( ); - } - - while ( 1 ) /* loops until end-of-file is reached */ - { - yy_cp = (yy_c_buf_p); - - /* Support of vrmlyytext. */ - *yy_cp = (yy_hold_char); - - /* yy_bp points to the position in yy_ch_buf of the start of - * the current run. - */ - yy_bp = yy_cp; - - yy_current_state = (yy_start); -yy_match: - do - { - register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; - if ( yy_accept[yy_current_state] ) - { - (yy_last_accepting_state) = yy_current_state; - (yy_last_accepting_cpos) = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 977 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - ++yy_cp; - } - while ( yy_base[yy_current_state] != 8632 ); - -yy_find_action: - yy_act = yy_accept[yy_current_state]; - if ( yy_act == 0 ) - { /* have to back up */ - yy_cp = (yy_last_accepting_cpos); - yy_current_state = (yy_last_accepting_state); - yy_act = yy_accept[yy_current_state]; - } - - YY_DO_BEFORE_ACTION; - -do_action: /* This label is used only to access EOF actions. */ - - switch ( yy_act ) - { /* beginning of action switch */ - case 0: /* must back up */ - /* undo the effects of YY_DO_BEFORE_ACTION */ - *yy_cp = (yy_hold_char); - yy_cp = (yy_last_accepting_cpos); - yy_current_state = (yy_last_accepting_state); - goto yy_find_action; - -case 1: -/* rule 1 can match eol */ -YY_RULE_SETUP -#line 264 "vrmlLexer.lxx" -{ - BEGIN NODE; -} - YY_BREAK -/* The lexer is in the NODE state when parsing nodes, either */ -/* top-level nodes in the .wrl file, in a prototype implementation, */ -/* or when parsing the contents of SFNode or MFNode fields. */ -case 2: -YY_RULE_SETUP -#line 271 "vrmlLexer.lxx" -{ return PROTO; } - YY_BREAK -case 3: -YY_RULE_SETUP -#line 272 "vrmlLexer.lxx" -{ return EXTERNPROTO; } - YY_BREAK -case 4: -YY_RULE_SETUP -#line 273 "vrmlLexer.lxx" -{ return DEF; } - YY_BREAK -case 5: -YY_RULE_SETUP -#line 274 "vrmlLexer.lxx" -{ return USE; } - YY_BREAK -case 6: -YY_RULE_SETUP -#line 275 "vrmlLexer.lxx" -{ return TO; } - YY_BREAK -case 7: -YY_RULE_SETUP -#line 276 "vrmlLexer.lxx" -{ return IS; } - YY_BREAK -case 8: -YY_RULE_SETUP -#line 277 "vrmlLexer.lxx" -{ return ROUTE; } - YY_BREAK -case 9: -YY_RULE_SETUP -#line 278 "vrmlLexer.lxx" -{ return SFN_NULL; } - YY_BREAK -case 10: -YY_RULE_SETUP -#line 279 "vrmlLexer.lxx" -{ return EVENTIN; } - YY_BREAK -case 11: -YY_RULE_SETUP -#line 280 "vrmlLexer.lxx" -{ return EVENTOUT; } - YY_BREAK -case 12: -YY_RULE_SETUP -#line 281 "vrmlLexer.lxx" -{ return FIELD; } - YY_BREAK -case 13: -YY_RULE_SETUP -#line 282 "vrmlLexer.lxx" -{ return EXPOSEDFIELD; } - YY_BREAK -/* Legal identifiers: */ -case 14: -YY_RULE_SETUP -#line 285 "vrmlLexer.lxx" -{ - vrmlyylval.string = strdup(vrmlyytext); - return IDENTIFIER; -} - YY_BREAK -/* This hopefully won't bitch things too much. It's not legal for - an identifier to begin with a digit, but Form-Z writes out VRML - files that do. So we'll allow it. Hopefully the start states - will keep them sorted out. */ -case 15: -YY_RULE_SETUP -#line 293 "vrmlLexer.lxx" -{ - vrmlyylval.string = strdup(vrmlyytext); - return IDENTIFIER; -} - YY_BREAK -/* All fields may have an IS declaration: */ -case 16: -YY_RULE_SETUP -#line 299 "vrmlLexer.lxx" -{ - BEGIN NODE; - expectToken = 0; - yyless(0); -} - YY_BREAK -case 17: -YY_RULE_SETUP -#line 305 "vrmlLexer.lxx" -{ - BEGIN NODE; - expectToken = 0; - yyless(0); /* put back the IS */ -} - YY_BREAK -/* All MF field types other than MFNode are completely parsed here */ -/* in the lexer, and one token is returned to the parser. They all */ -/* share the same rules for open and closing brackets: */ -case 18: -YY_RULE_SETUP -#line 314 "vrmlLexer.lxx" -{ - if (parsing_mf) vrmlyyerror("Double ["); - parsing_mf = 1; - mfarray = new MFArray; -} - YY_BREAK -case 19: -YY_RULE_SETUP -#line 320 "vrmlLexer.lxx" -{ - if (!parsing_mf) vrmlyyerror("Unmatched ]"); - int fieldType = expectToken; - BEGIN NODE; - parsing_mf = 0; - expectToken = 0; - vrmlyylval.fv._mf = mfarray; - return fieldType; -} - YY_BREAK -case 20: -YY_RULE_SETUP -#line 330 "vrmlLexer.lxx" -{ - BEGIN NODE; - expectToken = 0; - vrmlyylval.fv._sfbool = true; - return SFBOOL; -} - YY_BREAK -case 21: -YY_RULE_SETUP -#line 337 "vrmlLexer.lxx" -{ - BEGIN NODE; - expectToken = 0; - vrmlyylval.fv._sfbool = false; - return SFBOOL; -} - YY_BREAK -case 22: -YY_RULE_SETUP -#line 344 "vrmlLexer.lxx" -{ - BEGIN NODE; - expectToken = 0; - vrmlyylval.fv._sfint32 = extract_int(); - return SFINT32; -} - YY_BREAK -case 23: -YY_RULE_SETUP -#line 351 "vrmlLexer.lxx" -{ - VrmlFieldValue v; - v._sfint32 = extract_int(); - if (parsing_mf) { - mfarray->push_back(v); - } else { - BEGIN NODE; - expectToken = 0; - vrmlyylval.fv._mf = new MFArray; - vrmlyylval.fv._mf->push_back(v); - return MFINT32; - } -} - YY_BREAK -/* All the floating-point types are pretty similar: */ -case 24: -YY_RULE_SETUP -#line 366 "vrmlLexer.lxx" -{ - BEGIN NODE; - expectToken = 0; - vrmlyylval.fv._sffloat = extract_float(); - return SFFLOAT; -} - YY_BREAK -case 25: -YY_RULE_SETUP -#line 373 "vrmlLexer.lxx" -{ - VrmlFieldValue v; - v._sffloat = extract_float(); - if (parsing_mf) { - /* Add to array... */ - mfarray->push_back(v); - } else { - /* No open bracket means a single value: */ - BEGIN NODE; - expectToken = 0; - vrmlyylval.fv._mf = new MFArray; - vrmlyylval.fv._mf->push_back(v); - return MFFLOAT; - } -} - YY_BREAK -case 26: -/* rule 26 can match eol */ -YY_RULE_SETUP -#line 389 "vrmlLexer.lxx" -{ - BEGIN NODE; - expectToken = 0; - extract_vec(vrmlyylval.fv._sfvec, 2); - return SFVEC2F; -} - YY_BREAK -case 27: -/* rule 27 can match eol */ -YY_RULE_SETUP -#line 396 "vrmlLexer.lxx" -{ - VrmlFieldValue v; - extract_vec(v._sfvec, 2); - if (parsing_mf) { - mfarray->push_back(v); - } else { - BEGIN NODE; - expectToken = 0; - vrmlyylval.fv._mf = new MFArray; - vrmlyylval.fv._mf->push_back(v); - return MFVEC2F; - } -} - YY_BREAK -case 28: -/* rule 28 can match eol */ -YY_RULE_SETUP -#line 410 "vrmlLexer.lxx" -{ - BEGIN NODE; - expectToken = 0; - extract_vec(vrmlyylval.fv._sfvec, 3); - return SFVEC3F; -} - YY_BREAK -case 29: -/* rule 29 can match eol */ -YY_RULE_SETUP -#line 417 "vrmlLexer.lxx" -{ - VrmlFieldValue v; - extract_vec(v._sfvec, 3); - if (parsing_mf) { - mfarray->push_back(v); - } else { - BEGIN NODE; - expectToken = 0; - vrmlyylval.fv._mf = new MFArray; - vrmlyylval.fv._mf->push_back(v); - return MFVEC3F; - } -} - YY_BREAK -case 30: -/* rule 30 can match eol */ -YY_RULE_SETUP -#line 431 "vrmlLexer.lxx" -{ - BEGIN NODE; - expectToken = 0; - extract_vec(vrmlyylval.fv._sfvec, 4); - return SFROTATION; -} - YY_BREAK -case 31: -/* rule 31 can match eol */ -YY_RULE_SETUP -#line 438 "vrmlLexer.lxx" -{ - VrmlFieldValue v; - extract_vec(v._sfvec, 4); - if (parsing_mf) { - mfarray->push_back(v); - } else { - BEGIN NODE; - expectToken = 0; - vrmlyylval.fv._mf = new MFArray; - vrmlyylval.fv._mf->push_back(v); - return MFROTATION; - } -} - YY_BREAK -case 32: -/* rule 32 can match eol */ -YY_RULE_SETUP -#line 452 "vrmlLexer.lxx" -{ - BEGIN NODE; - expectToken = 0; - extract_vec(vrmlyylval.fv._sfvec, 3); - return SFCOLOR; -} - YY_BREAK -case 33: -/* rule 33 can match eol */ -YY_RULE_SETUP -#line 459 "vrmlLexer.lxx" -{ - VrmlFieldValue v; - extract_vec(v._sfvec, 3); - if (parsing_mf) { - mfarray->push_back(v); - } else { - BEGIN NODE; - expectToken = 0; - vrmlyylval.fv._mf = new MFArray; - vrmlyylval.fv._mf->push_back(v); - return MFCOLOR; - } -} - YY_BREAK -case 34: -YY_RULE_SETUP -#line 473 "vrmlLexer.lxx" -{ - BEGIN NODE; - expectToken = 0; - vrmlyylval.fv._sffloat = extract_float(); - return SFTIME; -} - YY_BREAK -/* SFString/MFString */ -case 35: -YY_RULE_SETUP -#line 481 "vrmlLexer.lxx" -{ - BEGIN IN_SFS; - quoted_string = ""; -} - YY_BREAK -case 36: -YY_RULE_SETUP -#line 486 "vrmlLexer.lxx" -{ - BEGIN IN_MFS; - quoted_string = ""; -} - YY_BREAK -/* Anything besides open-quote (or whitespace) is an error: */ -case 37: -YY_RULE_SETUP -#line 492 "vrmlLexer.lxx" -{ - vrmlyyerror("String missing open-quote"); - BEGIN NODE; - expectToken = 0; - vrmlyylval.fv._sfstring = strdup(""); - return SFSTRING; -} - YY_BREAK -/* Expect open-quote, open-bracket, or whitespace: */ -case 38: -YY_RULE_SETUP -#line 501 "vrmlLexer.lxx" -{ - vrmlyyerror("String missing open-quote"); - BEGIN NODE; - expectToken = 0; - return MFSTRING; -} - YY_BREAK -/* Backslashed-quotes are OK: */ -case 39: -YY_RULE_SETUP -#line 509 "vrmlLexer.lxx" -{ - quoted_string += '"'; -} - YY_BREAK -/* Gobble up anything besides quotes and newlines. */ -/* Newlines are legal in strings, but we exclude them here so */ -/* that line number are counted correctly by the catch-all newline */ -/* rule that applies to everything. */ -case 40: -YY_RULE_SETUP -#line 517 "vrmlLexer.lxx" -{ - quoted_string += vrmlyytext; -} - YY_BREAK -/* Quote ends the string: */ -case 41: -YY_RULE_SETUP -#line 522 "vrmlLexer.lxx" -{ - BEGIN NODE; - expectToken = 0; - vrmlyylval.fv._sfstring = strdup(quoted_string.c_str()); - return SFSTRING; -} - YY_BREAK -case 42: -YY_RULE_SETUP -#line 529 "vrmlLexer.lxx" -{ - VrmlFieldValue v; - v._sfstring = strdup(quoted_string.c_str()); - if (parsing_mf) { - BEGIN MFS; - mfarray->push_back(v); - quoted_string = ""; - } else { - BEGIN NODE; - expectToken = 0; - vrmlyylval.fv._mf = new MFArray; - vrmlyylval.fv._mf->push_back(v); - return MFSTRING; - } -} - YY_BREAK -/* SFImage: width height numComponents then width*height integers: */ -case 43: -/* rule 43 can match eol */ -YY_RULE_SETUP -#line 546 "vrmlLexer.lxx" -{ int w, h; - sscanf(vrmlyytext, "%d %d", &w, &h); - sfImageIntsExpected = 1+w*h; - sfImageIntsParsed = 0; - BEGIN IN_SFIMG; - } - YY_BREAK -case 44: -YY_RULE_SETUP -#line 552 "vrmlLexer.lxx" -{ ++sfImageIntsParsed; - if (sfImageIntsParsed == sfImageIntsExpected) { - BEGIN NODE; expectToken = 0; return SFIMAGE; - } - } - YY_BREAK -/* Whitespace and catch-all rules apply to all start states: */ -case 45: -YY_RULE_SETUP -#line 559 "vrmlLexer.lxx" -; - YY_BREAK -/* A newline is also whitespace, but we'll keep track of line number */ -/* to report in errors: */ -case 46: -/* rule 46 can match eol */ -YY_RULE_SETUP -#line 563 "vrmlLexer.lxx" -{ - // Save a copy of the line so we can print it out for the benefit of - // the user in case we get an error. - strncpy(current_line, vrmlyytext+1, max_error_width); - current_line[max_error_width] = '\0'; - line_number++; - - // Return the whole line to the lexer, except the newline character, - // which we eat. - yyless(1); -} - YY_BREAK -/* This catch-all rule catches anything not covered by any of */ -/* the above: */ -case 47: -YY_RULE_SETUP -#line 577 "vrmlLexer.lxx" -{ - return vrmlyytext[0]; -} - YY_BREAK -case 48: -YY_RULE_SETUP -#line 581 "vrmlLexer.lxx" -ECHO; - YY_BREAK -#line 3748 "lex.yy.c" -case YY_STATE_EOF(INITIAL): -case YY_STATE_EOF(NODE): -case YY_STATE_EOF(SFB): -case YY_STATE_EOF(SFC): -case YY_STATE_EOF(SFF): -case YY_STATE_EOF(SFIMG): -case YY_STATE_EOF(SFI): -case YY_STATE_EOF(SFR): -case YY_STATE_EOF(SFS): -case YY_STATE_EOF(SFT): -case YY_STATE_EOF(SFV2): -case YY_STATE_EOF(SFV3): -case YY_STATE_EOF(MFC): -case YY_STATE_EOF(MFF): -case YY_STATE_EOF(MFI): -case YY_STATE_EOF(MFR): -case YY_STATE_EOF(MFS): -case YY_STATE_EOF(MFV2): -case YY_STATE_EOF(MFV3): -case YY_STATE_EOF(IN_SFS): -case YY_STATE_EOF(IN_MFS): -case YY_STATE_EOF(IN_SFIMG): - yyterminate(); - - case YY_END_OF_BUFFER: - { - /* Amount of text matched not including the EOB char. */ - int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; - - /* Undo the effects of YY_DO_BEFORE_ACTION. */ - *yy_cp = (yy_hold_char); - YY_RESTORE_YY_MORE_OFFSET - - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) - { - /* We're scanning a new file or input source. It's - * possible that this happened because the user - * just pointed vrmlyyin at a new source and called - * vrmlyylex(). If so, then we have to assure - * consistency between YY_CURRENT_BUFFER and our - * globals. Here is the right place to do so, because - * this is the first action (other than possibly a - * back-up) that will match for the new input source. - */ - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - YY_CURRENT_BUFFER_LVALUE->yy_input_file = vrmlyyin; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; - } - - /* Note that here we test for yy_c_buf_p "<=" to the position - * of the first EOB in the buffer, since yy_c_buf_p will - * already have been incremented past the NUL character - * (since all states make transitions on EOB to the - * end-of-buffer state). Contrast this with the test - * in input(). - */ - if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) - { /* This was really a NUL. */ - yy_state_type yy_next_state; - - (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state( ); - - /* Okay, we're now positioned to make the NUL - * transition. We couldn't have - * yy_get_previous_state() go ahead and do it - * for us because it doesn't know how to deal - * with the possibility of jamming (and we don't - * want to build jamming into it because then it - * will run more slowly). - */ - - yy_next_state = yy_try_NUL_trans( yy_current_state ); - - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - - if ( yy_next_state ) - { - /* Consume the NUL. */ - yy_cp = ++(yy_c_buf_p); - yy_current_state = yy_next_state; - goto yy_match; - } - - else - { - yy_cp = (yy_c_buf_p); - goto yy_find_action; - } - } - - else switch ( yy_get_next_buffer( ) ) - { - case EOB_ACT_END_OF_FILE: - { - (yy_did_buffer_switch_on_eof) = 0; - - if ( vrmlyywrap( ) ) - { - /* Note: because we've taken care in - * yy_get_next_buffer() to have set up - * vrmlyytext, we can now set up - * yy_c_buf_p so that if some total - * hoser (like flex itself) wants to - * call the scanner after we return the - * YY_NULL, it'll still work - another - * YY_NULL will get returned. - */ - (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; - - yy_act = YY_STATE_EOF(YY_START); - goto do_action; - } - - else - { - if ( ! (yy_did_buffer_switch_on_eof) ) - YY_NEW_FILE; - } - break; - } - - case EOB_ACT_CONTINUE_SCAN: - (yy_c_buf_p) = - (yytext_ptr) + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state( ); - - yy_cp = (yy_c_buf_p); - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - goto yy_match; - - case EOB_ACT_LAST_MATCH: - (yy_c_buf_p) = - &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; - - yy_current_state = yy_get_previous_state( ); - - yy_cp = (yy_c_buf_p); - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - goto yy_find_action; - } - break; - } - - default: - YY_FATAL_ERROR( - "fatal flex scanner internal error--no action found" ); - } /* end of action switch */ - } /* end of scanning one token */ -} /* end of vrmlyylex */ - -/* yy_get_next_buffer - try to read in a new buffer - * - * Returns a code representing an action: - * EOB_ACT_LAST_MATCH - - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position - * EOB_ACT_END_OF_FILE - end of file - */ -static int yy_get_next_buffer (void) -{ - register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; - register char *source = (yytext_ptr); - register int number_to_move, i; - int ret_val; - - if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) - YY_FATAL_ERROR( - "fatal flex scanner internal error--end of buffer missed" ); - - if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) - { /* Don't try to fill the buffer, so this is an EOF. */ - if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) - { - /* We matched a single character, the EOB, so - * treat this as a final EOF. - */ - return EOB_ACT_END_OF_FILE; - } - - else - { - /* We matched some text prior to the EOB, first - * process it. - */ - return EOB_ACT_LAST_MATCH; - } - } - - /* Try to read more data. */ - - /* First move last chars to start of buffer. */ - number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; - - for ( i = 0; i < number_to_move; ++i ) - *(dest++) = *(source++); - - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) - /* don't do the read, it's not guaranteed to return an EOF, - * just force an EOF - */ - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; - - else - { - int num_to_read = - YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; - - while ( num_to_read <= 0 ) - { /* Not enough room in the buffer - grow it. */ - - /* just a shorter name for the current buffer */ - YY_BUFFER_STATE b = YY_CURRENT_BUFFER; - - int yy_c_buf_p_offset = - (int) ((yy_c_buf_p) - b->yy_ch_buf); - - if ( b->yy_is_our_buffer ) - { - int new_size = b->yy_buf_size * 2; - - if ( new_size <= 0 ) - b->yy_buf_size += b->yy_buf_size / 8; - else - b->yy_buf_size *= 2; - - b->yy_ch_buf = (char *) - /* Include room in for 2 EOB chars. */ - vrmlyyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ); - } - else - /* Can't grow it, we don't own it. */ - b->yy_ch_buf = 0; - - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( - "fatal error - scanner input buffer overflow" ); - - (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; - - num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - - number_to_move - 1; - - } - - if ( num_to_read > YY_READ_BUF_SIZE ) - num_to_read = YY_READ_BUF_SIZE; - - /* Read in more data. */ - YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), - (yy_n_chars), (size_t) num_to_read ); - - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - if ( (yy_n_chars) == 0 ) - { - if ( number_to_move == YY_MORE_ADJ ) - { - ret_val = EOB_ACT_END_OF_FILE; - vrmlyyrestart(vrmlyyin ); - } - - else - { - ret_val = EOB_ACT_LAST_MATCH; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = - YY_BUFFER_EOF_PENDING; - } - } - - else - ret_val = EOB_ACT_CONTINUE_SCAN; - - if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { - /* Extend the array by 50%, plus the number we really need. */ - yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) vrmlyyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ); - if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); - } - - (yy_n_chars) += number_to_move; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; - - (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; - - return ret_val; -} - -/* yy_get_previous_state - get the state just before the EOB char was reached */ - - static yy_state_type yy_get_previous_state (void) -{ - register yy_state_type yy_current_state; - register char *yy_cp; - - yy_current_state = (yy_start); - - for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) - { - register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); - if ( yy_accept[yy_current_state] ) - { - (yy_last_accepting_state) = yy_current_state; - (yy_last_accepting_cpos) = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 977 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - } - - return yy_current_state; -} - -/* yy_try_NUL_trans - try to make a transition on the NUL character - * - * synopsis - * next_state = yy_try_NUL_trans( current_state ); - */ - static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) -{ - register int yy_is_jam; - register char *yy_cp = (yy_c_buf_p); - - register YY_CHAR yy_c = 1; - if ( yy_accept[yy_current_state] ) - { - (yy_last_accepting_state) = yy_current_state; - (yy_last_accepting_cpos) = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 977 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 976); - - return yy_is_jam ? 0 : yy_current_state; -} - - static void yyunput (int c, register char * yy_bp ) -{ - register char *yy_cp; - - yy_cp = (yy_c_buf_p); - - /* undo effects of setting up vrmlyytext */ - *yy_cp = (yy_hold_char); - - if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) - { /* need to shift things up to make room */ - /* +2 for EOB chars. */ - register int number_to_move = (yy_n_chars) + 2; - register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ - YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; - register char *source = - &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; - - while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) - *--dest = *--source; - - yy_cp += (int) (dest - source); - yy_bp += (int) (dest - source); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size; - - if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) - YY_FATAL_ERROR( "flex scanner push-back overflow" ); - } - - *--yy_cp = (char) c; - - (yytext_ptr) = yy_bp; - (yy_hold_char) = *yy_cp; - (yy_c_buf_p) = yy_cp; -} - -#ifndef YY_NO_INPUT -#ifdef __cplusplus - static int yyinput (void) -#else - static int input (void) -#endif - -{ - int c; - - *(yy_c_buf_p) = (yy_hold_char); - - if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) - { - /* yy_c_buf_p now points to the character we want to return. - * If this occurs *before* the EOB characters, then it's a - * valid NUL; if not, then we've hit the end of the buffer. - */ - if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) - /* This was really a NUL. */ - *(yy_c_buf_p) = '\0'; - - else - { /* need more input */ - int offset = (yy_c_buf_p) - (yytext_ptr); - ++(yy_c_buf_p); - - switch ( yy_get_next_buffer( ) ) - { - case EOB_ACT_LAST_MATCH: - /* This happens because yy_g_n_b() - * sees that we've accumulated a - * token and flags that we need to - * try matching the token before - * proceeding. But for input(), - * there's no matching to consider. - * So convert the EOB_ACT_LAST_MATCH - * to EOB_ACT_END_OF_FILE. - */ - - /* Reset buffer status. */ - vrmlyyrestart(vrmlyyin ); - - /*FALLTHROUGH*/ - - case EOB_ACT_END_OF_FILE: - { - if ( vrmlyywrap( ) ) - return EOF; - - if ( ! (yy_did_buffer_switch_on_eof) ) - YY_NEW_FILE; -#ifdef __cplusplus - return yyinput(); -#else - return input(); -#endif - } - - case EOB_ACT_CONTINUE_SCAN: - (yy_c_buf_p) = (yytext_ptr) + offset; - break; - } - } - } - - c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ - *(yy_c_buf_p) = '\0'; /* preserve vrmlyytext */ - (yy_hold_char) = *++(yy_c_buf_p); - - return c; -} -#endif /* ifndef YY_NO_INPUT */ - -/** Immediately switch to a different input stream. - * @param input_file A readable stream. - * - * @note This function does not reset the start condition to @c INITIAL . - */ - void vrmlyyrestart (FILE * input_file ) -{ - - if ( ! YY_CURRENT_BUFFER ){ - vrmlyyensure_buffer_stack (); - YY_CURRENT_BUFFER_LVALUE = - vrmlyy_create_buffer(vrmlyyin,YY_BUF_SIZE ); - } - - vrmlyy_init_buffer(YY_CURRENT_BUFFER,input_file ); - vrmlyy_load_buffer_state( ); -} - -/** Switch to a different input buffer. - * @param new_buffer The new input buffer. - * - */ - void vrmlyy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) -{ - - /* TODO. We should be able to replace this entire function body - * with - * vrmlyypop_buffer_state(); - * vrmlyypush_buffer_state(new_buffer); - */ - vrmlyyensure_buffer_stack (); - if ( YY_CURRENT_BUFFER == new_buffer ) - return; - - if ( YY_CURRENT_BUFFER ) - { - /* Flush out information for old buffer. */ - *(yy_c_buf_p) = (yy_hold_char); - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - YY_CURRENT_BUFFER_LVALUE = new_buffer; - vrmlyy_load_buffer_state( ); - - /* We don't actually know whether we did this switch during - * EOF (vrmlyywrap()) processing, but the only time this flag - * is looked at is after vrmlyywrap() is called, so it's safe - * to go ahead and always set it. - */ - (yy_did_buffer_switch_on_eof) = 1; -} - -static void vrmlyy_load_buffer_state (void) -{ - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; - vrmlyyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; - (yy_hold_char) = *(yy_c_buf_p); -} - -/** Allocate and initialize an input buffer state. - * @param file A readable stream. - * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. - * - * @return the allocated buffer state. - */ - YY_BUFFER_STATE vrmlyy_create_buffer (FILE * file, int size ) -{ - YY_BUFFER_STATE b; - - b = (YY_BUFFER_STATE) vrmlyyalloc(sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in vrmlyy_create_buffer()" ); - - b->yy_buf_size = size; - - /* yy_ch_buf has to be 2 characters longer than the size given because - * we need to put in 2 end-of-buffer characters. - */ - b->yy_ch_buf = (char *) vrmlyyalloc(b->yy_buf_size + 2 ); - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in vrmlyy_create_buffer()" ); - - b->yy_is_our_buffer = 1; - - vrmlyy_init_buffer(b,file ); - - return b; -} - -/** Destroy the buffer. - * @param b a buffer created with vrmlyy_create_buffer() - * - */ - void vrmlyy_delete_buffer (YY_BUFFER_STATE b ) -{ - - if ( ! b ) - return; - - if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ - YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; - - if ( b->yy_is_our_buffer ) - vrmlyyfree((void *) b->yy_ch_buf ); - - vrmlyyfree((void *) b ); -} - -#ifndef __cplusplus -extern int isatty (int ); -#endif /* __cplusplus */ - -/* Initializes or reinitializes a buffer. - * This function is sometimes called more than once on the same buffer, - * such as during a vrmlyyrestart() or at EOF. - */ - static void vrmlyy_init_buffer (YY_BUFFER_STATE b, FILE * file ) - -{ - int oerrno = errno; - - vrmlyy_flush_buffer(b ); - - b->yy_input_file = file; - b->yy_fill_buffer = 1; - - /* If b is the current buffer, then vrmlyy_init_buffer was _probably_ - * called from vrmlyyrestart() or through yy_get_next_buffer. - * In that case, we don't want to reset the lineno or column. - */ - if (b != YY_CURRENT_BUFFER){ - b->yy_bs_lineno = 1; - b->yy_bs_column = 0; - } - - b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; - - errno = oerrno; -} - -/** Discard all buffered characters. On the next scan, YY_INPUT will be called. - * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. - * - */ - void vrmlyy_flush_buffer (YY_BUFFER_STATE b ) -{ - if ( ! b ) - return; - - b->yy_n_chars = 0; - - /* We always need two end-of-buffer characters. The first causes - * a transition to the end-of-buffer state. The second causes - * a jam in that state. - */ - b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; - b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; - - b->yy_buf_pos = &b->yy_ch_buf[0]; - - b->yy_at_bol = 1; - b->yy_buffer_status = YY_BUFFER_NEW; - - if ( b == YY_CURRENT_BUFFER ) - vrmlyy_load_buffer_state( ); -} - -/** Pushes the new state onto the stack. The new state becomes - * the current state. This function will allocate the stack - * if necessary. - * @param new_buffer The new state. - * - */ -void vrmlyypush_buffer_state (YY_BUFFER_STATE new_buffer ) -{ - if (new_buffer == NULL) - return; - - vrmlyyensure_buffer_stack(); - - /* This block is copied from vrmlyy_switch_to_buffer. */ - if ( YY_CURRENT_BUFFER ) - { - /* Flush out information for old buffer. */ - *(yy_c_buf_p) = (yy_hold_char); - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - /* Only push if top exists. Otherwise, replace top. */ - if (YY_CURRENT_BUFFER) - (yy_buffer_stack_top)++; - YY_CURRENT_BUFFER_LVALUE = new_buffer; - - /* copied from vrmlyy_switch_to_buffer. */ - vrmlyy_load_buffer_state( ); - (yy_did_buffer_switch_on_eof) = 1; -} - -/** Removes and deletes the top of the stack, if present. - * The next element becomes the new top. - * - */ -void vrmlyypop_buffer_state (void) -{ - if (!YY_CURRENT_BUFFER) - return; - - vrmlyy_delete_buffer(YY_CURRENT_BUFFER ); - YY_CURRENT_BUFFER_LVALUE = NULL; - if ((yy_buffer_stack_top) > 0) - --(yy_buffer_stack_top); - - if (YY_CURRENT_BUFFER) { - vrmlyy_load_buffer_state( ); - (yy_did_buffer_switch_on_eof) = 1; - } -} - -/* Allocates the stack if it does not exist. - * Guarantees space for at least one push. - */ -static void vrmlyyensure_buffer_stack (void) -{ - int num_to_alloc; - - if (!(yy_buffer_stack)) { - - /* First allocation is just for 2 elements, since we don't know if this - * scanner will even need a stack. We use 2 instead of 1 to avoid an - * immediate realloc on the next call. - */ - num_to_alloc = 1; - (yy_buffer_stack) = (struct yy_buffer_state**)vrmlyyalloc - (num_to_alloc * sizeof(struct yy_buffer_state*) - ); - if ( ! (yy_buffer_stack) ) - YY_FATAL_ERROR( "out of dynamic memory in vrmlyyensure_buffer_stack()" ); - - memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); - - (yy_buffer_stack_max) = num_to_alloc; - (yy_buffer_stack_top) = 0; - return; - } - - if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ - - /* Increase the buffer to prepare for a possible push. */ - int grow_size = 8 /* arbitrary grow size */; - - num_to_alloc = (yy_buffer_stack_max) + grow_size; - (yy_buffer_stack) = (struct yy_buffer_state**)vrmlyyrealloc - ((yy_buffer_stack), - num_to_alloc * sizeof(struct yy_buffer_state*) - ); - if ( ! (yy_buffer_stack) ) - YY_FATAL_ERROR( "out of dynamic memory in vrmlyyensure_buffer_stack()" ); - - /* zero only the new slots.*/ - memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); - (yy_buffer_stack_max) = num_to_alloc; - } -} - -/** Setup the input buffer state to scan directly from a user-specified character buffer. - * @param base the character buffer - * @param size the size in bytes of the character buffer - * - * @return the newly allocated buffer state object. - */ -YY_BUFFER_STATE vrmlyy_scan_buffer (char * base, yy_size_t size ) -{ - YY_BUFFER_STATE b; - - if ( size < 2 || - base[size-2] != YY_END_OF_BUFFER_CHAR || - base[size-1] != YY_END_OF_BUFFER_CHAR ) - /* They forgot to leave room for the EOB's. */ - return 0; - - b = (YY_BUFFER_STATE) vrmlyyalloc(sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in vrmlyy_scan_buffer()" ); - - b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ - b->yy_buf_pos = b->yy_ch_buf = base; - b->yy_is_our_buffer = 0; - b->yy_input_file = 0; - b->yy_n_chars = b->yy_buf_size; - b->yy_is_interactive = 0; - b->yy_at_bol = 1; - b->yy_fill_buffer = 0; - b->yy_buffer_status = YY_BUFFER_NEW; - - vrmlyy_switch_to_buffer(b ); - - return b; -} - -/** Setup the input buffer state to scan a string. The next call to vrmlyylex() will - * scan from a @e copy of @a str. - * @param yystr a NUL-terminated string to scan - * - * @return the newly allocated buffer state object. - * @note If you want to scan bytes that may contain NUL values, then use - * vrmlyy_scan_bytes() instead. - */ -YY_BUFFER_STATE vrmlyy_scan_string (yyconst char * yystr ) -{ - - return vrmlyy_scan_bytes(yystr,strlen(yystr) ); -} - -/** Setup the input buffer state to scan the given bytes. The next call to vrmlyylex() will - * scan from a @e copy of @a bytes. - * @param bytes the byte buffer to scan - * @param len the number of bytes in the buffer pointed to by @a bytes. - * - * @return the newly allocated buffer state object. - */ -YY_BUFFER_STATE vrmlyy_scan_bytes (yyconst char * yybytes, int _yybytes_len ) -{ - YY_BUFFER_STATE b; - char *buf; - yy_size_t n; - int i; - - /* Get memory for full buffer, including space for trailing EOB's. */ - n = _yybytes_len + 2; - buf = (char *) vrmlyyalloc(n ); - if ( ! buf ) - YY_FATAL_ERROR( "out of dynamic memory in vrmlyy_scan_bytes()" ); - - for ( i = 0; i < _yybytes_len; ++i ) - buf[i] = yybytes[i]; - - buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; - - b = vrmlyy_scan_buffer(buf,n ); - if ( ! b ) - YY_FATAL_ERROR( "bad buffer in vrmlyy_scan_bytes()" ); - - /* It's okay to grow etc. this buffer, and we should throw it - * away when we're done. - */ - b->yy_is_our_buffer = 1; - - return b; -} - -#ifndef YY_EXIT_FAILURE -#define YY_EXIT_FAILURE 2 -#endif - -static void yy_fatal_error (yyconst char* msg ) -{ - (void) fprintf( stderr, "%s\n", msg ); - exit( YY_EXIT_FAILURE ); -} - -/* Redefine yyless() so it works in section 3 code. */ - -#undef yyless -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up vrmlyytext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - vrmlyytext[vrmlyyleng] = (yy_hold_char); \ - (yy_c_buf_p) = vrmlyytext + yyless_macro_arg; \ - (yy_hold_char) = *(yy_c_buf_p); \ - *(yy_c_buf_p) = '\0'; \ - vrmlyyleng = yyless_macro_arg; \ - } \ - while ( 0 ) - -/* Accessor methods (get/set functions) to struct members. */ - -/** Get the current line number. - * - */ -int vrmlyyget_lineno (void) -{ - - return vrmlyylineno; -} - -/** Get the input stream. - * - */ -FILE *vrmlyyget_in (void) -{ - return vrmlyyin; -} - -/** Get the output stream. - * - */ -FILE *vrmlyyget_out (void) -{ - return vrmlyyout; -} - -/** Get the length of the current token. - * - */ -int vrmlyyget_leng (void) -{ - return vrmlyyleng; -} - -/** Get the current token. - * - */ - -char *vrmlyyget_text (void) -{ - return vrmlyytext; -} - -/** Set the current line number. - * @param line_number - * - */ -void vrmlyyset_lineno (int line_number ) -{ - - vrmlyylineno = line_number; -} - -/** Set the input stream. This does not discard the current - * input buffer. - * @param in_str A readable stream. - * - * @see vrmlyy_switch_to_buffer - */ -void vrmlyyset_in (FILE * in_str ) -{ - vrmlyyin = in_str ; -} - -void vrmlyyset_out (FILE * out_str ) -{ - vrmlyyout = out_str ; -} - -int vrmlyyget_debug (void) -{ - return vrmlyy_flex_debug; -} - -void vrmlyyset_debug (int bdebug ) -{ - vrmlyy_flex_debug = bdebug ; -} - -static int yy_init_globals (void) -{ - /* Initialization is the same as for the non-reentrant scanner. - * This function is called from vrmlyylex_destroy(), so don't allocate here. - */ - - (yy_buffer_stack) = 0; - (yy_buffer_stack_top) = 0; - (yy_buffer_stack_max) = 0; - (yy_c_buf_p) = (char *) 0; - (yy_init) = 0; - (yy_start) = 0; - -/* Defined in main.c */ -#ifdef YY_STDINIT - vrmlyyin = stdin; - vrmlyyout = stdout; -#else - vrmlyyin = (FILE *) 0; - vrmlyyout = (FILE *) 0; -#endif - - /* For future reference: Set errno on error, since we are called by - * vrmlyylex_init() - */ - return 0; -} - -/* vrmlyylex_destroy is for both reentrant and non-reentrant scanners. */ -int vrmlyylex_destroy (void) -{ - - /* Pop the buffer stack, destroying each element. */ - while(YY_CURRENT_BUFFER){ - vrmlyy_delete_buffer(YY_CURRENT_BUFFER ); - YY_CURRENT_BUFFER_LVALUE = NULL; - vrmlyypop_buffer_state(); - } - - /* Destroy the stack itself. */ - vrmlyyfree((yy_buffer_stack) ); - (yy_buffer_stack) = NULL; - - /* Reset the globals. This is important in a non-reentrant scanner so the next time - * vrmlyylex() is called, initialization will occur. */ - yy_init_globals( ); - - return 0; -} - -/* - * Internal utility routines. - */ - -#ifndef yytext_ptr -static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) -{ - register int i; - for ( i = 0; i < n; ++i ) - s1[i] = s2[i]; -} -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen (yyconst char * s ) -{ - register int n; - for ( n = 0; s[n]; ++n ) - ; - - return n; -} -#endif - -void *vrmlyyalloc (yy_size_t size ) -{ - return (void *) malloc( size ); -} - -void *vrmlyyrealloc (void * ptr, yy_size_t size ) -{ - /* The cast to (char *) in the following accommodates both - * implementations that use char* generic pointers, and those - * that use void* generic pointers. It works with the latter - * because both ANSI C and C++ allow castless assignment from - * any pointer type to void*, and deal with argument conversions - * as though doing an assignment. - */ - return (void *) realloc( (char *) ptr, size ); -} - -void vrmlyyfree (void * ptr ) -{ - free( (char *) ptr ); /* see vrmlyyrealloc() for (char *) cast */ -} - -#define YYTABLES_NAME "yytables" - -#line 581 "vrmlLexer.lxx" +#line 2 "lex.yy.c" + +#line 4 "lex.yy.c" + +#define YY_INT_ALIGNED short int + +/* A lexical scanner generated by flex */ + +#define yy_create_buffer vrmlyy_create_buffer +#define yy_delete_buffer vrmlyy_delete_buffer +#define yy_flex_debug vrmlyy_flex_debug +#define yy_init_buffer vrmlyy_init_buffer +#define yy_flush_buffer vrmlyy_flush_buffer +#define yy_load_buffer_state vrmlyy_load_buffer_state +#define yy_switch_to_buffer vrmlyy_switch_to_buffer +#define yyin vrmlyyin +#define yyleng vrmlyyleng +#define yylex vrmlyylex +#define yylineno vrmlyylineno +#define yyout vrmlyyout +#define yyrestart vrmlyyrestart +#define yytext vrmlyytext +#define yywrap vrmlyywrap +#define yyalloc vrmlyyalloc +#define yyrealloc vrmlyyrealloc +#define yyfree vrmlyyfree + +#define FLEX_SCANNER +#define YY_FLEX_MAJOR_VERSION 2 +#define YY_FLEX_MINOR_VERSION 5 +#define YY_FLEX_SUBMINOR_VERSION 35 +#if YY_FLEX_SUBMINOR_VERSION > 0 +#define FLEX_BETA +#endif + +/* First, we deal with platform-specific or compiler-specific issues. */ + +/* begin standard C headers. */ +#include +#include +#include +#include + +/* end standard C headers. */ + +/* flex integer type definitions */ + +#ifndef FLEXINT_H +#define FLEXINT_H + +/* C99 systems have . Non-C99 systems may or may not. */ + +#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + +/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, + * if you want the limit (max/min) macros for int types. + */ +#ifndef __STDC_LIMIT_MACROS +#define __STDC_LIMIT_MACROS 1 +#endif + +#include +typedef int8_t flex_int8_t; +typedef uint8_t flex_uint8_t; +typedef int16_t flex_int16_t; +typedef uint16_t flex_uint16_t; +typedef int32_t flex_int32_t; +typedef uint32_t flex_uint32_t; +#else +typedef signed char flex_int8_t; +typedef short int flex_int16_t; +typedef int flex_int32_t; +typedef unsigned char flex_uint8_t; +typedef unsigned short int flex_uint16_t; +typedef unsigned int flex_uint32_t; +#endif /* ! C99 */ + +/* Limits of integral types. */ +#ifndef INT8_MIN +#define INT8_MIN (-128) +#endif +#ifndef INT16_MIN +#define INT16_MIN (-32767-1) +#endif +#ifndef INT32_MIN +#define INT32_MIN (-2147483647-1) +#endif +#ifndef INT8_MAX +#define INT8_MAX (127) +#endif +#ifndef INT16_MAX +#define INT16_MAX (32767) +#endif +#ifndef INT32_MAX +#define INT32_MAX (2147483647) +#endif +#ifndef UINT8_MAX +#define UINT8_MAX (255U) +#endif +#ifndef UINT16_MAX +#define UINT16_MAX (65535U) +#endif +#ifndef UINT32_MAX +#define UINT32_MAX (4294967295U) +#endif + +#endif /* ! FLEXINT_H */ + +#ifdef __cplusplus + +/* The "const" storage-class-modifier is valid. */ +#define YY_USE_CONST + +#else /* ! __cplusplus */ + +/* C99 requires __STDC__ to be defined as 1. */ +#if defined (__STDC__) + +#define YY_USE_CONST + +#endif /* defined (__STDC__) */ +#endif /* ! __cplusplus */ + +#ifdef YY_USE_CONST +#define yyconst const +#else +#define yyconst +#endif + +/* Returned upon end-of-file. */ +#define YY_NULL 0 + +/* Promotes a possibly negative, possibly signed char to an unsigned + * integer for use as an array index. If the signed char is negative, + * we want to instead treat it as an 8-bit unsigned char, hence the + * double cast. + */ +#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) + +/* Enter a start condition. This macro really ought to take a parameter, + * but we do it the disgusting crufty way forced on us by the ()-less + * definition of BEGIN. + */ +#define BEGIN (yy_start) = 1 + 2 * + +/* Translate the current start state into a value that can be later handed + * to BEGIN to return to the state. The YYSTATE alias is for lex + * compatibility. + */ +#define YY_START (((yy_start) - 1) / 2) +#define YYSTATE YY_START + +/* Action number for EOF rule of a given start state. */ +#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) + +/* Special action meaning "start processing a new file". */ +#define YY_NEW_FILE vrmlyyrestart(vrmlyyin ) + +#define YY_END_OF_BUFFER_CHAR 0 + +/* Size of default input buffer. */ +#ifndef YY_BUF_SIZE +#define YY_BUF_SIZE 16384 +#endif + +/* The state buf must be large enough to hold one state per character in the main buffer. + */ +#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) + +#ifndef YY_TYPEDEF_YY_BUFFER_STATE +#define YY_TYPEDEF_YY_BUFFER_STATE +typedef struct yy_buffer_state *YY_BUFFER_STATE; +#endif + +extern int vrmlyyleng; + +extern FILE *vrmlyyin, *vrmlyyout; + +#define EOB_ACT_CONTINUE_SCAN 0 +#define EOB_ACT_END_OF_FILE 1 +#define EOB_ACT_LAST_MATCH 2 + + #define YY_LESS_LINENO(n) + +/* Return all but the first "n" matched characters back to the input stream. */ +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up vrmlyytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + *yy_cp = (yy_hold_char); \ + YY_RESTORE_YY_MORE_OFFSET \ + (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ + YY_DO_BEFORE_ACTION; /* set up vrmlyytext again */ \ + } \ + while ( 0 ) + +#define unput(c) yyunput( c, (yytext_ptr) ) + +#ifndef YY_TYPEDEF_YY_SIZE_T +#define YY_TYPEDEF_YY_SIZE_T +typedef size_t yy_size_t; +#endif + +#ifndef YY_STRUCT_YY_BUFFER_STATE +#define YY_STRUCT_YY_BUFFER_STATE +struct yy_buffer_state + { + FILE *yy_input_file; + + char *yy_ch_buf; /* input buffer */ + char *yy_buf_pos; /* current position in input buffer */ + + /* Size of input buffer in bytes, not including room for EOB + * characters. + */ + yy_size_t yy_buf_size; + + /* Number of characters read into yy_ch_buf, not including EOB + * characters. + */ + int yy_n_chars; + + /* Whether we "own" the buffer - i.e., we know we created it, + * and can realloc() it to grow it, and should free() it to + * delete it. + */ + int yy_is_our_buffer; + + /* Whether this is an "interactive" input source; if so, and + * if we're using stdio for input, then we want to use getc() + * instead of fread(), to make sure we stop fetching input after + * each newline. + */ + int yy_is_interactive; + + /* Whether we're considered to be at the beginning of a line. + * If so, '^' rules will be active on the next match, otherwise + * not. + */ + int yy_at_bol; + + int yy_bs_lineno; /**< The line count. */ + int yy_bs_column; /**< The column count. */ + + /* Whether to try to fill the input buffer when we reach the + * end of it. + */ + int yy_fill_buffer; + + int yy_buffer_status; + +#define YY_BUFFER_NEW 0 +#define YY_BUFFER_NORMAL 1 + /* When an EOF's been seen but there's still some text to process + * then we mark the buffer as YY_EOF_PENDING, to indicate that we + * shouldn't try reading from the input source any more. We might + * still have a bunch of tokens to match, though, because of + * possible backing-up. + * + * When we actually see the EOF, we change the status to "new" + * (via vrmlyyrestart()), so that the user can continue scanning by + * just pointing vrmlyyin at a new input file. + */ +#define YY_BUFFER_EOF_PENDING 2 + + }; +#endif /* !YY_STRUCT_YY_BUFFER_STATE */ + +/* Stack of input buffers. */ +static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ +static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ +static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ + +/* We provide macros for accessing buffer states in case in the + * future we want to put the buffer states in a more general + * "scanner state". + * + * Returns the top of the stack, or NULL. + */ +#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ + ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ + : NULL) + +/* Same as previous macro, but useful when we know that the buffer stack is not + * NULL or when we need an lvalue. For internal use only. + */ +#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] + +/* yy_hold_char holds the character lost when vrmlyytext is formed. */ +static char yy_hold_char; +static int yy_n_chars; /* number of characters read into yy_ch_buf */ +int vrmlyyleng; + +/* Points to current character in buffer. */ +static char *yy_c_buf_p = (char *) 0; +static int yy_init = 0; /* whether we need to initialize */ +static int yy_start = 0; /* start state number */ + +/* Flag which is used to allow vrmlyywrap()'s to do buffer switches + * instead of setting up a fresh vrmlyyin. A bit of a hack ... + */ +static int yy_did_buffer_switch_on_eof; + +void vrmlyyrestart (FILE *input_file ); +void vrmlyy_switch_to_buffer (YY_BUFFER_STATE new_buffer ); +YY_BUFFER_STATE vrmlyy_create_buffer (FILE *file,int size ); +void vrmlyy_delete_buffer (YY_BUFFER_STATE b ); +void vrmlyy_flush_buffer (YY_BUFFER_STATE b ); +void vrmlyypush_buffer_state (YY_BUFFER_STATE new_buffer ); +void vrmlyypop_buffer_state (void ); + +static void vrmlyyensure_buffer_stack (void ); +static void vrmlyy_load_buffer_state (void ); +static void vrmlyy_init_buffer (YY_BUFFER_STATE b,FILE *file ); + +#define YY_FLUSH_BUFFER vrmlyy_flush_buffer(YY_CURRENT_BUFFER ) + +YY_BUFFER_STATE vrmlyy_scan_buffer (char *base,yy_size_t size ); +YY_BUFFER_STATE vrmlyy_scan_string (yyconst char *yy_str ); +YY_BUFFER_STATE vrmlyy_scan_bytes (yyconst char *bytes,int len ); + +void *vrmlyyalloc (yy_size_t ); +void *vrmlyyrealloc (void *,yy_size_t ); +void vrmlyyfree (void * ); + +#define yy_new_buffer vrmlyy_create_buffer + +#define yy_set_interactive(is_interactive) \ + { \ + if ( ! YY_CURRENT_BUFFER ){ \ + vrmlyyensure_buffer_stack (); \ + YY_CURRENT_BUFFER_LVALUE = \ + vrmlyy_create_buffer(vrmlyyin,YY_BUF_SIZE ); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ + } + +#define yy_set_bol(at_bol) \ + { \ + if ( ! YY_CURRENT_BUFFER ){\ + vrmlyyensure_buffer_stack (); \ + YY_CURRENT_BUFFER_LVALUE = \ + vrmlyy_create_buffer(vrmlyyin,YY_BUF_SIZE ); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ + } + +#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) + +typedef unsigned char YY_CHAR; + +FILE *vrmlyyin = (FILE *) 0, *vrmlyyout = (FILE *) 0; + +typedef int yy_state_type; + +extern int vrmlyylineno; + +int vrmlyylineno = 1; + +extern char *vrmlyytext; +#define yytext_ptr vrmlyytext + +static yy_state_type yy_get_previous_state (void ); +static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); +static int yy_get_next_buffer (void ); +static void yy_fatal_error (yyconst char msg[] ); + +/* Done after the current pattern has been matched and before the + * corresponding action - sets up vrmlyytext. + */ +#define YY_DO_BEFORE_ACTION \ + (yytext_ptr) = yy_bp; \ + vrmlyyleng = (size_t) (yy_cp - yy_bp); \ + (yy_hold_char) = *yy_cp; \ + *yy_cp = '\0'; \ + (yy_c_buf_p) = yy_cp; + +#define YY_NUM_RULES 48 +#define YY_END_OF_BUFFER 49 +/* This struct is not used in this scanner, + but its presence is necessary. */ +struct yy_trans_info + { + flex_int32_t yy_verify; + flex_int32_t yy_nxt; + }; +static yyconst flex_int16_t yy_accept[977] = + { 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 49, 47, 45, 46, 45, 14, + 45, 15, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 47, 47, 47, 47, 47, 47, 47, 47, + 24, 47, 47, 47, 47, 22, 22, 47, 47, 47, + 37, 35, 37, 37, 47, 47, 34, 47, 47, 47, + 47, 47, 47, 47, 47, 47, 47, 18, 19, 47, + + 47, 25, 47, 23, 23, 47, 47, 47, 38, 36, + 38, 38, 47, 47, 47, 47, 47, 47, 40, 40, + 41, 40, 40, 42, 47, 44, 44, 45, 45, 46, + 45, 45, 45, 14, 15, 14, 14, 7, 14, 14, + 14, 6, 14, 14, 14, 14, 0, 16, 0, 0, + 0, 0, 0, 0, 0, 0, 24, 24, 0, 0, + 0, 0, 0, 22, 22, 0, 0, 0, 0, 0, + 0, 37, 37, 37, 16, 0, 34, 34, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 17, 0, 25, + + 25, 0, 23, 23, 0, 0, 0, 0, 0, 0, + 38, 38, 38, 17, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 40, 40, 40, 40, + 40, 39, 44, 44, 45, 4, 14, 14, 14, 14, + 5, 14, 14, 14, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, + 43, 43, 0, 0, 0, 0, 43, 43, 0, 22, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 34, 0, 0, 26, 0, 0, 0, 0, + 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 25, 23, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 27, 0, 0, 0, 0, 0, 27, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 44, 45, 14, 9, 14, 14, 14, 14, + 14, 0, 20, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 43, 43, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 26, 0, 26, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 27, 0, 27, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 45, 14, 2, + 8, 14, 14, 12, 21, 0, 0, 32, 0, 0, + 0, 0, 0, 32, 0, 0, 0, 0, 32, 0, + 0, 0, 32, 0, 0, 0, 0, 0, 32, 0, + 0, 0, 43, 43, 43, 43, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 26, 0, 0, 26, 0, 0, + + 28, 0, 0, 0, 0, 0, 28, 0, 0, 0, + 0, 28, 0, 0, 0, 28, 0, 0, 0, 0, + 0, 28, 0, 0, 0, 0, 0, 33, 0, 0, + 0, 0, 0, 33, 0, 0, 0, 0, 33, 0, + 0, 0, 33, 0, 0, 0, 0, 0, 33, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 27, 0, 0, 27, 0, 0, 29, 0, 0, 0, + 0, 0, 29, 0, 0, 0, 0, 29, 0, 0, + + 0, 29, 0, 0, 0, 0, 0, 29, 0, 0, + 0, 45, 14, 14, 14, 14, 32, 0, 32, 0, + 32, 0, 32, 0, 32, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 28, 0, 28, + 0, 28, 0, 28, 0, 28, 0, 33, 0, 33, + 0, 33, 0, 33, 0, 33, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, + 29, 0, 29, 0, 29, 0, 29, 0, 45, 14, + + 10, 14, 14, 0, 32, 0, 0, 32, 0, 0, + 32, 0, 32, 0, 0, 32, 0, 0, 30, 0, + 0, 0, 0, 0, 30, 0, 0, 0, 0, 30, + 0, 0, 30, 0, 0, 0, 0, 0, 30, 0, + 0, 0, 0, 0, 30, 0, 0, 0, 30, 0, + 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, + 0, 0, 30, 0, 0, 0, 0, 28, 0, 0, + 28, 0, 0, 28, 0, 28, 0, 0, 28, 0, + 33, 0, 0, 33, 0, 0, 33, 0, 33, 0, + 0, 33, 0, 0, 31, 0, 0, 0, 0, 0, + + 31, 0, 0, 0, 0, 31, 0, 0, 31, 0, + 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 31, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0, 31, 0, + 0, 0, 0, 29, 0, 0, 29, 0, 0, 29, + 0, 29, 0, 0, 29, 45, 14, 11, 14, 30, + 0, 30, 0, 30, 0, 30, 0, 30, 0, 30, + 0, 30, 0, 30, 0, 30, 0, 31, 0, 31, + 0, 31, 0, 31, 0, 31, 0, 31, 0, 31, + 0, 31, 0, 31, 0, 45, 14, 14, 0, 30, + + 0, 0, 30, 0, 0, 30, 0, 30, 0, 0, + 30, 0, 0, 30, 0, 30, 0, 0, 30, 0, + 0, 30, 0, 31, 0, 0, 31, 0, 0, 31, + 0, 31, 0, 0, 31, 0, 0, 31, 0, 31, + 0, 0, 31, 0, 0, 31, 45, 14, 14, 45, + 3, 14, 45, 13, 45, 45, 45, 45, 1, 1, + 45, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 0 + } ; + +static yyconst flex_int32_t yy_ec[256] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, + 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 5, 6, 7, 8, 6, 6, 6, 1, 6, + 6, 6, 9, 2, 10, 11, 6, 12, 13, 14, + 13, 13, 13, 13, 13, 15, 13, 6, 6, 6, + 6, 6, 6, 6, 16, 17, 17, 18, 19, 20, + 6, 6, 21, 6, 6, 22, 23, 24, 25, 26, + 6, 27, 28, 29, 30, 31, 6, 32, 6, 6, + 33, 34, 35, 6, 6, 6, 17, 17, 17, 36, + + 37, 38, 6, 6, 39, 6, 6, 40, 6, 41, + 42, 43, 6, 6, 44, 45, 46, 47, 6, 48, + 6, 6, 1, 6, 1, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6 + } ; + +static yyconst flex_int32_t yy_meta[49] = + { 0, + 1, 2, 3, 2, 2, 4, 5, 6, 1, 4, + 1, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 8, 1, 8, 7, 7, 7, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4 + } ; + +static yyconst flex_int16_t yy_base[1120] = + { 0, + 0, 7, 15, 0, 62, 90, 118, 0, 61, 74, + 89, 102, 130, 136, 142, 148, 162, 169, 174, 181, + 187, 193, 199, 205, 211, 237, 263, 289, 315, 341, + 367, 393, 427, 461, 487, 513, 539, 565, 226, 233, + 261, 278, 328, 354, 1038, 8632, 251, 0, 231, 0, + 1019, 0, 1006, 992, 985, 981, 983, 974, 972, 968, + 21, 946, 967, 954, 944, 66, 93, 599, 123, 166, + 278, 293, 635, 77, 304, 377, 319, 346, 332, 682, + 0, 8632, 391, 941, 372, 358, 404, 425, 398, 718, + 431, 437, 754, 442, 458, 790, 940, 8632, 8632, 463, + + 471, 476, 491, 497, 502, 524, 518, 826, 0, 8632, + 554, 929, 529, 551, 862, 556, 569, 898, 0, 586, + 8632, 6, 947, 8632, 607, 612, 616, 591, 935, 0, + 933, 932, 234, 0, 0, 914, 900, 0, 892, 883, + 877, 0, 886, 867, 855, 847, 857, 8632, 848, 620, + 0, 640, 934, 948, 649, 656, 661, 690, 698, 0, + 726, 962, 740, 702, 0, 737, 0, 763, 976, 990, + 770, 0, 806, 813, 0, 774, 835, 843, 873, 810, + 0, 878, 1004, 1018, 906, 882, 0, 911, 1032, 1046, + 918, 1050, 0, 1055, 1069, 1083, 1090, 8632, 1094, 1099, + + 1107, 1115, 1119, 0, 1125, 0, 1134, 1148, 1162, 1169, + 0, 1183, 1190, 0, 1187, 1224, 1192, 1260, 1274, 1199, + 1207, 1288, 1233, 1324, 1338, 1240, 0, 1304, 89, 280, + 306, 8632, 1244, 0, 271, 0, 852, 847, 839, 830, + 0, 811, 794, 792, 791, 797, 1302, 1306, 1352, 1388, + 1402, 0, 0, 1360, 1416, 1364, 1452, 1368, 1372, 1413, + 1426, 1417, 1473, 1487, 0, 0, 195, 0, 1440, 0, + 1457, 1437, 1501, 1537, 1551, 0, 0, 1509, 1565, 1513, + 1601, 1517, 1521, 1563, 1567, 1574, 1615, 0, 0, 0, + 1582, 442, 1586, 1629, 1634, 1638, 1652, 1688, 0, 0, + + 0, 1660, 1675, 1672, 1711, 1693, 1715, 1729, 1765, 0, + 0, 0, 1737, 1752, 1749, 1788, 1769, 1773, 0, 1793, + 1797, 1811, 1847, 0, 0, 0, 1819, 1834, 1831, 1870, + 1852, 1874, 1879, 1915, 0, 0, 0, 1887, 536, 1891, + 1929, 1896, 1900, 1943, 1979, 0, 0, 0, 1951, 1966, + 1963, 2002, 0, 160, 785, 0, 782, 787, 755, 755, + 760, 728, 8632, 1984, 2016, 2030, 2037, 2051, 2079, 2115, + 2129, 2059, 0, 2133, 2064, 2170, 2184, 2071, 2198, 2226, + 2262, 2276, 2290, 2087, 2095, 2326, 2362, 2376, 2412, 2426, + 2145, 2440, 2476, 2490, 2504, 2518, 2532, 2568, 2582, 2152, + + 2596, 2632, 2646, 2660, 2674, 2688, 2724, 2738, 2206, 2752, + 2788, 2802, 2816, 2830, 2210, 2218, 2844, 2880, 2894, 2930, + 2944, 2239, 2958, 2994, 3008, 3022, 3036, 119, 694, 0, + 0, 376, 652, 0, 8632, 2100, 2243, 2305, 3050, 3064, + 0, 0, 2247, 578, 2298, 3078, 3092, 3106, 3120, 3156, + 2335, 2339, 3170, 3206, 0, 0, 0, 2343, 586, 2347, + 2384, 3185, 0, 3222, 289, 560, 2389, 2393, 3269, 3305, + 3319, 0, 0, 2397, 2867, 2448, 3333, 3347, 3361, 3375, + 3411, 2453, 2457, 3425, 3461, 0, 0, 0, 2461, 3143, + 2540, 2544, 3475, 2548, 2552, 3511, 3525, 662, 2605, 2609, + + 3530, 3566, 3580, 0, 0, 2613, 663, 2617, 3594, 3608, + 3622, 3636, 3672, 2697, 2701, 3686, 3722, 0, 0, 0, + 2705, 669, 2709, 2760, 3701, 2765, 2769, 3728, 3764, 3778, + 0, 0, 2773, 709, 2852, 3792, 3806, 3820, 3834, 3870, + 2865, 2902, 3884, 3920, 0, 0, 0, 2906, 716, 2910, + 2914, 3899, 2967, 2971, 3935, 3971, 3985, 0, 0, 2975, + 3398, 2979, 3999, 4013, 4027, 4041, 4077, 3129, 3140, 4091, + 4127, 0, 0, 0, 3178, 3448, 3277, 3281, 4141, 3285, + 3289, 4177, 4191, 735, 3384, 3395, 4196, 4232, 4246, 0, + 0, 3433, 744, 3445, 4260, 4274, 4288, 4302, 4338, 3484, + + 3488, 4352, 4388, 0, 0, 0, 3492, 807, 3496, 3538, + 4367, 416, 653, 601, 560, 549, 3644, 3545, 4403, 4439, + 4453, 4489, 4503, 3652, 4539, 4575, 4589, 4625, 4639, 3694, + 4653, 4689, 4703, 4717, 4731, 4745, 4781, 4795, 4809, 4823, + 4837, 4873, 3736, 4887, 4923, 4937, 4951, 3842, 3743, 4965, + 5001, 5015, 5051, 5065, 3850, 5101, 5137, 3943, 3892, 5151, + 5187, 5201, 5237, 5251, 3951, 5287, 5323, 5337, 5373, 5387, + 4049, 5401, 5437, 5451, 5465, 5479, 5493, 5529, 5543, 5557, + 5571, 5585, 5621, 4056, 5635, 5671, 5685, 5699, 4099, 4107, + 5713, 5749, 5763, 5799, 5813, 4149, 5849, 5885, 413, 530, + + 0, 502, 501, 3549, 3656, 5899, 5913, 814, 5927, 5941, + 4325, 3747, 5955, 5969, 5983, 816, 3855, 3955, 4518, 5997, + 6011, 0, 0, 4060, 823, 4111, 6025, 6039, 6053, 6067, + 4154, 4158, 6103, 6139, 6153, 0, 0, 4162, 824, 4204, + 4208, 5080, 6167, 6181, 6195, 6231, 4213, 4217, 6245, 6281, + 0, 0, 0, 4310, 936, 4322, 4360, 5266, 4411, 6295, + 6309, 6323, 6337, 4415, 4419, 5828, 4423, 4461, 6373, 6387, + 1098, 6401, 6415, 4476, 4473, 6429, 6443, 6457, 1104, 4511, + 4547, 6471, 6485, 1149, 6499, 6513, 4562, 4559, 6527, 6541, + 6555, 1152, 4598, 4602, 6076, 6569, 6583, 0, 0, 4606, + + 1196, 4610, 6597, 6611, 6625, 6639, 4662, 4666, 6675, 6711, + 6725, 0, 0, 4670, 1205, 4674, 4753, 6648, 6739, 6753, + 6767, 6803, 4758, 4762, 6817, 6853, 0, 0, 0, 4766, + 1232, 4845, 4849, 6832, 4853, 6868, 6882, 6896, 6910, 4857, + 4895, 6919, 4899, 4903, 6955, 6969, 1261, 6983, 6997, 5038, + 4907, 7011, 7025, 7039, 1285, 246, 482, 0, 428, 5345, + 4973, 7053, 7089, 7103, 7139, 7153, 4980, 7189, 7225, 7239, + 7275, 7289, 5023, 7325, 7361, 7375, 7411, 5409, 5035, 5501, + 5073, 4985, 5109, 5114, 5121, 5593, 5159, 5164, 5171, 5210, + 5217, 5643, 5259, 5222, 5295, 633, 404, 385, 5299, 5303, + + 449, 471, 1701, 483, 509, 7425, 5307, 7461, 607, 647, + 1860, 656, 668, 7475, 5353, 7511, 682, 715, 1930, 751, + 761, 7525, 5357, 5417, 5421, 5509, 6084, 5513, 5601, 7168, + 5605, 7561, 5651, 5655, 6111, 5721, 5725, 7304, 5729, 5733, + 5771, 5775, 6203, 5779, 5783, 7434, 315, 395, 354, 263, + 0, 327, 601, 0, 726, 782, 1476, 1490, 5829, 5867, + 1604, 5872, 5877, 6127, 6221, 6261, 6268, 6355, 6273, 6360, + 6365, 6666, 6693, 6700, 6785, 8632, 7576, 7584, 7592, 7600, + 7608, 7616, 7621, 7625, 7632, 7640, 7648, 7655, 7663, 7671, + 7679, 7687, 7694, 328, 7701, 7709, 7717, 7725, 304, 7733, + + 7741, 7749, 7757, 7765, 7773, 238, 7781, 7786, 7793, 7801, + 7808, 168, 7815, 111, 7823, 7831, 83, 7839, 7847, 7855, + 7863, 7871, 7879, 7887, 7895, 7903, 7911, 7919, 7927, 7935, + 7943, 7951, 7959, 7967, 7972, 7979, 7987, 7995, 0, 8003, + 8011, 8019, 8027, 8035, 8043, 8051, 8059, 8067, 8075, 8083, + 8091, 8099, 8107, 8115, 8123, 8131, 8139, 8144, 8151, 8159, + 8167, 8175, 8183, 8191, 8199, 8207, 8215, 8223, 8231, 8239, + 8247, 8255, 8263, 8271, 8279, 8287, 8295, 8303, 8311, 8319, + 8327, 8335, 8343, 8348, 8355, 8363, 8371, 8379, 8387, 8395, + 8403, 8411, 8419, 8427, 8435, 8443, 8451, 8459, 8467, 8475, + + 8483, 8491, 8499, 8507, 8515, 8523, 8531, 8539, 8547, 8552, + 8559, 8567, 8575, 8583, 8591, 8599, 8607, 8615, 8623 + } ; + +static yyconst flex_int16_t yy_def[1120] = + { 0, + 977, 977, 976, 3, 977, 977, 977, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 978, 978, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 979, 979, 7, 7, 7, 7, 980, 980, + 980, 980, 7, 7, 976, 976, 976, 981, 982, 983, + 982, 984, 983, 983, 983, 983, 983, 983, 983, 983, + 983, 983, 976, 976, 976, 976, 976, 976, 976, 976, + 976, 976, 976, 73, 976, 976, 976, 976, 976, 976, + 985, 976, 986, 985, 976, 976, 976, 976, 976, 976, + 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, + + 976, 976, 976, 976, 976, 976, 976, 976, 987, 976, + 988, 987, 976, 976, 976, 976, 976, 976, 989, 989, + 976, 990, 989, 976, 976, 976, 976, 976, 982, 981, + 982, 982, 982, 983, 984, 983, 983, 983, 983, 983, + 983, 983, 983, 983, 983, 983, 976, 976, 976, 976, + 68, 68, 976, 991, 976, 976, 976, 976, 976, 74, + 74, 992, 993, 976, 994, 976, 80, 80, 976, 995, + 976, 985, 986, 986, 985, 976, 976, 976, 976, 976, + 90, 90, 976, 996, 976, 976, 93, 93, 976, 997, + 976, 976, 96, 96, 976, 998, 976, 976, 976, 976, + + 976, 976, 976, 999, 976, 108, 108, 976, 1000, 976, + 987, 1001, 1001, 987, 976, 976, 216, 976, 1002, 976, + 976, 976, 222, 976, 1003, 976, 1004, 1004, 1005, 1005, + 1005, 976, 976, 1006, 1007, 1008, 1008, 1008, 1008, 1008, + 1008, 1008, 1008, 1008, 976, 976, 976, 976, 976, 1009, + 1009, 251, 251, 251, 251, 976, 976, 976, 976, 976, + 976, 976, 1010, 1010, 264, 264, 264, 264, 1011, 1012, + 976, 976, 976, 1013, 1013, 275, 275, 275, 275, 976, + 976, 976, 976, 976, 976, 976, 996, 287, 287, 287, + 287, 287, 976, 976, 976, 976, 976, 997, 298, 298, + + 298, 298, 298, 976, 976, 976, 976, 976, 998, 309, + 309, 309, 309, 309, 976, 976, 976, 976, 1014, 976, + 976, 976, 1000, 323, 323, 323, 323, 323, 976, 976, + 976, 976, 976, 1002, 334, 334, 334, 334, 334, 976, + 976, 976, 976, 976, 1003, 345, 345, 345, 345, 345, + 976, 976, 1006, 1007, 1008, 1008, 1008, 1008, 1008, 1008, + 1008, 976, 976, 249, 976, 1015, 976, 251, 368, 976, + 1016, 251, 1017, 264, 273, 976, 1018, 976, 275, 379, + 976, 1019, 379, 976, 976, 1020, 1020, 976, 976, 1021, + 976, 1022, 1022, 976, 1023, 1022, 976, 976, 1024, 976, + + 1025, 1025, 976, 1026, 1025, 976, 976, 1027, 976, 1028, + 1028, 976, 1029, 1028, 976, 976, 1030, 1030, 976, 976, + 1031, 976, 1032, 1032, 976, 1033, 1032, 1034, 1035, 1035, + 1035, 1035, 1035, 1035, 976, 976, 976, 976, 1036, 1036, + 440, 440, 440, 440, 976, 976, 1037, 1037, 448, 1038, + 976, 976, 976, 1038, 454, 454, 454, 454, 454, 448, + 448, 449, 1039, 976, 464, 464, 976, 976, 976, 1040, + 1040, 471, 471, 471, 471, 976, 976, 1041, 1041, 479, + 1042, 976, 976, 976, 1042, 485, 485, 485, 485, 485, + 479, 479, 479, 976, 976, 1043, 1043, 497, 976, 976, + + 976, 1044, 1044, 503, 503, 503, 503, 976, 976, 1045, + 1045, 511, 1046, 976, 976, 976, 1046, 517, 517, 517, + 517, 517, 511, 511, 512, 976, 976, 976, 1047, 1047, + 530, 530, 530, 530, 976, 976, 1048, 1048, 538, 1049, + 976, 976, 976, 1049, 544, 544, 544, 544, 544, 538, + 538, 539, 976, 976, 976, 1050, 1050, 557, 557, 557, + 557, 976, 976, 1051, 1051, 565, 1052, 976, 976, 976, + 1052, 571, 571, 571, 571, 571, 565, 565, 565, 976, + 976, 1053, 1053, 583, 976, 976, 976, 1054, 1054, 589, + 589, 589, 589, 976, 976, 1055, 1055, 597, 1056, 976, + + 976, 976, 1056, 603, 603, 603, 603, 603, 597, 597, + 598, 1057, 1058, 1058, 1058, 1058, 976, 976, 1059, 1059, + 1060, 1060, 976, 976, 1061, 1061, 976, 976, 1062, 976, + 1063, 1063, 976, 1064, 1063, 1065, 1065, 976, 1066, 1065, + 976, 1064, 976, 1067, 1067, 1066, 1067, 976, 976, 1068, + 1068, 1069, 1069, 976, 976, 1070, 1070, 976, 976, 1071, + 1071, 1072, 1072, 976, 976, 1073, 1073, 976, 976, 1074, + 976, 1075, 1075, 976, 1076, 1075, 1077, 1077, 976, 1078, + 1077, 976, 1076, 976, 1079, 1079, 1078, 1079, 976, 976, + 1080, 1080, 1081, 1081, 976, 976, 1082, 1082, 1083, 1084, + + 1084, 1084, 1084, 976, 976, 1085, 1085, 707, 1086, 1086, + 710, 976, 976, 1087, 1087, 715, 976, 976, 976, 1088, + 1088, 721, 721, 721, 721, 976, 976, 1089, 1089, 729, + 976, 976, 976, 1090, 1090, 735, 735, 735, 735, 729, + 729, 730, 1091, 1091, 744, 1092, 976, 976, 976, 1092, + 750, 750, 750, 750, 750, 744, 744, 745, 976, 976, + 1093, 1093, 762, 762, 762, 763, 976, 976, 1094, 1094, + 770, 1095, 1095, 773, 976, 976, 1096, 1096, 778, 976, + 976, 1097, 1097, 783, 1098, 1098, 786, 976, 976, 1099, + 1099, 791, 976, 976, 976, 1100, 1100, 797, 797, 797, + + 797, 976, 976, 1101, 1101, 805, 976, 976, 976, 1102, + 1102, 811, 811, 811, 811, 805, 805, 806, 1103, 1103, + 820, 1104, 976, 976, 976, 1104, 826, 826, 826, 826, + 826, 820, 820, 821, 976, 976, 1105, 1105, 838, 838, + 838, 839, 976, 976, 1106, 1106, 846, 1107, 1107, 849, + 976, 976, 1108, 1108, 854, 1109, 1110, 1110, 1110, 976, + 976, 1111, 1111, 1112, 1112, 976, 976, 1113, 1113, 1114, + 1114, 976, 976, 1115, 1115, 1116, 1116, 976, 976, 797, + 797, 806, 805, 809, 976, 811, 811, 821, 820, 825, + 976, 826, 826, 839, 838, 1109, 1110, 1110, 976, 976, + + 863, 863, 863, 865, 865, 865, 976, 976, 869, 869, + 869, 871, 871, 871, 976, 976, 875, 875, 875, 877, + 877, 877, 976, 976, 797, 797, 797, 805, 805, 806, + 976, 976, 811, 811, 811, 820, 820, 821, 976, 836, + 826, 826, 826, 838, 838, 839, 1109, 1110, 1110, 1109, + 1110, 1110, 1109, 1110, 1109, 1109, 1117, 1117, 976, 1117, + 1117, 976, 976, 1118, 1117, 976, 1117, 1119, 1118, 1118, + 1118, 1119, 1119, 1119, 1119, 0, 976, 976, 976, 976, + 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, + 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, + + 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, + 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, + 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, + 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, + 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, + 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, + 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, + 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, + 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, + 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, + + 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, + 976, 976, 976, 976, 976, 976, 976, 976, 976 + } ; + +static yyconst flex_int16_t yy_nxt[8681] = + { 0, + 976, 47, 48, 47, 47, 976, 463, 49, 47, 48, + 47, 47, 131, 231, 49, 46, 47, 48, 47, 47, + 50, 46, 51, 46, 46, 46, 52, 52, 52, 52, + 50, 50, 53, 54, 50, 55, 50, 50, 56, 50, + 57, 58, 50, 59, 60, 50, 50, 46, 46, 46, + 50, 61, 62, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 47, 48, 47, 47, 144, 145, 51, + 69, 70, 71, 71, 71, 71, 150, 151, 151, 151, + 151, 63, 64, 69, 70, 71, 71, 71, 71, 463, + 65, 47, 48, 47, 47, 131, 231, 51, 72, 46, + + 73, 74, 74, 74, 152, 152, 152, 152, 976, 63, + 64, 72, 46, 73, 74, 74, 74, 319, 65, 47, + 48, 47, 47, 612, 976, 51, 132, 66, 67, 68, + 68, 68, 68, 156, 157, 157, 157, 157, 64, 75, + 46, 76, 77, 77, 77, 75, 46, 76, 77, 77, + 77, 78, 79, 80, 80, 80, 80, 78, 79, 80, + 80, 80, 80, 47, 48, 47, 47, 132, 82, 83, + 47, 48, 47, 47, 270, 82, 83, 158, 158, 158, + 158, 428, 84, 85, 86, 87, 87, 87, 87, 84, + 85, 86, 87, 87, 87, 87, 88, 89, 90, 90, + + 90, 90, 88, 89, 90, 90, 90, 90, 91, 92, + 93, 93, 93, 93, 91, 92, 93, 93, 93, 93, + 94, 95, 96, 96, 96, 96, 374, 120, 48, 120, + 120, 97, 121, 122, 120, 48, 120, 120, 132, 121, + 122, 132, 374, 98, 353, 99, 94, 95, 96, 96, + 96, 96, 128, 132, 128, 128, 896, 97, 129, 123, + 235, 133, 120, 48, 120, 120, 123, 124, 122, 98, + 132, 99, 100, 101, 102, 102, 102, 102, 132, 120, + 48, 120, 120, 97, 124, 122, 131, 231, 156, 157, + 157, 157, 157, 354, 123, 98, 159, 99, 100, 101, + + 102, 102, 102, 102, 160, 160, 160, 160, 953, 97, + 319, 123, 131, 231, 159, 164, 164, 164, 164, 950, + 263, 98, 132, 99, 103, 46, 104, 105, 105, 105, + 164, 164, 164, 164, 270, 97, 263, 125, 46, 126, + 127, 127, 127, 168, 168, 168, 168, 98, 46, 99, + 103, 46, 104, 105, 105, 105, 166, 167, 167, 167, + 167, 97, 954, 125, 46, 126, 127, 127, 127, 178, + 178, 178, 178, 98, 46, 99, 106, 107, 108, 108, + 108, 108, 176, 177, 177, 177, 177, 97, 164, 164, + 164, 164, 131, 952, 131, 131, 614, 131, 174, 98, + + 615, 99, 106, 107, 108, 108, 108, 108, 165, 182, + 182, 182, 182, 97, 176, 177, 177, 177, 177, 951, + 132, 949, 179, 132, 165, 98, 856, 99, 47, 48, + 47, 47, 948, 110, 111, 180, 181, 181, 181, 181, + 179, 186, 187, 187, 187, 187, 699, 112, 188, 188, + 188, 188, 192, 193, 193, 193, 193, 720, 723, 98, + 387, 99, 47, 48, 47, 47, 898, 110, 111, 194, + 194, 194, 194, 199, 200, 200, 200, 200, 387, 720, + 723, 112, 201, 201, 201, 201, 199, 200, 200, 200, + 200, 470, 473, 98, 202, 99, 113, 114, 115, 115, + + 115, 115, 203, 203, 203, 203, 897, 97, 203, 203, + 203, 203, 202, 203, 203, 203, 203, 470, 473, 98, + 859, 99, 113, 114, 115, 115, 115, 115, 204, 207, + 207, 207, 207, 97, 205, 206, 206, 206, 206, 215, + 216, 216, 216, 216, 204, 98, 858, 99, 116, 117, + 118, 118, 118, 118, 418, 131, 857, 131, 131, 97, + 131, 213, 217, 217, 217, 217, 221, 222, 222, 222, + 222, 98, 418, 99, 116, 117, 118, 118, 118, 118, + 223, 223, 223, 223, 703, 97, 131, 228, 131, 228, + 228, 263, 128, 229, 128, 128, 620, 98, 129, 99, + + 153, 153, 153, 153, 626, 702, 154, 263, 132, 150, + 151, 151, 151, 151, 620, 734, 737, 155, 233, 233, + 233, 233, 626, 233, 233, 233, 233, 233, 233, 233, + 233, 152, 152, 152, 152, 155, 161, 161, 161, 161, + 132, 701, 162, 234, 947, 955, 160, 160, 160, 160, + 976, 152, 152, 152, 152, 734, 737, 256, 256, 234, + 257, 257, 257, 257, 274, 277, 163, 158, 158, 158, + 158, 156, 157, 157, 157, 157, 274, 277, 700, 159, + 387, 651, 163, 169, 169, 169, 169, 657, 616, 170, + 750, 753, 166, 167, 167, 167, 167, 159, 387, 651, + + 171, 158, 158, 158, 158, 657, 258, 258, 159, 259, + 259, 259, 259, 164, 164, 164, 164, 613, 171, 183, + 183, 183, 183, 750, 753, 184, 159, 661, 180, 181, + 181, 181, 181, 132, 667, 260, 185, 261, 262, 262, + 262, 161, 161, 161, 161, 661, 435, 162, 168, 168, + 168, 168, 667, 418, 185, 189, 189, 189, 189, 485, + 488, 190, 692, 956, 186, 187, 187, 187, 187, 485, + 488, 418, 191, 976, 168, 168, 168, 168, 280, 280, + 692, 281, 281, 281, 281, 178, 178, 178, 178, 132, + 191, 195, 195, 195, 195, 434, 957, 196, 433, 432, + + 192, 193, 193, 193, 193, 431, 430, 131, 197, 131, + 131, 429, 131, 174, 131, 363, 131, 131, 362, 131, + 174, 182, 182, 182, 182, 698, 197, 208, 208, 208, + 208, 361, 620, 209, 626, 360, 205, 206, 206, 206, + 206, 863, 869, 698, 210, 176, 177, 177, 177, 177, + 620, 359, 626, 179, 178, 178, 178, 178, 358, 863, + 869, 179, 210, 218, 218, 218, 218, 357, 356, 219, + 355, 179, 215, 216, 216, 216, 216, 246, 245, 179, + 220, 282, 282, 244, 283, 283, 283, 283, 976, 182, + 182, 182, 182, 188, 188, 188, 188, 243, 220, 224, + + 224, 224, 224, 242, 241, 225, 240, 239, 221, 222, + 222, 222, 222, 238, 293, 293, 226, 294, 294, 294, + 294, 976, 188, 188, 188, 188, 304, 304, 237, 305, + 305, 305, 305, 236, 226, 153, 153, 153, 153, 132, + 132, 154, 132, 247, 248, 249, 249, 249, 249, 251, + 153, 251, 251, 232, 875, 252, 214, 253, 254, 255, + 255, 255, 255, 264, 161, 264, 264, 198, 175, 265, + 149, 266, 875, 267, 268, 268, 268, 169, 169, 169, + 169, 148, 147, 170, 146, 271, 272, 273, 273, 273, + 273, 275, 169, 275, 275, 143, 142, 276, 141, 277, + + 278, 279, 279, 279, 279, 183, 183, 183, 183, 140, + 139, 184, 138, 284, 285, 286, 286, 286, 286, 288, + 183, 288, 288, 137, 136, 289, 132, 290, 291, 292, + 292, 292, 292, 189, 189, 189, 189, 976, 976, 190, + 976, 295, 296, 297, 297, 297, 297, 299, 189, 299, + 299, 976, 976, 300, 976, 301, 302, 303, 303, 303, + 303, 194, 194, 194, 194, 976, 194, 194, 194, 194, + 195, 195, 195, 195, 976, 976, 196, 976, 306, 307, + 308, 308, 308, 308, 310, 195, 310, 310, 976, 976, + 311, 976, 312, 313, 314, 314, 314, 314, 315, 315, + + 976, 316, 316, 316, 316, 201, 201, 201, 201, 199, + 200, 200, 200, 200, 976, 976, 651, 202, 201, 201, + 201, 201, 657, 317, 317, 202, 318, 318, 318, 318, + 203, 203, 203, 203, 651, 202, 207, 207, 207, 207, + 657, 976, 976, 202, 976, 207, 207, 207, 207, 208, + 208, 208, 208, 976, 976, 209, 976, 320, 321, 322, + 322, 322, 322, 324, 208, 324, 324, 661, 976, 325, + 667, 326, 327, 328, 328, 328, 328, 329, 329, 976, + 330, 330, 330, 330, 131, 661, 131, 131, 667, 131, + 213, 131, 976, 131, 131, 976, 131, 213, 217, 217, + + 217, 217, 976, 217, 217, 217, 217, 340, 340, 976, + 341, 341, 341, 341, 881, 131, 976, 131, 223, 223, + 223, 223, 131, 887, 131, 218, 218, 218, 218, 976, + 976, 219, 881, 976, 215, 216, 216, 216, 216, 976, + 976, 887, 220, 976, 223, 223, 223, 223, 351, 351, + 893, 352, 352, 352, 352, 233, 233, 233, 233, 976, + 220, 218, 218, 218, 218, 976, 976, 219, 893, 331, + 332, 333, 333, 333, 333, 335, 218, 335, 335, 692, + 976, 336, 976, 337, 338, 339, 339, 339, 339, 224, + 224, 224, 224, 976, 976, 225, 976, 692, 221, 222, + + 222, 222, 222, 698, 976, 228, 226, 228, 228, 976, + 976, 229, 248, 249, 249, 249, 249, 364, 364, 364, + 364, 698, 976, 976, 226, 224, 224, 224, 224, 976, + 976, 225, 976, 342, 343, 344, 344, 344, 344, 346, + 224, 346, 346, 976, 976, 347, 976, 348, 349, 350, + 350, 350, 350, 365, 365, 365, 365, 976, 976, 366, + 976, 976, 248, 249, 249, 249, 249, 976, 976, 976, + 367, 368, 368, 368, 368, 257, 257, 257, 257, 259, + 259, 259, 259, 259, 259, 259, 259, 976, 367, 251, + 153, 251, 251, 976, 976, 252, 976, 253, 254, 255, + + 255, 255, 255, 251, 153, 251, 251, 976, 976, 252, + 976, 253, 254, 255, 255, 255, 255, 369, 370, 369, + 369, 976, 976, 371, 262, 262, 262, 262, 262, 262, + 262, 262, 976, 976, 372, 976, 976, 262, 262, 262, + 262, 161, 161, 161, 161, 976, 976, 162, 375, 375, + 375, 375, 372, 153, 153, 153, 153, 373, 976, 154, + 976, 976, 976, 257, 257, 257, 257, 272, 273, 273, + 273, 273, 976, 373, 264, 161, 264, 264, 959, 960, + 265, 976, 266, 961, 267, 268, 268, 268, 264, 161, + 264, 264, 959, 960, 265, 976, 266, 961, 267, 268, + + 268, 268, 376, 376, 376, 376, 976, 976, 377, 976, + 976, 272, 273, 273, 273, 273, 976, 976, 976, 378, + 379, 379, 379, 379, 281, 281, 281, 281, 283, 283, + 283, 283, 283, 283, 283, 283, 976, 378, 275, 169, + 275, 275, 976, 976, 276, 976, 277, 278, 279, 279, + 279, 279, 275, 169, 275, 275, 976, 976, 276, 976, + 277, 278, 279, 279, 279, 279, 380, 381, 380, 380, + 976, 976, 382, 285, 286, 286, 286, 286, 384, 384, + 384, 384, 976, 383, 285, 286, 286, 286, 286, 976, + 976, 976, 385, 386, 386, 386, 386, 294, 294, 294, + + 294, 383, 169, 169, 169, 169, 959, 960, 170, 976, + 385, 961, 281, 281, 281, 281, 288, 183, 288, 288, + 976, 976, 289, 976, 290, 291, 292, 292, 292, 292, + 183, 183, 183, 183, 976, 976, 184, 976, 976, 976, + 294, 294, 294, 294, 296, 297, 297, 297, 297, 388, + 388, 388, 388, 389, 389, 389, 389, 976, 976, 390, + 976, 976, 296, 297, 297, 297, 297, 976, 976, 976, + 391, 392, 392, 392, 392, 976, 393, 394, 393, 393, + 976, 976, 395, 305, 305, 305, 305, 976, 391, 299, + 189, 299, 299, 396, 976, 300, 976, 301, 302, 303, + + 303, 303, 303, 307, 308, 308, 308, 308, 976, 720, + 723, 396, 189, 189, 189, 189, 976, 976, 190, 863, + 976, 976, 305, 305, 305, 305, 397, 397, 397, 397, + 398, 398, 398, 398, 976, 976, 399, 863, 976, 307, + 308, 308, 308, 308, 976, 976, 976, 400, 401, 401, + 401, 401, 976, 402, 403, 402, 402, 976, 976, 404, + 316, 316, 316, 316, 976, 400, 310, 195, 310, 310, + 405, 976, 311, 976, 312, 313, 314, 314, 314, 314, + 318, 318, 318, 318, 318, 318, 318, 318, 405, 195, + 195, 195, 195, 976, 976, 196, 976, 976, 976, 316, + + 316, 316, 316, 321, 322, 322, 322, 322, 406, 406, + 406, 406, 407, 407, 407, 407, 976, 976, 408, 976, + 976, 321, 322, 322, 322, 322, 976, 976, 976, 409, + 410, 410, 410, 410, 976, 411, 412, 411, 411, 976, + 976, 413, 330, 330, 330, 330, 976, 409, 324, 208, + 324, 324, 414, 976, 325, 976, 326, 327, 328, 328, + 328, 328, 332, 333, 333, 333, 333, 976, 734, 737, + 414, 208, 208, 208, 208, 976, 976, 209, 869, 976, + 976, 330, 330, 330, 330, 415, 415, 415, 415, 332, + 333, 333, 333, 333, 976, 976, 869, 416, 417, 417, + + 417, 417, 341, 341, 341, 341, 343, 344, 344, 344, + 344, 419, 419, 419, 419, 416, 335, 218, 335, 335, + 976, 976, 336, 976, 337, 338, 339, 339, 339, 339, + 218, 218, 218, 218, 976, 976, 219, 976, 750, 753, + 341, 341, 341, 341, 420, 420, 420, 420, 875, 976, + 421, 976, 976, 343, 344, 344, 344, 344, 976, 976, + 976, 422, 423, 423, 423, 423, 875, 424, 425, 424, + 424, 976, 976, 426, 352, 352, 352, 352, 976, 422, + 346, 224, 346, 346, 427, 976, 347, 976, 348, 349, + 350, 350, 350, 350, 976, 364, 364, 364, 364, 976, + + 976, 976, 427, 224, 224, 224, 224, 976, 976, 225, + 976, 976, 976, 352, 352, 352, 352, 365, 365, 365, + 365, 976, 976, 366, 976, 436, 437, 438, 438, 438, + 438, 440, 365, 440, 440, 976, 976, 441, 976, 442, + 443, 444, 444, 444, 444, 445, 445, 976, 446, 446, + 446, 446, 369, 370, 369, 369, 976, 976, 371, 976, + 976, 976, 368, 368, 368, 368, 976, 460, 461, 372, + 462, 462, 462, 462, 976, 375, 375, 375, 375, 476, + 476, 976, 477, 477, 477, 477, 976, 372, 447, 448, + 449, 449, 449, 449, 976, 976, 976, 250, 384, 384, + + 384, 384, 976, 494, 494, 385, 495, 495, 495, 495, + 437, 438, 438, 438, 438, 250, 370, 370, 370, 370, + 976, 976, 450, 385, 451, 452, 453, 453, 453, 453, + 455, 370, 455, 455, 976, 976, 456, 976, 457, 458, + 459, 459, 459, 459, 464, 465, 465, 465, 466, 466, + 466, 466, 466, 508, 508, 976, 509, 509, 509, 509, + 535, 535, 976, 536, 536, 536, 536, 976, 466, 466, + 466, 376, 376, 376, 376, 976, 976, 377, 976, 467, + 468, 469, 469, 469, 469, 471, 376, 471, 471, 976, + 976, 472, 976, 473, 474, 475, 475, 475, 475, 380, + + 381, 380, 380, 976, 976, 382, 976, 976, 976, 379, + 379, 379, 379, 976, 562, 562, 383, 563, 563, 563, + 563, 415, 415, 415, 415, 976, 580, 580, 416, 581, + 581, 581, 581, 976, 383, 478, 479, 480, 480, 480, + 480, 976, 976, 976, 274, 976, 416, 594, 594, 976, + 595, 595, 595, 595, 617, 617, 617, 617, 619, 619, + 619, 619, 274, 381, 381, 381, 381, 976, 976, 481, + 976, 482, 483, 484, 484, 484, 484, 486, 381, 486, + 486, 976, 976, 487, 976, 488, 489, 490, 490, 490, + 490, 275, 169, 275, 275, 976, 976, 276, 491, 492, + + 976, 493, 493, 493, 493, 976, 976, 976, 274, 446, + 446, 446, 446, 976, 976, 437, 438, 438, 438, 438, + 976, 976, 976, 618, 976, 976, 274, 288, 183, 288, + 288, 976, 976, 289, 976, 290, 291, 386, 386, 386, + 386, 618, 976, 976, 387, 452, 453, 453, 453, 453, + 623, 623, 623, 623, 625, 625, 625, 625, 462, 462, + 462, 462, 387, 288, 183, 288, 288, 976, 976, 289, + 496, 497, 291, 498, 498, 498, 498, 389, 389, 389, + 389, 976, 976, 390, 976, 976, 976, 388, 388, 388, + 388, 976, 976, 976, 391, 462, 462, 462, 462, 468, + + 469, 469, 469, 469, 627, 627, 627, 627, 631, 631, + 631, 631, 391, 389, 389, 389, 389, 976, 976, 390, + 976, 499, 500, 501, 501, 501, 501, 503, 389, 503, + 503, 976, 976, 504, 976, 505, 506, 507, 507, 507, + 507, 393, 394, 393, 393, 976, 976, 395, 976, 301, + 302, 392, 392, 392, 392, 976, 976, 976, 396, 477, + 477, 477, 477, 483, 484, 484, 484, 484, 641, 641, + 641, 641, 644, 644, 644, 644, 396, 393, 394, 393, + 393, 976, 976, 395, 976, 510, 511, 512, 512, 512, + 512, 394, 394, 394, 394, 976, 976, 513, 976, 514, + + 515, 516, 516, 516, 516, 518, 394, 518, 518, 976, + 976, 519, 976, 520, 521, 522, 522, 522, 522, 299, + 189, 299, 299, 976, 976, 300, 523, 524, 302, 525, + 525, 525, 525, 398, 398, 398, 398, 976, 976, 399, + 976, 976, 976, 397, 397, 397, 397, 976, 976, 976, + 400, 493, 493, 493, 493, 493, 493, 493, 493, 495, + 495, 495, 495, 495, 495, 495, 495, 976, 400, 398, + 398, 398, 398, 976, 976, 399, 976, 526, 527, 528, + 528, 528, 528, 530, 398, 530, 530, 976, 976, 531, + 976, 532, 533, 534, 534, 534, 534, 402, 403, 402, + + 402, 976, 976, 404, 976, 312, 313, 401, 401, 401, + 401, 976, 976, 976, 405, 500, 501, 501, 501, 501, + 648, 648, 648, 648, 650, 650, 650, 650, 509, 509, + 509, 509, 405, 402, 403, 402, 402, 976, 976, 404, + 976, 537, 538, 539, 539, 539, 539, 403, 403, 403, + 403, 976, 976, 540, 976, 541, 542, 543, 543, 543, + 543, 545, 403, 545, 545, 976, 976, 546, 976, 547, + 548, 549, 549, 549, 549, 310, 195, 310, 310, 976, + 976, 311, 550, 551, 313, 552, 552, 552, 552, 407, + 407, 407, 407, 976, 976, 408, 976, 976, 976, 406, + + 406, 406, 406, 976, 976, 976, 409, 515, 516, 516, + 516, 516, 654, 654, 654, 654, 656, 656, 656, 656, + 525, 525, 525, 525, 409, 407, 407, 407, 407, 976, + 976, 408, 976, 553, 554, 555, 555, 555, 555, 557, + 407, 557, 557, 976, 976, 558, 976, 559, 560, 561, + 561, 561, 561, 411, 412, 411, 411, 976, 976, 413, + 976, 326, 327, 410, 410, 410, 410, 976, 976, 976, + 414, 525, 525, 525, 525, 527, 528, 528, 528, 528, + 658, 658, 658, 658, 660, 660, 660, 660, 414, 411, + 412, 411, 411, 976, 976, 413, 976, 564, 565, 566, + + 566, 566, 566, 412, 412, 412, 412, 976, 976, 567, + 976, 568, 569, 570, 570, 570, 570, 572, 412, 572, + 572, 976, 976, 573, 976, 574, 575, 576, 576, 576, + 576, 324, 208, 324, 324, 976, 976, 325, 577, 578, + 327, 579, 579, 579, 579, 335, 218, 335, 335, 976, + 976, 336, 976, 337, 338, 417, 417, 417, 417, 976, + 976, 976, 418, 536, 536, 536, 536, 976, 632, 633, + 632, 632, 976, 976, 634, 542, 543, 543, 543, 543, + 418, 335, 218, 335, 335, 635, 976, 336, 582, 583, + 338, 584, 584, 584, 584, 420, 420, 420, 420, 976, + + 976, 421, 976, 635, 976, 419, 419, 419, 419, 976, + 976, 976, 422, 664, 664, 664, 664, 666, 666, 666, + 666, 552, 552, 552, 552, 552, 552, 552, 552, 976, + 422, 420, 420, 420, 420, 976, 976, 421, 976, 585, + 586, 587, 587, 587, 587, 589, 420, 589, 589, 976, + 976, 590, 976, 591, 592, 593, 593, 593, 593, 424, + 425, 424, 424, 976, 976, 426, 976, 348, 349, 423, + 423, 423, 423, 976, 976, 976, 427, 554, 555, 555, + 555, 555, 668, 668, 668, 668, 672, 672, 672, 672, + 563, 563, 563, 563, 427, 424, 425, 424, 424, 976, + + 976, 426, 976, 596, 597, 598, 598, 598, 598, 425, + 425, 425, 425, 976, 976, 599, 976, 600, 601, 602, + 602, 602, 602, 604, 425, 604, 604, 976, 976, 605, + 976, 606, 607, 608, 608, 608, 608, 346, 224, 346, + 346, 976, 976, 347, 609, 610, 349, 611, 611, 611, + 611, 440, 365, 440, 440, 976, 976, 441, 976, 442, + 443, 444, 444, 444, 444, 440, 365, 440, 440, 976, + 976, 441, 976, 442, 443, 444, 444, 444, 444, 365, + 365, 365, 365, 976, 976, 366, 976, 976, 976, 446, + 446, 446, 446, 251, 153, 251, 251, 976, 976, 252, + + 976, 253, 448, 449, 449, 449, 449, 251, 153, 251, + 251, 976, 976, 252, 976, 253, 254, 621, 621, 621, + 621, 369, 370, 369, 369, 976, 976, 371, 976, 976, + 448, 449, 449, 449, 449, 976, 976, 976, 622, 569, + 570, 570, 570, 570, 645, 638, 645, 645, 976, 976, + 646, 682, 682, 682, 682, 976, 622, 455, 370, 455, + 455, 647, 976, 456, 976, 457, 458, 459, 459, 459, + 459, 365, 365, 365, 365, 976, 976, 366, 976, 647, + 452, 453, 453, 453, 453, 976, 976, 976, 624, 685, + 685, 685, 685, 976, 976, 254, 462, 462, 462, 462, + + 976, 976, 976, 372, 976, 976, 624, 455, 370, 455, + 455, 976, 976, 456, 976, 457, 458, 459, 459, 459, + 459, 372, 263, 264, 161, 264, 264, 263, 263, 265, + 263, 266, 263, 464, 465, 465, 465, 466, 466, 466, + 466, 466, 263, 263, 263, 263, 263, 263, 263, 263, + 263, 263, 263, 374, 263, 263, 263, 466, 466, 466, + 263, 263, 263, 263, 263, 263, 263, 263, 263, 374, + 628, 628, 628, 628, 976, 976, 629, 976, 976, 468, + 469, 469, 469, 469, 976, 976, 976, 630, 579, 579, + 579, 579, 579, 579, 579, 579, 581, 581, 581, 581, + + 581, 581, 581, 581, 976, 630, 471, 376, 471, 471, + 976, 976, 472, 976, 473, 474, 475, 475, 475, 475, + 471, 376, 471, 471, 976, 976, 472, 976, 473, 474, + 475, 475, 475, 475, 376, 376, 376, 376, 976, 976, + 377, 976, 976, 976, 477, 477, 477, 477, 275, 169, + 275, 275, 976, 976, 276, 976, 277, 479, 480, 480, + 480, 480, 275, 169, 275, 275, 976, 976, 276, 976, + 277, 278, 636, 636, 636, 636, 637, 638, 637, 637, + 976, 976, 639, 976, 976, 479, 480, 480, 480, 480, + 976, 976, 976, 640, 586, 587, 587, 587, 587, 673, + + 674, 673, 673, 976, 976, 675, 689, 689, 689, 689, + 976, 640, 486, 381, 486, 486, 676, 976, 487, 976, + 488, 489, 490, 490, 490, 490, 633, 633, 633, 633, + 976, 976, 642, 976, 676, 483, 484, 484, 484, 484, + 976, 976, 976, 643, 691, 691, 691, 691, 976, 686, + 679, 686, 686, 976, 976, 687, 595, 595, 595, 595, + 976, 643, 486, 381, 486, 486, 688, 976, 487, 976, + 488, 489, 490, 490, 490, 490, 380, 381, 380, 380, + 976, 976, 382, 976, 688, 976, 493, 493, 493, 493, + 976, 976, 976, 383, 601, 602, 602, 602, 602, 695, + + 695, 695, 695, 697, 697, 697, 697, 611, 611, 611, + 611, 383, 288, 183, 288, 288, 976, 976, 289, 976, + 290, 291, 498, 498, 498, 498, 288, 183, 288, 288, + 976, 976, 289, 976, 290, 291, 498, 498, 498, 498, + 500, 501, 501, 501, 501, 976, 976, 976, 649, 611, + 611, 611, 611, 704, 704, 976, 705, 705, 705, 705, + 705, 705, 705, 705, 976, 976, 649, 503, 389, 503, + 503, 976, 976, 504, 976, 505, 506, 507, 507, 507, + 507, 503, 389, 503, 503, 976, 976, 504, 976, 505, + 506, 507, 507, 507, 507, 389, 389, 389, 389, 976, + + 976, 390, 976, 976, 976, 509, 509, 509, 509, 299, + 189, 299, 299, 976, 976, 300, 976, 301, 511, 512, + 512, 512, 512, 299, 189, 299, 299, 976, 976, 300, + 976, 301, 302, 652, 652, 652, 652, 393, 394, 393, + 393, 976, 976, 395, 976, 976, 511, 512, 512, 512, + 512, 976, 976, 976, 653, 617, 617, 617, 617, 976, + 712, 712, 618, 713, 713, 713, 713, 705, 705, 705, + 705, 976, 653, 518, 394, 518, 518, 976, 976, 519, + 618, 520, 521, 522, 522, 522, 522, 389, 389, 389, + 389, 976, 976, 390, 976, 976, 515, 516, 516, 516, + + 516, 976, 726, 726, 655, 727, 727, 727, 727, 976, + 976, 302, 525, 525, 525, 525, 976, 976, 976, 396, + 976, 976, 655, 518, 394, 518, 518, 976, 976, 519, + 976, 520, 521, 522, 522, 522, 522, 396, 527, 528, + 528, 528, 528, 976, 759, 759, 659, 760, 760, 760, + 760, 767, 767, 976, 768, 768, 768, 768, 713, 713, + 713, 713, 976, 976, 659, 530, 398, 530, 530, 976, + 976, 531, 976, 532, 533, 534, 534, 534, 534, 530, + 398, 530, 530, 976, 976, 531, 976, 532, 533, 534, + 534, 534, 534, 398, 398, 398, 398, 976, 976, 399, + + 976, 976, 976, 536, 536, 536, 536, 310, 195, 310, + 310, 976, 976, 311, 976, 312, 538, 539, 539, 539, + 539, 310, 195, 310, 310, 976, 976, 311, 976, 312, + 313, 662, 662, 662, 662, 402, 403, 402, 402, 976, + 976, 404, 976, 976, 538, 539, 539, 539, 539, 976, + 976, 976, 663, 648, 648, 648, 648, 976, 775, 775, + 649, 776, 776, 776, 776, 718, 719, 719, 719, 719, + 663, 545, 403, 545, 545, 976, 976, 546, 649, 547, + 548, 549, 549, 549, 549, 398, 398, 398, 398, 976, + 976, 399, 976, 976, 542, 543, 543, 543, 543, 976, + + 780, 780, 665, 781, 781, 781, 781, 976, 976, 313, + 552, 552, 552, 552, 976, 976, 976, 405, 976, 976, + 665, 545, 403, 545, 545, 976, 976, 546, 976, 547, + 548, 549, 549, 549, 549, 405, 669, 669, 669, 669, + 976, 976, 670, 976, 976, 554, 555, 555, 555, 555, + 976, 976, 976, 671, 658, 658, 658, 658, 976, 788, + 788, 659, 789, 789, 789, 789, 860, 860, 860, 860, + 976, 671, 557, 407, 557, 557, 976, 976, 558, 659, + 559, 560, 561, 561, 561, 561, 557, 407, 557, 557, + 976, 976, 558, 976, 559, 560, 561, 561, 561, 561, + + 407, 407, 407, 407, 976, 976, 408, 976, 976, 976, + 563, 563, 563, 563, 324, 208, 324, 324, 976, 976, + 325, 976, 326, 565, 566, 566, 566, 566, 324, 208, + 324, 324, 976, 976, 325, 976, 326, 327, 677, 677, + 677, 677, 678, 679, 678, 678, 976, 976, 680, 976, + 976, 565, 566, 566, 566, 566, 976, 802, 802, 681, + 803, 803, 803, 803, 835, 835, 976, 836, 836, 836, + 836, 862, 862, 862, 862, 976, 976, 681, 572, 412, + 572, 572, 976, 976, 573, 976, 574, 575, 576, 576, + 576, 576, 674, 674, 674, 674, 976, 976, 683, 976, + + 976, 569, 570, 570, 570, 570, 976, 976, 976, 684, + 689, 689, 689, 689, 976, 843, 843, 690, 844, 844, + 844, 844, 727, 727, 727, 727, 976, 684, 572, 412, + 572, 572, 976, 976, 573, 690, 574, 575, 576, 576, + 576, 576, 411, 412, 411, 411, 976, 976, 413, 976, + 976, 976, 579, 579, 579, 579, 976, 851, 851, 414, + 852, 852, 852, 852, 732, 733, 733, 733, 733, 866, + 866, 866, 866, 868, 868, 868, 868, 414, 335, 218, + 335, 335, 976, 976, 336, 976, 337, 338, 584, 584, + 584, 584, 335, 218, 335, 335, 976, 976, 336, 976, + + 337, 338, 584, 584, 584, 584, 586, 587, 587, 587, + 587, 976, 976, 976, 690, 742, 742, 742, 742, 742, + 742, 742, 742, 748, 749, 749, 749, 749, 872, 872, + 872, 872, 690, 589, 420, 589, 589, 976, 976, 590, + 976, 591, 592, 593, 593, 593, 593, 589, 420, 589, + 589, 976, 976, 590, 976, 591, 592, 593, 593, 593, + 593, 420, 420, 420, 420, 976, 976, 421, 976, 976, + 976, 595, 595, 595, 595, 346, 224, 346, 346, 976, + 976, 347, 976, 348, 597, 598, 598, 598, 598, 346, + 224, 346, 346, 976, 976, 347, 976, 348, 349, 693, + + 693, 693, 693, 424, 425, 424, 424, 976, 976, 426, + 976, 976, 597, 598, 598, 598, 598, 976, 976, 976, + 694, 874, 874, 874, 874, 976, 369, 370, 369, 369, + 976, 976, 371, 758, 758, 758, 758, 976, 694, 604, + 425, 604, 604, 372, 976, 605, 976, 606, 607, 608, + 608, 608, 608, 420, 420, 420, 420, 976, 976, 421, + 976, 372, 601, 602, 602, 602, 602, 976, 976, 976, + 696, 758, 758, 758, 758, 976, 976, 349, 611, 611, + 611, 611, 976, 976, 976, 427, 976, 976, 696, 604, + 425, 604, 604, 976, 976, 605, 976, 606, 607, 608, + + 608, 608, 608, 427, 440, 365, 440, 440, 976, 976, + 441, 976, 442, 443, 619, 619, 619, 619, 976, 976, + 976, 620, 760, 760, 760, 760, 766, 766, 766, 766, + 766, 766, 766, 766, 768, 768, 768, 768, 976, 620, + 440, 365, 440, 440, 976, 976, 441, 706, 707, 443, + 708, 708, 708, 708, 369, 370, 369, 369, 976, 976, + 371, 976, 253, 254, 621, 621, 621, 621, 976, 976, + 976, 622, 768, 768, 768, 768, 976, 393, 394, 393, + 393, 976, 976, 395, 776, 776, 776, 776, 976, 622, + 251, 153, 251, 251, 396, 976, 252, 709, 710, 254, + + 711, 711, 711, 711, 365, 365, 365, 365, 976, 976, + 366, 976, 396, 976, 623, 623, 623, 623, 976, 976, + 976, 624, 781, 781, 781, 781, 976, 976, 718, 719, + 719, 719, 719, 976, 976, 976, 861, 976, 976, 624, + 455, 370, 455, 455, 976, 976, 456, 976, 457, 458, + 625, 625, 625, 625, 861, 976, 976, 626, 781, 781, + 781, 781, 976, 402, 403, 402, 402, 976, 976, 404, + 789, 789, 789, 789, 976, 626, 455, 370, 455, 455, + 405, 976, 456, 714, 715, 458, 716, 716, 716, 716, + 628, 628, 628, 628, 976, 976, 629, 976, 405, 976, + + 627, 627, 627, 627, 976, 976, 976, 630, 794, 795, + 795, 795, 795, 878, 878, 878, 878, 880, 880, 880, + 880, 803, 803, 803, 803, 630, 628, 628, 628, 628, + 976, 976, 629, 976, 717, 718, 719, 719, 719, 719, + 721, 628, 721, 721, 976, 976, 722, 976, 723, 724, + 725, 725, 725, 725, 632, 633, 632, 632, 976, 976, + 634, 976, 473, 474, 631, 631, 631, 631, 976, 976, + 976, 635, 808, 809, 809, 809, 809, 884, 884, 884, + 884, 886, 886, 886, 886, 818, 818, 818, 818, 635, + 632, 633, 632, 632, 976, 976, 634, 976, 728, 729, + + 730, 730, 730, 730, 633, 633, 633, 633, 976, 976, + 642, 976, 731, 732, 733, 733, 733, 733, 735, 633, + 735, 735, 976, 976, 736, 976, 737, 738, 739, 739, + 739, 739, 471, 376, 471, 471, 976, 976, 472, 740, + 741, 474, 742, 742, 742, 742, 637, 638, 637, 637, + 976, 976, 639, 976, 277, 278, 636, 636, 636, 636, + 976, 976, 976, 640, 818, 818, 818, 818, 824, 825, + 825, 825, 825, 890, 890, 890, 890, 892, 892, 892, + 892, 640, 637, 638, 637, 637, 976, 976, 639, 976, + 743, 744, 745, 745, 745, 745, 638, 638, 638, 638, + + 976, 976, 746, 976, 747, 748, 749, 749, 749, 749, + 751, 638, 751, 751, 976, 976, 752, 976, 753, 754, + 755, 755, 755, 755, 275, 169, 275, 275, 976, 976, + 276, 756, 757, 278, 758, 758, 758, 758, 633, 633, + 633, 633, 976, 976, 642, 976, 976, 976, 641, 641, + 641, 641, 976, 976, 976, 643, 834, 834, 834, 834, + 834, 834, 834, 834, 836, 836, 836, 836, 842, 842, + 842, 842, 976, 643, 735, 633, 735, 735, 976, 976, + 736, 976, 737, 738, 739, 739, 739, 739, 645, 638, + 645, 645, 976, 976, 646, 976, 488, 489, 644, 644, + + 644, 644, 976, 976, 976, 647, 842, 842, 842, 842, + 844, 844, 844, 844, 844, 844, 844, 844, 852, 852, + 852, 852, 976, 647, 645, 638, 645, 645, 976, 976, + 646, 976, 761, 762, 763, 763, 763, 763, 751, 638, + 751, 751, 976, 976, 752, 976, 753, 754, 755, 755, + 755, 755, 486, 381, 486, 486, 976, 976, 487, 764, + 765, 489, 766, 766, 766, 766, 503, 389, 503, 503, + 976, 976, 504, 976, 505, 506, 650, 650, 650, 650, + 976, 899, 899, 651, 900, 900, 900, 900, 907, 907, + 976, 908, 908, 908, 908, 560, 882, 882, 882, 882, + + 976, 651, 503, 389, 503, 503, 976, 976, 504, 769, + 770, 506, 771, 771, 771, 771, 393, 394, 393, 393, + 976, 976, 395, 976, 301, 302, 652, 652, 652, 652, + 976, 915, 915, 653, 916, 916, 916, 916, 976, 424, + 425, 424, 424, 923, 923, 426, 924, 924, 924, 924, + 976, 653, 299, 189, 299, 299, 427, 976, 300, 772, + 773, 302, 774, 774, 774, 774, 389, 389, 389, 389, + 976, 976, 390, 976, 427, 976, 654, 654, 654, 654, + 976, 925, 926, 655, 927, 927, 927, 927, 976, 976, + 474, 742, 742, 742, 742, 976, 976, 976, 635, 976, + + 976, 655, 518, 394, 518, 518, 976, 976, 519, 976, + 520, 521, 656, 656, 656, 656, 635, 928, 929, 657, + 930, 930, 930, 930, 976, 884, 884, 884, 884, 931, + 931, 976, 932, 932, 932, 932, 976, 657, 518, 394, + 518, 518, 976, 976, 519, 777, 778, 521, 779, 779, + 779, 779, 530, 398, 530, 530, 976, 976, 531, 976, + 532, 533, 660, 660, 660, 660, 976, 933, 934, 661, + 935, 935, 935, 935, 327, 888, 888, 888, 888, 936, + 937, 976, 938, 938, 938, 938, 976, 661, 530, 398, + 530, 530, 976, 976, 531, 782, 783, 533, 784, 784, + + 784, 784, 402, 403, 402, 402, 976, 976, 404, 976, + 312, 313, 662, 662, 662, 662, 976, 976, 976, 663, + 976, 890, 890, 890, 890, 939, 939, 976, 940, 940, + 940, 940, 575, 894, 894, 894, 894, 663, 310, 195, + 310, 310, 976, 976, 311, 785, 786, 313, 787, 787, + 787, 787, 398, 398, 398, 398, 976, 976, 399, 976, + 976, 976, 664, 664, 664, 664, 976, 941, 942, 665, + 943, 943, 943, 943, 976, 976, 278, 758, 758, 758, + 758, 976, 976, 976, 383, 976, 976, 665, 545, 403, + 545, 545, 976, 976, 546, 976, 547, 548, 666, 666, + + 666, 666, 383, 944, 945, 667, 946, 946, 946, 946, + 900, 900, 900, 900, 900, 900, 900, 900, 908, 908, + 908, 908, 976, 667, 545, 403, 545, 545, 976, 976, + 546, 790, 791, 548, 792, 792, 792, 792, 669, 669, + 669, 669, 976, 976, 670, 976, 976, 976, 668, 668, + 668, 668, 976, 976, 976, 671, 860, 860, 860, 860, + 976, 976, 976, 861, 916, 916, 916, 916, 924, 924, + 924, 924, 976, 671, 669, 669, 669, 669, 976, 976, + 670, 861, 793, 794, 795, 795, 795, 795, 797, 669, + 797, 797, 976, 976, 798, 976, 799, 800, 801, 801, + + 801, 801, 673, 674, 673, 673, 976, 976, 675, 976, + 559, 560, 672, 672, 672, 672, 976, 976, 976, 676, + 878, 878, 878, 878, 976, 976, 976, 879, 924, 924, + 924, 924, 927, 927, 927, 927, 976, 676, 673, 674, + 673, 673, 976, 976, 675, 879, 804, 805, 806, 806, + 806, 806, 674, 674, 674, 674, 976, 976, 683, 976, + 807, 808, 809, 809, 809, 809, 811, 674, 811, 811, + 976, 976, 812, 976, 813, 814, 815, 815, 815, 815, + 557, 407, 557, 557, 976, 976, 558, 816, 817, 560, + 818, 818, 818, 818, 678, 679, 678, 678, 976, 976, + + 680, 976, 326, 327, 677, 677, 677, 677, 976, 976, + 976, 681, 880, 880, 880, 880, 976, 976, 976, 881, + 927, 927, 927, 927, 930, 930, 930, 930, 976, 681, + 678, 679, 678, 678, 976, 976, 680, 881, 819, 820, + 821, 821, 821, 821, 679, 679, 679, 679, 976, 976, + 822, 976, 823, 824, 825, 825, 825, 825, 827, 679, + 827, 827, 976, 976, 828, 976, 829, 830, 831, 831, + 831, 831, 324, 208, 324, 324, 976, 976, 325, 832, + 833, 327, 834, 834, 834, 834, 674, 674, 674, 674, + 976, 976, 683, 976, 976, 976, 682, 682, 682, 682, + + 976, 976, 976, 684, 886, 886, 886, 886, 976, 976, + 976, 887, 930, 930, 930, 930, 932, 932, 932, 932, + 976, 684, 811, 674, 811, 811, 976, 976, 812, 887, + 813, 814, 815, 815, 815, 815, 686, 679, 686, 686, + 976, 976, 687, 976, 574, 575, 685, 685, 685, 685, + 976, 976, 976, 688, 892, 892, 892, 892, 976, 976, + 976, 893, 935, 935, 935, 935, 935, 935, 935, 935, + 976, 688, 686, 679, 686, 686, 976, 976, 687, 893, + 837, 838, 839, 839, 839, 839, 827, 679, 827, 827, + 976, 976, 828, 976, 829, 830, 831, 831, 831, 831, + + 572, 412, 572, 572, 976, 976, 573, 840, 841, 575, + 842, 842, 842, 842, 589, 420, 589, 589, 976, 976, + 590, 976, 591, 592, 691, 691, 691, 691, 976, 976, + 976, 692, 938, 938, 938, 938, 938, 938, 938, 938, + 940, 940, 940, 940, 940, 940, 940, 940, 976, 692, + 589, 420, 589, 589, 976, 976, 590, 845, 846, 592, + 847, 847, 847, 847, 424, 425, 424, 424, 976, 976, + 426, 976, 348, 349, 693, 693, 693, 693, 976, 976, + 976, 694, 943, 943, 943, 943, 943, 943, 943, 943, + 946, 946, 946, 946, 946, 946, 946, 946, 976, 694, + + 346, 224, 346, 346, 976, 976, 347, 848, 849, 349, + 850, 850, 850, 850, 420, 420, 420, 420, 976, 976, + 421, 976, 976, 976, 695, 695, 695, 695, 976, 976, + 962, 696, 963, 962, 976, 976, 964, 976, 489, 766, + 766, 766, 766, 976, 976, 976, 647, 976, 976, 696, + 604, 425, 604, 604, 976, 976, 605, 976, 606, 607, + 697, 697, 697, 697, 647, 976, 976, 698, 965, 966, + 967, 965, 976, 962, 968, 962, 962, 976, 962, 964, + 962, 962, 976, 976, 964, 698, 604, 425, 604, 604, + 976, 976, 605, 853, 854, 607, 855, 855, 855, 855, + + 440, 365, 440, 440, 976, 976, 441, 976, 442, 443, + 708, 708, 708, 708, 440, 365, 440, 440, 976, 976, + 441, 976, 442, 443, 708, 708, 708, 708, 251, 153, + 251, 251, 976, 976, 252, 976, 253, 254, 711, 711, + 711, 711, 251, 153, 251, 251, 976, 976, 252, 976, + 253, 254, 711, 711, 711, 711, 365, 365, 365, 365, + 976, 976, 366, 976, 976, 976, 713, 713, 713, 713, + 455, 370, 455, 455, 976, 976, 456, 976, 457, 458, + 716, 716, 716, 716, 455, 370, 455, 455, 976, 976, + 456, 976, 457, 458, 716, 716, 716, 716, 721, 628, + + 721, 721, 976, 976, 722, 976, 723, 724, 725, 725, + 725, 725, 721, 628, 721, 721, 976, 976, 722, 976, + 723, 724, 725, 725, 725, 725, 628, 628, 628, 628, + 976, 976, 629, 976, 976, 976, 727, 727, 727, 727, + 471, 376, 471, 471, 976, 976, 472, 976, 473, 729, + 730, 730, 730, 730, 471, 376, 471, 471, 976, 976, + 472, 976, 473, 474, 864, 864, 864, 864, 632, 633, + 632, 632, 976, 976, 634, 976, 976, 729, 730, 730, + 730, 730, 976, 976, 976, 865, 794, 795, 795, 795, + 795, 976, 976, 976, 879, 927, 927, 927, 927, 976, + + 976, 976, 881, 865, 628, 628, 628, 628, 976, 976, + 629, 976, 879, 732, 733, 733, 733, 733, 976, 976, + 881, 867, 935, 935, 935, 935, 976, 976, 970, 887, + 970, 970, 976, 976, 971, 976, 976, 976, 976, 867, + 735, 633, 735, 735, 976, 976, 736, 887, 737, 738, + 739, 739, 739, 739, 735, 633, 735, 735, 976, 976, + 736, 976, 737, 738, 739, 739, 739, 739, 275, 169, + 275, 275, 976, 976, 276, 976, 277, 744, 745, 745, + 745, 745, 275, 169, 275, 275, 976, 976, 276, 976, + 277, 278, 870, 870, 870, 870, 637, 638, 637, 637, + + 976, 976, 639, 976, 976, 744, 745, 745, 745, 745, + 976, 976, 976, 871, 943, 943, 943, 943, 976, 976, + 976, 893, 965, 959, 967, 965, 976, 976, 968, 976, + 976, 871, 751, 638, 751, 751, 976, 976, 752, 893, + 753, 754, 755, 755, 755, 755, 633, 633, 633, 633, + 976, 976, 642, 976, 976, 748, 749, 749, 749, 749, + 976, 976, 962, 873, 963, 962, 976, 976, 964, 965, + 966, 967, 965, 976, 970, 968, 970, 970, 976, 976, + 971, 873, 751, 638, 751, 751, 976, 976, 752, 976, + 753, 754, 755, 755, 755, 755, 633, 633, 633, 633, + + 976, 976, 642, 976, 976, 976, 760, 760, 760, 760, + 486, 381, 486, 486, 976, 976, 487, 976, 488, 762, + 763, 763, 763, 763, 486, 381, 486, 486, 976, 976, + 487, 976, 488, 489, 876, 876, 876, 876, 645, 638, + 645, 645, 976, 976, 646, 976, 976, 762, 763, 763, + 763, 763, 976, 976, 976, 877, 973, 959, 974, 973, + 976, 970, 975, 970, 970, 976, 970, 971, 970, 970, + 976, 976, 971, 877, 503, 389, 503, 503, 976, 976, + 504, 976, 505, 506, 771, 771, 771, 771, 503, 389, + 503, 503, 976, 976, 504, 976, 505, 506, 771, 771, + + 771, 771, 299, 189, 299, 299, 976, 976, 300, 976, + 301, 302, 774, 774, 774, 774, 299, 189, 299, 299, + 976, 976, 300, 976, 301, 302, 774, 774, 774, 774, + 389, 389, 389, 389, 976, 976, 390, 976, 976, 976, + 776, 776, 776, 776, 518, 394, 518, 518, 976, 976, + 519, 976, 520, 521, 779, 779, 779, 779, 518, 394, + 518, 518, 976, 976, 519, 976, 520, 521, 779, 779, + 779, 779, 530, 398, 530, 530, 976, 976, 531, 976, + 532, 533, 784, 784, 784, 784, 530, 398, 530, 530, + 976, 976, 531, 976, 532, 533, 784, 784, 784, 784, + + 310, 195, 310, 310, 976, 976, 311, 976, 312, 313, + 787, 787, 787, 787, 310, 195, 310, 310, 976, 976, + 311, 976, 312, 313, 787, 787, 787, 787, 398, 398, + 398, 398, 976, 976, 399, 976, 976, 976, 789, 789, + 789, 789, 545, 403, 545, 545, 976, 976, 546, 976, + 547, 548, 792, 792, 792, 792, 545, 403, 545, 545, + 976, 976, 546, 976, 547, 548, 792, 792, 792, 792, + 797, 669, 797, 797, 976, 976, 798, 976, 799, 800, + 801, 801, 801, 801, 797, 669, 797, 797, 976, 976, + 798, 976, 799, 800, 801, 801, 801, 801, 669, 669, + + 669, 669, 976, 976, 670, 976, 976, 976, 803, 803, + 803, 803, 557, 407, 557, 557, 976, 976, 558, 976, + 559, 805, 806, 806, 806, 806, 557, 407, 557, 557, + 976, 976, 558, 976, 559, 560, 882, 882, 882, 882, + 673, 674, 673, 673, 976, 976, 675, 976, 976, 805, + 806, 806, 806, 806, 976, 976, 976, 883, 560, 818, + 818, 818, 818, 976, 976, 976, 676, 973, 959, 974, + 973, 976, 976, 975, 976, 883, 669, 669, 669, 669, + 976, 976, 670, 976, 676, 808, 809, 809, 809, 809, + 976, 976, 976, 885, 973, 959, 974, 973, 976, 976, + + 975, 973, 966, 974, 973, 976, 976, 975, 976, 976, + 976, 885, 811, 674, 811, 811, 976, 976, 812, 976, + 813, 814, 815, 815, 815, 815, 811, 674, 811, 811, + 976, 976, 812, 976, 813, 814, 815, 815, 815, 815, + 324, 208, 324, 324, 976, 976, 325, 976, 326, 820, + 821, 821, 821, 821, 324, 208, 324, 324, 976, 976, + 325, 976, 326, 327, 888, 888, 888, 888, 678, 679, + 678, 678, 976, 976, 680, 976, 976, 820, 821, 821, + 821, 821, 976, 976, 976, 889, 973, 959, 974, 973, + 976, 976, 975, 976, 976, 976, 976, 976, 976, 976, + + 976, 976, 976, 889, 827, 679, 827, 827, 976, 976, + 828, 976, 829, 830, 831, 831, 831, 831, 674, 674, + 674, 674, 976, 976, 683, 976, 976, 824, 825, 825, + 825, 825, 976, 976, 976, 891, 976, 976, 976, 976, + 976, 976, 327, 834, 834, 834, 834, 976, 976, 976, + 414, 976, 976, 891, 827, 679, 827, 827, 976, 976, + 828, 976, 829, 830, 831, 831, 831, 831, 414, 674, + 674, 674, 674, 976, 976, 683, 976, 976, 976, 836, + 836, 836, 836, 572, 412, 572, 572, 976, 976, 573, + 976, 574, 838, 839, 839, 839, 839, 572, 412, 572, + + 572, 976, 976, 573, 976, 574, 575, 894, 894, 894, + 894, 686, 679, 686, 686, 976, 976, 687, 976, 976, + 838, 839, 839, 839, 839, 976, 976, 976, 895, 575, + 842, 842, 842, 842, 976, 976, 976, 688, 976, 976, + 976, 976, 976, 976, 976, 976, 895, 976, 976, 976, + 976, 976, 976, 976, 976, 688, 589, 420, 589, 589, + 976, 976, 590, 976, 591, 592, 847, 847, 847, 847, + 589, 420, 589, 589, 976, 976, 590, 976, 591, 592, + 847, 847, 847, 847, 346, 224, 346, 346, 976, 976, + 347, 976, 348, 349, 850, 850, 850, 850, 346, 224, + + 346, 346, 976, 976, 347, 976, 348, 349, 850, 850, + 850, 850, 420, 420, 420, 420, 976, 976, 421, 976, + 976, 976, 852, 852, 852, 852, 604, 425, 604, 604, + 976, 976, 605, 976, 606, 607, 855, 855, 855, 855, + 604, 425, 604, 604, 976, 976, 605, 976, 606, 607, + 855, 855, 855, 855, 721, 628, 721, 721, 976, 976, + 722, 976, 723, 724, 862, 862, 862, 862, 976, 976, + 976, 863, 976, 976, 976, 976, 976, 976, 976, 976, + 976, 976, 976, 976, 976, 976, 976, 976, 976, 863, + 721, 628, 721, 721, 976, 976, 722, 901, 902, 724, + + 903, 903, 903, 903, 632, 633, 632, 632, 976, 976, + 634, 976, 473, 474, 864, 864, 864, 864, 976, 976, + 976, 865, 976, 976, 976, 976, 976, 976, 976, 976, + 976, 976, 976, 976, 976, 976, 976, 976, 976, 865, + 471, 376, 471, 471, 976, 976, 472, 904, 905, 474, + 906, 906, 906, 906, 628, 628, 628, 628, 976, 976, + 629, 976, 976, 976, 866, 866, 866, 866, 976, 976, + 976, 867, 976, 976, 976, 976, 976, 976, 560, 930, + 930, 930, 930, 976, 976, 976, 676, 976, 976, 867, + 735, 633, 735, 735, 976, 976, 736, 976, 737, 738, + + 868, 868, 868, 868, 676, 976, 976, 869, 976, 976, + 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, + 976, 976, 976, 976, 976, 869, 735, 633, 735, 735, + 976, 976, 736, 909, 910, 738, 911, 911, 911, 911, + 637, 638, 637, 637, 976, 976, 639, 976, 277, 278, + 870, 870, 870, 870, 976, 976, 976, 871, 976, 976, + 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, + 976, 976, 976, 976, 976, 871, 275, 169, 275, 275, + 976, 976, 276, 912, 913, 278, 914, 914, 914, 914, + 633, 633, 633, 633, 976, 976, 642, 976, 976, 976, + + 872, 872, 872, 872, 976, 976, 976, 873, 976, 976, + 976, 976, 976, 976, 327, 938, 938, 938, 938, 976, + 976, 976, 414, 976, 976, 873, 751, 638, 751, 751, + 976, 976, 752, 976, 753, 754, 874, 874, 874, 874, + 414, 976, 976, 875, 976, 976, 976, 976, 976, 976, + 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, + 976, 875, 751, 638, 751, 751, 976, 976, 752, 917, + 918, 754, 919, 919, 919, 919, 645, 638, 645, 645, + 976, 976, 646, 976, 488, 489, 876, 876, 876, 876, + 976, 976, 976, 877, 976, 976, 976, 976, 976, 976, + + 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, + 976, 877, 486, 381, 486, 486, 976, 976, 487, 920, + 921, 489, 922, 922, 922, 922, 632, 633, 632, 632, + 976, 976, 634, 470, 473, 976, 976, 976, 976, 976, + 976, 976, 976, 635, 575, 946, 946, 946, 946, 976, + 976, 976, 688, 976, 976, 976, 976, 976, 976, 976, + 976, 635, 628, 628, 628, 628, 976, 976, 629, 976, + 688, 976, 908, 908, 908, 908, 637, 638, 637, 637, + 976, 976, 639, 274, 277, 976, 976, 976, 976, 976, + 976, 976, 976, 383, 976, 976, 976, 976, 976, 976, + + 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, + 976, 383, 633, 633, 633, 633, 976, 976, 642, 976, + 976, 976, 916, 916, 916, 916, 645, 638, 645, 645, + 976, 976, 646, 485, 488, 976, 976, 976, 976, 976, + 976, 976, 976, 647, 976, 976, 976, 976, 976, 976, + 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, + 976, 647, 669, 669, 669, 669, 976, 976, 670, 976, + 976, 976, 932, 932, 932, 932, 46, 46, 46, 46, + 46, 46, 46, 46, 81, 81, 81, 81, 81, 81, + 81, 81, 109, 109, 109, 109, 109, 109, 109, 109, + + 119, 119, 119, 119, 119, 119, 119, 119, 130, 130, + 976, 130, 130, 130, 130, 130, 131, 131, 976, 131, + 131, 131, 131, 131, 134, 976, 976, 134, 135, 976, + 976, 135, 172, 976, 976, 172, 976, 172, 172, 172, + 173, 173, 976, 173, 173, 173, 173, 173, 211, 976, + 976, 211, 976, 211, 211, 212, 212, 976, 212, 212, + 212, 212, 212, 227, 227, 976, 227, 976, 227, 227, + 227, 230, 230, 976, 230, 230, 230, 230, 230, 250, + 250, 250, 250, 250, 250, 250, 250, 263, 263, 263, + 263, 263, 263, 263, 263, 269, 269, 976, 976, 269, + + 269, 274, 274, 274, 274, 274, 274, 274, 274, 287, + 287, 287, 287, 287, 287, 287, 287, 298, 298, 298, + 298, 298, 298, 298, 298, 309, 309, 309, 309, 309, + 309, 309, 309, 323, 323, 323, 323, 323, 323, 323, + 323, 212, 212, 976, 212, 212, 212, 212, 212, 334, + 334, 334, 334, 334, 334, 334, 334, 345, 345, 345, + 345, 345, 345, 345, 345, 227, 227, 976, 227, 976, + 227, 227, 227, 230, 230, 976, 230, 230, 230, 230, + 230, 131, 131, 976, 131, 131, 131, 131, 131, 134, + 976, 976, 134, 250, 250, 250, 250, 250, 250, 250, + + 250, 263, 263, 263, 263, 263, 263, 263, 263, 269, + 269, 976, 976, 269, 269, 274, 274, 274, 274, 274, + 274, 274, 274, 439, 439, 439, 439, 439, 439, 439, + 439, 454, 454, 454, 454, 454, 454, 454, 454, 470, + 470, 470, 470, 470, 470, 470, 470, 485, 485, 485, + 485, 485, 485, 485, 485, 287, 287, 287, 287, 287, + 287, 287, 287, 502, 502, 502, 502, 502, 502, 502, + 502, 298, 298, 298, 298, 298, 298, 298, 298, 517, + 517, 517, 517, 517, 517, 517, 517, 529, 529, 529, + 529, 529, 529, 529, 529, 309, 309, 309, 309, 309, + + 309, 309, 309, 544, 544, 544, 544, 544, 544, 544, + 544, 556, 556, 556, 556, 556, 556, 556, 556, 323, + 323, 323, 323, 323, 323, 323, 323, 571, 571, 571, + 571, 571, 571, 571, 571, 334, 334, 334, 334, 334, + 334, 334, 334, 588, 588, 588, 588, 588, 588, 588, + 588, 345, 345, 345, 345, 345, 345, 345, 345, 603, + 603, 603, 603, 603, 603, 603, 603, 131, 131, 976, + 131, 131, 131, 131, 131, 134, 976, 976, 134, 439, + 439, 439, 439, 439, 439, 439, 439, 250, 250, 250, + 250, 250, 250, 250, 250, 454, 454, 454, 454, 454, + + 454, 454, 454, 470, 470, 470, 470, 470, 470, 470, + 470, 274, 274, 274, 274, 274, 274, 274, 274, 485, + 485, 485, 485, 485, 485, 485, 485, 287, 287, 287, + 287, 287, 287, 287, 287, 502, 502, 502, 502, 502, + 502, 502, 502, 298, 298, 298, 298, 298, 298, 298, + 298, 517, 517, 517, 517, 517, 517, 517, 517, 529, + 529, 529, 529, 529, 529, 529, 529, 309, 309, 309, + 309, 309, 309, 309, 309, 544, 544, 544, 544, 544, + 544, 544, 544, 556, 556, 556, 556, 556, 556, 556, + 556, 323, 323, 323, 323, 323, 323, 323, 323, 571, + + 571, 571, 571, 571, 571, 571, 571, 334, 334, 334, + 334, 334, 334, 334, 334, 588, 588, 588, 588, 588, + 588, 588, 588, 345, 345, 345, 345, 345, 345, 345, + 345, 603, 603, 603, 603, 603, 603, 603, 603, 131, + 131, 976, 131, 131, 131, 131, 131, 134, 976, 976, + 134, 439, 439, 439, 439, 439, 439, 439, 439, 250, + 250, 250, 250, 250, 250, 250, 250, 454, 454, 454, + 454, 454, 454, 454, 454, 720, 720, 720, 720, 720, + 720, 720, 720, 470, 470, 470, 470, 470, 470, 470, + 470, 734, 734, 734, 734, 734, 734, 734, 734, 274, + + 274, 274, 274, 274, 274, 274, 274, 750, 750, 750, + 750, 750, 750, 750, 750, 485, 485, 485, 485, 485, + 485, 485, 485, 502, 502, 502, 502, 502, 502, 502, + 502, 298, 298, 298, 298, 298, 298, 298, 298, 517, + 517, 517, 517, 517, 517, 517, 517, 529, 529, 529, + 529, 529, 529, 529, 529, 309, 309, 309, 309, 309, + 309, 309, 309, 544, 544, 544, 544, 544, 544, 544, + 544, 796, 796, 796, 796, 796, 796, 796, 796, 556, + 556, 556, 556, 556, 556, 556, 556, 810, 810, 810, + 810, 810, 810, 810, 810, 323, 323, 323, 323, 323, + + 323, 323, 323, 826, 826, 826, 826, 826, 826, 826, + 826, 571, 571, 571, 571, 571, 571, 571, 571, 588, + 588, 588, 588, 588, 588, 588, 588, 345, 345, 345, + 345, 345, 345, 345, 345, 603, 603, 603, 603, 603, + 603, 603, 603, 131, 131, 976, 131, 131, 131, 131, + 131, 134, 976, 976, 134, 439, 439, 439, 439, 439, + 439, 439, 439, 250, 250, 250, 250, 250, 250, 250, + 250, 454, 454, 454, 454, 454, 454, 454, 454, 720, + 720, 720, 720, 720, 720, 720, 720, 470, 470, 470, + 470, 470, 470, 470, 470, 734, 734, 734, 734, 734, + + 734, 734, 734, 274, 274, 274, 274, 274, 274, 274, + 274, 750, 750, 750, 750, 750, 750, 750, 750, 485, + 485, 485, 485, 485, 485, 485, 485, 502, 502, 502, + 502, 502, 502, 502, 502, 298, 298, 298, 298, 298, + 298, 298, 298, 517, 517, 517, 517, 517, 517, 517, + 517, 529, 529, 529, 529, 529, 529, 529, 529, 309, + 309, 309, 309, 309, 309, 309, 309, 544, 544, 544, + 544, 544, 544, 544, 544, 796, 796, 796, 796, 796, + 796, 796, 796, 556, 556, 556, 556, 556, 556, 556, + 556, 810, 810, 810, 810, 810, 810, 810, 810, 323, + + 323, 323, 323, 323, 323, 323, 323, 826, 826, 826, + 826, 826, 826, 826, 826, 571, 571, 571, 571, 571, + 571, 571, 571, 588, 588, 588, 588, 588, 588, 588, + 588, 345, 345, 345, 345, 345, 345, 345, 345, 603, + 603, 603, 603, 603, 603, 603, 603, 131, 131, 976, + 131, 131, 131, 131, 131, 134, 976, 976, 134, 720, + 720, 720, 720, 720, 720, 720, 720, 470, 470, 470, + 470, 470, 470, 470, 470, 734, 734, 734, 734, 734, + 734, 734, 734, 274, 274, 274, 274, 274, 274, 274, + 274, 750, 750, 750, 750, 750, 750, 750, 750, 485, + + 485, 485, 485, 485, 485, 485, 485, 958, 958, 958, + 958, 958, 958, 958, 958, 969, 969, 976, 969, 969, + 969, 969, 969, 972, 972, 972, 972, 972, 972, 972, + 972, 45, 976, 976, 976, 976, 976, 976, 976, 976, + 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, + 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, + 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, + 976, 976, 976, 976, 976, 976, 976, 976, 976, 976 + } ; + +static yyconst flex_int16_t yy_chk[8681] = + { 0, + 0, 1, 1, 1, 1, 0, 1039, 1, 2, 2, + 2, 2, 122, 122, 2, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 5, 5, 5, 5, 61, 61, 5, + 9, 9, 9, 9, 9, 9, 66, 66, 66, 66, + 66, 5, 5, 10, 10, 10, 10, 10, 10, 1017, + 5, 6, 6, 6, 6, 229, 229, 6, 11, 11, + + 11, 11, 11, 11, 67, 67, 67, 67, 74, 6, + 6, 12, 12, 12, 12, 12, 12, 1014, 6, 7, + 7, 7, 7, 428, 74, 7, 428, 7, 7, 7, + 7, 7, 7, 69, 69, 69, 69, 69, 7, 13, + 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, + 14, 15, 15, 15, 15, 15, 15, 16, 16, 16, + 16, 16, 16, 17, 17, 17, 17, 354, 17, 17, + 18, 18, 18, 18, 1012, 18, 18, 70, 70, 70, + 70, 354, 17, 19, 19, 19, 19, 19, 19, 18, + 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, + + 21, 21, 22, 22, 22, 22, 22, 22, 23, 23, + 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, + 25, 25, 25, 25, 25, 25, 267, 39, 39, 39, + 39, 25, 39, 39, 40, 40, 40, 40, 49, 40, + 40, 133, 267, 25, 1006, 25, 26, 26, 26, 26, + 26, 26, 47, 856, 47, 47, 856, 26, 47, 39, + 133, 49, 41, 41, 41, 41, 40, 41, 41, 26, + 950, 26, 27, 27, 27, 27, 27, 27, 235, 42, + 42, 42, 42, 27, 42, 42, 230, 230, 71, 71, + 71, 71, 71, 235, 41, 27, 71, 27, 28, 28, + + 28, 28, 28, 28, 72, 72, 72, 72, 950, 28, + 999, 42, 231, 231, 71, 75, 75, 75, 75, 947, + 465, 28, 947, 28, 29, 29, 29, 29, 29, 29, + 77, 77, 77, 77, 994, 29, 465, 43, 43, 43, + 43, 43, 43, 79, 79, 79, 79, 29, 43, 29, + 30, 30, 30, 30, 30, 30, 78, 78, 78, 78, + 78, 30, 952, 44, 44, 44, 44, 44, 44, 86, + 86, 86, 86, 30, 44, 30, 31, 31, 31, 31, + 31, 31, 85, 85, 85, 85, 85, 31, 76, 76, + 76, 76, 83, 949, 83, 83, 432, 83, 83, 31, + + 432, 31, 32, 32, 32, 32, 32, 32, 76, 89, + 89, 89, 89, 32, 87, 87, 87, 87, 87, 948, + 699, 898, 87, 612, 76, 32, 699, 32, 33, 33, + 33, 33, 897, 33, 33, 88, 88, 88, 88, 88, + 87, 91, 91, 91, 91, 91, 612, 33, 92, 92, + 92, 92, 94, 94, 94, 94, 94, 901, 901, 33, + 292, 33, 34, 34, 34, 34, 859, 34, 34, 95, + 95, 95, 95, 100, 100, 100, 100, 100, 292, 902, + 902, 34, 101, 101, 101, 101, 102, 102, 102, 102, + 102, 904, 904, 34, 102, 34, 35, 35, 35, 35, + + 35, 35, 103, 103, 103, 103, 857, 35, 104, 104, + 104, 104, 102, 105, 105, 105, 105, 905, 905, 35, + 703, 35, 36, 36, 36, 36, 36, 36, 104, 107, + 107, 107, 107, 36, 106, 106, 106, 106, 106, 113, + 113, 113, 113, 113, 104, 36, 702, 36, 37, 37, + 37, 37, 37, 37, 339, 111, 700, 111, 111, 37, + 111, 111, 114, 114, 114, 114, 116, 116, 116, 116, + 116, 37, 339, 37, 38, 38, 38, 38, 38, 38, + 117, 117, 117, 117, 616, 38, 111, 120, 111, 120, + 120, 466, 128, 120, 128, 128, 444, 38, 128, 38, + + 68, 68, 68, 68, 459, 615, 68, 466, 953, 68, + 68, 68, 68, 68, 444, 909, 909, 68, 125, 125, + 125, 125, 459, 126, 126, 126, 126, 127, 127, 127, + 127, 150, 150, 150, 150, 68, 73, 73, 73, 73, + 896, 614, 73, 126, 896, 953, 73, 73, 73, 73, + 152, 152, 152, 152, 152, 910, 910, 155, 155, 126, + 155, 155, 155, 155, 912, 912, 73, 156, 156, 156, + 156, 157, 157, 157, 157, 157, 913, 913, 613, 157, + 498, 507, 73, 80, 80, 80, 80, 522, 433, 80, + 917, 917, 80, 80, 80, 80, 80, 157, 498, 507, + + 80, 158, 158, 158, 158, 522, 159, 159, 158, 159, + 159, 159, 159, 164, 164, 164, 164, 429, 80, 90, + 90, 90, 90, 918, 918, 90, 158, 534, 90, 90, + 90, 90, 90, 955, 549, 161, 90, 161, 161, 161, + 161, 163, 163, 163, 163, 534, 362, 163, 166, 166, + 166, 166, 549, 584, 90, 93, 93, 93, 93, 920, + 920, 93, 593, 955, 93, 93, 93, 93, 93, 921, + 921, 584, 93, 168, 168, 168, 168, 168, 171, 171, + 593, 171, 171, 171, 171, 176, 176, 176, 176, 956, + 93, 96, 96, 96, 96, 361, 956, 96, 360, 359, + + 96, 96, 96, 96, 96, 358, 357, 173, 96, 173, + 173, 355, 173, 173, 174, 246, 174, 174, 245, 174, + 174, 180, 180, 180, 180, 608, 96, 108, 108, 108, + 108, 244, 708, 108, 716, 243, 108, 108, 108, 108, + 108, 725, 739, 608, 108, 177, 177, 177, 177, 177, + 708, 242, 716, 177, 178, 178, 178, 178, 240, 725, + 739, 178, 108, 115, 115, 115, 115, 239, 238, 115, + 237, 177, 115, 115, 115, 115, 115, 149, 147, 178, + 115, 179, 179, 146, 179, 179, 179, 179, 182, 182, + 182, 182, 182, 186, 186, 186, 186, 145, 115, 118, + + 118, 118, 118, 144, 143, 118, 141, 140, 118, 118, + 118, 118, 118, 139, 185, 185, 118, 185, 185, 185, + 185, 188, 188, 188, 188, 188, 191, 191, 137, 191, + 191, 191, 191, 136, 118, 153, 153, 153, 153, 132, + 131, 153, 129, 153, 153, 153, 153, 153, 153, 154, + 154, 154, 154, 123, 755, 154, 112, 154, 154, 154, + 154, 154, 154, 162, 162, 162, 162, 97, 84, 162, + 65, 162, 755, 162, 162, 162, 162, 169, 169, 169, + 169, 64, 63, 169, 62, 169, 169, 169, 169, 169, + 169, 170, 170, 170, 170, 60, 59, 170, 58, 170, + + 170, 170, 170, 170, 170, 183, 183, 183, 183, 57, + 56, 183, 55, 183, 183, 183, 183, 183, 183, 184, + 184, 184, 184, 54, 53, 184, 51, 184, 184, 184, + 184, 184, 184, 189, 189, 189, 189, 45, 0, 189, + 0, 189, 189, 189, 189, 189, 189, 190, 190, 190, + 190, 0, 0, 190, 0, 190, 190, 190, 190, 190, + 190, 192, 192, 192, 192, 194, 194, 194, 194, 194, + 195, 195, 195, 195, 0, 0, 195, 0, 195, 195, + 195, 195, 195, 195, 196, 196, 196, 196, 0, 0, + 196, 0, 196, 196, 196, 196, 196, 196, 197, 197, + + 0, 197, 197, 197, 197, 199, 199, 199, 199, 200, + 200, 200, 200, 200, 0, 0, 771, 200, 201, 201, + 201, 201, 779, 202, 202, 201, 202, 202, 202, 202, + 203, 203, 203, 203, 771, 200, 205, 205, 205, 205, + 779, 0, 0, 201, 207, 207, 207, 207, 207, 208, + 208, 208, 208, 0, 0, 208, 0, 208, 208, 208, + 208, 208, 208, 209, 209, 209, 209, 784, 0, 209, + 792, 209, 209, 209, 209, 209, 209, 210, 210, 0, + 210, 210, 210, 210, 212, 784, 212, 212, 792, 212, + 212, 213, 0, 213, 213, 0, 213, 213, 215, 215, + + 215, 215, 217, 217, 217, 217, 217, 220, 220, 0, + 220, 220, 220, 220, 801, 212, 0, 212, 221, 221, + 221, 221, 213, 815, 213, 216, 216, 216, 216, 0, + 0, 216, 801, 0, 216, 216, 216, 216, 216, 0, + 0, 815, 216, 223, 223, 223, 223, 223, 226, 226, + 831, 226, 226, 226, 226, 233, 233, 233, 233, 0, + 216, 218, 218, 218, 218, 0, 0, 218, 831, 218, + 218, 218, 218, 218, 218, 219, 219, 219, 219, 847, + 0, 219, 0, 219, 219, 219, 219, 219, 219, 222, + 222, 222, 222, 0, 0, 222, 0, 847, 222, 222, + + 222, 222, 222, 855, 0, 228, 222, 228, 228, 0, + 0, 228, 247, 247, 247, 247, 247, 248, 248, 248, + 248, 855, 0, 0, 222, 224, 224, 224, 224, 0, + 0, 224, 0, 224, 224, 224, 224, 224, 224, 225, + 225, 225, 225, 0, 0, 225, 0, 225, 225, 225, + 225, 225, 225, 249, 249, 249, 249, 0, 0, 249, + 0, 0, 249, 249, 249, 249, 249, 0, 0, 0, + 249, 254, 254, 254, 254, 256, 256, 256, 256, 258, + 258, 258, 258, 259, 259, 259, 259, 0, 249, 250, + 250, 250, 250, 0, 0, 250, 0, 250, 250, 250, + + 250, 250, 250, 251, 251, 251, 251, 0, 0, 251, + 0, 251, 251, 251, 251, 251, 251, 255, 255, 255, + 255, 0, 0, 255, 260, 260, 260, 260, 262, 262, + 262, 262, 0, 0, 255, 0, 0, 261, 261, 261, + 261, 269, 269, 269, 269, 0, 0, 269, 272, 272, + 272, 272, 255, 257, 257, 257, 257, 261, 0, 257, + 0, 0, 0, 257, 257, 257, 257, 271, 271, 271, + 271, 271, 0, 261, 263, 263, 263, 263, 957, 957, + 263, 0, 263, 957, 263, 263, 263, 263, 264, 264, + 264, 264, 958, 958, 264, 0, 264, 958, 264, 264, + + 264, 264, 273, 273, 273, 273, 0, 0, 273, 0, + 0, 273, 273, 273, 273, 273, 0, 0, 0, 273, + 278, 278, 278, 278, 280, 280, 280, 280, 282, 282, + 282, 282, 283, 283, 283, 283, 0, 273, 274, 274, + 274, 274, 0, 0, 274, 0, 274, 274, 274, 274, + 274, 274, 275, 275, 275, 275, 0, 0, 275, 0, + 275, 275, 275, 275, 275, 275, 279, 279, 279, 279, + 0, 0, 279, 284, 284, 284, 284, 284, 285, 285, + 285, 285, 0, 279, 286, 286, 286, 286, 286, 0, + 0, 0, 286, 291, 291, 291, 291, 293, 293, 293, + + 293, 279, 281, 281, 281, 281, 961, 961, 281, 0, + 286, 961, 281, 281, 281, 281, 287, 287, 287, 287, + 0, 0, 287, 0, 287, 287, 287, 287, 287, 287, + 294, 294, 294, 294, 0, 0, 294, 0, 0, 0, + 294, 294, 294, 294, 295, 295, 295, 295, 295, 296, + 296, 296, 296, 297, 297, 297, 297, 0, 0, 297, + 0, 0, 297, 297, 297, 297, 297, 0, 0, 0, + 297, 302, 302, 302, 302, 0, 303, 303, 303, 303, + 0, 0, 303, 304, 304, 304, 304, 0, 297, 298, + 298, 298, 298, 303, 0, 298, 0, 298, 298, 298, + + 298, 298, 298, 306, 306, 306, 306, 306, 0, 903, + 903, 303, 305, 305, 305, 305, 0, 0, 305, 903, + 0, 0, 305, 305, 305, 305, 307, 307, 307, 307, + 308, 308, 308, 308, 0, 0, 308, 903, 0, 308, + 308, 308, 308, 308, 0, 0, 0, 308, 313, 313, + 313, 313, 0, 314, 314, 314, 314, 0, 0, 314, + 315, 315, 315, 315, 0, 308, 309, 309, 309, 309, + 314, 0, 309, 0, 309, 309, 309, 309, 309, 309, + 317, 317, 317, 317, 318, 318, 318, 318, 314, 316, + 316, 316, 316, 0, 0, 316, 0, 0, 0, 316, + + 316, 316, 316, 320, 320, 320, 320, 320, 321, 321, + 321, 321, 322, 322, 322, 322, 0, 0, 322, 0, + 0, 322, 322, 322, 322, 322, 0, 0, 0, 322, + 327, 327, 327, 327, 0, 328, 328, 328, 328, 0, + 0, 328, 329, 329, 329, 329, 0, 322, 323, 323, + 323, 323, 328, 0, 323, 0, 323, 323, 323, 323, + 323, 323, 331, 331, 331, 331, 331, 0, 911, 911, + 328, 330, 330, 330, 330, 0, 0, 330, 911, 0, + 0, 330, 330, 330, 330, 332, 332, 332, 332, 333, + 333, 333, 333, 333, 0, 0, 911, 333, 338, 338, + + 338, 338, 340, 340, 340, 340, 342, 342, 342, 342, + 342, 343, 343, 343, 343, 333, 334, 334, 334, 334, + 0, 0, 334, 0, 334, 334, 334, 334, 334, 334, + 341, 341, 341, 341, 0, 0, 341, 0, 919, 919, + 341, 341, 341, 341, 344, 344, 344, 344, 919, 0, + 344, 0, 0, 344, 344, 344, 344, 344, 0, 0, + 0, 344, 349, 349, 349, 349, 919, 350, 350, 350, + 350, 0, 0, 350, 351, 351, 351, 351, 0, 344, + 345, 345, 345, 345, 350, 0, 345, 0, 345, 345, + 345, 345, 345, 345, 364, 364, 364, 364, 364, 0, + + 0, 0, 350, 352, 352, 352, 352, 0, 0, 352, + 0, 0, 0, 352, 352, 352, 352, 365, 365, 365, + 365, 0, 0, 365, 0, 365, 365, 365, 365, 365, + 365, 366, 366, 366, 366, 0, 0, 366, 0, 366, + 366, 366, 366, 366, 366, 367, 367, 0, 367, 367, + 367, 367, 368, 368, 368, 368, 0, 0, 368, 0, + 0, 0, 368, 368, 368, 368, 0, 372, 372, 368, + 372, 372, 372, 372, 375, 375, 375, 375, 375, 378, + 378, 0, 378, 378, 378, 378, 0, 368, 369, 369, + 369, 369, 369, 369, 0, 0, 0, 369, 384, 384, + + 384, 384, 0, 385, 385, 384, 385, 385, 385, 385, + 436, 436, 436, 436, 436, 369, 370, 370, 370, 370, + 0, 0, 370, 384, 370, 370, 370, 370, 370, 370, + 371, 371, 371, 371, 0, 0, 371, 0, 371, 371, + 371, 371, 371, 371, 374, 374, 374, 374, 374, 374, + 374, 374, 374, 391, 391, 0, 391, 391, 391, 391, + 400, 400, 0, 400, 400, 400, 400, 0, 374, 374, + 374, 376, 376, 376, 376, 0, 0, 376, 0, 376, + 376, 376, 376, 376, 376, 377, 377, 377, 377, 0, + 0, 377, 0, 377, 377, 377, 377, 377, 377, 379, + + 379, 379, 379, 0, 0, 379, 0, 0, 0, 379, + 379, 379, 379, 0, 409, 409, 379, 409, 409, 409, + 409, 415, 415, 415, 415, 0, 416, 416, 415, 416, + 416, 416, 416, 0, 379, 380, 380, 380, 380, 380, + 380, 0, 0, 0, 380, 0, 415, 422, 422, 0, + 422, 422, 422, 422, 437, 437, 437, 437, 443, 443, + 443, 443, 380, 381, 381, 381, 381, 0, 0, 381, + 0, 381, 381, 381, 381, 381, 381, 382, 382, 382, + 382, 0, 0, 382, 0, 382, 382, 382, 382, 382, + 382, 383, 383, 383, 383, 0, 0, 383, 383, 383, + + 0, 383, 383, 383, 383, 0, 0, 0, 383, 445, + 445, 445, 445, 0, 0, 438, 438, 438, 438, 438, + 0, 0, 0, 438, 0, 0, 383, 386, 386, 386, + 386, 0, 0, 386, 0, 386, 386, 386, 386, 386, + 386, 438, 0, 0, 386, 451, 451, 451, 451, 451, + 452, 452, 452, 452, 458, 458, 458, 458, 460, 460, + 460, 460, 386, 387, 387, 387, 387, 0, 0, 387, + 387, 387, 387, 387, 387, 387, 387, 388, 388, 388, + 388, 0, 0, 388, 0, 0, 0, 388, 388, 388, + 388, 0, 0, 0, 388, 461, 461, 461, 461, 467, + + 467, 467, 467, 467, 468, 468, 468, 468, 474, 474, + 474, 474, 388, 389, 389, 389, 389, 0, 0, 389, + 0, 389, 389, 389, 389, 389, 389, 390, 390, 390, + 390, 0, 0, 390, 0, 390, 390, 390, 390, 390, + 390, 392, 392, 392, 392, 0, 0, 392, 0, 392, + 392, 392, 392, 392, 392, 0, 0, 0, 392, 476, + 476, 476, 476, 482, 482, 482, 482, 482, 483, 483, + 483, 483, 489, 489, 489, 489, 392, 393, 393, 393, + 393, 0, 0, 393, 0, 393, 393, 393, 393, 393, + 393, 394, 394, 394, 394, 0, 0, 394, 0, 394, + + 394, 394, 394, 394, 394, 395, 395, 395, 395, 0, + 0, 395, 0, 395, 395, 395, 395, 395, 395, 396, + 396, 396, 396, 0, 0, 396, 396, 396, 396, 396, + 396, 396, 396, 397, 397, 397, 397, 0, 0, 397, + 0, 0, 0, 397, 397, 397, 397, 0, 0, 0, + 397, 491, 491, 491, 491, 492, 492, 492, 492, 494, + 494, 494, 494, 495, 495, 495, 495, 0, 397, 398, + 398, 398, 398, 0, 0, 398, 0, 398, 398, 398, + 398, 398, 398, 399, 399, 399, 399, 0, 0, 399, + 0, 399, 399, 399, 399, 399, 399, 401, 401, 401, + + 401, 0, 0, 401, 0, 401, 401, 401, 401, 401, + 401, 0, 0, 0, 401, 499, 499, 499, 499, 499, + 500, 500, 500, 500, 506, 506, 506, 506, 508, 508, + 508, 508, 401, 402, 402, 402, 402, 0, 0, 402, + 0, 402, 402, 402, 402, 402, 402, 403, 403, 403, + 403, 0, 0, 403, 0, 403, 403, 403, 403, 403, + 403, 404, 404, 404, 404, 0, 0, 404, 0, 404, + 404, 404, 404, 404, 404, 405, 405, 405, 405, 0, + 0, 405, 405, 405, 405, 405, 405, 405, 405, 406, + 406, 406, 406, 0, 0, 406, 0, 0, 0, 406, + + 406, 406, 406, 0, 0, 0, 406, 514, 514, 514, + 514, 514, 515, 515, 515, 515, 521, 521, 521, 521, + 523, 523, 523, 523, 406, 407, 407, 407, 407, 0, + 0, 407, 0, 407, 407, 407, 407, 407, 407, 408, + 408, 408, 408, 0, 0, 408, 0, 408, 408, 408, + 408, 408, 408, 410, 410, 410, 410, 0, 0, 410, + 0, 410, 410, 410, 410, 410, 410, 0, 0, 0, + 410, 524, 524, 524, 524, 526, 526, 526, 526, 526, + 527, 527, 527, 527, 533, 533, 533, 533, 410, 411, + 411, 411, 411, 0, 0, 411, 0, 411, 411, 411, + + 411, 411, 411, 412, 412, 412, 412, 0, 0, 412, + 0, 412, 412, 412, 412, 412, 412, 413, 413, 413, + 413, 0, 0, 413, 0, 413, 413, 413, 413, 413, + 413, 414, 414, 414, 414, 0, 0, 414, 414, 414, + 414, 414, 414, 414, 414, 417, 417, 417, 417, 0, + 0, 417, 0, 417, 417, 417, 417, 417, 417, 0, + 0, 0, 417, 535, 535, 535, 535, 0, 475, 475, + 475, 475, 0, 0, 475, 541, 541, 541, 541, 541, + 417, 418, 418, 418, 418, 475, 0, 418, 418, 418, + 418, 418, 418, 418, 418, 419, 419, 419, 419, 0, + + 0, 419, 0, 475, 0, 419, 419, 419, 419, 0, + 0, 0, 419, 542, 542, 542, 542, 548, 548, 548, + 548, 550, 550, 550, 550, 551, 551, 551, 551, 0, + 419, 420, 420, 420, 420, 0, 0, 420, 0, 420, + 420, 420, 420, 420, 420, 421, 421, 421, 421, 0, + 0, 421, 0, 421, 421, 421, 421, 421, 421, 423, + 423, 423, 423, 0, 0, 423, 0, 423, 423, 423, + 423, 423, 423, 0, 0, 0, 423, 553, 553, 553, + 553, 553, 554, 554, 554, 554, 560, 560, 560, 560, + 562, 562, 562, 562, 423, 424, 424, 424, 424, 0, + + 0, 424, 0, 424, 424, 424, 424, 424, 424, 425, + 425, 425, 425, 0, 0, 425, 0, 425, 425, 425, + 425, 425, 425, 426, 426, 426, 426, 0, 0, 426, + 0, 426, 426, 426, 426, 426, 426, 427, 427, 427, + 427, 0, 0, 427, 427, 427, 427, 427, 427, 427, + 427, 439, 439, 439, 439, 0, 0, 439, 0, 439, + 439, 439, 439, 439, 439, 440, 440, 440, 440, 0, + 0, 440, 0, 440, 440, 440, 440, 440, 440, 446, + 446, 446, 446, 0, 0, 446, 0, 0, 0, 446, + 446, 446, 446, 447, 447, 447, 447, 0, 0, 447, + + 0, 447, 447, 447, 447, 447, 447, 448, 448, 448, + 448, 0, 0, 448, 0, 448, 448, 448, 448, 448, + 448, 449, 449, 449, 449, 0, 0, 449, 0, 0, + 449, 449, 449, 449, 449, 0, 0, 0, 449, 568, + 568, 568, 568, 568, 490, 490, 490, 490, 0, 0, + 490, 569, 569, 569, 569, 0, 449, 450, 450, 450, + 450, 490, 0, 450, 0, 450, 450, 450, 450, 450, + 450, 453, 453, 453, 453, 0, 0, 453, 0, 490, + 453, 453, 453, 453, 453, 0, 0, 0, 453, 575, + 575, 575, 575, 0, 0, 462, 462, 462, 462, 462, + + 0, 0, 0, 462, 0, 0, 453, 454, 454, 454, + 454, 0, 0, 454, 0, 454, 454, 454, 454, 454, + 454, 462, 464, 464, 464, 464, 464, 464, 464, 464, + 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, + 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, + 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, + 464, 464, 464, 464, 464, 464, 464, 464, 464, 464, + 469, 469, 469, 469, 0, 0, 469, 0, 0, 469, + 469, 469, 469, 469, 0, 0, 0, 469, 577, 577, + 577, 577, 578, 578, 578, 578, 580, 580, 580, 580, + + 581, 581, 581, 581, 0, 469, 470, 470, 470, 470, + 0, 0, 470, 0, 470, 470, 470, 470, 470, 470, + 471, 471, 471, 471, 0, 0, 471, 0, 471, 471, + 471, 471, 471, 471, 477, 477, 477, 477, 0, 0, + 477, 0, 0, 0, 477, 477, 477, 477, 478, 478, + 478, 478, 0, 0, 478, 0, 478, 478, 478, 478, + 478, 478, 479, 479, 479, 479, 0, 0, 479, 0, + 479, 479, 479, 479, 479, 479, 480, 480, 480, 480, + 0, 0, 480, 0, 0, 480, 480, 480, 480, 480, + 0, 0, 0, 480, 585, 585, 585, 585, 585, 561, + + 561, 561, 561, 0, 0, 561, 586, 586, 586, 586, + 0, 480, 481, 481, 481, 481, 561, 0, 481, 0, + 481, 481, 481, 481, 481, 481, 484, 484, 484, 484, + 0, 0, 484, 0, 561, 484, 484, 484, 484, 484, + 0, 0, 0, 484, 592, 592, 592, 592, 0, 576, + 576, 576, 576, 0, 0, 576, 594, 594, 594, 594, + 0, 484, 485, 485, 485, 485, 576, 0, 485, 0, + 485, 485, 485, 485, 485, 485, 493, 493, 493, 493, + 0, 0, 493, 0, 576, 0, 493, 493, 493, 493, + 0, 0, 0, 493, 600, 600, 600, 600, 600, 601, + + 601, 601, 601, 607, 607, 607, 607, 609, 609, 609, + 609, 493, 496, 496, 496, 496, 0, 0, 496, 0, + 496, 496, 496, 496, 496, 496, 497, 497, 497, 497, + 0, 0, 497, 0, 497, 497, 497, 497, 497, 497, + 501, 501, 501, 501, 501, 0, 0, 0, 501, 610, + 610, 610, 610, 618, 618, 0, 618, 618, 618, 618, + 704, 704, 704, 704, 0, 0, 501, 502, 502, 502, + 502, 0, 0, 502, 0, 502, 502, 502, 502, 502, + 502, 503, 503, 503, 503, 0, 0, 503, 0, 503, + 503, 503, 503, 503, 503, 509, 509, 509, 509, 0, + + 0, 509, 0, 0, 0, 509, 509, 509, 509, 510, + 510, 510, 510, 0, 0, 510, 0, 510, 510, 510, + 510, 510, 510, 511, 511, 511, 511, 0, 0, 511, + 0, 511, 511, 511, 511, 511, 511, 512, 512, 512, + 512, 0, 0, 512, 0, 0, 512, 512, 512, 512, + 512, 0, 0, 0, 512, 617, 617, 617, 617, 0, + 624, 624, 617, 624, 624, 624, 624, 705, 705, 705, + 705, 0, 512, 513, 513, 513, 513, 0, 0, 513, + 617, 513, 513, 513, 513, 513, 513, 516, 516, 516, + 516, 0, 0, 516, 0, 0, 516, 516, 516, 516, + + 516, 0, 630, 630, 516, 630, 630, 630, 630, 0, + 0, 525, 525, 525, 525, 525, 0, 0, 0, 525, + 0, 0, 516, 517, 517, 517, 517, 0, 0, 517, + 0, 517, 517, 517, 517, 517, 517, 525, 528, 528, + 528, 528, 528, 0, 643, 643, 528, 643, 643, 643, + 643, 649, 649, 0, 649, 649, 649, 649, 712, 712, + 712, 712, 0, 0, 528, 529, 529, 529, 529, 0, + 0, 529, 0, 529, 529, 529, 529, 529, 529, 530, + 530, 530, 530, 0, 0, 530, 0, 530, 530, 530, + 530, 530, 530, 536, 536, 536, 536, 0, 0, 536, + + 0, 0, 0, 536, 536, 536, 536, 537, 537, 537, + 537, 0, 0, 537, 0, 537, 537, 537, 537, 537, + 537, 538, 538, 538, 538, 0, 0, 538, 0, 538, + 538, 538, 538, 538, 538, 539, 539, 539, 539, 0, + 0, 539, 0, 0, 539, 539, 539, 539, 539, 0, + 0, 0, 539, 648, 648, 648, 648, 0, 655, 655, + 648, 655, 655, 655, 655, 717, 717, 717, 717, 717, + 539, 540, 540, 540, 540, 0, 0, 540, 648, 540, + 540, 540, 540, 540, 540, 543, 543, 543, 543, 0, + 0, 543, 0, 0, 543, 543, 543, 543, 543, 0, + + 659, 659, 543, 659, 659, 659, 659, 0, 0, 552, + 552, 552, 552, 552, 0, 0, 0, 552, 0, 0, + 543, 544, 544, 544, 544, 0, 0, 544, 0, 544, + 544, 544, 544, 544, 544, 552, 555, 555, 555, 555, + 0, 0, 555, 0, 0, 555, 555, 555, 555, 555, + 0, 0, 0, 555, 658, 658, 658, 658, 0, 665, + 665, 658, 665, 665, 665, 665, 718, 718, 718, 718, + 0, 555, 556, 556, 556, 556, 0, 0, 556, 658, + 556, 556, 556, 556, 556, 556, 557, 557, 557, 557, + 0, 0, 557, 0, 557, 557, 557, 557, 557, 557, + + 563, 563, 563, 563, 0, 0, 563, 0, 0, 0, + 563, 563, 563, 563, 564, 564, 564, 564, 0, 0, + 564, 0, 564, 564, 564, 564, 564, 564, 565, 565, + 565, 565, 0, 0, 565, 0, 565, 565, 565, 565, + 565, 565, 566, 566, 566, 566, 0, 0, 566, 0, + 0, 566, 566, 566, 566, 566, 0, 671, 671, 566, + 671, 671, 671, 671, 684, 684, 0, 684, 684, 684, + 684, 724, 724, 724, 724, 0, 0, 566, 567, 567, + 567, 567, 0, 0, 567, 0, 567, 567, 567, 567, + 567, 567, 570, 570, 570, 570, 0, 0, 570, 0, + + 0, 570, 570, 570, 570, 570, 0, 0, 0, 570, + 689, 689, 689, 689, 0, 690, 690, 689, 690, 690, + 690, 690, 726, 726, 726, 726, 0, 570, 571, 571, + 571, 571, 0, 0, 571, 689, 571, 571, 571, 571, + 571, 571, 579, 579, 579, 579, 0, 0, 579, 0, + 0, 0, 579, 579, 579, 579, 0, 696, 696, 579, + 696, 696, 696, 696, 731, 731, 731, 731, 731, 732, + 732, 732, 732, 738, 738, 738, 738, 579, 582, 582, + 582, 582, 0, 0, 582, 0, 582, 582, 582, 582, + 582, 582, 583, 583, 583, 583, 0, 0, 583, 0, + + 583, 583, 583, 583, 583, 583, 587, 587, 587, 587, + 587, 0, 0, 0, 587, 740, 740, 740, 740, 741, + 741, 741, 741, 747, 747, 747, 747, 747, 748, 748, + 748, 748, 587, 588, 588, 588, 588, 0, 0, 588, + 0, 588, 588, 588, 588, 588, 588, 589, 589, 589, + 589, 0, 0, 589, 0, 589, 589, 589, 589, 589, + 589, 595, 595, 595, 595, 0, 0, 595, 0, 0, + 0, 595, 595, 595, 595, 596, 596, 596, 596, 0, + 0, 596, 0, 596, 596, 596, 596, 596, 596, 597, + 597, 597, 597, 0, 0, 597, 0, 597, 597, 597, + + 597, 597, 597, 598, 598, 598, 598, 0, 0, 598, + 0, 0, 598, 598, 598, 598, 598, 0, 0, 0, + 598, 754, 754, 754, 754, 0, 711, 711, 711, 711, + 0, 0, 711, 756, 756, 756, 756, 0, 598, 599, + 599, 599, 599, 711, 0, 599, 0, 599, 599, 599, + 599, 599, 599, 602, 602, 602, 602, 0, 0, 602, + 0, 711, 602, 602, 602, 602, 602, 0, 0, 0, + 602, 757, 757, 757, 757, 0, 0, 611, 611, 611, + 611, 611, 0, 0, 0, 611, 0, 0, 602, 603, + 603, 603, 603, 0, 0, 603, 0, 603, 603, 603, + + 603, 603, 603, 611, 619, 619, 619, 619, 0, 0, + 619, 0, 619, 619, 619, 619, 619, 619, 0, 0, + 0, 619, 759, 759, 759, 759, 764, 764, 764, 764, + 765, 765, 765, 765, 767, 767, 767, 767, 0, 619, + 620, 620, 620, 620, 0, 0, 620, 620, 620, 620, + 620, 620, 620, 620, 621, 621, 621, 621, 0, 0, + 621, 0, 621, 621, 621, 621, 621, 621, 0, 0, + 0, 621, 768, 768, 768, 768, 0, 774, 774, 774, + 774, 0, 0, 774, 775, 775, 775, 775, 0, 621, + 622, 622, 622, 622, 774, 0, 622, 622, 622, 622, + + 622, 622, 622, 622, 623, 623, 623, 623, 0, 0, + 623, 0, 774, 0, 623, 623, 623, 623, 0, 0, + 0, 623, 780, 780, 780, 780, 0, 0, 719, 719, + 719, 719, 719, 0, 0, 0, 719, 0, 0, 623, + 625, 625, 625, 625, 0, 0, 625, 0, 625, 625, + 625, 625, 625, 625, 719, 0, 0, 625, 781, 781, + 781, 781, 0, 787, 787, 787, 787, 0, 0, 787, + 788, 788, 788, 788, 0, 625, 626, 626, 626, 626, + 787, 0, 626, 626, 626, 626, 626, 626, 626, 626, + 627, 627, 627, 627, 0, 0, 627, 0, 787, 0, + + 627, 627, 627, 627, 0, 0, 0, 627, 793, 793, + 793, 793, 793, 794, 794, 794, 794, 800, 800, 800, + 800, 802, 802, 802, 802, 627, 628, 628, 628, 628, + 0, 0, 628, 0, 628, 628, 628, 628, 628, 628, + 629, 629, 629, 629, 0, 0, 629, 0, 629, 629, + 629, 629, 629, 629, 631, 631, 631, 631, 0, 0, + 631, 0, 631, 631, 631, 631, 631, 631, 0, 0, + 0, 631, 807, 807, 807, 807, 807, 808, 808, 808, + 808, 814, 814, 814, 814, 816, 816, 816, 816, 631, + 632, 632, 632, 632, 0, 0, 632, 0, 632, 632, + + 632, 632, 632, 632, 633, 633, 633, 633, 0, 0, + 633, 0, 633, 633, 633, 633, 633, 633, 634, 634, + 634, 634, 0, 0, 634, 0, 634, 634, 634, 634, + 634, 634, 635, 635, 635, 635, 0, 0, 635, 635, + 635, 635, 635, 635, 635, 635, 636, 636, 636, 636, + 0, 0, 636, 0, 636, 636, 636, 636, 636, 636, + 0, 0, 0, 636, 817, 817, 817, 817, 823, 823, + 823, 823, 823, 824, 824, 824, 824, 830, 830, 830, + 830, 636, 637, 637, 637, 637, 0, 0, 637, 0, + 637, 637, 637, 637, 637, 637, 638, 638, 638, 638, + + 0, 0, 638, 0, 638, 638, 638, 638, 638, 638, + 639, 639, 639, 639, 0, 0, 639, 0, 639, 639, + 639, 639, 639, 639, 640, 640, 640, 640, 0, 0, + 640, 640, 640, 640, 640, 640, 640, 640, 641, 641, + 641, 641, 0, 0, 641, 0, 0, 0, 641, 641, + 641, 641, 0, 0, 0, 641, 832, 832, 832, 832, + 833, 833, 833, 833, 835, 835, 835, 835, 840, 840, + 840, 840, 0, 641, 642, 642, 642, 642, 0, 0, + 642, 0, 642, 642, 642, 642, 642, 642, 644, 644, + 644, 644, 0, 0, 644, 0, 644, 644, 644, 644, + + 644, 644, 0, 0, 0, 644, 841, 841, 841, 841, + 843, 843, 843, 843, 844, 844, 844, 844, 851, 851, + 851, 851, 0, 644, 645, 645, 645, 645, 0, 0, + 645, 0, 645, 645, 645, 645, 645, 645, 646, 646, + 646, 646, 0, 0, 646, 0, 646, 646, 646, 646, + 646, 646, 647, 647, 647, 647, 0, 0, 647, 647, + 647, 647, 647, 647, 647, 647, 650, 650, 650, 650, + 0, 0, 650, 0, 650, 650, 650, 650, 650, 650, + 0, 861, 861, 650, 861, 861, 861, 861, 867, 867, + 0, 867, 867, 867, 867, 882, 882, 882, 882, 882, + + 0, 650, 651, 651, 651, 651, 0, 0, 651, 651, + 651, 651, 651, 651, 651, 651, 652, 652, 652, 652, + 0, 0, 652, 0, 652, 652, 652, 652, 652, 652, + 0, 873, 873, 652, 873, 873, 873, 873, 0, 850, + 850, 850, 850, 879, 879, 850, 879, 879, 879, 879, + 0, 652, 653, 653, 653, 653, 850, 0, 653, 653, + 653, 653, 653, 653, 653, 653, 654, 654, 654, 654, + 0, 0, 654, 0, 850, 0, 654, 654, 654, 654, + 0, 881, 881, 654, 881, 881, 881, 881, 0, 0, + 742, 742, 742, 742, 742, 0, 0, 0, 742, 0, + + 0, 654, 656, 656, 656, 656, 0, 0, 656, 0, + 656, 656, 656, 656, 656, 656, 742, 883, 883, 656, + 883, 883, 883, 883, 884, 884, 884, 884, 884, 885, + 885, 0, 885, 885, 885, 885, 0, 656, 657, 657, + 657, 657, 0, 0, 657, 657, 657, 657, 657, 657, + 657, 657, 660, 660, 660, 660, 0, 0, 660, 0, + 660, 660, 660, 660, 660, 660, 0, 887, 887, 660, + 887, 887, 887, 887, 888, 888, 888, 888, 888, 889, + 889, 0, 889, 889, 889, 889, 0, 660, 661, 661, + 661, 661, 0, 0, 661, 661, 661, 661, 661, 661, + + 661, 661, 662, 662, 662, 662, 0, 0, 662, 0, + 662, 662, 662, 662, 662, 662, 0, 0, 0, 662, + 890, 890, 890, 890, 890, 891, 891, 0, 891, 891, + 891, 891, 894, 894, 894, 894, 894, 662, 663, 663, + 663, 663, 0, 0, 663, 663, 663, 663, 663, 663, + 663, 663, 664, 664, 664, 664, 0, 0, 664, 0, + 0, 0, 664, 664, 664, 664, 0, 893, 893, 664, + 893, 893, 893, 893, 0, 0, 758, 758, 758, 758, + 758, 0, 0, 0, 758, 0, 0, 664, 666, 666, + 666, 666, 0, 0, 666, 0, 666, 666, 666, 666, + + 666, 666, 758, 895, 895, 666, 895, 895, 895, 895, + 899, 899, 899, 899, 900, 900, 900, 900, 907, 907, + 907, 907, 0, 666, 667, 667, 667, 667, 0, 0, + 667, 667, 667, 667, 667, 667, 667, 667, 668, 668, + 668, 668, 0, 0, 668, 0, 0, 0, 668, 668, + 668, 668, 0, 0, 0, 668, 860, 860, 860, 860, + 0, 0, 0, 860, 915, 915, 915, 915, 923, 923, + 923, 923, 0, 668, 669, 669, 669, 669, 0, 0, + 669, 860, 669, 669, 669, 669, 669, 669, 670, 670, + 670, 670, 0, 0, 670, 0, 670, 670, 670, 670, + + 670, 670, 672, 672, 672, 672, 0, 0, 672, 0, + 672, 672, 672, 672, 672, 672, 0, 0, 0, 672, + 878, 878, 878, 878, 0, 0, 0, 878, 924, 924, + 924, 924, 925, 925, 925, 925, 0, 672, 673, 673, + 673, 673, 0, 0, 673, 878, 673, 673, 673, 673, + 673, 673, 674, 674, 674, 674, 0, 0, 674, 0, + 674, 674, 674, 674, 674, 674, 675, 675, 675, 675, + 0, 0, 675, 0, 675, 675, 675, 675, 675, 675, + 676, 676, 676, 676, 0, 0, 676, 676, 676, 676, + 676, 676, 676, 676, 677, 677, 677, 677, 0, 0, + + 677, 0, 677, 677, 677, 677, 677, 677, 0, 0, + 0, 677, 880, 880, 880, 880, 0, 0, 0, 880, + 926, 926, 926, 926, 928, 928, 928, 928, 0, 677, + 678, 678, 678, 678, 0, 0, 678, 880, 678, 678, + 678, 678, 678, 678, 679, 679, 679, 679, 0, 0, + 679, 0, 679, 679, 679, 679, 679, 679, 680, 680, + 680, 680, 0, 0, 680, 0, 680, 680, 680, 680, + 680, 680, 681, 681, 681, 681, 0, 0, 681, 681, + 681, 681, 681, 681, 681, 681, 682, 682, 682, 682, + 0, 0, 682, 0, 0, 0, 682, 682, 682, 682, + + 0, 0, 0, 682, 886, 886, 886, 886, 0, 0, + 0, 886, 929, 929, 929, 929, 931, 931, 931, 931, + 0, 682, 683, 683, 683, 683, 0, 0, 683, 886, + 683, 683, 683, 683, 683, 683, 685, 685, 685, 685, + 0, 0, 685, 0, 685, 685, 685, 685, 685, 685, + 0, 0, 0, 685, 892, 892, 892, 892, 0, 0, + 0, 892, 933, 933, 933, 933, 934, 934, 934, 934, + 0, 685, 686, 686, 686, 686, 0, 0, 686, 892, + 686, 686, 686, 686, 686, 686, 687, 687, 687, 687, + 0, 0, 687, 0, 687, 687, 687, 687, 687, 687, + + 688, 688, 688, 688, 0, 0, 688, 688, 688, 688, + 688, 688, 688, 688, 691, 691, 691, 691, 0, 0, + 691, 0, 691, 691, 691, 691, 691, 691, 0, 0, + 0, 691, 936, 936, 936, 936, 937, 937, 937, 937, + 939, 939, 939, 939, 940, 940, 940, 940, 0, 691, + 692, 692, 692, 692, 0, 0, 692, 692, 692, 692, + 692, 692, 692, 692, 693, 693, 693, 693, 0, 0, + 693, 0, 693, 693, 693, 693, 693, 693, 0, 0, + 0, 693, 941, 941, 941, 941, 942, 942, 942, 942, + 944, 944, 944, 944, 945, 945, 945, 945, 0, 693, + + 694, 694, 694, 694, 0, 0, 694, 694, 694, 694, + 694, 694, 694, 694, 695, 695, 695, 695, 0, 0, + 695, 0, 0, 0, 695, 695, 695, 695, 0, 0, + 959, 695, 959, 959, 0, 0, 959, 0, 766, 766, + 766, 766, 766, 0, 0, 0, 766, 0, 0, 695, + 697, 697, 697, 697, 0, 0, 697, 0, 697, 697, + 697, 697, 697, 697, 766, 0, 0, 697, 960, 960, + 960, 960, 0, 962, 960, 962, 962, 0, 963, 962, + 963, 963, 0, 0, 963, 697, 698, 698, 698, 698, + 0, 0, 698, 698, 698, 698, 698, 698, 698, 698, + + 706, 706, 706, 706, 0, 0, 706, 0, 706, 706, + 706, 706, 706, 706, 707, 707, 707, 707, 0, 0, + 707, 0, 707, 707, 707, 707, 707, 707, 709, 709, + 709, 709, 0, 0, 709, 0, 709, 709, 709, 709, + 709, 709, 710, 710, 710, 710, 0, 0, 710, 0, + 710, 710, 710, 710, 710, 710, 713, 713, 713, 713, + 0, 0, 713, 0, 0, 0, 713, 713, 713, 713, + 714, 714, 714, 714, 0, 0, 714, 0, 714, 714, + 714, 714, 714, 714, 715, 715, 715, 715, 0, 0, + 715, 0, 715, 715, 715, 715, 715, 715, 720, 720, + + 720, 720, 0, 0, 720, 0, 720, 720, 720, 720, + 720, 720, 721, 721, 721, 721, 0, 0, 721, 0, + 721, 721, 721, 721, 721, 721, 727, 727, 727, 727, + 0, 0, 727, 0, 0, 0, 727, 727, 727, 727, + 728, 728, 728, 728, 0, 0, 728, 0, 728, 728, + 728, 728, 728, 728, 729, 729, 729, 729, 0, 0, + 729, 0, 729, 729, 729, 729, 729, 729, 730, 730, + 730, 730, 0, 0, 730, 0, 0, 730, 730, 730, + 730, 730, 0, 0, 0, 730, 795, 795, 795, 795, + 795, 0, 0, 0, 795, 927, 927, 927, 927, 0, + + 0, 0, 927, 730, 733, 733, 733, 733, 0, 0, + 733, 0, 795, 733, 733, 733, 733, 733, 0, 0, + 927, 733, 935, 935, 935, 935, 0, 0, 964, 935, + 964, 964, 0, 0, 964, 0, 0, 0, 0, 733, + 734, 734, 734, 734, 0, 0, 734, 935, 734, 734, + 734, 734, 734, 734, 735, 735, 735, 735, 0, 0, + 735, 0, 735, 735, 735, 735, 735, 735, 743, 743, + 743, 743, 0, 0, 743, 0, 743, 743, 743, 743, + 743, 743, 744, 744, 744, 744, 0, 0, 744, 0, + 744, 744, 744, 744, 744, 744, 745, 745, 745, 745, + + 0, 0, 745, 0, 0, 745, 745, 745, 745, 745, + 0, 0, 0, 745, 943, 943, 943, 943, 0, 0, + 0, 943, 965, 965, 965, 965, 0, 0, 965, 0, + 0, 745, 746, 746, 746, 746, 0, 0, 746, 943, + 746, 746, 746, 746, 746, 746, 749, 749, 749, 749, + 0, 0, 749, 0, 0, 749, 749, 749, 749, 749, + 0, 0, 966, 749, 966, 966, 0, 0, 966, 967, + 967, 967, 967, 0, 969, 967, 969, 969, 0, 0, + 969, 749, 750, 750, 750, 750, 0, 0, 750, 0, + 750, 750, 750, 750, 750, 750, 760, 760, 760, 760, + + 0, 0, 760, 0, 0, 0, 760, 760, 760, 760, + 761, 761, 761, 761, 0, 0, 761, 0, 761, 761, + 761, 761, 761, 761, 762, 762, 762, 762, 0, 0, + 762, 0, 762, 762, 762, 762, 762, 762, 763, 763, + 763, 763, 0, 0, 763, 0, 0, 763, 763, 763, + 763, 763, 0, 0, 0, 763, 968, 968, 968, 968, + 0, 970, 968, 970, 970, 0, 971, 970, 971, 971, + 0, 0, 971, 763, 769, 769, 769, 769, 0, 0, + 769, 0, 769, 769, 769, 769, 769, 769, 770, 770, + 770, 770, 0, 0, 770, 0, 770, 770, 770, 770, + + 770, 770, 772, 772, 772, 772, 0, 0, 772, 0, + 772, 772, 772, 772, 772, 772, 773, 773, 773, 773, + 0, 0, 773, 0, 773, 773, 773, 773, 773, 773, + 776, 776, 776, 776, 0, 0, 776, 0, 0, 0, + 776, 776, 776, 776, 777, 777, 777, 777, 0, 0, + 777, 0, 777, 777, 777, 777, 777, 777, 778, 778, + 778, 778, 0, 0, 778, 0, 778, 778, 778, 778, + 778, 778, 782, 782, 782, 782, 0, 0, 782, 0, + 782, 782, 782, 782, 782, 782, 783, 783, 783, 783, + 0, 0, 783, 0, 783, 783, 783, 783, 783, 783, + + 785, 785, 785, 785, 0, 0, 785, 0, 785, 785, + 785, 785, 785, 785, 786, 786, 786, 786, 0, 0, + 786, 0, 786, 786, 786, 786, 786, 786, 789, 789, + 789, 789, 0, 0, 789, 0, 0, 0, 789, 789, + 789, 789, 790, 790, 790, 790, 0, 0, 790, 0, + 790, 790, 790, 790, 790, 790, 791, 791, 791, 791, + 0, 0, 791, 0, 791, 791, 791, 791, 791, 791, + 796, 796, 796, 796, 0, 0, 796, 0, 796, 796, + 796, 796, 796, 796, 797, 797, 797, 797, 0, 0, + 797, 0, 797, 797, 797, 797, 797, 797, 803, 803, + + 803, 803, 0, 0, 803, 0, 0, 0, 803, 803, + 803, 803, 804, 804, 804, 804, 0, 0, 804, 0, + 804, 804, 804, 804, 804, 804, 805, 805, 805, 805, + 0, 0, 805, 0, 805, 805, 805, 805, 805, 805, + 806, 806, 806, 806, 0, 0, 806, 0, 0, 806, + 806, 806, 806, 806, 0, 0, 0, 806, 818, 818, + 818, 818, 818, 0, 0, 0, 818, 972, 972, 972, + 972, 0, 0, 972, 0, 806, 809, 809, 809, 809, + 0, 0, 809, 0, 818, 809, 809, 809, 809, 809, + 0, 0, 0, 809, 973, 973, 973, 973, 0, 0, + + 973, 974, 974, 974, 974, 0, 0, 974, 0, 0, + 0, 809, 810, 810, 810, 810, 0, 0, 810, 0, + 810, 810, 810, 810, 810, 810, 811, 811, 811, 811, + 0, 0, 811, 0, 811, 811, 811, 811, 811, 811, + 819, 819, 819, 819, 0, 0, 819, 0, 819, 819, + 819, 819, 819, 819, 820, 820, 820, 820, 0, 0, + 820, 0, 820, 820, 820, 820, 820, 820, 821, 821, + 821, 821, 0, 0, 821, 0, 0, 821, 821, 821, + 821, 821, 0, 0, 0, 821, 975, 975, 975, 975, + 0, 0, 975, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 821, 822, 822, 822, 822, 0, 0, + 822, 0, 822, 822, 822, 822, 822, 822, 825, 825, + 825, 825, 0, 0, 825, 0, 0, 825, 825, 825, + 825, 825, 0, 0, 0, 825, 0, 0, 0, 0, + 0, 0, 834, 834, 834, 834, 834, 0, 0, 0, + 834, 0, 0, 825, 826, 826, 826, 826, 0, 0, + 826, 0, 826, 826, 826, 826, 826, 826, 834, 836, + 836, 836, 836, 0, 0, 836, 0, 0, 0, 836, + 836, 836, 836, 837, 837, 837, 837, 0, 0, 837, + 0, 837, 837, 837, 837, 837, 837, 838, 838, 838, + + 838, 0, 0, 838, 0, 838, 838, 838, 838, 838, + 838, 839, 839, 839, 839, 0, 0, 839, 0, 0, + 839, 839, 839, 839, 839, 0, 0, 0, 839, 842, + 842, 842, 842, 842, 0, 0, 0, 842, 0, 0, + 0, 0, 0, 0, 0, 0, 839, 0, 0, 0, + 0, 0, 0, 0, 0, 842, 845, 845, 845, 845, + 0, 0, 845, 0, 845, 845, 845, 845, 845, 845, + 846, 846, 846, 846, 0, 0, 846, 0, 846, 846, + 846, 846, 846, 846, 848, 848, 848, 848, 0, 0, + 848, 0, 848, 848, 848, 848, 848, 848, 849, 849, + + 849, 849, 0, 0, 849, 0, 849, 849, 849, 849, + 849, 849, 852, 852, 852, 852, 0, 0, 852, 0, + 0, 0, 852, 852, 852, 852, 853, 853, 853, 853, + 0, 0, 853, 0, 853, 853, 853, 853, 853, 853, + 854, 854, 854, 854, 0, 0, 854, 0, 854, 854, + 854, 854, 854, 854, 862, 862, 862, 862, 0, 0, + 862, 0, 862, 862, 862, 862, 862, 862, 0, 0, + 0, 862, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 862, + 863, 863, 863, 863, 0, 0, 863, 863, 863, 863, + + 863, 863, 863, 863, 864, 864, 864, 864, 0, 0, + 864, 0, 864, 864, 864, 864, 864, 864, 0, 0, + 0, 864, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 864, + 865, 865, 865, 865, 0, 0, 865, 865, 865, 865, + 865, 865, 865, 865, 866, 866, 866, 866, 0, 0, + 866, 0, 0, 0, 866, 866, 866, 866, 0, 0, + 0, 866, 0, 0, 0, 0, 0, 0, 930, 930, + 930, 930, 930, 0, 0, 0, 930, 0, 0, 866, + 868, 868, 868, 868, 0, 0, 868, 0, 868, 868, + + 868, 868, 868, 868, 930, 0, 0, 868, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 868, 869, 869, 869, 869, + 0, 0, 869, 869, 869, 869, 869, 869, 869, 869, + 870, 870, 870, 870, 0, 0, 870, 0, 870, 870, + 870, 870, 870, 870, 0, 0, 0, 870, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 870, 871, 871, 871, 871, + 0, 0, 871, 871, 871, 871, 871, 871, 871, 871, + 872, 872, 872, 872, 0, 0, 872, 0, 0, 0, + + 872, 872, 872, 872, 0, 0, 0, 872, 0, 0, + 0, 0, 0, 0, 938, 938, 938, 938, 938, 0, + 0, 0, 938, 0, 0, 872, 874, 874, 874, 874, + 0, 0, 874, 0, 874, 874, 874, 874, 874, 874, + 938, 0, 0, 874, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 874, 875, 875, 875, 875, 0, 0, 875, 875, + 875, 875, 875, 875, 875, 875, 876, 876, 876, 876, + 0, 0, 876, 0, 876, 876, 876, 876, 876, 876, + 0, 0, 0, 876, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 876, 877, 877, 877, 877, 0, 0, 877, 877, + 877, 877, 877, 877, 877, 877, 906, 906, 906, 906, + 0, 0, 906, 906, 906, 0, 0, 0, 0, 0, + 0, 0, 0, 906, 946, 946, 946, 946, 946, 0, + 0, 0, 946, 0, 0, 0, 0, 0, 0, 0, + 0, 906, 908, 908, 908, 908, 0, 0, 908, 0, + 946, 0, 908, 908, 908, 908, 914, 914, 914, 914, + 0, 0, 914, 914, 914, 0, 0, 0, 0, 0, + 0, 0, 0, 914, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 914, 916, 916, 916, 916, 0, 0, 916, 0, + 0, 0, 916, 916, 916, 916, 922, 922, 922, 922, + 0, 0, 922, 922, 922, 0, 0, 0, 0, 0, + 0, 0, 0, 922, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 922, 932, 932, 932, 932, 0, 0, 932, 0, + 0, 0, 932, 932, 932, 932, 977, 977, 977, 977, + 977, 977, 977, 977, 978, 978, 978, 978, 978, 978, + 978, 978, 979, 979, 979, 979, 979, 979, 979, 979, + + 980, 980, 980, 980, 980, 980, 980, 980, 981, 981, + 0, 981, 981, 981, 981, 981, 982, 982, 0, 982, + 982, 982, 982, 982, 983, 0, 0, 983, 984, 0, + 0, 984, 985, 0, 0, 985, 0, 985, 985, 985, + 986, 986, 0, 986, 986, 986, 986, 986, 987, 0, + 0, 987, 0, 987, 987, 988, 988, 0, 988, 988, + 988, 988, 988, 989, 989, 0, 989, 0, 989, 989, + 989, 990, 990, 0, 990, 990, 990, 990, 990, 991, + 991, 991, 991, 991, 991, 991, 991, 992, 992, 992, + 992, 992, 992, 992, 992, 993, 993, 0, 0, 993, + + 993, 995, 995, 995, 995, 995, 995, 995, 995, 996, + 996, 996, 996, 996, 996, 996, 996, 997, 997, 997, + 997, 997, 997, 997, 997, 998, 998, 998, 998, 998, + 998, 998, 998, 1000, 1000, 1000, 1000, 1000, 1000, 1000, + 1000, 1001, 1001, 0, 1001, 1001, 1001, 1001, 1001, 1002, + 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1003, 1003, 1003, + 1003, 1003, 1003, 1003, 1003, 1004, 1004, 0, 1004, 0, + 1004, 1004, 1004, 1005, 1005, 0, 1005, 1005, 1005, 1005, + 1005, 1007, 1007, 0, 1007, 1007, 1007, 1007, 1007, 1008, + 0, 0, 1008, 1009, 1009, 1009, 1009, 1009, 1009, 1009, + + 1009, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1011, + 1011, 0, 0, 1011, 1011, 1013, 1013, 1013, 1013, 1013, + 1013, 1013, 1013, 1015, 1015, 1015, 1015, 1015, 1015, 1015, + 1015, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1018, + 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1019, 1019, 1019, + 1019, 1019, 1019, 1019, 1019, 1020, 1020, 1020, 1020, 1020, + 1020, 1020, 1020, 1021, 1021, 1021, 1021, 1021, 1021, 1021, + 1021, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1023, + 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, + 1024, 1024, 1024, 1024, 1024, 1025, 1025, 1025, 1025, 1025, + + 1025, 1025, 1025, 1026, 1026, 1026, 1026, 1026, 1026, 1026, + 1026, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1028, + 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1029, 1029, 1029, + 1029, 1029, 1029, 1029, 1029, 1030, 1030, 1030, 1030, 1030, + 1030, 1030, 1030, 1031, 1031, 1031, 1031, 1031, 1031, 1031, + 1031, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1033, + 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1034, 1034, 0, + 1034, 1034, 1034, 1034, 1034, 1035, 0, 0, 1035, 1036, + 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1037, 1037, 1037, + 1037, 1037, 1037, 1037, 1037, 1038, 1038, 1038, 1038, 1038, + + 1038, 1038, 1038, 1040, 1040, 1040, 1040, 1040, 1040, 1040, + 1040, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1042, + 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1043, 1043, 1043, + 1043, 1043, 1043, 1043, 1043, 1044, 1044, 1044, 1044, 1044, + 1044, 1044, 1044, 1045, 1045, 1045, 1045, 1045, 1045, 1045, + 1045, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1047, + 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1048, 1048, 1048, + 1048, 1048, 1048, 1048, 1048, 1049, 1049, 1049, 1049, 1049, + 1049, 1049, 1049, 1050, 1050, 1050, 1050, 1050, 1050, 1050, + 1050, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1052, + + 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1053, 1053, 1053, + 1053, 1053, 1053, 1053, 1053, 1054, 1054, 1054, 1054, 1054, + 1054, 1054, 1054, 1055, 1055, 1055, 1055, 1055, 1055, 1055, + 1055, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1056, 1057, + 1057, 0, 1057, 1057, 1057, 1057, 1057, 1058, 0, 0, + 1058, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1060, + 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1061, 1061, 1061, + 1061, 1061, 1061, 1061, 1061, 1062, 1062, 1062, 1062, 1062, + 1062, 1062, 1062, 1063, 1063, 1063, 1063, 1063, 1063, 1063, + 1063, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1064, 1065, + + 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1066, 1066, 1066, + 1066, 1066, 1066, 1066, 1066, 1067, 1067, 1067, 1067, 1067, + 1067, 1067, 1067, 1068, 1068, 1068, 1068, 1068, 1068, 1068, + 1068, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1070, + 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1071, 1071, 1071, + 1071, 1071, 1071, 1071, 1071, 1072, 1072, 1072, 1072, 1072, + 1072, 1072, 1072, 1073, 1073, 1073, 1073, 1073, 1073, 1073, + 1073, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1075, + 1075, 1075, 1075, 1075, 1075, 1075, 1075, 1076, 1076, 1076, + 1076, 1076, 1076, 1076, 1076, 1077, 1077, 1077, 1077, 1077, + + 1077, 1077, 1077, 1078, 1078, 1078, 1078, 1078, 1078, 1078, + 1078, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1079, 1080, + 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1081, 1081, 1081, + 1081, 1081, 1081, 1081, 1081, 1082, 1082, 1082, 1082, 1082, + 1082, 1082, 1082, 1083, 1083, 0, 1083, 1083, 1083, 1083, + 1083, 1084, 0, 0, 1084, 1085, 1085, 1085, 1085, 1085, + 1085, 1085, 1085, 1086, 1086, 1086, 1086, 1086, 1086, 1086, + 1086, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1088, + 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1089, 1089, 1089, + 1089, 1089, 1089, 1089, 1089, 1090, 1090, 1090, 1090, 1090, + + 1090, 1090, 1090, 1091, 1091, 1091, 1091, 1091, 1091, 1091, + 1091, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1093, + 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1094, 1094, 1094, + 1094, 1094, 1094, 1094, 1094, 1095, 1095, 1095, 1095, 1095, + 1095, 1095, 1095, 1096, 1096, 1096, 1096, 1096, 1096, 1096, + 1096, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1098, + 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1099, 1099, 1099, + 1099, 1099, 1099, 1099, 1099, 1100, 1100, 1100, 1100, 1100, + 1100, 1100, 1100, 1101, 1101, 1101, 1101, 1101, 1101, 1101, + 1101, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1103, + + 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1104, 1104, 1104, + 1104, 1104, 1104, 1104, 1104, 1105, 1105, 1105, 1105, 1105, + 1105, 1105, 1105, 1106, 1106, 1106, 1106, 1106, 1106, 1106, + 1106, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1107, 1108, + 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1109, 1109, 0, + 1109, 1109, 1109, 1109, 1109, 1110, 0, 0, 1110, 1111, + 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1112, 1112, 1112, + 1112, 1112, 1112, 1112, 1112, 1113, 1113, 1113, 1113, 1113, + 1113, 1113, 1113, 1114, 1114, 1114, 1114, 1114, 1114, 1114, + 1114, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1116, + + 1116, 1116, 1116, 1116, 1116, 1116, 1116, 1117, 1117, 1117, + 1117, 1117, 1117, 1117, 1117, 1118, 1118, 0, 1118, 1118, + 1118, 1118, 1118, 1119, 1119, 1119, 1119, 1119, 1119, 1119, + 1119, 976, 976, 976, 976, 976, 976, 976, 976, 976, + 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, + 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, + 976, 976, 976, 976, 976, 976, 976, 976, 976, 976, + 976, 976, 976, 976, 976, 976, 976, 976, 976, 976 + } ; + +static yy_state_type yy_last_accepting_state; +static char *yy_last_accepting_cpos; + +extern int vrmlyy_flex_debug; +int vrmlyy_flex_debug = 0; + +/* The intent behind this definition is that it'll catch + * any uses of REJECT which flex missed. + */ +#define REJECT reject_used_but_not_detected +#define yymore() yymore_used_but_not_detected +#define YY_MORE_ADJ 0 +#define YY_RESTORE_YY_MORE_OFFSET +char *vrmlyytext; +#line 1 "vrmlLexer.lxx" +/* +// Filename: vrmlLexer.lxx +// Created by: drose (01Oct04) +// +//////////////////////////////////////////////////////////////////// +// +// PANDA 3D SOFTWARE +// Copyright (c) Carnegie Mellon University. All rights reserved. +// +// All use of this software is subject to the terms of the revised BSD +// license. You should have received a copy of this license along +// with this source code in a file named "LICENSE." +// +//////////////////////////////////////////////////////////////////// +*/ +/************************************************** + * VRML 2.0 Parser + * Copyright (C) 1996 Silicon Graphics, Inc. + * + * Author(s) : Gavin Bell + * Daniel Woods (first port) + ************************************************** + */ +#line 26 "vrmlLexer.lxx" +#include "pandatoolbase.h" + +#include "vrmlNode.h" +#include "vrmlParser.h" +#include "pnotify.h" +#include "pstrtod.h" + +static int yyinput(void); // declared by flex. +extern "C" int vrmlyywrap(); + +//////////////////////////////////////////////////////////////////// +// Static variables +//////////////////////////////////////////////////////////////////// + +// We'll increment line_number as we parse the file, so +// that we can report the position of an error. +static int line_number = 0; + +// current_line holds as much of the current line as will fit. Its +// only purpose is for printing it out to report an error to the user. +static const int max_error_width = 1024; +static char current_line[max_error_width + 1]; + +static int error_count = 0; +static int warning_count = 0; + +// This is the pointer to the current input stream. +static istream *input_p = NULL; + +// This is the name of the vrml file we're parsing. We keep it so we +// can print it out for error messages. +static string vrml_filename; + +extern void vrmlyyerror(const string &); + + /* The YACC parser sets this to a token to direct the lexer */ + /* in cases where just syntax isn't enough: */ +int expectToken = 0; + + /* True when parsing a multiple-valued field: */ +static int parsing_mf = 0; + + /* These are used when parsing SFImage fields: */ +static int sfImageIntsParsed = 0; +static int sfImageIntsExpected = 0; + +// This is used while scanning a quoted string. +static string quoted_string; + +// And this keeps track of the currently-parsing array. +static MFArray *mfarray; + +void +vrml_init_lexer(istream &in, const string &filename) { + input_p = ∈ + vrml_filename = filename; + line_number = 0; + error_count = 0; + warning_count = 0; +} + +//////////////////////////////////////////////////////////////////// +// Internal support functions. +//////////////////////////////////////////////////////////////////// + +int +vrmlyywrap(void) { + return 1; +} + +void +vrmlyyerror(const string &msg) { + cerr << "\nError"; + if (!vrml_filename.empty()) { + cerr << " in " << vrml_filename; + } + cerr + << " at line " << line_number << ":\n" + << current_line << "\n"; + + error_count++; +} + +void +vrmlyywarning(const string &msg) { + cerr << "\nWarning"; + if (!vrml_filename.empty()) { + cerr << " in " << vrml_filename; + } + cerr + << " at line " << line_number << ":\n" + << current_line << "\n"; + + warning_count++; +} + +// Now define a function to take input from an istream instead of a +// stdio FILE pointer. This is flex-specific. +static void +input_chars(char *buffer, int &result, int max_size) { + nassertv(input_p != NULL); + if (*input_p) { + input_p->read(buffer, max_size); + result = input_p->gcount(); + if (result >= 0 && result < max_size) { + // Truncate at the end of the read. + buffer[result] = '\0'; + } + + if (line_number == 0) { + // This is a special case. If we are reading the very first bit + // from the stream, copy it into the current_line array. This + // is because the \n.* rule below, which fills current_line + // normally, doesn't catch the first line. + strncpy(current_line, vrmlyytext, max_error_width); + current_line[max_error_width] = '\0'; + line_number++; + + // Truncate it at the newline. + char *end = strchr(current_line, '\n'); + if (end != NULL) { + *end = '\0'; + } + } + + } else { + // End of file or I/O error. + result = 0; + } +} +#undef YY_INPUT + +// Define this macro carefully, since different flex versions call it +// with a different type for result. +#define YY_INPUT(buffer, result, max_size) { \ + int int_result; \ + input_chars((buffer), int_result, (max_size)); \ + (result) = int_result; \ +} + +int extract_int() { + return strtol(vrmlyytext, NULL, 0); +} + +double extract_float() { + return patof(vrmlyytext); +} + +void extract_vec(double vec[], int num_elements) { + char *p = vrmlyytext; + for (int i = 0; i < num_elements; i++) { + vec[i] = pstrtod(p, &p); + } +} + +/* Normal state: parsing nodes. The initial start state is used */ +/* only to recognize the VRML header. */ + +/* Start tokens for all of the field types, */ +/* except for MFNode and SFNode, which are almost completely handled */ +/* by the parser: */ + + + +/* Big hairy expression for floating point numbers: */ +/* Ints are decimal or hex (0x##): */ +/* Whitespace. Using this pattern can screw up currentLineNumber, */ +/* so it is only used wherever it is really convenient and it is */ +/* extremely unlikely that the user will put in a carriage return */ +/* (example: between the floats in an SFVec3f) */ +/* And the same pattern without the newline */ +/* Here's a pattern that matches a single newline character. */ +/* Legal characters to start an identifier */ +/* Legal other characters in an identifier */ +/*idRestChar ([^\x00-\x20\x22\x23\x27\x2b-\x2e\x5b-\x5d\x7b\x7d])*/ +/* Allow hyphen (0x2d) in identifiers. */ +#line 2927 "lex.yy.c" + +#define INITIAL 0 +#define NODE 1 +#define SFB 2 +#define SFC 3 +#define SFF 4 +#define SFIMG 5 +#define SFI 6 +#define SFR 7 +#define SFS 8 +#define SFT 9 +#define SFV2 10 +#define SFV3 11 +#define MFC 12 +#define MFF 13 +#define MFI 14 +#define MFR 15 +#define MFS 16 +#define MFV2 17 +#define MFV3 18 +#define IN_SFS 19 +#define IN_MFS 20 +#define IN_SFIMG 21 + +#ifndef YY_NO_UNISTD_H +/* Special case for "unistd.h", since it is non-ANSI. We include it way + * down here because we want the user's section 1 to have been scanned first. + * The user has a chance to override it with an option. + */ +#endif + +#ifndef YY_EXTRA_TYPE +#define YY_EXTRA_TYPE void * +#endif + +static int yy_init_globals (void ); + +/* Accessor methods to globals. + These are made visible to non-reentrant scanners for convenience. */ + +int vrmlyylex_destroy (void ); + +int vrmlyyget_debug (void ); + +void vrmlyyset_debug (int debug_flag ); + +YY_EXTRA_TYPE vrmlyyget_extra (void ); + +void vrmlyyset_extra (YY_EXTRA_TYPE user_defined ); + +FILE *vrmlyyget_in (void ); + +void vrmlyyset_in (FILE * in_str ); + +FILE *vrmlyyget_out (void ); + +void vrmlyyset_out (FILE * out_str ); + +int vrmlyyget_leng (void ); + +char *vrmlyyget_text (void ); + +int vrmlyyget_lineno (void ); + +void vrmlyyset_lineno (int line_number ); + +/* Macros after this point can all be overridden by user definitions in + * section 1. + */ + +#ifndef YY_SKIP_YYWRAP +#ifdef __cplusplus +extern "C" int vrmlyywrap (void ); +#else +extern int vrmlyywrap (void ); +#endif +#endif + + static void yyunput (int c,char *buf_ptr ); + +#ifndef yytext_ptr +static void yy_flex_strncpy (char *,yyconst char *,int ); +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen (yyconst char * ); +#endif + +#ifndef YY_NO_INPUT + +#ifdef __cplusplus +static int yyinput (void ); +#else +static int input (void ); +#endif + +#endif + +/* Amount of stuff to slurp up with each read. */ +#ifndef YY_READ_BUF_SIZE +#define YY_READ_BUF_SIZE 8192 +#endif + +/* Copy whatever the last rule matched to the standard output. */ +#ifndef ECHO +/* This used to be an fputs(), but since the string might contain NUL's, + * we now use fwrite(). + */ +#define ECHO fwrite( vrmlyytext, vrmlyyleng, 1, vrmlyyout ) +#endif + +/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, + * is returned in "result". + */ +#ifndef YY_INPUT +#define YY_INPUT(buf,result,max_size) \ + if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ + { \ + int c = '*'; \ + int n; \ + for ( n = 0; n < max_size && \ + (c = getc( vrmlyyin )) != EOF && c != '\n'; ++n ) \ + buf[n] = (char) c; \ + if ( c == '\n' ) \ + buf[n++] = (char) c; \ + if ( c == EOF && ferror( vrmlyyin ) ) \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + result = n; \ + } \ + else \ + { \ + errno=0; \ + while ( (result = fread(buf, 1, max_size, vrmlyyin))==0 && ferror(vrmlyyin)) \ + { \ + if( errno != EINTR) \ + { \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + break; \ + } \ + errno=0; \ + clearerr(vrmlyyin); \ + } \ + }\ +\ + +#endif + +/* No semi-colon after return; correct usage is to write "yyterminate();" - + * we don't want an extra ';' after the "return" because that will cause + * some compilers to complain about unreachable statements. + */ +#ifndef yyterminate +#define yyterminate() return YY_NULL +#endif + +/* Number of entries by which start-condition stack grows. */ +#ifndef YY_START_STACK_INCR +#define YY_START_STACK_INCR 25 +#endif + +/* Report a fatal error. */ +#ifndef YY_FATAL_ERROR +#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) +#endif + +/* end tables serialization structures and prototypes */ + +/* Default declaration of generated scanner - a define so the user can + * easily add parameters. + */ +#ifndef YY_DECL +#define YY_DECL_IS_OURS 1 + +extern int vrmlyylex (void); + +#define YY_DECL int vrmlyylex (void) +#endif /* !YY_DECL */ + +/* Code executed at the beginning of each rule, after vrmlyytext and vrmlyyleng + * have been set up. + */ +#ifndef YY_USER_ACTION +#define YY_USER_ACTION +#endif + +/* Code executed at the end of each rule. */ +#ifndef YY_BREAK +#define YY_BREAK break; +#endif + +#define YY_RULE_SETUP \ + YY_USER_ACTION + +/** The main scanner function which does all the work. + */ +YY_DECL +{ + register yy_state_type yy_current_state; + register char *yy_cp, *yy_bp; + register int yy_act; + +#line 217 "vrmlLexer.lxx" + + + + /* Switch into a new start state if the parser */ + /* just told us that we've read a field name */ + /* and should expect a field value (or IS) */ + if (expectToken != 0) { + + /* + * Annoying. This big switch is necessary because + * LEX wants to assign particular numbers to start + * tokens, and YACC wants to define all the tokens + * used, too. Sigh. + */ + switch(expectToken) { + case SFBOOL: BEGIN SFB; break; + case SFCOLOR: BEGIN SFC; break; + case SFFLOAT: BEGIN SFF; break; + case SFIMAGE: BEGIN SFIMG; break; + case SFINT32: BEGIN SFI; break; + case SFROTATION: BEGIN SFR; break; + case SFSTRING: BEGIN SFS; break; + case SFTIME: BEGIN SFT; break; + case SFVEC2F: BEGIN SFV2; break; + case SFVEC3F: BEGIN SFV3; break; + case MFCOLOR: BEGIN MFC; break; + case MFFLOAT: BEGIN MFF; break; + case MFINT32: BEGIN MFI; break; + case MFROTATION: BEGIN MFR; break; + case MFSTRING: BEGIN MFS; break; + case MFVEC2F: BEGIN MFV2; break; + case MFVEC3F: BEGIN MFV3; break; + + /* SFNode and MFNode are special. Here the lexer just returns */ + /* "marker tokens" so the parser knows what type of field is */ + /* being parsed; unlike the other fields, parsing of SFNode/MFNode */ + /* field happens in the parser. */ + case MFNODE: expectToken = 0; return MFNODE; + case SFNODE: expectToken = 0; return SFNODE; + + default: vrmlyyerror("ACK: Bad expectToken"); break; + } + } + + + /* This is more complicated than they really need to be because */ + /* I was ambitious and made the whitespace-matching rule aggressive */ +#line 3178 "lex.yy.c" + + if ( !(yy_init) ) + { + (yy_init) = 1; + +#ifdef YY_USER_INIT + YY_USER_INIT; +#endif + + if ( ! (yy_start) ) + (yy_start) = 1; /* first start state */ + + if ( ! vrmlyyin ) + vrmlyyin = stdin; + + if ( ! vrmlyyout ) + vrmlyyout = stdout; + + if ( ! YY_CURRENT_BUFFER ) { + vrmlyyensure_buffer_stack (); + YY_CURRENT_BUFFER_LVALUE = + vrmlyy_create_buffer(vrmlyyin,YY_BUF_SIZE ); + } + + vrmlyy_load_buffer_state( ); + } + + while ( 1 ) /* loops until end-of-file is reached */ + { + yy_cp = (yy_c_buf_p); + + /* Support of vrmlyytext. */ + *yy_cp = (yy_hold_char); + + /* yy_bp points to the position in yy_ch_buf of the start of + * the current run. + */ + yy_bp = yy_cp; + + yy_current_state = (yy_start); +yy_match: + do + { + register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 977 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + ++yy_cp; + } + while ( yy_base[yy_current_state] != 8632 ); + +yy_find_action: + yy_act = yy_accept[yy_current_state]; + if ( yy_act == 0 ) + { /* have to back up */ + yy_cp = (yy_last_accepting_cpos); + yy_current_state = (yy_last_accepting_state); + yy_act = yy_accept[yy_current_state]; + } + + YY_DO_BEFORE_ACTION; + +do_action: /* This label is used only to access EOF actions. */ + + switch ( yy_act ) + { /* beginning of action switch */ + case 0: /* must back up */ + /* undo the effects of YY_DO_BEFORE_ACTION */ + *yy_cp = (yy_hold_char); + yy_cp = (yy_last_accepting_cpos); + yy_current_state = (yy_last_accepting_state); + goto yy_find_action; + +case 1: +/* rule 1 can match eol */ +YY_RULE_SETUP +#line 264 "vrmlLexer.lxx" +{ + BEGIN NODE; +} + YY_BREAK +/* The lexer is in the NODE state when parsing nodes, either */ +/* top-level nodes in the .wrl file, in a prototype implementation, */ +/* or when parsing the contents of SFNode or MFNode fields. */ +case 2: +YY_RULE_SETUP +#line 271 "vrmlLexer.lxx" +{ return PROTO; } + YY_BREAK +case 3: +YY_RULE_SETUP +#line 272 "vrmlLexer.lxx" +{ return EXTERNPROTO; } + YY_BREAK +case 4: +YY_RULE_SETUP +#line 273 "vrmlLexer.lxx" +{ return DEF; } + YY_BREAK +case 5: +YY_RULE_SETUP +#line 274 "vrmlLexer.lxx" +{ return USE; } + YY_BREAK +case 6: +YY_RULE_SETUP +#line 275 "vrmlLexer.lxx" +{ return TO; } + YY_BREAK +case 7: +YY_RULE_SETUP +#line 276 "vrmlLexer.lxx" +{ return IS; } + YY_BREAK +case 8: +YY_RULE_SETUP +#line 277 "vrmlLexer.lxx" +{ return ROUTE; } + YY_BREAK +case 9: +YY_RULE_SETUP +#line 278 "vrmlLexer.lxx" +{ return SFN_NULL; } + YY_BREAK +case 10: +YY_RULE_SETUP +#line 279 "vrmlLexer.lxx" +{ return EVENTIN; } + YY_BREAK +case 11: +YY_RULE_SETUP +#line 280 "vrmlLexer.lxx" +{ return EVENTOUT; } + YY_BREAK +case 12: +YY_RULE_SETUP +#line 281 "vrmlLexer.lxx" +{ return FIELD; } + YY_BREAK +case 13: +YY_RULE_SETUP +#line 282 "vrmlLexer.lxx" +{ return EXPOSEDFIELD; } + YY_BREAK +/* Legal identifiers: */ +case 14: +YY_RULE_SETUP +#line 285 "vrmlLexer.lxx" +{ + vrmlyylval.string = strdup(vrmlyytext); + return IDENTIFIER; +} + YY_BREAK +/* This hopefully won't bitch things too much. It's not legal for + an identifier to begin with a digit, but Form-Z writes out VRML + files that do. So we'll allow it. Hopefully the start states + will keep them sorted out. */ +case 15: +YY_RULE_SETUP +#line 293 "vrmlLexer.lxx" +{ + vrmlyylval.string = strdup(vrmlyytext); + return IDENTIFIER; +} + YY_BREAK +/* All fields may have an IS declaration: */ +case 16: +YY_RULE_SETUP +#line 299 "vrmlLexer.lxx" +{ + BEGIN NODE; + expectToken = 0; + yyless(0); +} + YY_BREAK +case 17: +YY_RULE_SETUP +#line 305 "vrmlLexer.lxx" +{ + BEGIN NODE; + expectToken = 0; + yyless(0); /* put back the IS */ +} + YY_BREAK +/* All MF field types other than MFNode are completely parsed here */ +/* in the lexer, and one token is returned to the parser. They all */ +/* share the same rules for open and closing brackets: */ +case 18: +YY_RULE_SETUP +#line 314 "vrmlLexer.lxx" +{ + if (parsing_mf) vrmlyyerror("Double ["); + parsing_mf = 1; + mfarray = new MFArray; +} + YY_BREAK +case 19: +YY_RULE_SETUP +#line 320 "vrmlLexer.lxx" +{ + if (!parsing_mf) vrmlyyerror("Unmatched ]"); + int fieldType = expectToken; + BEGIN NODE; + parsing_mf = 0; + expectToken = 0; + vrmlyylval.fv._mf = mfarray; + return fieldType; +} + YY_BREAK +case 20: +YY_RULE_SETUP +#line 330 "vrmlLexer.lxx" +{ + BEGIN NODE; + expectToken = 0; + vrmlyylval.fv._sfbool = true; + return SFBOOL; +} + YY_BREAK +case 21: +YY_RULE_SETUP +#line 337 "vrmlLexer.lxx" +{ + BEGIN NODE; + expectToken = 0; + vrmlyylval.fv._sfbool = false; + return SFBOOL; +} + YY_BREAK +case 22: +YY_RULE_SETUP +#line 344 "vrmlLexer.lxx" +{ + BEGIN NODE; + expectToken = 0; + vrmlyylval.fv._sfint32 = extract_int(); + return SFINT32; +} + YY_BREAK +case 23: +YY_RULE_SETUP +#line 351 "vrmlLexer.lxx" +{ + VrmlFieldValue v; + v._sfint32 = extract_int(); + if (parsing_mf) { + mfarray->push_back(v); + } else { + BEGIN NODE; + expectToken = 0; + vrmlyylval.fv._mf = new MFArray; + vrmlyylval.fv._mf->push_back(v); + return MFINT32; + } +} + YY_BREAK +/* All the floating-point types are pretty similar: */ +case 24: +YY_RULE_SETUP +#line 366 "vrmlLexer.lxx" +{ + BEGIN NODE; + expectToken = 0; + vrmlyylval.fv._sffloat = extract_float(); + return SFFLOAT; +} + YY_BREAK +case 25: +YY_RULE_SETUP +#line 373 "vrmlLexer.lxx" +{ + VrmlFieldValue v; + v._sffloat = extract_float(); + if (parsing_mf) { + /* Add to array... */ + mfarray->push_back(v); + } else { + /* No open bracket means a single value: */ + BEGIN NODE; + expectToken = 0; + vrmlyylval.fv._mf = new MFArray; + vrmlyylval.fv._mf->push_back(v); + return MFFLOAT; + } +} + YY_BREAK +case 26: +/* rule 26 can match eol */ +YY_RULE_SETUP +#line 389 "vrmlLexer.lxx" +{ + BEGIN NODE; + expectToken = 0; + extract_vec(vrmlyylval.fv._sfvec, 2); + return SFVEC2F; +} + YY_BREAK +case 27: +/* rule 27 can match eol */ +YY_RULE_SETUP +#line 396 "vrmlLexer.lxx" +{ + VrmlFieldValue v; + extract_vec(v._sfvec, 2); + if (parsing_mf) { + mfarray->push_back(v); + } else { + BEGIN NODE; + expectToken = 0; + vrmlyylval.fv._mf = new MFArray; + vrmlyylval.fv._mf->push_back(v); + return MFVEC2F; + } +} + YY_BREAK +case 28: +/* rule 28 can match eol */ +YY_RULE_SETUP +#line 410 "vrmlLexer.lxx" +{ + BEGIN NODE; + expectToken = 0; + extract_vec(vrmlyylval.fv._sfvec, 3); + return SFVEC3F; +} + YY_BREAK +case 29: +/* rule 29 can match eol */ +YY_RULE_SETUP +#line 417 "vrmlLexer.lxx" +{ + VrmlFieldValue v; + extract_vec(v._sfvec, 3); + if (parsing_mf) { + mfarray->push_back(v); + } else { + BEGIN NODE; + expectToken = 0; + vrmlyylval.fv._mf = new MFArray; + vrmlyylval.fv._mf->push_back(v); + return MFVEC3F; + } +} + YY_BREAK +case 30: +/* rule 30 can match eol */ +YY_RULE_SETUP +#line 431 "vrmlLexer.lxx" +{ + BEGIN NODE; + expectToken = 0; + extract_vec(vrmlyylval.fv._sfvec, 4); + return SFROTATION; +} + YY_BREAK +case 31: +/* rule 31 can match eol */ +YY_RULE_SETUP +#line 438 "vrmlLexer.lxx" +{ + VrmlFieldValue v; + extract_vec(v._sfvec, 4); + if (parsing_mf) { + mfarray->push_back(v); + } else { + BEGIN NODE; + expectToken = 0; + vrmlyylval.fv._mf = new MFArray; + vrmlyylval.fv._mf->push_back(v); + return MFROTATION; + } +} + YY_BREAK +case 32: +/* rule 32 can match eol */ +YY_RULE_SETUP +#line 452 "vrmlLexer.lxx" +{ + BEGIN NODE; + expectToken = 0; + extract_vec(vrmlyylval.fv._sfvec, 3); + return SFCOLOR; +} + YY_BREAK +case 33: +/* rule 33 can match eol */ +YY_RULE_SETUP +#line 459 "vrmlLexer.lxx" +{ + VrmlFieldValue v; + extract_vec(v._sfvec, 3); + if (parsing_mf) { + mfarray->push_back(v); + } else { + BEGIN NODE; + expectToken = 0; + vrmlyylval.fv._mf = new MFArray; + vrmlyylval.fv._mf->push_back(v); + return MFCOLOR; + } +} + YY_BREAK +case 34: +YY_RULE_SETUP +#line 473 "vrmlLexer.lxx" +{ + BEGIN NODE; + expectToken = 0; + vrmlyylval.fv._sffloat = extract_float(); + return SFTIME; +} + YY_BREAK +/* SFString/MFString */ +case 35: +YY_RULE_SETUP +#line 481 "vrmlLexer.lxx" +{ + BEGIN IN_SFS; + quoted_string = ""; +} + YY_BREAK +case 36: +YY_RULE_SETUP +#line 486 "vrmlLexer.lxx" +{ + BEGIN IN_MFS; + quoted_string = ""; +} + YY_BREAK +/* Anything besides open-quote (or whitespace) is an error: */ +case 37: +YY_RULE_SETUP +#line 492 "vrmlLexer.lxx" +{ + vrmlyyerror("String missing open-quote"); + BEGIN NODE; + expectToken = 0; + vrmlyylval.fv._sfstring = strdup(""); + return SFSTRING; +} + YY_BREAK +/* Expect open-quote, open-bracket, or whitespace: */ +case 38: +YY_RULE_SETUP +#line 501 "vrmlLexer.lxx" +{ + vrmlyyerror("String missing open-quote"); + BEGIN NODE; + expectToken = 0; + return MFSTRING; +} + YY_BREAK +/* Backslashed-quotes are OK: */ +case 39: +YY_RULE_SETUP +#line 509 "vrmlLexer.lxx" +{ + quoted_string += '"'; +} + YY_BREAK +/* Gobble up anything besides quotes and newlines. */ +/* Newlines are legal in strings, but we exclude them here so */ +/* that line number are counted correctly by the catch-all newline */ +/* rule that applies to everything. */ +case 40: +YY_RULE_SETUP +#line 517 "vrmlLexer.lxx" +{ + quoted_string += vrmlyytext; +} + YY_BREAK +/* Quote ends the string: */ +case 41: +YY_RULE_SETUP +#line 522 "vrmlLexer.lxx" +{ + BEGIN NODE; + expectToken = 0; + vrmlyylval.fv._sfstring = strdup(quoted_string.c_str()); + return SFSTRING; +} + YY_BREAK +case 42: +YY_RULE_SETUP +#line 529 "vrmlLexer.lxx" +{ + VrmlFieldValue v; + v._sfstring = strdup(quoted_string.c_str()); + if (parsing_mf) { + BEGIN MFS; + mfarray->push_back(v); + quoted_string = ""; + } else { + BEGIN NODE; + expectToken = 0; + vrmlyylval.fv._mf = new MFArray; + vrmlyylval.fv._mf->push_back(v); + return MFSTRING; + } +} + YY_BREAK +/* SFImage: width height numComponents then width*height integers: */ +case 43: +/* rule 43 can match eol */ +YY_RULE_SETUP +#line 546 "vrmlLexer.lxx" +{ int w, h; + sscanf(vrmlyytext, "%d %d", &w, &h); + sfImageIntsExpected = 1+w*h; + sfImageIntsParsed = 0; + BEGIN IN_SFIMG; + } + YY_BREAK +case 44: +YY_RULE_SETUP +#line 552 "vrmlLexer.lxx" +{ ++sfImageIntsParsed; + if (sfImageIntsParsed == sfImageIntsExpected) { + BEGIN NODE; expectToken = 0; return SFIMAGE; + } + } + YY_BREAK +/* Whitespace and catch-all rules apply to all start states: */ +case 45: +YY_RULE_SETUP +#line 559 "vrmlLexer.lxx" +; + YY_BREAK +/* A newline is also whitespace, but we'll keep track of line number */ +/* to report in errors: */ +case 46: +/* rule 46 can match eol */ +YY_RULE_SETUP +#line 563 "vrmlLexer.lxx" +{ + // Save a copy of the line so we can print it out for the benefit of + // the user in case we get an error. + strncpy(current_line, vrmlyytext+1, max_error_width); + current_line[max_error_width] = '\0'; + line_number++; + + // Return the whole line to the lexer, except the newline character, + // which we eat. + yyless(1); +} + YY_BREAK +/* This catch-all rule catches anything not covered by any of */ +/* the above: */ +case 47: +YY_RULE_SETUP +#line 577 "vrmlLexer.lxx" +{ + return vrmlyytext[0]; +} + YY_BREAK +case 48: +YY_RULE_SETUP +#line 581 "vrmlLexer.lxx" +ECHO; + YY_BREAK +#line 3748 "lex.yy.c" +case YY_STATE_EOF(INITIAL): +case YY_STATE_EOF(NODE): +case YY_STATE_EOF(SFB): +case YY_STATE_EOF(SFC): +case YY_STATE_EOF(SFF): +case YY_STATE_EOF(SFIMG): +case YY_STATE_EOF(SFI): +case YY_STATE_EOF(SFR): +case YY_STATE_EOF(SFS): +case YY_STATE_EOF(SFT): +case YY_STATE_EOF(SFV2): +case YY_STATE_EOF(SFV3): +case YY_STATE_EOF(MFC): +case YY_STATE_EOF(MFF): +case YY_STATE_EOF(MFI): +case YY_STATE_EOF(MFR): +case YY_STATE_EOF(MFS): +case YY_STATE_EOF(MFV2): +case YY_STATE_EOF(MFV3): +case YY_STATE_EOF(IN_SFS): +case YY_STATE_EOF(IN_MFS): +case YY_STATE_EOF(IN_SFIMG): + yyterminate(); + + case YY_END_OF_BUFFER: + { + /* Amount of text matched not including the EOB char. */ + int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; + + /* Undo the effects of YY_DO_BEFORE_ACTION. */ + *yy_cp = (yy_hold_char); + YY_RESTORE_YY_MORE_OFFSET + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) + { + /* We're scanning a new file or input source. It's + * possible that this happened because the user + * just pointed vrmlyyin at a new source and called + * vrmlyylex(). If so, then we have to assure + * consistency between YY_CURRENT_BUFFER and our + * globals. Here is the right place to do so, because + * this is the first action (other than possibly a + * back-up) that will match for the new input source. + */ + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + YY_CURRENT_BUFFER_LVALUE->yy_input_file = vrmlyyin; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; + } + + /* Note that here we test for yy_c_buf_p "<=" to the position + * of the first EOB in the buffer, since yy_c_buf_p will + * already have been incremented past the NUL character + * (since all states make transitions on EOB to the + * end-of-buffer state). Contrast this with the test + * in input(). + */ + if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) + { /* This was really a NUL. */ + yy_state_type yy_next_state; + + (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( ); + + /* Okay, we're now positioned to make the NUL + * transition. We couldn't have + * yy_get_previous_state() go ahead and do it + * for us because it doesn't know how to deal + * with the possibility of jamming (and we don't + * want to build jamming into it because then it + * will run more slowly). + */ + + yy_next_state = yy_try_NUL_trans( yy_current_state ); + + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + + if ( yy_next_state ) + { + /* Consume the NUL. */ + yy_cp = ++(yy_c_buf_p); + yy_current_state = yy_next_state; + goto yy_match; + } + + else + { + yy_cp = (yy_c_buf_p); + goto yy_find_action; + } + } + + else switch ( yy_get_next_buffer( ) ) + { + case EOB_ACT_END_OF_FILE: + { + (yy_did_buffer_switch_on_eof) = 0; + + if ( vrmlyywrap( ) ) + { + /* Note: because we've taken care in + * yy_get_next_buffer() to have set up + * vrmlyytext, we can now set up + * yy_c_buf_p so that if some total + * hoser (like flex itself) wants to + * call the scanner after we return the + * YY_NULL, it'll still work - another + * YY_NULL will get returned. + */ + (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; + + yy_act = YY_STATE_EOF(YY_START); + goto do_action; + } + + else + { + if ( ! (yy_did_buffer_switch_on_eof) ) + YY_NEW_FILE; + } + break; + } + + case EOB_ACT_CONTINUE_SCAN: + (yy_c_buf_p) = + (yytext_ptr) + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( ); + + yy_cp = (yy_c_buf_p); + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + goto yy_match; + + case EOB_ACT_LAST_MATCH: + (yy_c_buf_p) = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; + + yy_current_state = yy_get_previous_state( ); + + yy_cp = (yy_c_buf_p); + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + goto yy_find_action; + } + break; + } + + default: + YY_FATAL_ERROR( + "fatal flex scanner internal error--no action found" ); + } /* end of action switch */ + } /* end of scanning one token */ +} /* end of vrmlyylex */ + +/* yy_get_next_buffer - try to read in a new buffer + * + * Returns a code representing an action: + * EOB_ACT_LAST_MATCH - + * EOB_ACT_CONTINUE_SCAN - continue scanning from current position + * EOB_ACT_END_OF_FILE - end of file + */ +static int yy_get_next_buffer (void) +{ + register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; + register char *source = (yytext_ptr); + register int number_to_move, i; + int ret_val; + + if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) + YY_FATAL_ERROR( + "fatal flex scanner internal error--end of buffer missed" ); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) + { /* Don't try to fill the buffer, so this is an EOF. */ + if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) + { + /* We matched a single character, the EOB, so + * treat this as a final EOF. + */ + return EOB_ACT_END_OF_FILE; + } + + else + { + /* We matched some text prior to the EOB, first + * process it. + */ + return EOB_ACT_LAST_MATCH; + } + } + + /* Try to read more data. */ + + /* First move last chars to start of buffer. */ + number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; + + for ( i = 0; i < number_to_move; ++i ) + *(dest++) = *(source++); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) + /* don't do the read, it's not guaranteed to return an EOF, + * just force an EOF + */ + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; + + else + { + int num_to_read = + YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; + + while ( num_to_read <= 0 ) + { /* Not enough room in the buffer - grow it. */ + + /* just a shorter name for the current buffer */ + YY_BUFFER_STATE b = YY_CURRENT_BUFFER; + + int yy_c_buf_p_offset = + (int) ((yy_c_buf_p) - b->yy_ch_buf); + + if ( b->yy_is_our_buffer ) + { + int new_size = b->yy_buf_size * 2; + + if ( new_size <= 0 ) + b->yy_buf_size += b->yy_buf_size / 8; + else + b->yy_buf_size *= 2; + + b->yy_ch_buf = (char *) + /* Include room in for 2 EOB chars. */ + vrmlyyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ); + } + else + /* Can't grow it, we don't own it. */ + b->yy_ch_buf = 0; + + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( + "fatal error - scanner input buffer overflow" ); + + (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; + + num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - + number_to_move - 1; + + } + + if ( num_to_read > YY_READ_BUF_SIZE ) + num_to_read = YY_READ_BUF_SIZE; + + /* Read in more data. */ + YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), + (yy_n_chars), (size_t) num_to_read ); + + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + if ( (yy_n_chars) == 0 ) + { + if ( number_to_move == YY_MORE_ADJ ) + { + ret_val = EOB_ACT_END_OF_FILE; + vrmlyyrestart(vrmlyyin ); + } + + else + { + ret_val = EOB_ACT_LAST_MATCH; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = + YY_BUFFER_EOF_PENDING; + } + } + + else + ret_val = EOB_ACT_CONTINUE_SCAN; + + if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { + /* Extend the array by 50%, plus the number we really need. */ + yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) vrmlyyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ); + if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); + } + + (yy_n_chars) += number_to_move; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; + + (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; + + return ret_val; +} + +/* yy_get_previous_state - get the state just before the EOB char was reached */ + + static yy_state_type yy_get_previous_state (void) +{ + register yy_state_type yy_current_state; + register char *yy_cp; + + yy_current_state = (yy_start); + + for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) + { + register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 977 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + } + + return yy_current_state; +} + +/* yy_try_NUL_trans - try to make a transition on the NUL character + * + * synopsis + * next_state = yy_try_NUL_trans( current_state ); + */ + static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) +{ + register int yy_is_jam; + register char *yy_cp = (yy_c_buf_p); + + register YY_CHAR yy_c = 1; + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 977 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + yy_is_jam = (yy_current_state == 976); + + return yy_is_jam ? 0 : yy_current_state; +} + + static void yyunput (int c, register char * yy_bp ) +{ + register char *yy_cp; + + yy_cp = (yy_c_buf_p); + + /* undo effects of setting up vrmlyytext */ + *yy_cp = (yy_hold_char); + + if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) + { /* need to shift things up to make room */ + /* +2 for EOB chars. */ + register int number_to_move = (yy_n_chars) + 2; + register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ + YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; + register char *source = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; + + while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) + *--dest = *--source; + + yy_cp += (int) (dest - source); + yy_bp += (int) (dest - source); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size; + + if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) + YY_FATAL_ERROR( "flex scanner push-back overflow" ); + } + + *--yy_cp = (char) c; + + (yytext_ptr) = yy_bp; + (yy_hold_char) = *yy_cp; + (yy_c_buf_p) = yy_cp; +} + +#ifndef YY_NO_INPUT +#ifdef __cplusplus + static int yyinput (void) +#else + static int input (void) +#endif + +{ + int c; + + *(yy_c_buf_p) = (yy_hold_char); + + if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) + { + /* yy_c_buf_p now points to the character we want to return. + * If this occurs *before* the EOB characters, then it's a + * valid NUL; if not, then we've hit the end of the buffer. + */ + if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) + /* This was really a NUL. */ + *(yy_c_buf_p) = '\0'; + + else + { /* need more input */ + int offset = (yy_c_buf_p) - (yytext_ptr); + ++(yy_c_buf_p); + + switch ( yy_get_next_buffer( ) ) + { + case EOB_ACT_LAST_MATCH: + /* This happens because yy_g_n_b() + * sees that we've accumulated a + * token and flags that we need to + * try matching the token before + * proceeding. But for input(), + * there's no matching to consider. + * So convert the EOB_ACT_LAST_MATCH + * to EOB_ACT_END_OF_FILE. + */ + + /* Reset buffer status. */ + vrmlyyrestart(vrmlyyin ); + + /*FALLTHROUGH*/ + + case EOB_ACT_END_OF_FILE: + { + if ( vrmlyywrap( ) ) + return EOF; + + if ( ! (yy_did_buffer_switch_on_eof) ) + YY_NEW_FILE; +#ifdef __cplusplus + return yyinput(); +#else + return input(); +#endif + } + + case EOB_ACT_CONTINUE_SCAN: + (yy_c_buf_p) = (yytext_ptr) + offset; + break; + } + } + } + + c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ + *(yy_c_buf_p) = '\0'; /* preserve vrmlyytext */ + (yy_hold_char) = *++(yy_c_buf_p); + + return c; +} +#endif /* ifndef YY_NO_INPUT */ + +/** Immediately switch to a different input stream. + * @param input_file A readable stream. + * + * @note This function does not reset the start condition to @c INITIAL . + */ + void vrmlyyrestart (FILE * input_file ) +{ + + if ( ! YY_CURRENT_BUFFER ){ + vrmlyyensure_buffer_stack (); + YY_CURRENT_BUFFER_LVALUE = + vrmlyy_create_buffer(vrmlyyin,YY_BUF_SIZE ); + } + + vrmlyy_init_buffer(YY_CURRENT_BUFFER,input_file ); + vrmlyy_load_buffer_state( ); +} + +/** Switch to a different input buffer. + * @param new_buffer The new input buffer. + * + */ + void vrmlyy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) +{ + + /* TODO. We should be able to replace this entire function body + * with + * vrmlyypop_buffer_state(); + * vrmlyypush_buffer_state(new_buffer); + */ + vrmlyyensure_buffer_stack (); + if ( YY_CURRENT_BUFFER == new_buffer ) + return; + + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *(yy_c_buf_p) = (yy_hold_char); + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + YY_CURRENT_BUFFER_LVALUE = new_buffer; + vrmlyy_load_buffer_state( ); + + /* We don't actually know whether we did this switch during + * EOF (vrmlyywrap()) processing, but the only time this flag + * is looked at is after vrmlyywrap() is called, so it's safe + * to go ahead and always set it. + */ + (yy_did_buffer_switch_on_eof) = 1; +} + +static void vrmlyy_load_buffer_state (void) +{ + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; + vrmlyyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; + (yy_hold_char) = *(yy_c_buf_p); +} + +/** Allocate and initialize an input buffer state. + * @param file A readable stream. + * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. + * + * @return the allocated buffer state. + */ + YY_BUFFER_STATE vrmlyy_create_buffer (FILE * file, int size ) +{ + YY_BUFFER_STATE b; + + b = (YY_BUFFER_STATE) vrmlyyalloc(sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in vrmlyy_create_buffer()" ); + + b->yy_buf_size = size; + + /* yy_ch_buf has to be 2 characters longer than the size given because + * we need to put in 2 end-of-buffer characters. + */ + b->yy_ch_buf = (char *) vrmlyyalloc(b->yy_buf_size + 2 ); + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in vrmlyy_create_buffer()" ); + + b->yy_is_our_buffer = 1; + + vrmlyy_init_buffer(b,file ); + + return b; +} + +/** Destroy the buffer. + * @param b a buffer created with vrmlyy_create_buffer() + * + */ + void vrmlyy_delete_buffer (YY_BUFFER_STATE b ) +{ + + if ( ! b ) + return; + + if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ + YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; + + if ( b->yy_is_our_buffer ) + vrmlyyfree((void *) b->yy_ch_buf ); + + vrmlyyfree((void *) b ); +} + +#ifndef __cplusplus +extern int isatty (int ); +#endif /* __cplusplus */ + +/* Initializes or reinitializes a buffer. + * This function is sometimes called more than once on the same buffer, + * such as during a vrmlyyrestart() or at EOF. + */ + static void vrmlyy_init_buffer (YY_BUFFER_STATE b, FILE * file ) + +{ + int oerrno = errno; + + vrmlyy_flush_buffer(b ); + + b->yy_input_file = file; + b->yy_fill_buffer = 1; + + /* If b is the current buffer, then vrmlyy_init_buffer was _probably_ + * called from vrmlyyrestart() or through yy_get_next_buffer. + * In that case, we don't want to reset the lineno or column. + */ + if (b != YY_CURRENT_BUFFER){ + b->yy_bs_lineno = 1; + b->yy_bs_column = 0; + } + + b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; + + errno = oerrno; +} + +/** Discard all buffered characters. On the next scan, YY_INPUT will be called. + * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. + * + */ + void vrmlyy_flush_buffer (YY_BUFFER_STATE b ) +{ + if ( ! b ) + return; + + b->yy_n_chars = 0; + + /* We always need two end-of-buffer characters. The first causes + * a transition to the end-of-buffer state. The second causes + * a jam in that state. + */ + b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; + b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; + + b->yy_buf_pos = &b->yy_ch_buf[0]; + + b->yy_at_bol = 1; + b->yy_buffer_status = YY_BUFFER_NEW; + + if ( b == YY_CURRENT_BUFFER ) + vrmlyy_load_buffer_state( ); +} + +/** Pushes the new state onto the stack. The new state becomes + * the current state. This function will allocate the stack + * if necessary. + * @param new_buffer The new state. + * + */ +void vrmlyypush_buffer_state (YY_BUFFER_STATE new_buffer ) +{ + if (new_buffer == NULL) + return; + + vrmlyyensure_buffer_stack(); + + /* This block is copied from vrmlyy_switch_to_buffer. */ + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *(yy_c_buf_p) = (yy_hold_char); + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + /* Only push if top exists. Otherwise, replace top. */ + if (YY_CURRENT_BUFFER) + (yy_buffer_stack_top)++; + YY_CURRENT_BUFFER_LVALUE = new_buffer; + + /* copied from vrmlyy_switch_to_buffer. */ + vrmlyy_load_buffer_state( ); + (yy_did_buffer_switch_on_eof) = 1; +} + +/** Removes and deletes the top of the stack, if present. + * The next element becomes the new top. + * + */ +void vrmlyypop_buffer_state (void) +{ + if (!YY_CURRENT_BUFFER) + return; + + vrmlyy_delete_buffer(YY_CURRENT_BUFFER ); + YY_CURRENT_BUFFER_LVALUE = NULL; + if ((yy_buffer_stack_top) > 0) + --(yy_buffer_stack_top); + + if (YY_CURRENT_BUFFER) { + vrmlyy_load_buffer_state( ); + (yy_did_buffer_switch_on_eof) = 1; + } +} + +/* Allocates the stack if it does not exist. + * Guarantees space for at least one push. + */ +static void vrmlyyensure_buffer_stack (void) +{ + int num_to_alloc; + + if (!(yy_buffer_stack)) { + + /* First allocation is just for 2 elements, since we don't know if this + * scanner will even need a stack. We use 2 instead of 1 to avoid an + * immediate realloc on the next call. + */ + num_to_alloc = 1; + (yy_buffer_stack) = (struct yy_buffer_state**)vrmlyyalloc + (num_to_alloc * sizeof(struct yy_buffer_state*) + ); + if ( ! (yy_buffer_stack) ) + YY_FATAL_ERROR( "out of dynamic memory in vrmlyyensure_buffer_stack()" ); + + memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); + + (yy_buffer_stack_max) = num_to_alloc; + (yy_buffer_stack_top) = 0; + return; + } + + if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ + + /* Increase the buffer to prepare for a possible push. */ + int grow_size = 8 /* arbitrary grow size */; + + num_to_alloc = (yy_buffer_stack_max) + grow_size; + (yy_buffer_stack) = (struct yy_buffer_state**)vrmlyyrealloc + ((yy_buffer_stack), + num_to_alloc * sizeof(struct yy_buffer_state*) + ); + if ( ! (yy_buffer_stack) ) + YY_FATAL_ERROR( "out of dynamic memory in vrmlyyensure_buffer_stack()" ); + + /* zero only the new slots.*/ + memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); + (yy_buffer_stack_max) = num_to_alloc; + } +} + +/** Setup the input buffer state to scan directly from a user-specified character buffer. + * @param base the character buffer + * @param size the size in bytes of the character buffer + * + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE vrmlyy_scan_buffer (char * base, yy_size_t size ) +{ + YY_BUFFER_STATE b; + + if ( size < 2 || + base[size-2] != YY_END_OF_BUFFER_CHAR || + base[size-1] != YY_END_OF_BUFFER_CHAR ) + /* They forgot to leave room for the EOB's. */ + return 0; + + b = (YY_BUFFER_STATE) vrmlyyalloc(sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in vrmlyy_scan_buffer()" ); + + b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ + b->yy_buf_pos = b->yy_ch_buf = base; + b->yy_is_our_buffer = 0; + b->yy_input_file = 0; + b->yy_n_chars = b->yy_buf_size; + b->yy_is_interactive = 0; + b->yy_at_bol = 1; + b->yy_fill_buffer = 0; + b->yy_buffer_status = YY_BUFFER_NEW; + + vrmlyy_switch_to_buffer(b ); + + return b; +} + +/** Setup the input buffer state to scan a string. The next call to vrmlyylex() will + * scan from a @e copy of @a str. + * @param yystr a NUL-terminated string to scan + * + * @return the newly allocated buffer state object. + * @note If you want to scan bytes that may contain NUL values, then use + * vrmlyy_scan_bytes() instead. + */ +YY_BUFFER_STATE vrmlyy_scan_string (yyconst char * yystr ) +{ + + return vrmlyy_scan_bytes(yystr,strlen(yystr) ); +} + +/** Setup the input buffer state to scan the given bytes. The next call to vrmlyylex() will + * scan from a @e copy of @a bytes. + * @param bytes the byte buffer to scan + * @param len the number of bytes in the buffer pointed to by @a bytes. + * + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE vrmlyy_scan_bytes (yyconst char * yybytes, int _yybytes_len ) +{ + YY_BUFFER_STATE b; + char *buf; + yy_size_t n; + int i; + + /* Get memory for full buffer, including space for trailing EOB's. */ + n = _yybytes_len + 2; + buf = (char *) vrmlyyalloc(n ); + if ( ! buf ) + YY_FATAL_ERROR( "out of dynamic memory in vrmlyy_scan_bytes()" ); + + for ( i = 0; i < _yybytes_len; ++i ) + buf[i] = yybytes[i]; + + buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; + + b = vrmlyy_scan_buffer(buf,n ); + if ( ! b ) + YY_FATAL_ERROR( "bad buffer in vrmlyy_scan_bytes()" ); + + /* It's okay to grow etc. this buffer, and we should throw it + * away when we're done. + */ + b->yy_is_our_buffer = 1; + + return b; +} + +#ifndef YY_EXIT_FAILURE +#define YY_EXIT_FAILURE 2 +#endif + +static void yy_fatal_error (yyconst char* msg ) +{ + (void) fprintf( stderr, "%s\n", msg ); + exit( YY_EXIT_FAILURE ); +} + +/* Redefine yyless() so it works in section 3 code. */ + +#undef yyless +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up vrmlyytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + vrmlyytext[vrmlyyleng] = (yy_hold_char); \ + (yy_c_buf_p) = vrmlyytext + yyless_macro_arg; \ + (yy_hold_char) = *(yy_c_buf_p); \ + *(yy_c_buf_p) = '\0'; \ + vrmlyyleng = yyless_macro_arg; \ + } \ + while ( 0 ) + +/* Accessor methods (get/set functions) to struct members. */ + +/** Get the current line number. + * + */ +int vrmlyyget_lineno (void) +{ + + return vrmlyylineno; +} + +/** Get the input stream. + * + */ +FILE *vrmlyyget_in (void) +{ + return vrmlyyin; +} + +/** Get the output stream. + * + */ +FILE *vrmlyyget_out (void) +{ + return vrmlyyout; +} + +/** Get the length of the current token. + * + */ +int vrmlyyget_leng (void) +{ + return vrmlyyleng; +} + +/** Get the current token. + * + */ + +char *vrmlyyget_text (void) +{ + return vrmlyytext; +} + +/** Set the current line number. + * @param line_number + * + */ +void vrmlyyset_lineno (int line_number ) +{ + + vrmlyylineno = line_number; +} + +/** Set the input stream. This does not discard the current + * input buffer. + * @param in_str A readable stream. + * + * @see vrmlyy_switch_to_buffer + */ +void vrmlyyset_in (FILE * in_str ) +{ + vrmlyyin = in_str ; +} + +void vrmlyyset_out (FILE * out_str ) +{ + vrmlyyout = out_str ; +} + +int vrmlyyget_debug (void) +{ + return vrmlyy_flex_debug; +} + +void vrmlyyset_debug (int bdebug ) +{ + vrmlyy_flex_debug = bdebug ; +} + +static int yy_init_globals (void) +{ + /* Initialization is the same as for the non-reentrant scanner. + * This function is called from vrmlyylex_destroy(), so don't allocate here. + */ + + (yy_buffer_stack) = 0; + (yy_buffer_stack_top) = 0; + (yy_buffer_stack_max) = 0; + (yy_c_buf_p) = (char *) 0; + (yy_init) = 0; + (yy_start) = 0; + +/* Defined in main.c */ +#ifdef YY_STDINIT + vrmlyyin = stdin; + vrmlyyout = stdout; +#else + vrmlyyin = (FILE *) 0; + vrmlyyout = (FILE *) 0; +#endif + + /* For future reference: Set errno on error, since we are called by + * vrmlyylex_init() + */ + return 0; +} + +/* vrmlyylex_destroy is for both reentrant and non-reentrant scanners. */ +int vrmlyylex_destroy (void) +{ + + /* Pop the buffer stack, destroying each element. */ + while(YY_CURRENT_BUFFER){ + vrmlyy_delete_buffer(YY_CURRENT_BUFFER ); + YY_CURRENT_BUFFER_LVALUE = NULL; + vrmlyypop_buffer_state(); + } + + /* Destroy the stack itself. */ + vrmlyyfree((yy_buffer_stack) ); + (yy_buffer_stack) = NULL; + + /* Reset the globals. This is important in a non-reentrant scanner so the next time + * vrmlyylex() is called, initialization will occur. */ + yy_init_globals( ); + + return 0; +} + +/* + * Internal utility routines. + */ + +#ifndef yytext_ptr +static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) +{ + register int i; + for ( i = 0; i < n; ++i ) + s1[i] = s2[i]; +} +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen (yyconst char * s ) +{ + register int n; + for ( n = 0; s[n]; ++n ) + ; + + return n; +} +#endif + +void *vrmlyyalloc (yy_size_t size ) +{ + return (void *) malloc( size ); +} + +void *vrmlyyrealloc (void * ptr, yy_size_t size ) +{ + /* The cast to (char *) in the following accommodates both + * implementations that use char* generic pointers, and those + * that use void* generic pointers. It works with the latter + * because both ANSI C and C++ allow castless assignment from + * any pointer type to void*, and deal with argument conversions + * as though doing an assignment. + */ + return (void *) realloc( (char *) ptr, size ); +} + +void vrmlyyfree (void * ptr ) +{ + free( (char *) ptr ); /* see vrmlyyrealloc() for (char *) cast */ +} + +#define YYTABLES_NAME "yytables" + +#line 581 "vrmlLexer.lxx"