From 000241f7603af61328b25cd9a9defc40be43e558 Mon Sep 17 00:00:00 2001 From: dimitri Date: Sun, 5 Mar 2000 18:16:47 +0000 Subject: Release_1.1.0-20000305 --- INSTALL | 8 +- Makefile.in | 7 + README | 4 +- VERSION | 2 +- html/form-0.gif | Bin 278 -> 0 bytes html/form-1.gif | Bin 224 -> 0 bytes html/form-2.gif | Bin 276 -> 0 bytes html/form-3.gif | Bin 290 -> 0 bytes html/form-4.gif | Bin 648 -> 0 bytes html/form-5.gif | Bin 2100 -> 0 bytes src/Makefile.in | 4 +- src/ce_lex.cpp | 1800 ----- src/ce_parse.cpp | 1152 ---- src/classdef.cpp | 4 +- src/classdef.h | 2 +- src/classlist.cpp | 6 +- src/code.cpp | 3640 ---------- src/config.cpp | 4316 ------------ src/declinfo.cpp | 1972 ------ src/defargs.cpp | 2245 ------ src/define.h | 4 +- src/dot.cpp | 292 +- src/dot.h | 9 +- src/doxytag.cpp | 2760 -------- src/entry.h | 18 +- src/filedef.cpp | 11 +- src/index.cpp | 43 - src/memberdef.cpp | 2 + src/memberlist.cpp | 2 +- src/namespacedef.h | 2 +- src/pre.cpp | 4517 ------------ src/pre.l | 5 +- src/scanner.cpp | 18687 -------------------------------------------------- src/scanner.l | 92 +- src/tag.cpp | 1968 ------ src/translator_nl.h | 75 +- src/util.cpp | 44 + src/util.h | 4 + 38 files changed, 426 insertions(+), 43271 deletions(-) delete mode 100644 html/form-0.gif delete mode 100644 html/form-1.gif delete mode 100644 html/form-2.gif delete mode 100644 html/form-3.gif delete mode 100644 html/form-4.gif delete mode 100644 html/form-5.gif delete mode 100644 src/ce_lex.cpp delete mode 100644 src/ce_parse.cpp delete mode 100644 src/code.cpp delete mode 100644 src/config.cpp delete mode 100644 src/declinfo.cpp delete mode 100644 src/defargs.cpp delete mode 100644 src/doxytag.cpp delete mode 100644 src/pre.cpp delete mode 100644 src/scanner.cpp delete mode 100644 src/tag.cpp diff --git a/INSTALL b/INSTALL index 016fd9a..eb0f2e8 100644 --- a/INSTALL +++ b/INSTALL @@ -1,4 +1,4 @@ -DOXYGEN Version 1.1.0-20000227 +DOXYGEN Version 1.1.0-20000305 CONTENTS -------- @@ -15,8 +15,8 @@ INSTALLATION INSTRUCTIONS FOR UNIX: 1. Unpack the archive, unless you already have: - gunzip doxygen-1.1.0-20000227.src.tar.gz # uncompress the archive - tar xf doxygen-1.1.0-20000227.src.tar # unpack it + gunzip doxygen-1.1.0-20000305.src.tar.gz # uncompress the archive + tar xf doxygen-1.1.0-20000305.src.tar # unpack it 2. Run the configure script: @@ -252,4 +252,4 @@ The latest version of doxygen can be obtained at Enjoy, -Dimitri van Heesch (27 February 2000) +Dimitri van Heesch (05 March 2000) diff --git a/Makefile.in b/Makefile.in index f28f785..e8f5a34 100644 --- a/Makefile.in +++ b/Makefile.in @@ -10,10 +10,17 @@ clean: FORCE -rm -f objects/*.o distclean: clean + cd examples ; $(MAKE) clean + cd doc ; $(MAKE) clean + cd src ; $(MAKE) distclean + -rm -f bin/doxy* + -rm -f html + -rm -f objects/*.o -rm -f src/Makefile.doxygen \ src/Makefile.doxytag \ src/Makefile.doxysearch -rm -f Makefile src/Makefile examples/Makefile doc/Makefile + -rm -f .makeconfig .tmakeconfig -rm -f src/doxygen.pro src/doxytag.pro src/doxysearch.pro -rm -f src/version.cpp diff --git a/README b/README index 5e5d31b..983953e 100644 --- a/README +++ b/README @@ -1,4 +1,4 @@ -DOXYGEN Version 1.1.0-20000227 +DOXYGEN Version 1.1.0-20000305 Please read INSTALL for compilation instructions. @@ -7,4 +7,4 @@ The latest version of doxygen can be obtained at Enjoy, -Dimitri van Heesch (27 February 2000) +Dimitri van Heesch (05 March 2000) diff --git a/VERSION b/VERSION index b218004..bca6dd5 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.1.0-20000227 +1.1.0-20000305 diff --git a/html/form-0.gif b/html/form-0.gif deleted file mode 100644 index ac07035..0000000 Binary files a/html/form-0.gif and /dev/null differ diff --git a/html/form-1.gif b/html/form-1.gif deleted file mode 100644 index b2eb6a7..0000000 Binary files a/html/form-1.gif and /dev/null differ diff --git a/html/form-2.gif b/html/form-2.gif deleted file mode 100644 index 6bf3208..0000000 Binary files a/html/form-2.gif and /dev/null differ diff --git a/html/form-3.gif b/html/form-3.gif deleted file mode 100644 index 64b86e8..0000000 Binary files a/html/form-3.gif and /dev/null differ diff --git a/html/form-4.gif b/html/form-4.gif deleted file mode 100644 index 7f798ec..0000000 Binary files a/html/form-4.gif and /dev/null differ diff --git a/html/form-5.gif b/html/form-5.gif deleted file mode 100644 index a0a73e4..0000000 Binary files a/html/form-5.gif and /dev/null differ diff --git a/src/Makefile.in b/src/Makefile.in index e771ac3..24de130 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -27,12 +27,12 @@ Makefile.doxytag: doxytag.pro doxytag.t Makefile.doxysearch: doxysearch.pro $(PERL) $(TMAKE) doxysearch.pro >Makefile.doxysearch -tmake: +tmake: $(PERL) $(TMAKE) doxygen.pro >Makefile.doxygen $(PERL) $(TMAKE) doxytag.pro >Makefile.doxytag $(PERL) $(TMAKE) doxysearch.pro >Makefile.doxysearch -clean: +clean: Makefile.doxygen Makefile.doxytag Makefile.doxysearch $(MAKE) -f Makefile.doxygen clean $(MAKE) -f Makefile.doxytag clean $(MAKE) -f Makefile.doxysearch clean diff --git a/src/ce_lex.cpp b/src/ce_lex.cpp deleted file mode 100644 index 6250ccf..0000000 --- a/src/ce_lex.cpp +++ /dev/null @@ -1,1800 +0,0 @@ -#define yy_create_buffer cppExpYY_create_buffer -#define yy_delete_buffer cppExpYY_delete_buffer -#define yy_scan_buffer cppExpYY_scan_buffer -#define yy_scan_string cppExpYY_scan_string -#define yy_scan_bytes cppExpYY_scan_bytes -#define yy_flex_debug cppExpYY_flex_debug -#define yy_init_buffer cppExpYY_init_buffer -#define yy_flush_buffer cppExpYY_flush_buffer -#define yy_load_buffer_state cppExpYY_load_buffer_state -#define yy_switch_to_buffer cppExpYY_switch_to_buffer -#define yyin cppExpYYin -#define yyleng cppExpYYleng -#define yylex cppExpYYlex -#define yyout cppExpYYout -#define yyrestart cppExpYYrestart -#define yytext cppExpYYtext -#define yywrap cppExpYYwrap - -/* A lexical scanner generated by flex */ - -/* Scanner skeleton version: - * $Header$ - */ - -#define FLEX_SCANNER -#define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 5 - -#include - - -/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */ -#ifdef c_plusplus -#ifndef __cplusplus -#define __cplusplus -#endif -#endif - - -#ifdef __cplusplus - -#include -#include - -/* Use prototypes in function declarations. */ -#define YY_USE_PROTOS - -/* The "const" storage-class-modifier is valid. */ -#define YY_USE_CONST - -#else /* ! __cplusplus */ - -#if __STDC__ - -#define YY_USE_PROTOS -#define YY_USE_CONST - -#endif /* __STDC__ */ -#endif /* ! __cplusplus */ - -#ifdef __TURBOC__ - #pragma warn -rch - #pragma warn -use -#include -#include -#define YY_USE_CONST -#define YY_USE_PROTOS -#endif - -#ifdef YY_USE_CONST -#define yyconst const -#else -#define yyconst -#endif - - -#ifdef YY_USE_PROTOS -#define YY_PROTO(proto) proto -#else -#define YY_PROTO(proto) () -#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 yyrestart( yyin ) - -#define YY_END_OF_BUFFER_CHAR 0 - -/* Size of default input buffer. */ -#define YY_BUF_SIZE 16384 - -typedef struct yy_buffer_state *YY_BUFFER_STATE; - -extern int yyleng; -extern FILE *yyin, *yyout; - -#define EOB_ACT_CONTINUE_SCAN 0 -#define EOB_ACT_END_OF_FILE 1 -#define EOB_ACT_LAST_MATCH 2 - -/* The funky do-while in the following #define is used to turn the definition - * int a single C statement (which needs a semi-colon terminator). This - * avoids problems with code like: - * - * if ( condition_holds ) - * yyless( 5 ); - * else - * do_something_else(); - * - * Prior to using the do-while the compiler would get upset at the - * "else" because it interpreted the "if" statement as being all - * done when it reached the ';' after the yyless() call. - */ - -/* Return all but the first 'n' matched characters back to the input stream. */ - -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - *yy_cp = yy_hold_char; \ - YY_RESTORE_YY_MORE_OFFSET \ - yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \ - YY_DO_BEFORE_ACTION; /* set up yytext again */ \ - } \ - while ( 0 ) - -#define unput(c) yyunput( c, yytext_ptr ) - -/* The following is because we cannot portably get our hands on size_t - * (without autoconf's help, which isn't available because we want - * flex-generated scanners to compile on their own). - */ -typedef unsigned int yy_size_t; - - -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; - - /* Whether to try to fill the input buffer when we reach the - * end of it. - */ - int yy_fill_buffer; - - int yy_buffer_status; -#define YY_BUFFER_NEW 0 -#define YY_BUFFER_NORMAL 1 - /* When an EOF's been seen but there's still some text to process - * then we mark the buffer as YY_EOF_PENDING, to indicate that we - * shouldn't try reading from the input source any more. We might - * still have a bunch of tokens to match, though, because of - * possible backing-up. - * - * When we actually see the EOF, we change the status to "new" - * (via yyrestart()), so that the user can continue scanning by - * just pointing yyin at a new input file. - */ -#define YY_BUFFER_EOF_PENDING 2 - }; - -static YY_BUFFER_STATE yy_current_buffer = 0; - -/* 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". - */ -#define YY_CURRENT_BUFFER yy_current_buffer - - -/* yy_hold_char holds the character lost when yytext is formed. */ -static char yy_hold_char; - -static int yy_n_chars; /* number of characters read into yy_ch_buf */ - - -int yyleng; - -/* Points to current character in buffer. */ -static char *yy_c_buf_p = (char *) 0; -static int yy_init = 1; /* whether we need to initialize */ -static int yy_start = 0; /* start state number */ - -/* Flag which is used to allow yywrap()'s to do buffer switches - * instead of setting up a fresh yyin. A bit of a hack ... - */ -static int yy_did_buffer_switch_on_eof; - -void yyrestart YY_PROTO(( FILE *input_file )); - -void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer )); -void yy_load_buffer_state YY_PROTO(( void )); -YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size )); -void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b )); -void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file )); -void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b )); -#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer ) - -YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size )); -YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str )); -YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len )); - -static void *yy_flex_alloc YY_PROTO(( yy_size_t )); -static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t )); -static void yy_flex_free YY_PROTO(( void * )); - -#define yy_new_buffer yy_create_buffer - -#define yy_set_interactive(is_interactive) \ - { \ - if ( ! yy_current_buffer ) \ - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ - yy_current_buffer->yy_is_interactive = is_interactive; \ - } - -#define yy_set_bol(at_bol) \ - { \ - if ( ! yy_current_buffer ) \ - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ - yy_current_buffer->yy_at_bol = at_bol; \ - } - -#define YY_AT_BOL() (yy_current_buffer->yy_at_bol) - -typedef unsigned char YY_CHAR; -FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; -typedef int yy_state_type; -extern char *yytext; -#define yytext_ptr yytext - -static yy_state_type yy_get_previous_state YY_PROTO(( void )); -static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state )); -static int yy_get_next_buffer YY_PROTO(( void )); -static void yy_fatal_error YY_PROTO(( yyconst char msg[] )); - -/* Done after the current pattern has been matched and before the - * corresponding action - sets up yytext. - */ -#define YY_DO_BEFORE_ACTION \ - yytext_ptr = yy_bp; \ - yyleng = (int) (yy_cp - yy_bp); \ - yy_hold_char = *yy_cp; \ - *yy_cp = '\0'; \ - yy_c_buf_p = yy_cp; - -#define YY_NUM_RULES 33 -#define YY_END_OF_BUFFER 34 -static yyconst short int yy_accept[62] = - { 0, - 0, 0, 34, 31, 32, 22, 20, 7, 31, 23, - 24, 18, 16, 17, 31, 19, 26, 27, 2, 10, - 31, 11, 1, 6, 5, 21, 8, 4, 0, 0, - 29, 29, 26, 0, 0, 26, 0, 27, 27, 14, - 12, 9, 13, 15, 3, 25, 0, 0, 0, 0, - 29, 29, 0, 30, 28, 0, 0, 29, 30, 28, - 0 - } ; - -static yyconst int yy_ec[256] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 4, 5, 1, 1, 6, 7, 8, 9, - 10, 11, 12, 1, 13, 14, 15, 16, 17, 17, - 17, 17, 17, 17, 17, 18, 18, 19, 1, 20, - 21, 22, 23, 1, 24, 24, 24, 24, 25, 26, - 1, 1, 1, 1, 1, 27, 1, 1, 1, 1, - 1, 1, 1, 1, 28, 1, 1, 29, 1, 1, - 1, 30, 1, 31, 1, 1, 32, 32, 24, 24, - - 25, 33, 1, 1, 1, 1, 1, 27, 1, 5, - 1, 1, 1, 5, 1, 5, 28, 5, 1, 34, - 1, 1, 1, 35, 1, 36, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1 - } ; - -static yyconst int yy_meta[37] = - { 0, - 1, 2, 2, 1, 1, 1, 1, 2, 1, 1, - 1, 1, 1, 1, 1, 3, 3, 3, 1, 1, - 1, 1, 1, 3, 3, 3, 1, 1, 1, 1, - 1, 3, 3, 1, 1, 1 - } ; - -static yyconst short int yy_base[65] = - { 0, - 0, 0, 130, 163, 163, 88, 163, 92, 65, 163, - 163, 163, 163, 163, 21, 163, 26, 47, 163, 25, - 57, 26, 163, 163, 38, 163, 163, 163, 41, 71, - 90, 40, 33, 52, 68, 55, 0, 0, 63, 163, - 163, 163, 163, 163, 163, 163, 51, 94, 0, 80, - 163, 0, 102, 108, 86, 44, 111, 126, 163, 94, - 163, 159, 47, 38 - } ; - -static yyconst short int yy_def[65] = - { 0, - 61, 1, 61, 61, 61, 61, 61, 61, 62, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 62, 61, - 61, 31, 17, 61, 61, 61, 63, 18, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 64, 61, - 61, 32, 61, 61, 63, 64, 61, 61, 61, 61, - 0, 61, 61, 61 - } ; - -static yyconst short int yy_nxt[200] = - { 0, - 4, 5, 4, 6, 4, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 18, 19, 20, - 21, 22, 23, 4, 4, 4, 4, 4, 4, 4, - 24, 4, 4, 4, 25, 26, 31, 31, 31, 32, - 56, 33, 33, 34, 40, 41, 43, 44, 46, 55, - 35, 46, 36, 36, 37, 52, 52, 52, 46, 37, - 32, 61, 38, 38, 38, 32, 61, 34, 34, 34, - 61, 35, 45, 39, 39, 47, 35, 42, 47, 53, - 53, 36, 36, 54, 54, 54, 48, 48, 48, 39, - 39, 57, 57, 47, 30, 58, 58, 58, 28, 49, - - 47, 46, 47, 47, 49, 31, 31, 31, 27, 48, - 48, 48, 60, 60, 50, 51, 51, 54, 54, 54, - 60, 60, 51, 54, 54, 54, 58, 58, 58, 61, - 61, 61, 61, 59, 59, 61, 61, 61, 61, 61, - 59, 58, 58, 58, 61, 61, 61, 61, 61, 61, - 61, 51, 51, 61, 61, 61, 61, 61, 51, 29, - 61, 29, 3, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61 - - } ; - -static yyconst short int yy_chk[200] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 15, 15, 15, 17, - 64, 17, 17, 17, 20, 20, 22, 22, 29, 63, - 17, 56, 17, 17, 17, 32, 32, 32, 47, 17, - 18, 33, 18, 18, 18, 34, 33, 34, 34, 34, - 29, 18, 25, 18, 18, 30, 34, 21, 30, 35, - 35, 36, 36, 35, 35, 35, 30, 30, 30, 39, - 39, 50, 50, 30, 9, 50, 50, 50, 8, 30, - - 30, 48, 30, 30, 30, 31, 31, 31, 6, 48, - 48, 48, 55, 55, 31, 31, 31, 53, 53, 53, - 60, 60, 31, 54, 54, 54, 57, 57, 57, 3, - 0, 0, 0, 54, 54, 0, 0, 0, 0, 0, - 54, 58, 58, 58, 0, 0, 0, 0, 0, 0, - 0, 58, 58, 0, 0, 0, 0, 0, 58, 62, - 0, 62, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61 - - } ; - -static yy_state_type yy_last_accepting_state; -static char *yy_last_accepting_cpos; - -/* The intent behind this definition is that it'll catch - * any uses of REJECT which flex missed. - */ -#define REJECT reject_used_but_not_detected -#define yymore() yymore_used_but_not_detected -#define YY_MORE_ADJ 0 -#define YY_RESTORE_YY_MORE_OFFSET -char *yytext; -#line 1 "constexp.l" -#define INITIAL 0 -/****************************************************************************** - * - * $Id$ - * - * - * Copyright (C) 1997-2000 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - * All output generated with Doxygen is not covered by this license. - * - */ -#line 19 "constexp.l" - -#include "constexp.h" -#include "cppvalue.h" -#include "ce_parse.h" // generated header file - -#define YY_NO_UNPUT -#define YY_NEVER_INTERACTIVE 1 - -QCString strToken; - -static const char *inputString; -static int inputPosition; -CPPValue resultValue; - -#undef YY_INPUT -#define YY_INPUT(buf,result,max_size) result=yyread(buf,max_size); - -static int yyread(char *buf,int max_size) -{ - int c=0; - while( c < max_size && inputString[inputPosition] ) - { - *buf = inputString[inputPosition++] ; - c++; buf++; - } - return c; -} - - -/* Macros after this point can all be overridden by user definitions in - * section 1. - */ - -#ifndef YY_SKIP_YYWRAP -#ifdef __cplusplus -extern "C" int yywrap YY_PROTO(( void )); -#else -extern int yywrap YY_PROTO(( void )); -#endif -#endif - -#ifndef YY_NO_UNPUT -static void yyunput YY_PROTO(( int c, char *buf_ptr )); -#endif - -#ifndef yytext_ptr -static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int )); -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen YY_PROTO(( yyconst char * )); -#endif - -#ifndef YY_NO_INPUT -#ifdef __cplusplus -static int yyinput YY_PROTO(( void )); -#else -static int input YY_PROTO(( void )); -#endif -#endif - -#if YY_STACK_USED -static int yy_start_stack_ptr = 0; -static int yy_start_stack_depth = 0; -static int *yy_start_stack = 0; -#ifndef YY_NO_PUSH_STATE -static void yy_push_state YY_PROTO(( int new_state )); -#endif -#ifndef YY_NO_POP_STATE -static void yy_pop_state YY_PROTO(( void )); -#endif -#ifndef YY_NO_TOP_STATE -static int yy_top_state YY_PROTO(( void )); -#endif - -#else -#define YY_NO_PUSH_STATE 1 -#define YY_NO_POP_STATE 1 -#define YY_NO_TOP_STATE 1 -#endif - -#ifdef YY_MALLOC_DECL -YY_MALLOC_DECL -#else -#if __STDC__ -#ifndef __cplusplus -#include -#endif -#else -/* Just try to get by without declaring the routines. This will fail - * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int) - * or sizeof(void*) != sizeof(int). - */ -#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 (void) fwrite( yytext, yyleng, 1, yyout ) -#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->yy_is_interactive ) \ - { \ - int c = '*', n; \ - for ( n = 0; n < max_size && \ - (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ - buf[n] = (char) c; \ - if ( c == '\n' ) \ - buf[n++] = (char) c; \ - if ( c == EOF && ferror( yyin ) ) \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - result = n; \ - } \ - else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \ - && ferror( yyin ) ) \ - YY_FATAL_ERROR( "input in flex scanner failed" ); -#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 - -/* Default declaration of generated scanner - a define so the user can - * easily add parameters. - */ -#ifndef YY_DECL -#define YY_DECL int yylex YY_PROTO(( void )) -#endif - -/* Code executed at the beginning of each rule, after yytext and yyleng - * have been set up. - */ -#ifndef YY_USER_ACTION -#define YY_USER_ACTION -#endif - -/* Code executed at the end of each rule. */ -#ifndef YY_BREAK -#define YY_BREAK break; -#endif - -#define YY_RULE_SETUP \ - YY_USER_ACTION - -YY_DECL - { - register yy_state_type yy_current_state; - register char *yy_cp, *yy_bp; - register int yy_act; - -#line 49 "constexp.l" - - - - if ( yy_init ) - { - yy_init = 0; - -#ifdef YY_USER_INIT - YY_USER_INIT; -#endif - - if ( ! yy_start ) - yy_start = 1; /* first start state */ - - if ( ! yyin ) - yyin = stdin; - - if ( ! yyout ) - yyout = stdout; - - if ( ! yy_current_buffer ) - yy_current_buffer = - yy_create_buffer( yyin, YY_BUF_SIZE ); - - yy_load_buffer_state(); - } - - while ( 1 ) /* loops until end-of-file is reached */ - { - yy_cp = yy_c_buf_p; - - /* Support of yytext. */ - *yy_cp = yy_hold_char; - - /* yy_bp points to the position in yy_ch_buf of the start of - * the current run. - */ - yy_bp = yy_cp; - - yy_current_state = yy_start; -yy_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 >= 62 ) - 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] != 163 ); - -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: -YY_RULE_SETUP -#line 51 "constexp.l" -{ return TOK_QUESTIONMARK; } - YY_BREAK -case 2: -YY_RULE_SETUP -#line 52 "constexp.l" -{ return TOK_COLON; } - YY_BREAK -case 3: -YY_RULE_SETUP -#line 53 "constexp.l" -{ return TOK_OR; } - YY_BREAK -case 4: -YY_RULE_SETUP -#line 54 "constexp.l" -{ return TOK_AND; } - YY_BREAK -case 5: -YY_RULE_SETUP -#line 55 "constexp.l" -{ return TOK_BITWISEOR; } - YY_BREAK -case 6: -YY_RULE_SETUP -#line 56 "constexp.l" -{ return TOK_BITWISEXOR; } - YY_BREAK -case 7: -YY_RULE_SETUP -#line 57 "constexp.l" -{ return TOK_AMPERSAND; } - YY_BREAK -case 8: -YY_RULE_SETUP -#line 58 "constexp.l" -{ return TOK_NOTEQUAL; } - YY_BREAK -case 9: -YY_RULE_SETUP -#line 59 "constexp.l" -{ return TOK_EQUAL; } - YY_BREAK -case 10: -YY_RULE_SETUP -#line 60 "constexp.l" -{ return TOK_LESSTHAN; } - YY_BREAK -case 11: -YY_RULE_SETUP -#line 61 "constexp.l" -{ return TOK_GREATERTHAN; } - YY_BREAK -case 12: -YY_RULE_SETUP -#line 62 "constexp.l" -{ return TOK_LESSTHANOREQUALTO; } - YY_BREAK -case 13: -YY_RULE_SETUP -#line 63 "constexp.l" -{ return TOK_GREATERTHANOREQUALTO; } - YY_BREAK -case 14: -YY_RULE_SETUP -#line 64 "constexp.l" -{ return TOK_SHIFTLEFT; } - YY_BREAK -case 15: -YY_RULE_SETUP -#line 65 "constexp.l" -{ return TOK_SHIFTRIGHT; } - YY_BREAK -case 16: -YY_RULE_SETUP -#line 66 "constexp.l" -{ return TOK_PLUS; } - YY_BREAK -case 17: -YY_RULE_SETUP -#line 67 "constexp.l" -{ return TOK_MINUS; } - YY_BREAK -case 18: -YY_RULE_SETUP -#line 68 "constexp.l" -{ return TOK_STAR; } - YY_BREAK -case 19: -YY_RULE_SETUP -#line 69 "constexp.l" -{ return TOK_DIVIDE; } - YY_BREAK -case 20: -YY_RULE_SETUP -#line 70 "constexp.l" -{ return TOK_MOD; } - YY_BREAK -case 21: -YY_RULE_SETUP -#line 71 "constexp.l" -{ return TOK_TILDE; } - YY_BREAK -case 22: -YY_RULE_SETUP -#line 72 "constexp.l" -{ return TOK_NOT; } - YY_BREAK -case 23: -YY_RULE_SETUP -#line 73 "constexp.l" -{ return TOK_LPAREN; } - YY_BREAK -case 24: -YY_RULE_SETUP -#line 74 "constexp.l" -{ return TOK_RPAREN; } - YY_BREAK -case 25: -YY_RULE_SETUP -#line 75 "constexp.l" -{ - strToken=yytext; - return TOK_CHARACTER; - } - YY_BREAK -case 26: -YY_RULE_SETUP -#line 79 "constexp.l" -{ strToken=yytext; - return TOK_OCTALINT; - } - YY_BREAK -case 27: -YY_RULE_SETUP -#line 82 "constexp.l" -{ strToken=yytext; - return TOK_DECIMALINT; - } - YY_BREAK -case 28: -YY_RULE_SETUP -#line 85 "constexp.l" -{ strToken=yytext; return TOK_HEXADECIMALINT; } - YY_BREAK -case 29: -YY_RULE_SETUP -#line 86 "constexp.l" -{ - strToken=yytext; return TOK_FLOAT; - } - YY_BREAK -case 30: -YY_RULE_SETUP -#line 89 "constexp.l" -{ - strToken=yytext; return TOK_FLOAT; - } - YY_BREAK -case 31: -YY_RULE_SETUP -#line 92 "constexp.l" - - YY_BREAK -case 32: -YY_RULE_SETUP -#line 93 "constexp.l" - - YY_BREAK -case 33: -YY_RULE_SETUP -#line 95 "constexp.l" -ECHO; - YY_BREAK -case YY_STATE_EOF(INITIAL): - yyterminate(); - - case YY_END_OF_BUFFER: - { - /* Amount of text matched not including the EOB char. */ - int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1; - - /* Undo the effects of YY_DO_BEFORE_ACTION. */ - *yy_cp = yy_hold_char; - YY_RESTORE_YY_MORE_OFFSET - - if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW ) - { - /* We're scanning a new file or input source. It's - * possible that this happened because the user - * just pointed yyin at a new source and called - * yylex(). If so, then we have to assure - * consistency between yy_current_buffer and our - * globals. Here is the right place to do so, because - * this is the first action (other than possibly a - * back-up) that will match for the new input source. - */ - yy_n_chars = yy_current_buffer->yy_n_chars; - yy_current_buffer->yy_input_file = yyin; - yy_current_buffer->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->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 ( yywrap() ) - { - /* Note: because we've taken care in - * yy_get_next_buffer() to have set up - * yytext, we can now set up - * yy_c_buf_p so that if some total - * hoser (like flex itself) wants to - * call the scanner after we return the - * YY_NULL, it'll still work - another - * YY_NULL will get returned. - */ - yy_c_buf_p = yytext_ptr + YY_MORE_ADJ; - - yy_act = YY_STATE_EOF(YY_START); - goto do_action; - } - - else - { - if ( ! yy_did_buffer_switch_on_eof ) - YY_NEW_FILE; - } - break; - } - - case EOB_ACT_CONTINUE_SCAN: - yy_c_buf_p = - yytext_ptr + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state(); - - yy_cp = yy_c_buf_p; - yy_bp = yytext_ptr + YY_MORE_ADJ; - goto yy_match; - - case EOB_ACT_LAST_MATCH: - yy_c_buf_p = - &yy_current_buffer->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 yylex */ - - -/* yy_get_next_buffer - try to read in a new buffer - * - * Returns a code representing an action: - * EOB_ACT_LAST_MATCH - - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position - * EOB_ACT_END_OF_FILE - end of file - */ - -static int yy_get_next_buffer() - { - register char *dest = yy_current_buffer->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->yy_ch_buf[yy_n_chars + 1] ) - YY_FATAL_ERROR( - "fatal flex scanner internal error--end of buffer missed" ); - - if ( yy_current_buffer->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->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->yy_n_chars = yy_n_chars = 0; - - else - { - int num_to_read = - yy_current_buffer->yy_buf_size - number_to_move - 1; - - while ( num_to_read <= 0 ) - { /* Not enough room in the buffer - grow it. */ -#ifdef YY_USES_REJECT - YY_FATAL_ERROR( -"input buffer overflow, can't enlarge buffer because scanner uses REJECT" ); -#else - - /* 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. */ - yy_flex_realloc( (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->yy_buf_size - - number_to_move - 1; -#endif - } - - if ( num_to_read > YY_READ_BUF_SIZE ) - num_to_read = YY_READ_BUF_SIZE; - - /* Read in more data. */ - YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]), - yy_n_chars, num_to_read ); - - yy_current_buffer->yy_n_chars = yy_n_chars; - } - - if ( yy_n_chars == 0 ) - { - if ( number_to_move == YY_MORE_ADJ ) - { - ret_val = EOB_ACT_END_OF_FILE; - yyrestart( yyin ); - } - - else - { - ret_val = EOB_ACT_LAST_MATCH; - yy_current_buffer->yy_buffer_status = - YY_BUFFER_EOF_PENDING; - } - } - - else - ret_val = EOB_ACT_CONTINUE_SCAN; - - yy_n_chars += number_to_move; - yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR; - yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; - - yytext_ptr = &yy_current_buffer->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() - { - 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 >= 62 ) - 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 ); - */ - -#ifdef YY_USE_PROTOS -static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state ) -#else -static yy_state_type yy_try_NUL_trans( yy_current_state ) -yy_state_type yy_current_state; -#endif - { - 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 >= 62 ) - 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 == 61); - - return yy_is_jam ? 0 : yy_current_state; - } - - -#ifndef YY_NO_UNPUT -#ifdef YY_USE_PROTOS -static void yyunput( int c, register char *yy_bp ) -#else -static void yyunput( c, yy_bp ) -int c; -register char *yy_bp; -#endif - { - register char *yy_cp = yy_c_buf_p; - - /* undo effects of setting up yytext */ - *yy_cp = yy_hold_char; - - if ( yy_cp < yy_current_buffer->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->yy_ch_buf[ - yy_current_buffer->yy_buf_size + 2]; - register char *source = - &yy_current_buffer->yy_ch_buf[number_to_move]; - - while ( source > yy_current_buffer->yy_ch_buf ) - *--dest = *--source; - - yy_cp += (int) (dest - source); - yy_bp += (int) (dest - source); - yy_current_buffer->yy_n_chars = - yy_n_chars = yy_current_buffer->yy_buf_size; - - if ( yy_cp < yy_current_buffer->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; - } -#endif /* ifndef YY_NO_UNPUT */ - - -#ifdef __cplusplus -static int yyinput() -#else -static int input() -#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->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. */ - yyrestart( yyin ); - - /* fall through */ - - case EOB_ACT_END_OF_FILE: - { - if ( yywrap() ) - 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 yytext */ - yy_hold_char = *++yy_c_buf_p; - - - return c; - } - - -#ifdef YY_USE_PROTOS -void yyrestart( FILE *input_file ) -#else -void yyrestart( input_file ) -FILE *input_file; -#endif - { - if ( ! yy_current_buffer ) - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); - - yy_init_buffer( yy_current_buffer, input_file ); - yy_load_buffer_state(); - } - - -#ifdef YY_USE_PROTOS -void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer ) -#else -void yy_switch_to_buffer( new_buffer ) -YY_BUFFER_STATE new_buffer; -#endif - { - 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->yy_buf_pos = yy_c_buf_p; - yy_current_buffer->yy_n_chars = yy_n_chars; - } - - yy_current_buffer = new_buffer; - yy_load_buffer_state(); - - /* We don't actually know whether we did this switch during - * EOF (yywrap()) processing, but the only time this flag - * is looked at is after yywrap() is called, so it's safe - * to go ahead and always set it. - */ - yy_did_buffer_switch_on_eof = 1; - } - - -#ifdef YY_USE_PROTOS -void yy_load_buffer_state( void ) -#else -void yy_load_buffer_state() -#endif - { - yy_n_chars = yy_current_buffer->yy_n_chars; - yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos; - yyin = yy_current_buffer->yy_input_file; - yy_hold_char = *yy_c_buf_p; - } - - -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_create_buffer( FILE *file, int size ) -#else -YY_BUFFER_STATE yy_create_buffer( file, size ) -FILE *file; -int size; -#endif - { - YY_BUFFER_STATE b; - - b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_buf_size = size; - - /* yy_ch_buf has to be 2 characters longer than the size given because - * we need to put in 2 end-of-buffer characters. - */ - b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 ); - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_is_our_buffer = 1; - - yy_init_buffer( b, file ); - - return b; - } - - -#ifdef YY_USE_PROTOS -void yy_delete_buffer( YY_BUFFER_STATE b ) -#else -void yy_delete_buffer( b ) -YY_BUFFER_STATE b; -#endif - { - if ( ! b ) - return; - - if ( b == yy_current_buffer ) - yy_current_buffer = (YY_BUFFER_STATE) 0; - - if ( b->yy_is_our_buffer ) - yy_flex_free( (void *) b->yy_ch_buf ); - - yy_flex_free( (void *) b ); - } - - -#ifndef YY_ALWAYS_INTERACTIVE -#ifndef YY_NEVER_INTERACTIVE -extern int isatty YY_PROTO(( int )); -#endif -#endif - -#ifdef YY_USE_PROTOS -void yy_init_buffer( YY_BUFFER_STATE b, FILE *file ) -#else -void yy_init_buffer( b, file ) -YY_BUFFER_STATE b; -FILE *file; -#endif - - - { - yy_flush_buffer( b ); - - b->yy_input_file = file; - b->yy_fill_buffer = 1; - -#if YY_ALWAYS_INTERACTIVE - b->yy_is_interactive = 1; -#else -#if YY_NEVER_INTERACTIVE - b->yy_is_interactive = 0; -#else - b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; -#endif -#endif - } - - -#ifdef YY_USE_PROTOS -void yy_flush_buffer( YY_BUFFER_STATE b ) -#else -void yy_flush_buffer( b ) -YY_BUFFER_STATE b; -#endif - - { - if ( ! b ) - return; - - b->yy_n_chars = 0; - - /* We always need two end-of-buffer characters. The first causes - * a transition to the end-of-buffer state. The second causes - * a jam in that state. - */ - b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; - b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; - - b->yy_buf_pos = &b->yy_ch_buf[0]; - - b->yy_at_bol = 1; - b->yy_buffer_status = YY_BUFFER_NEW; - - if ( b == yy_current_buffer ) - yy_load_buffer_state(); - } - - -#ifndef YY_NO_SCAN_BUFFER -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size ) -#else -YY_BUFFER_STATE yy_scan_buffer( base, size ) -char *base; -yy_size_t size; -#endif - { - 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) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_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; - - yy_switch_to_buffer( b ); - - return b; - } -#endif - - -#ifndef YY_NO_SCAN_STRING -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str ) -#else -YY_BUFFER_STATE yy_scan_string( yy_str ) -yyconst char *yy_str; -#endif - { - int len; - for ( len = 0; yy_str[len]; ++len ) - ; - - return yy_scan_bytes( yy_str, len ); - } -#endif - - -#ifndef YY_NO_SCAN_BYTES -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len ) -#else -YY_BUFFER_STATE yy_scan_bytes( bytes, len ) -yyconst char *bytes; -int len; -#endif - { - YY_BUFFER_STATE b; - char *buf; - yy_size_t n; - int i; - - /* Get memory for full buffer, including space for trailing EOB's. */ - n = len + 2; - buf = (char *) yy_flex_alloc( n ); - if ( ! buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); - - for ( i = 0; i < len; ++i ) - buf[i] = bytes[i]; - - buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR; - - b = yy_scan_buffer( buf, n ); - if ( ! b ) - YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); - - /* It's okay to grow etc. this buffer, and we should throw it - * away when we're done. - */ - b->yy_is_our_buffer = 1; - - return b; - } -#endif - - -#ifndef YY_NO_PUSH_STATE -#ifdef YY_USE_PROTOS -static void yy_push_state( int new_state ) -#else -static void yy_push_state( new_state ) -int new_state; -#endif - { - if ( yy_start_stack_ptr >= yy_start_stack_depth ) - { - yy_size_t new_size; - - yy_start_stack_depth += YY_START_STACK_INCR; - new_size = yy_start_stack_depth * sizeof( int ); - - if ( ! yy_start_stack ) - yy_start_stack = (int *) yy_flex_alloc( new_size ); - - else - yy_start_stack = (int *) yy_flex_realloc( - (void *) yy_start_stack, new_size ); - - if ( ! yy_start_stack ) - YY_FATAL_ERROR( - "out of memory expanding start-condition stack" ); - } - - yy_start_stack[yy_start_stack_ptr++] = YY_START; - - BEGIN(new_state); - } -#endif - - -#ifndef YY_NO_POP_STATE -static void yy_pop_state() - { - if ( --yy_start_stack_ptr < 0 ) - YY_FATAL_ERROR( "start-condition stack underflow" ); - - BEGIN(yy_start_stack[yy_start_stack_ptr]); - } -#endif - - -#ifndef YY_NO_TOP_STATE -static int yy_top_state() - { - return yy_start_stack[yy_start_stack_ptr - 1]; - } -#endif - -#ifndef YY_EXIT_FAILURE -#define YY_EXIT_FAILURE 2 -#endif - -#ifdef YY_USE_PROTOS -static void yy_fatal_error( yyconst char msg[] ) -#else -static void yy_fatal_error( msg ) -char msg[]; -#endif - { - (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 yytext. */ \ - yytext[yyleng] = yy_hold_char; \ - yy_c_buf_p = yytext + n; \ - yy_hold_char = *yy_c_buf_p; \ - *yy_c_buf_p = '\0'; \ - yyleng = n; \ - } \ - while ( 0 ) - - -/* Internal utility routines. */ - -#ifndef yytext_ptr -#ifdef YY_USE_PROTOS -static void yy_flex_strncpy( char *s1, yyconst char *s2, int n ) -#else -static void yy_flex_strncpy( s1, s2, n ) -char *s1; -yyconst char *s2; -int n; -#endif - { - register int i; - for ( i = 0; i < n; ++i ) - s1[i] = s2[i]; - } -#endif - -#ifdef YY_NEED_STRLEN -#ifdef YY_USE_PROTOS -static int yy_flex_strlen( yyconst char *s ) -#else -static int yy_flex_strlen( s ) -yyconst char *s; -#endif - { - register int n; - for ( n = 0; s[n]; ++n ) - ; - - return n; - } -#endif - - -#ifdef YY_USE_PROTOS -static void *yy_flex_alloc( yy_size_t size ) -#else -static void *yy_flex_alloc( size ) -yy_size_t size; -#endif - { - return (void *) malloc( size ); - } - -#ifdef YY_USE_PROTOS -static void *yy_flex_realloc( void *ptr, yy_size_t size ) -#else -static void *yy_flex_realloc( ptr, size ) -void *ptr; -yy_size_t size; -#endif - { - /* 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 ); - } - -#ifdef YY_USE_PROTOS -static void yy_flex_free( void *ptr ) -#else -static void yy_flex_free( ptr ) -void *ptr; -#endif - { - free( ptr ); - } - -#if YY_MAIN -int main() - { - yylex(); - return 0; - } -#endif -#line 95 "constexp.l" - - -bool parseCppExpression(const QCString &s) -{ - //printf("Expression: `%s'\n",s.data()); - inputString = s; - inputPosition = 0; - cppExpYYrestart( cppExpYYin ); - cppExpYYparse(); - //printf("Result: %ld\n",(long)resultValue); - return (long)resultValue!=0; -} - -extern "C" { - int cppExpYYwrap() { return 1; } -} diff --git a/src/ce_parse.cpp b/src/ce_parse.cpp deleted file mode 100644 index 09d4f5c..0000000 --- a/src/ce_parse.cpp +++ /dev/null @@ -1,1152 +0,0 @@ - -/* A Bison parser, made from constexp.y - by GNU Bison version 1.25 - */ - -#define YYBISON 1 /* Identify Bison output. */ - -#define yyparse cppExpYYparse -#define yylex cppExpYYlex -#define yyerror cppExpYYerror -#define yylval cppExpYYlval -#define yychar cppExpYYchar -#define yydebug cppExpYYdebug -#define yynerrs cppExpYYnerrs -#define TOK_QUESTIONMARK 258 -#define TOK_COLON 259 -#define TOK_OR 260 -#define TOK_AND 261 -#define TOK_BITWISEOR 262 -#define TOK_BITWISEXOR 263 -#define TOK_AMPERSAND 264 -#define TOK_NOTEQUAL 265 -#define TOK_EQUAL 266 -#define TOK_LESSTHAN 267 -#define TOK_GREATERTHAN 268 -#define TOK_LESSTHANOREQUALTO 269 -#define TOK_GREATERTHANOREQUALTO 270 -#define TOK_SHIFTLEFT 271 -#define TOK_SHIFTRIGHT 272 -#define TOK_PLUS 273 -#define TOK_MINUS 274 -#define TOK_STAR 275 -#define TOK_DIVIDE 276 -#define TOK_MOD 277 -#define TOK_TILDE 278 -#define TOK_NOT 279 -#define TOK_LPAREN 280 -#define TOK_RPAREN 281 -#define TOK_OCTALINT 282 -#define TOK_DECIMALINT 283 -#define TOK_HEXADECIMALINT 284 -#define TOK_CHARACTER 285 -#define TOK_FLOAT 286 - - - -#include "cppvalue.h" -#include "constexp.h" - -#if defined(_MSC_VER) -#define MSDOS -#endif - -#define YYSTYPE CPPValue - -#include -#include - -int cppExpYYerror(const char *s) -{ - printf("ERROR: %s\n",s); - return 0; -} - -int cppExpYYlex(); - -#ifndef YYSTYPE -#define YYSTYPE int -#endif -#include - -#ifndef __cplusplus -#ifndef __STDC__ -#define const -#endif -#endif - - - -#define YYFINAL 73 -#define YYFLAG -32768 -#define YYNTBASE 32 - -#define YYTRANSLATE(x) ((unsigned)(x) <= 286 ? yytranslate[x] : 47) - -static const char yytranslate[] = { 0, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 1, 2, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31 -}; - -#if YYDEBUG != 0 -static const short yyprhs[] = { 0, - 0, 2, 4, 10, 12, 16, 18, 22, 24, 28, - 30, 34, 36, 40, 42, 46, 50, 52, 56, 60, - 64, 68, 70, 74, 78, 80, 84, 88, 90, 94, - 98, 102, 104, 107, 110, 113, 116, 118, 122, 124, - 126, 128, 130 -}; - -static const short yyrhs[] = { 33, - 0, 34, 0, 34, 3, 34, 4, 34, 0, 35, - 0, 34, 5, 35, 0, 36, 0, 35, 6, 36, - 0, 37, 0, 36, 7, 37, 0, 38, 0, 37, - 8, 38, 0, 39, 0, 38, 9, 39, 0, 40, - 0, 39, 11, 40, 0, 39, 10, 40, 0, 41, - 0, 40, 12, 41, 0, 40, 13, 41, 0, 40, - 14, 41, 0, 40, 15, 41, 0, 42, 0, 41, - 16, 42, 0, 41, 17, 42, 0, 43, 0, 42, - 18, 43, 0, 42, 19, 43, 0, 44, 0, 43, - 20, 44, 0, 43, 21, 44, 0, 43, 22, 44, - 0, 45, 0, 18, 44, 0, 19, 44, 0, 23, - 44, 0, 24, 44, 0, 46, 0, 25, 33, 26, - 0, 27, 0, 28, 0, 29, 0, 30, 0, 31, - 0 -}; - -#endif - -#if YYDEBUG != 0 -static const short yyrline[] = { 0, - 74, 78, 80, 89, 91, 97, 99, 105, 107, 114, - 116, 122, 124, 130, 132, 136, 142, 144, 148, 152, - 157, 164, 166, 170, 176, 178, 189, 202, 204, 215, - 228, 236, 238, 240, 247, 251, 257, 259, 263, 265, - 267, 269, 271 -}; -#endif - - -#if YYDEBUG != 0 || defined (YYERROR_VERBOSE) - -static const char * const yytname[] = { "$","error","$undefined.","TOK_QUESTIONMARK", -"TOK_COLON","TOK_OR","TOK_AND","TOK_BITWISEOR","TOK_BITWISEXOR","TOK_AMPERSAND", -"TOK_NOTEQUAL","TOK_EQUAL","TOK_LESSTHAN","TOK_GREATERTHAN","TOK_LESSTHANOREQUALTO", -"TOK_GREATERTHANOREQUALTO","TOK_SHIFTLEFT","TOK_SHIFTRIGHT","TOK_PLUS","TOK_MINUS", -"TOK_STAR","TOK_DIVIDE","TOK_MOD","TOK_TILDE","TOK_NOT","TOK_LPAREN","TOK_RPAREN", -"TOK_OCTALINT","TOK_DECIMALINT","TOK_HEXADECIMALINT","TOK_CHARACTER","TOK_FLOAT", -"start","constant_expression","logical_or_expression","logical_and_expression", -"inclusive_or_expression","exclusive_or_expression","and_expression","equality_expression", -"relational_expression","shift_expression","additive_expression","multiplicative_expression", -"unary_expression","primary_expression","constant", NULL -}; -#endif - -static const short yyr1[] = { 0, - 32, 33, 33, 34, 34, 35, 35, 36, 36, 37, - 37, 38, 38, 39, 39, 39, 40, 40, 40, 40, - 40, 41, 41, 41, 42, 42, 42, 43, 43, 43, - 43, 44, 44, 44, 44, 44, 45, 45, 46, 46, - 46, 46, 46 -}; - -static const short yyr2[] = { 0, - 1, 1, 5, 1, 3, 1, 3, 1, 3, 1, - 3, 1, 3, 1, 3, 3, 1, 3, 3, 3, - 3, 1, 3, 3, 1, 3, 3, 1, 3, 3, - 3, 1, 2, 2, 2, 2, 1, 3, 1, 1, - 1, 1, 1 -}; - -static const short yydefact[] = { 0, - 0, 0, 0, 0, 0, 39, 40, 41, 42, 43, - 1, 2, 4, 6, 8, 10, 12, 14, 17, 22, - 25, 28, 32, 37, 33, 34, 35, 36, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, - 5, 7, 9, 11, 13, 16, 15, 18, 19, 20, - 21, 23, 24, 26, 27, 29, 30, 31, 0, 3, - 0, 0, 0 -}; - -static const short yydefgoto[] = { 71, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24 -}; - -static const short yypact[] = { -13, - -13, -13, -13, -13, -13,-32768,-32768,-32768,-32768,-32768, --32768, 4, 2, 20, 27, 31, 21, 7, 17, 18, - 8,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 24, -13, - -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, - -13, -13, -13, -13, -13, -13, -13, -13,-32768, 34, - 2, 20, 27, 31, 21, 7, 7, 17, 17, 17, - 17, 18, 18, 8, 8,-32768,-32768,-32768, -13, 39, - 13, 51,-32768 -}; - -static const short yypgoto[] = {-32768, - 47, -26, 25, 23, 26, 28, 22, 5, -15, 6, - 9, -1,-32768,-32768 -}; - - -#define YYLAST 62 - - -static const short yytable[] = { 25, - 26, 27, 28, 50, 1, 2, 30, 32, 31, 3, - 4, 5, 72, 6, 7, 8, 9, 10, 38, 39, - 40, 41, 58, 59, 60, 61, 33, 46, 47, 48, - 36, 37, 42, 43, 34, 44, 45, 69, 31, 35, - 56, 57, 70, 31, 66, 67, 68, 62, 63, 49, - 73, 29, 64, 65, 52, 51, 55, 0, 53, 0, - 0, 54 -}; - -static const short yycheck[] = { 1, - 2, 3, 4, 30, 18, 19, 3, 6, 5, 23, - 24, 25, 0, 27, 28, 29, 30, 31, 12, 13, - 14, 15, 38, 39, 40, 41, 7, 20, 21, 22, - 10, 11, 16, 17, 8, 18, 19, 4, 5, 9, - 36, 37, 69, 5, 46, 47, 48, 42, 43, 26, - 0, 5, 44, 45, 32, 31, 35, -1, 33, -1, - -1, 34 -}; -/* -*-C-*- Note some compilers choke on comments on `#line' lines. */ - - -/* Skeleton output parser for bison, - Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ - -/* As a special exception, when this file is copied by Bison into a - Bison output file, you may use that output file without restriction. - This special exception was added by the Free Software Foundation - in version 1.24 of Bison. */ - -#ifndef alloca -#ifdef __GNUC__ -#define alloca __builtin_alloca -#else /* not GNU C. */ -#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || defined (__alpha) -#include -#else /* not sparc */ -#if defined (MSDOS) && !defined (__TURBOC__) -#include -#else /* not MSDOS, or __TURBOC__ */ -#if defined(_AIX) -#include - #pragma alloca -#else /* not MSDOS, __TURBOC__, or _AIX */ -#ifdef __hpux -#ifdef __cplusplus -extern "C" { -void *alloca (unsigned int); -}; -#else /* not __cplusplus */ -void *alloca (); -#endif /* not __cplusplus */ -#endif /* __hpux */ -#endif /* not _AIX */ -#endif /* not MSDOS, or __TURBOC__ */ -#endif /* not sparc. */ -#endif /* not GNU C. */ -#endif /* alloca not defined. */ - -/* This is the parser code that is written into each bison parser - when the %semantic_parser declaration is not specified in the grammar. - It was written by Richard Stallman by simplifying the hairy parser - used when %semantic_parser is specified. */ - -/* Note: there must be only one dollar sign in this file. - It is replaced by the list of actions, each action - as one case of the switch. */ - -#define yyerrok (yyerrstatus = 0) -#define yyclearin (yychar = YYEMPTY) -#define YYEMPTY -2 -#define YYEOF 0 -#define YYACCEPT return(0) -#define YYABORT return(1) -#define YYERROR goto yyerrlab1 -/* Like YYERROR except do call yyerror. - This remains here temporarily to ease the - transition to the new meaning of YYERROR, for GCC. - Once GCC version 2 has supplanted version 1, this can go. */ -#define YYFAIL goto yyerrlab -#define YYRECOVERING() (!!yyerrstatus) -#define YYBACKUP(token, value) \ -do \ - if (yychar == YYEMPTY && yylen == 1) \ - { yychar = (token), yylval = (value); \ - yychar1 = YYTRANSLATE (yychar); \ - YYPOPSTACK; \ - goto yybackup; \ - } \ - else \ - { yyerror ("syntax error: cannot back up"); YYERROR; } \ -while (0) - -#define YYTERROR 1 -#define YYERRCODE 256 - -#ifndef YYPURE -#define YYLEX yylex() -#endif - -#ifdef YYPURE -#ifdef YYLSP_NEEDED -#ifdef YYLEX_PARAM -#define YYLEX yylex(&yylval, &yylloc, YYLEX_PARAM) -#else -#define YYLEX yylex(&yylval, &yylloc) -#endif -#else /* not YYLSP_NEEDED */ -#ifdef YYLEX_PARAM -#define YYLEX yylex(&yylval, YYLEX_PARAM) -#else -#define YYLEX yylex(&yylval) -#endif -#endif /* not YYLSP_NEEDED */ -#endif - -/* If nonreentrant, generate the variables here */ - -#ifndef YYPURE - -int yychar; /* the lookahead symbol */ -YYSTYPE yylval; /* the semantic value of the */ - /* lookahead symbol */ - -#ifdef YYLSP_NEEDED -YYLTYPE yylloc; /* location data for the lookahead */ - /* symbol */ -#endif - -int yynerrs; /* number of parse errors so far */ -#endif /* not YYPURE */ - -#if YYDEBUG != 0 -int yydebug; /* nonzero means print parse trace */ -/* Since this is uninitialized, it does not stop multiple parsers - from coexisting. */ -#endif - -/* YYINITDEPTH indicates the initial size of the parser's stacks */ - -#ifndef YYINITDEPTH -#define YYINITDEPTH 200 -#endif - -/* YYMAXDEPTH is the maximum size the stacks can grow to - (effective only if the built-in stack extension method is used). */ - -#if YYMAXDEPTH == 0 -#undef YYMAXDEPTH -#endif - -#ifndef YYMAXDEPTH -#define YYMAXDEPTH 10000 -#endif - -#ifndef YYPARSE_RETURN_TYPE -#define YYPARSE_RETURN_TYPE int -#endif - -/* Prevent warning if -Wstrict-prototypes. */ -#ifdef __GNUC__ -YYPARSE_RETURN_TYPE yyparse (void); -#endif - -#if __GNUC__ > 1 /* GNU C and GNU C++ define this. */ -#define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT) -#else /* not GNU C or C++ */ -#ifndef __cplusplus - -/* This is the most reliable way to avoid incompatibilities - in available built-in functions on various systems. */ -static void -__yy_memcpy (to, from, count) - char *to; - char *from; - int count; -{ - register char *f = from; - register char *t = to; - register int i = count; - - while (i-- > 0) - *t++ = *f++; -} - -#else /* __cplusplus */ - -/* This is the most reliable way to avoid incompatibilities - in available built-in functions on various systems. */ -static void -__yy_memcpy (char *to, char *from, int count) -{ - register char *f = from; - register char *t = to; - register int i = count; - - while (i-- > 0) - *t++ = *f++; -} - -#endif -#endif - - - -/* The user can define YYPARSE_PARAM as the name of an argument to be passed - into yyparse. The argument should have type void *. - It should actually point to an object. - Grammar actions can access the variable by casting it - to the proper pointer type. */ - -#ifdef YYPARSE_PARAM -#ifdef __cplusplus -#define YYPARSE_PARAM_ARG void *YYPARSE_PARAM -#define YYPARSE_PARAM_DECL -#else /* not __cplusplus */ -#define YYPARSE_PARAM_ARG YYPARSE_PARAM -#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM; -#endif /* not __cplusplus */ -#else /* not YYPARSE_PARAM */ -#define YYPARSE_PARAM_ARG -#define YYPARSE_PARAM_DECL -#endif /* not YYPARSE_PARAM */ - -YYPARSE_RETURN_TYPE -yyparse(YYPARSE_PARAM_ARG) - YYPARSE_PARAM_DECL -{ - register int yystate; - register int yyn; - register short *yyssp; - register YYSTYPE *yyvsp; - int yyerrstatus; /* number of tokens to shift before error messages enabled */ - int yychar1 = 0; /* lookahead token as an internal (translated) token number */ - - short yyssa[YYINITDEPTH]; /* the state stack */ - YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */ - - short *yyss = yyssa; /* refer to the stacks thru separate pointers */ - YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */ - -#ifdef YYLSP_NEEDED - YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */ - YYLTYPE *yyls = yylsa; - YYLTYPE *yylsp; - -#define YYPOPSTACK (yyvsp--, yyssp--, yylsp--) -#else -#define YYPOPSTACK (yyvsp--, yyssp--) -#endif - - int yystacksize = YYINITDEPTH; - -#ifdef YYPURE - int yychar; - YYSTYPE yylval; - int yynerrs; -#ifdef YYLSP_NEEDED - YYLTYPE yylloc; -#endif -#endif - - YYSTYPE yyval; /* the variable used to return */ - /* semantic values from the action */ - /* routines */ - - int yylen; - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Starting parse\n"); -#endif - - yystate = 0; - yyerrstatus = 0; - yynerrs = 0; - yychar = YYEMPTY; /* Cause a token to be read. */ - - /* Initialize stack pointers. - Waste one element of value and location stack - so that they stay on the same level as the state stack. - The wasted elements are never initialized. */ - - yyssp = yyss - 1; - yyvsp = yyvs; -#ifdef YYLSP_NEEDED - yylsp = yyls; -#endif - -/* Push a new state, which is found in yystate . */ -/* In all cases, when you get here, the value and location stacks - have just been pushed. so pushing a state here evens the stacks. */ -yynewstate: - - *++yyssp = yystate; - - if (yyssp >= yyss + yystacksize - 1) - { - /* Give user a chance to reallocate the stack */ - /* Use copies of these so that the &'s don't force the real ones into memory. */ - YYSTYPE *yyvs1 = yyvs; - short *yyss1 = yyss; -#ifdef YYLSP_NEEDED - YYLTYPE *yyls1 = yyls; -#endif - - /* Get the current used size of the three stacks, in elements. */ - int size = yyssp - yyss + 1; - -#ifdef yyoverflow - /* Each stack pointer address is followed by the size of - the data in use in that stack, in bytes. */ -#ifdef YYLSP_NEEDED - /* This used to be a conditional around just the two extra args, - but that might be undefined if yyoverflow is a macro. */ - yyoverflow("parser stack overflow", - &yyss1, size * sizeof (*yyssp), - &yyvs1, size * sizeof (*yyvsp), - &yyls1, size * sizeof (*yylsp), - &yystacksize); -#else - yyoverflow("parser stack overflow", - &yyss1, size * sizeof (*yyssp), - &yyvs1, size * sizeof (*yyvsp), - &yystacksize); -#endif - - yyss = yyss1; yyvs = yyvs1; -#ifdef YYLSP_NEEDED - yyls = yyls1; -#endif -#else /* no yyoverflow */ - /* Extend the stack our own way. */ - if (yystacksize >= YYMAXDEPTH) - { - yyerror("parser stack overflow"); - return 2; - } - yystacksize *= 2; - if (yystacksize > YYMAXDEPTH) - yystacksize = YYMAXDEPTH; - yyss = (short *) alloca (yystacksize * sizeof (*yyssp)); - __yy_memcpy ((char *)yyss, (char *)yyss1, size * sizeof (*yyssp)); - yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp)); - __yy_memcpy ((char *)yyvs, (char *)yyvs1, size * sizeof (*yyvsp)); -#ifdef YYLSP_NEEDED - yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp)); - __yy_memcpy ((char *)yyls, (char *)yyls1, size * sizeof (*yylsp)); -#endif -#endif /* no yyoverflow */ - - yyssp = yyss + size - 1; - yyvsp = yyvs + size - 1; -#ifdef YYLSP_NEEDED - yylsp = yyls + size - 1; -#endif - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Stack size increased to %d\n", yystacksize); -#endif - - if (yyssp >= yyss + yystacksize - 1) - YYABORT; - } - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Entering state %d\n", yystate); -#endif - - goto yybackup; - yybackup: - -/* Do appropriate processing given the current state. */ -/* Read a lookahead token if we need one and don't already have one. */ -/* yyresume: */ - - /* First try to decide what to do without reference to lookahead token. */ - - yyn = yypact[yystate]; - if (yyn == YYFLAG) - goto yydefault; - - /* Not known => get a lookahead token if don't already have one. */ - - /* yychar is either YYEMPTY or YYEOF - or a valid token in external form. */ - - if (yychar == YYEMPTY) - { -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Reading a token: "); -#endif - yychar = YYLEX; - } - - /* Convert token to internal form (in yychar1) for indexing tables with */ - - if (yychar <= 0) /* This means end of input. */ - { - yychar1 = 0; - yychar = YYEOF; /* Don't call YYLEX any more */ - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Now at end of input.\n"); -#endif - } - else - { - yychar1 = YYTRANSLATE(yychar); - -#if YYDEBUG != 0 - if (yydebug) - { - fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]); - /* Give the individual parser a way to print the precise meaning - of a token, for further debugging info. */ -#ifdef YYPRINT - YYPRINT (stderr, yychar, yylval); -#endif - fprintf (stderr, ")\n"); - } -#endif - } - - yyn += yychar1; - if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1) - goto yydefault; - - yyn = yytable[yyn]; - - /* yyn is what to do for this token type in this state. - Negative => reduce, -yyn is rule number. - Positive => shift, yyn is new state. - New state is final state => don't bother to shift, - just return success. - 0, or most negative number => error. */ - - if (yyn < 0) - { - if (yyn == YYFLAG) - goto yyerrlab; - yyn = -yyn; - goto yyreduce; - } - else if (yyn == 0) - goto yyerrlab; - - if (yyn == YYFINAL) - YYACCEPT; - - /* Shift the lookahead token. */ - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]); -#endif - - /* Discard the token being shifted unless it is eof. */ - if (yychar != YYEOF) - yychar = YYEMPTY; - - *++yyvsp = yylval; -#ifdef YYLSP_NEEDED - *++yylsp = yylloc; -#endif - - /* count tokens shifted since error; after three, turn off error status. */ - if (yyerrstatus) yyerrstatus--; - - yystate = yyn; - goto yynewstate; - -/* Do the default action for the current state. */ -yydefault: - - yyn = yydefact[yystate]; - if (yyn == 0) - goto yyerrlab; - -/* Do a reduction. yyn is the number of a rule to reduce with. */ -yyreduce: - yylen = yyr2[yyn]; - if (yylen > 0) - yyval = yyvsp[1-yylen]; /* implement default value of the action */ - -#if YYDEBUG != 0 - if (yydebug) - { - int i; - - fprintf (stderr, "Reducing via rule %d (line %d), ", - yyn, yyrline[yyn]); - - /* Print the symbols being reduced, and their result. */ - for (i = yyprhs[yyn]; yyrhs[i] > 0; i++) - fprintf (stderr, "%s ", yytname[yyrhs[i]]); - fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]); - } -#endif - - - switch (yyn) { - -case 1: -{ resultValue = yyvsp[0]; return 0; ; - break;} -case 2: -{ yyval = yyvsp[0]; ; - break;} -case 3: -{ - bool c = (yyvsp[-4].isInt() ? ((long)yyvsp[-4] != 0) : ((double)yyvsp[-4] != 0.0)); - yyval = c ? yyvsp[-2] : yyvsp[0]; - ; - break;} -case 4: -{ yyval = yyvsp[0]; ; - break;} -case 5: -{ - yyval = CPPValue( (long)((long)yyvsp[-2] || (long)yyvsp[0]) ); - ; - break;} -case 6: -{ yyval = yyvsp[0]; ; - break;} -case 7: -{ - yyval = CPPValue( (long)((long)yyvsp[-2] && (long)yyvsp[0]) ); - ; - break;} -case 8: -{ yyval = yyvsp[0]; ; - break;} -case 9: -{ - yyval = CPPValue( (long)yyvsp[-2] | (long)yyvsp[0] ); - ; - break;} -case 10: -{ yyval = yyvsp[0]; ; - break;} -case 11: -{ - yyval = CPPValue( (long)yyvsp[-2] ^ (long)yyvsp[0] ); - ; - break;} -case 12: -{ yyval = yyvsp[0]; ; - break;} -case 13: -{ - yyval = CPPValue( (long)yyvsp[-2] & (long)yyvsp[0] ); - ; - break;} -case 14: -{ yyval = yyvsp[0]; ; - break;} -case 15: -{ - yyval = CPPValue( (long)((double)yyvsp[-2] == (double)yyvsp[0]) ); - ; - break;} -case 16: -{ - yyval = CPPValue( (long)((double)yyvsp[-2] != (double)yyvsp[0]) ); - ; - break;} -case 17: -{ yyval = yyvsp[0]; ; - break;} -case 18: -{ - yyval = CPPValue( (long)((double)yyvsp[-2] < (double)yyvsp[0]) ); - ; - break;} -case 19: -{ - yyval = CPPValue( (long)((double)yyvsp[-2] > (double)yyvsp[0]) ); - ; - break;} -case 20: -{ - yyval = CPPValue( (long)((double)yyvsp[-2] <= (double)yyvsp[0]) ); - ; - break;} -case 21: -{ - yyval = CPPValue( (long)((double)yyvsp[-2] >= (double)yyvsp[0]) ); - ; - break;} -case 22: -{ yyval = yyvsp[0]; ; - break;} -case 23: -{ - yyval = CPPValue( (long)yyvsp[-2] << (long)yyvsp[0] ); - ; - break;} -case 24: -{ - yyval = CPPValue( (long)yyvsp[-2] >> (long)yyvsp[0] ); - ; - break;} -case 25: -{ yyval = yyvsp[0]; ; - break;} -case 26: -{ - if (!yyvsp[-2].isInt() || !yyvsp[0].isInt()) - { - yyval = CPPValue( (double)yyvsp[-2] + (double)yyvsp[0] ); - } - else - { - yyval = CPPValue( (long)yyvsp[-2] + (long)yyvsp[0] ); - } - ; - break;} -case 27: -{ - if (!yyvsp[-2].isInt() || !yyvsp[0].isInt()) - { - yyval = CPPValue( (double)yyvsp[-2] - (double)yyvsp[0] ); - } - else - { - yyval = CPPValue( (long)yyvsp[-2] - (long)yyvsp[0] ); - } - ; - break;} -case 28: -{ yyval = yyvsp[0]; ; - break;} -case 29: -{ - if (!yyvsp[-2].isInt() || !yyvsp[0].isInt()) - { - yyval = CPPValue( (double)yyvsp[-2] * (double)yyvsp[0] ); - } - else - { - yyval = CPPValue( (long)yyvsp[-2] * (long)yyvsp[0] ); - } - ; - break;} -case 30: -{ - if (!yyvsp[-2].isInt() || !yyvsp[0].isInt()) - { - yyval = CPPValue( (double)yyvsp[-2] / (double)yyvsp[0] ); - } - else - { - long value = yyvsp[0]; - if (value==0) value=1; - yyval = CPPValue( (long)yyvsp[-2] / value ); - } - ; - break;} -case 31: -{ - long value = yyvsp[0]; - if (value==0) value=1; - yyval = CPPValue( (long)yyvsp[-2] % value ); - ; - break;} -case 32: -{ yyval = yyvsp[0]; ; - break;} -case 33: -{ yyval = yyvsp[-1]; ; - break;} -case 34: -{ - if (yyvsp[0].isInt()) - yyval = CPPValue(-(long)yyvsp[0]); - else - yyval = CPPValue(-(double)yyvsp[0]); - ; - break;} -case 35: -{ - yyval = CPPValue(~(long)yyvsp[0]); - ; - break;} -case 36: -{ - yyval = CPPValue((long)!(long)yyvsp[0]); - ; - break;} -case 37: -{ yyval = yyvsp[0]; ; - break;} -case 38: -{ yyval = yyvsp[-1]; ; - break;} -case 39: -{ yyval = parseOctal(); ; - break;} -case 40: -{ yyval = parseDecimal(); ; - break;} -case 41: -{ yyval = parseHexadecimal(); ; - break;} -case 42: -{ yyval = parseCharacter(); ; - break;} -case 43: -{ yyval = parseFloat(); ; - break;} -} - /* the action file gets copied in in place of this dollarsign */ - - - yyvsp -= yylen; - yyssp -= yylen; -#ifdef YYLSP_NEEDED - yylsp -= yylen; -#endif - -#if YYDEBUG != 0 - if (yydebug) - { - short *ssp1 = yyss - 1; - fprintf (stderr, "state stack now"); - while (ssp1 != yyssp) - fprintf (stderr, " %d", *++ssp1); - fprintf (stderr, "\n"); - } -#endif - - *++yyvsp = yyval; - -#ifdef YYLSP_NEEDED - yylsp++; - if (yylen == 0) - { - yylsp->first_line = yylloc.first_line; - yylsp->first_column = yylloc.first_column; - yylsp->last_line = (yylsp-1)->last_line; - yylsp->last_column = (yylsp-1)->last_column; - yylsp->text = 0; - } - else - { - yylsp->last_line = (yylsp+yylen-1)->last_line; - yylsp->last_column = (yylsp+yylen-1)->last_column; - } -#endif - - /* Now "shift" the result of the reduction. - Determine what state that goes to, - based on the state we popped back to - and the rule number reduced by. */ - - yyn = yyr1[yyn]; - - yystate = yypgoto[yyn - YYNTBASE] + *yyssp; - if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp) - yystate = yytable[yystate]; - else - yystate = yydefgoto[yyn - YYNTBASE]; - - goto yynewstate; - -yyerrlab: /* here on detecting error */ - - if (! yyerrstatus) - /* If not already recovering from an error, report this error. */ - { - ++yynerrs; - -#ifdef YYERROR_VERBOSE - yyn = yypact[yystate]; - - if (yyn > YYFLAG && yyn < YYLAST) - { - int size = 0; - char *msg; - int x, count; - - count = 0; - /* Start X at -yyn if nec to avoid negative indexes in yycheck. */ - for (x = (yyn < 0 ? -yyn : 0); - x < (sizeof(yytname) / sizeof(char *)); x++) - if (yycheck[x + yyn] == x) - size += strlen(yytname[x]) + 15, count++; - msg = (char *) malloc(size + 15); - if (msg != 0) - { - strcpy(msg, "parse error"); - - if (count < 5) - { - count = 0; - for (x = (yyn < 0 ? -yyn : 0); - x < (sizeof(yytname) / sizeof(char *)); x++) - if (yycheck[x + yyn] == x) - { - strcat(msg, count == 0 ? ", expecting `" : " or `"); - strcat(msg, yytname[x]); - strcat(msg, "'"); - count++; - } - } - yyerror(msg); - free(msg); - } - else - yyerror ("parse error; also virtual memory exceeded"); - } - else -#endif /* YYERROR_VERBOSE */ - yyerror("parse error"); - } - - goto yyerrlab1; -yyerrlab1: /* here on error raised explicitly by an action */ - - if (yyerrstatus == 3) - { - /* if just tried and failed to reuse lookahead token after an error, discard it. */ - - /* return failure if at end of input */ - if (yychar == YYEOF) - YYABORT; - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]); -#endif - - yychar = YYEMPTY; - } - - /* Else will try to reuse lookahead token - after shifting the error token. */ - - yyerrstatus = 3; /* Each real token shifted decrements this */ - - goto yyerrhandle; - -yyerrdefault: /* current state does not do anything special for the error token. */ - -#if 0 - /* This is wrong; only states that explicitly want error tokens - should shift them. */ - yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/ - if (yyn) goto yydefault; -#endif - -yyerrpop: /* pop the current state because it cannot handle the error token */ - - if (yyssp == yyss) YYABORT; - yyvsp--; - yystate = *--yyssp; -#ifdef YYLSP_NEEDED - yylsp--; -#endif - -#if YYDEBUG != 0 - if (yydebug) - { - short *ssp1 = yyss - 1; - fprintf (stderr, "Error: state stack now"); - while (ssp1 != yyssp) - fprintf (stderr, " %d", *++ssp1); - fprintf (stderr, "\n"); - } -#endif - -yyerrhandle: - - yyn = yypact[yystate]; - if (yyn == YYFLAG) - goto yyerrdefault; - - yyn += YYTERROR; - if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR) - goto yyerrdefault; - - yyn = yytable[yyn]; - if (yyn < 0) - { - if (yyn == YYFLAG) - goto yyerrpop; - yyn = -yyn; - goto yyreduce; - } - else if (yyn == 0) - goto yyerrpop; - - if (yyn == YYFINAL) - YYACCEPT; - -#if YYDEBUG != 0 - if (yydebug) - fprintf(stderr, "Shifting error token, "); -#endif - - *++yyvsp = yylval; -#ifdef YYLSP_NEEDED - *++yylsp = yylloc; -#endif - - yystate = yyn; - goto yynewstate; -} - diff --git a/src/classdef.cpp b/src/classdef.cpp index 9727621..8dc36a5 100644 --- a/src/classdef.cpp +++ b/src/classdef.cpp @@ -314,11 +314,13 @@ static void writeInheritanceSpecifier(OutputList &ol,BaseClassDef *bcd) void ClassDef::setIncludeFile(FileDef *fd,const char *incName,bool local) { + //printf("ClassDef::setInclude(%p,%s,%d)\n",fd,incName,local); if (!incInfo) incInfo=new IncludeInfo; if ((incName && incInfo->includeName.isEmpty()) || (fd!=0 && incInfo->fileDef==0) ) { + //printf("Setting file info\n"); incInfo->fileDef = fd; incInfo->includeName = incName; incInfo->local = local; @@ -1396,7 +1398,7 @@ void ClassDef::determineImplUsageRelation() { ClassDef *cd=getClass(name()+"::"+type.mid(i,l)); if (cd==0) cd=getClass(type.mid(i,l)); // TODO: also try inbetween scopes! - if (cd && cd->isLinkable()) // class exists and is linkable + if (cd /*&& cd->isLinkable()*/) // class exists and is linkable { found=TRUE; if (usesImplClassDict==0) usesImplClassDict = new UsesClassDict(257); diff --git a/src/classdef.h b/src/classdef.h index 13b06cd..d01a117 100644 --- a/src/classdef.h +++ b/src/classdef.h @@ -218,7 +218,7 @@ class BaseClassList : public QList if (c1==0 || c2==0) return FALSE; else - return strcmp(c1->name(),c2->name()); + return strcasecmp(c1->name(),c2->name()); } }; diff --git a/src/classlist.cpp b/src/classlist.cpp index d660102..81bb940 100644 --- a/src/classlist.cpp +++ b/src/classlist.cpp @@ -34,9 +34,9 @@ int ClassList::compareItems(GCI item1, GCI item2) //int prefixLength = Config::ignorePrefix.length(); //int i1 = c1->name().left(prefixLength)==Config::ignorePrefix ? prefixLength : 0; //int i2 = c2->name().left(prefixLength)==Config::ignorePrefix ? prefixLength : 0; - return strcmp(c1->name().data()+getPrefixIndex(c1->name()), - c2->name().data()+getPrefixIndex(c2->name()) - ); + return strcasecmp(c1->name().data()+getPrefixIndex(c1->name()), + c2->name().data()+getPrefixIndex(c2->name()) + ); } ClassListIterator::ClassListIterator(const ClassList &cllist) : diff --git a/src/code.cpp b/src/code.cpp deleted file mode 100644 index b505342..0000000 --- a/src/code.cpp +++ /dev/null @@ -1,3640 +0,0 @@ -#define yy_create_buffer codeYY_create_buffer -#define yy_delete_buffer codeYY_delete_buffer -#define yy_scan_buffer codeYY_scan_buffer -#define yy_scan_string codeYY_scan_string -#define yy_scan_bytes codeYY_scan_bytes -#define yy_flex_debug codeYY_flex_debug -#define yy_init_buffer codeYY_init_buffer -#define yy_flush_buffer codeYY_flush_buffer -#define yy_load_buffer_state codeYY_load_buffer_state -#define yy_switch_to_buffer codeYY_switch_to_buffer -#define yyin codeYYin -#define yyleng codeYYleng -#define yylex codeYYlex -#define yyout codeYYout -#define yyrestart codeYYrestart -#define yytext codeYYtext - -/* A lexical scanner generated by flex */ - -/* Scanner skeleton version: - * $Header$ - */ - -#define FLEX_SCANNER -#define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 5 - -#include - - -/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */ -#ifdef c_plusplus -#ifndef __cplusplus -#define __cplusplus -#endif -#endif - - -#ifdef __cplusplus - -#include -#include - -/* Use prototypes in function declarations. */ -#define YY_USE_PROTOS - -/* The "const" storage-class-modifier is valid. */ -#define YY_USE_CONST - -#else /* ! __cplusplus */ - -#if __STDC__ - -#define YY_USE_PROTOS -#define YY_USE_CONST - -#endif /* __STDC__ */ -#endif /* ! __cplusplus */ - -#ifdef __TURBOC__ - #pragma warn -rch - #pragma warn -use -#include -#include -#define YY_USE_CONST -#define YY_USE_PROTOS -#endif - -#ifdef YY_USE_CONST -#define yyconst const -#else -#define yyconst -#endif - - -#ifdef YY_USE_PROTOS -#define YY_PROTO(proto) proto -#else -#define YY_PROTO(proto) () -#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 yyrestart( yyin ) - -#define YY_END_OF_BUFFER_CHAR 0 - -/* Size of default input buffer. */ -#define YY_BUF_SIZE 16384 - -typedef struct yy_buffer_state *YY_BUFFER_STATE; - -extern int yyleng; -extern FILE *yyin, *yyout; - -#define EOB_ACT_CONTINUE_SCAN 0 -#define EOB_ACT_END_OF_FILE 1 -#define EOB_ACT_LAST_MATCH 2 - -/* The funky do-while in the following #define is used to turn the definition - * int a single C statement (which needs a semi-colon terminator). This - * avoids problems with code like: - * - * if ( condition_holds ) - * yyless( 5 ); - * else - * do_something_else(); - * - * Prior to using the do-while the compiler would get upset at the - * "else" because it interpreted the "if" statement as being all - * done when it reached the ';' after the yyless() call. - */ - -/* Return all but the first 'n' matched characters back to the input stream. */ - -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - *yy_cp = yy_hold_char; \ - YY_RESTORE_YY_MORE_OFFSET \ - yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \ - YY_DO_BEFORE_ACTION; /* set up yytext again */ \ - } \ - while ( 0 ) - -#define unput(c) yyunput( c, yytext_ptr ) - -/* The following is because we cannot portably get our hands on size_t - * (without autoconf's help, which isn't available because we want - * flex-generated scanners to compile on their own). - */ -typedef unsigned int yy_size_t; - - -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; - - /* Whether to try to fill the input buffer when we reach the - * end of it. - */ - int yy_fill_buffer; - - int yy_buffer_status; -#define YY_BUFFER_NEW 0 -#define YY_BUFFER_NORMAL 1 - /* When an EOF's been seen but there's still some text to process - * then we mark the buffer as YY_EOF_PENDING, to indicate that we - * shouldn't try reading from the input source any more. We might - * still have a bunch of tokens to match, though, because of - * possible backing-up. - * - * When we actually see the EOF, we change the status to "new" - * (via yyrestart()), so that the user can continue scanning by - * just pointing yyin at a new input file. - */ -#define YY_BUFFER_EOF_PENDING 2 - }; - -static YY_BUFFER_STATE yy_current_buffer = 0; - -/* 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". - */ -#define YY_CURRENT_BUFFER yy_current_buffer - - -/* yy_hold_char holds the character lost when yytext is formed. */ -static char yy_hold_char; - -static int yy_n_chars; /* number of characters read into yy_ch_buf */ - - -int yyleng; - -/* Points to current character in buffer. */ -static char *yy_c_buf_p = (char *) 0; -static int yy_init = 1; /* whether we need to initialize */ -static int yy_start = 0; /* start state number */ - -/* Flag which is used to allow yywrap()'s to do buffer switches - * instead of setting up a fresh yyin. A bit of a hack ... - */ -static int yy_did_buffer_switch_on_eof; - -void yyrestart YY_PROTO(( FILE *input_file )); - -void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer )); -void yy_load_buffer_state YY_PROTO(( void )); -YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size )); -void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b )); -void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file )); -void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b )); -#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer ) - -YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size )); -YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str )); -YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len )); - -static void *yy_flex_alloc YY_PROTO(( yy_size_t )); -static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t )); -static void yy_flex_free YY_PROTO(( void * )); - -#define yy_new_buffer yy_create_buffer - -#define yy_set_interactive(is_interactive) \ - { \ - if ( ! yy_current_buffer ) \ - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ - yy_current_buffer->yy_is_interactive = is_interactive; \ - } - -#define yy_set_bol(at_bol) \ - { \ - if ( ! yy_current_buffer ) \ - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ - yy_current_buffer->yy_at_bol = at_bol; \ - } - -#define YY_AT_BOL() (yy_current_buffer->yy_at_bol) - - -#define YY_USES_REJECT - -#define yywrap() 1 -#define YY_SKIP_YYWRAP -typedef unsigned char YY_CHAR; -FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; -typedef int yy_state_type; -extern char *yytext; -#define yytext_ptr yytext - -static yy_state_type yy_get_previous_state YY_PROTO(( void )); -static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state )); -static int yy_get_next_buffer YY_PROTO(( void )); -static void yy_fatal_error YY_PROTO(( yyconst char msg[] )); - -/* Done after the current pattern has been matched and before the - * corresponding action - sets up yytext. - */ -#define YY_DO_BEFORE_ACTION \ - yytext_ptr = yy_bp; \ - yyleng = (int) (yy_cp - yy_bp); \ - yy_hold_char = *yy_cp; \ - *yy_cp = '\0'; \ - yy_c_buf_p = yy_cp; - -#define YY_NUM_RULES 78 -#define YY_END_OF_BUFFER 79 -static yyconst short int yy_acclist[752] = - { 0, - 31, 31, 79, 77, 78, 67, 76, 78, 1, 77, - 78, 77, 78, 77, 78, 77, 78, 31, 77, 78, - 1, 31, 77, 78, 33, 77, 78, 31, 77, 78, - 77, 78, 31, 77, 78, 31, 77, 78, 6, 77, - 78, 8, 67, 76, 78, 1, 6, 77, 78, 6, - 77, 78, 6, 77, 78, 6, 77, 78, 6, 77, - 78, 57, 77, 78, 57, 77, 78, 1, 57, 77, - 78, 77, 78, 77, 78, 57, 77, 78, 77, 78, - 77, 78, 59, 67, 76, 78, 1, 77, 78, 77, - 78, 77, 78, 77, 78, 63, 66, 77, 78, 65, - - 67, 76, 78, 1, 63, 66, 77, 78, 66, 77, - 78, 63, 66, 77, 78, 63, 66, 77, 78, 63, - 66, 77, 78, 77, 78, 67, 76, 78, 1, 77, - 78, 30, 77, 78, 77, 78, 41, 77, 78, 77, - 78, 38, 77, 78, 42, 77, 78, 35, 77, 78, - 8220, 77, 78,16412,16413, 8220, 77, 78,16412,16413, - 8220, 77, 78,16412,16413, 8220, 77, 78,16412,16413, - 8220, 77, 78,16412,16413, 8220, 77, 78,16412,16413, - 8220, 77, 78,16412,16413, 8220, 77, 78,16412,16413, - 8220, 77, 78,16412,16413, 8220, 77, 78,16412,16413, - - 8220, 77, 78,16412,16413, 8220, 77, 78,16412,16413, - 8220, 77, 78,16412,16413, 8220, 77, 78,16412,16413, - 8220, 77, 78,16412,16413, 10, 77, 78, 11, 77, - 78, 77, 78, 77, 78, 5, 77, 78, 45, 77, - 78, 46, 77, 78, 44, 77, 78, 43, 77, 78, - 16437, 40, 77, 78, 40, 77, 78, 67, 76, 78, - 1, 40, 77, 78, 30, 40, 77, 78, 40, 77, - 78, 40, 77, 78, 40, 77, 78, 77, 78,16423, - 40, 77, 78, 40, 77, 78, 40, 77, 78, 43, - 77, 78,16438,16439, 51, 77, 78, 50, 77, 78, - - 77, 78, 67, 76, 78, 13, 77, 78, 15, 77, - 78, 12, 77, 78, 14, 77, 78, 16, 77, 78, - 77, 78, 77, 78, 25, 77, 78, 22, 77, 78, - 21, 77, 78, 21, 77, 78, 21, 77, 78, 77, - 78, 23, 77, 78, 24, 77, 78, 77, 78,16388, - 74, 75, 74, 75, 31, 31, 32, 74, 31, 32, - 75, 34, 31, 31, 31, 32, 74, 31, 32, 75, - 9, 75, 7, 9, 75, 57, 57, 58, 56, 75, - 57, 56, 75, 59, 74, 75, 74, 75, 63, 62, - 64, 74, 63, 64, 75, 63, 63, 64, 74, 63, - - 64, 75, 38, 42, 8220, 8220, 8221, 8220,16412,16413, - 8220,16412,16413, 8220,16412,16413, 8220,16412,16413, 8220, - 16412,16413, 8220,16412,16413, 8220,16412,16413, 8220,16412, - 16413, 27, 8220,16412,16413, 8220,16412,16413, 8220,16412, - 16413, 8220,16412,16413, 8220,16412,16413, 8220,16412,16413, - 8220,16412,16413, 8220,16412,16413, 8220,16412,16413, 8220, - 16412,16413, 8220,16412,16413, 8220,16412,16413, 8220,16412, - 16413, 8220,16412,16413, 5, 49, 47, 48, 52, 8245, - 43,16437, 43, 8231,16423,16423, 8246, 8247, 43,16438, - 16439, 51, 15, 16, 13, 15, 14, 16, 21, 21, - - 21, 21, 8196,16388, 31, 31, 31, 31, 31, 31, - 31, 31, 61, 63, 63, 63, 36, 36, 8220,16412, - 16413, 8220,16412,16413, 8220,16412,16413, 8220,16412,16413, - 8220,16412,16413, 8220,16412,16413, 8220,16412,16413, 8220, - 16412,16413, 8220,16412,16413, 27, 8220, 27, 8220, 26, - 8221, 8220,16412,16413, 8220,16412,16413, 8220,16412,16413, - 8220,16412,16413, 8220,16412,16413, 8220,16412,16413, 8220, - 16412,16413, 8220,16412,16413, 8220,16412,16413, 8220,16412, - 16413, 8220, 8220, 8220,16412,16413,16423,16423, 21, 21, - 21, 21,16388, 72, 73, 69, 71, 72, 68, 69, - - 31, 72, 31, 31, 73, 31, 31, 31, 31, 71, - 72, 31, 72, 59, 72, 73, 59, 69, 71, 72, - 59, 71, 72, 59, 68, 69, 61, 63, 63, 63, - 8220,16412,16413, 8220,16412,16413, 8220,16412,16413, 8220, - 16412,16413, 8220,16412,16413, 8220,16412,16413, 26, 8220, - 16412,16413, 8220,16412,16413, 8220,16412,16413, 27, 8220, - 16412,16413, 8220,16412,16413, 8220,16412,16413, 8220,16412, - 16413, 8220,16412,16413, 21, 21, 21, 21, 70, 67, - 71, 68, 31, 71, 31, 71, 59, 71, 59, 68, - 63, 8220,16412,16413, 8220,16412,16413, 8220,16412,16413, - - 8220,16412,16413, 8220,16412,16413, 8220,16412,16413, 8220, - 16412,16413, 8220,16412,16413, 21, 21, 21, 21, 3, - 8220, 3, 8220, 8220,16412,16413, 8220,16412,16413, 37, - 8220,16412,16413, 21, 21, 18, 21, 21, 60, 8220, - 16412,16413, 20, 21, 21, 17, 21, 21, 19, 21, - 2 - } ; - -static yyconst short int yy_accept[449] = - { 0, - 1, 1, 1, 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, 4, 6, 9, 12, 14, 16, 18, - 21, 25, 28, 31, 33, 36, 39, 42, 46, 50, - 53, 56, 59, 62, 65, 68, 72, 74, 76, 79, - 81, 83, 87, 90, 92, 94, 96, 100, 104, 109, - 112, 116, 120, 124, 126, 129, 132, 135, 137, 140, - 142, 145, 148, 151, 156, 161, 166, 171, 176, 181, - 186, 191, 196, 201, 206, 211, 216, 221, 226, 229, - - 232, 234, 236, 239, 242, 245, 248, 252, 255, 258, - 261, 265, 269, 272, 275, 278, 281, 284, 287, 290, - 295, 298, 301, 303, 306, 309, 312, 315, 318, 321, - 323, 325, 328, 331, 334, 337, 340, 342, 345, 348, - 351, 351, 351, 352, 353, 353, 353, 354, 355, 356, - 359, 362, 363, 364, 365, 368, 371, 373, 374, 376, - 377, 378, 378, 379, 381, 382, 384, 384, 385, 386, - 387, 387, 387, 388, 389, 390, 391, 393, 396, 397, - 398, 400, 403, 403, 403, 403, 403, 403, 404, 405, - 405, 406, 407, 408, 411, 414, 417, 420, 423, 426, - - 429, 432, 436, 439, 442, 445, 448, 451, 454, 457, - 460, 463, 466, 469, 472, 472, 475, 475, 476, 476, - 476, 477, 478, 479, 480, 480, 481, 483, 484, 484, - 484, 484, 484, 484, 485, 486, 486, 487, 487, 487, - 488, 488, 489, 492, 493, 493, 493, 494, 495, 495, - 496, 497, 498, 499, 499, 499, 500, 501, 502, 503, - 503, 504, 505, 505, 505, 505, 505, 505, 505, 505, - 505, 505, 505, 505, 506, 507, 508, 509, 510, 511, - 512, 513, 513, 513, 513, 513, 513, 513, 513, 513, - 513, 514, 515, 516, 517, 518, 519, 519, 522, 522, - - 525, 528, 531, 534, 537, 540, 543, 546, 548, 550, - 552, 555, 558, 561, 564, 567, 570, 573, 576, 579, - 582, 583, 584, 587, 587, 587, 588, 588, 588, 589, - 590, 591, 592, 593, 594, 594, 594, 595, 595, 596, - 596, 597, 597, 597, 599, 599, 601, 603, 604, 606, - 607, 608, 609, 612, 613, 614, 616, 616, 617, 617, - 619, 619, 619, 621, 624, 624, 627, 627, 628, 628, - 629, 630, 631, 634, 637, 640, 643, 646, 649, 650, - 653, 656, 659, 663, 666, 669, 672, 675, 675, 676, - 677, 678, 679, 680, 680, 681, 682, 682, 683, 685, - - 686, 687, 689, 689, 691, 691, 692, 695, 698, 701, - 704, 707, 710, 713, 713, 716, 716, 717, 718, 719, - 720, 720, 720, 720, 722, 724, 727, 730, 731, 734, - 734, 735, 736, 738, 739, 740, 743, 743, 745, 746, - 748, 748, 749, 749, 751, 751, 752, 752 - } ; - -static yyconst int 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, 2, 5, 6, 7, 1, 1, 8, 9, 10, - 11, 12, 1, 13, 14, 15, 16, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 18, 19, 20, - 21, 22, 1, 1, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 21, 24, 1, 1, 23, 1, 25, 26, 27, 28, - - 29, 30, 31, 32, 33, 23, 34, 35, 36, 37, - 38, 39, 23, 40, 41, 42, 43, 44, 45, 23, - 46, 23, 47, 1, 48, 49, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1 - } ; - -static yyconst int yy_meta[50] = - { 0, - 1, 2, 3, 4, 1, 5, 1, 1, 1, 6, - 1, 7, 1, 8, 9, 10, 11, 12, 1, 1, - 1, 13, 14, 15, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 1, 1, 16 - } ; - -static yyconst short int yy_base[500] = - { 0, - 0, 3, 5, 11, 20, 29, 35, 38, 45, 53, - 55, 60, 62, 71, 87, 18, 136, 10, 185, 44, - 229, 66, 275, 68, 324, 234, 373, 235, 420, 423, - 445, 237, 1515, 1994, 428, 1994, 6, 493, 65, 0, - 0, 1994, 67, 0, 494, 226, 1994, 495, 1994, 228, - 1511, 496, 229, 0, 426, 0, 1497, 231, 501, 417, - 1509, 498, 1508, 503, 502, 504, 0, 506, 0, 1490, - 419, 519, 425, 521, 524, 527, 1994, 1479, 1994, 1480, - 1994, 1484, 1482, 534, 544, 510, 530, 520, 529, 536, - 537, 526, 547, 552, 541, 557, 564, 500, 1994, 1994, - - 606, 609, 1496, 1994, 612, 1994, 608, 1994, 617, 630, - 634, 1994, 1469, 580, 1472, 637, 640, 647, 590, 654, - 0, 1994, 658, 664, 616, 83, 1994, 0, 1485, 668, - 557, 1994, 1994, 0, 206, 1451, 671, 1994, 1994, 669, - 672, 642, 678, 673, 677, 665, 687, 690, 0, 689, - 691, 1994, 695, 686, 698, 703, 704, 1994, 707, 0, - 702, 1467, 1994, 708, 714, 712, 1479, 1994, 722, 726, - 719, 729, 734, 733, 0, 499, 728, 738, 742, 735, - 743, 745, 760, 1463, 763, 1471, 1470, 1994, 1461, 766, - 770, 773, 1994, 391, 716, 744, 753, 756, 764, 763, - - 760, 806, 769, 777, 780, 783, 788, 792, 801, 805, - 809, 798, 810, 821, 854, 857, 866, 1475, 1443, 869, - 1994, 1994, 1994, 1994, 1449, 1994, 865, 0, 874, 1450, - 887, 891, 894, 1994, 897, 915, 0, 918, 923, 1994, - 1445, 1994, 929, 0, 863, 911, 531, 1464, 939, 748, - 790, 0, 1463, 943, 615, 0, 561, 1437, 1406, 933, - 1994, 942, 0, 918, 797, 1422, 824, 1427, 948, 809, - 1393, 890, 1399, 959, 960, 964, 969, 858, 979, 986, - 990, 996, 997, 1395, 974, 1001, 1004, 1012, 1379, 883, - 1016, 40, 989, 554, 1994, 1369, 1019, 909, 1023, 913, - - 1004, 1001, 1007, 990, 997, 1010, 1014, 1056, 1059, 1994, - 1035, 1011, 1024, 1029, 1038, 1030, 1044, 1054, 1048, 1049, - 1091, 925, 1096, 1331, 1100, 1105, 1108, 643, 809, 1322, - 1222, 1228, 1208, 1108, 0, 1230, 1994, 1212, 1994, 1218, - 1994, 0, 1211, 1994, 1210, 1994, 0, 1186, 0, 1110, - 1116, 1114, 0, 1123, 1198, 1994, 908, 1186, 1180, 1994, - 1130, 1138, 1132, 1994, 1128, 1994, 1134, 1141, 1109, 966, - 1093, 1136, 1111, 1119, 1084, 1120, 1115, 1123, 1994, 1127, - 1128, 1132, 1174, 1137, 1144, 1149, 1150, 1073, 1063, 1046, - 1023, 1003, 1994, 1038, 971, 1994, 1033, 1994, 0, 1192, - - 998, 1994, 965, 1994, 1169, 1191, 1194, 1163, 1164, 1179, - 1182, 1168, 1186, 886, 1183, 826, 785, 756, 744, 728, - 995, 684, 0, 1228, 1237, 1193, 1201, 1994, 1215, 586, - 562, 518, 0, 464, 1994, 1218, 220, 0, 51, 0, - 1, 0, 1246, 0, 1247, 1994, 1994, 1267, 1283, 1299, - 1315, 1331, 1347, 1363, 1379, 1395, 1411, 1427, 1443, 1458, - 1471, 1480, 1493, 1506, 1519, 1240, 1246, 1251, 1529, 1542, - 1557, 1561, 1574, 1589, 1595, 1609, 1625, 1641, 1657, 1673, - 1689, 1705, 1721, 1737, 1753, 1769, 1785, 1801, 1817, 1833, - 1849, 1865, 1881, 1897, 1913, 1929, 1945, 1961, 1977 - - } ; - -static yyconst short int yy_def[500] = - { 0, - 448, 448, 449, 449, 450, 450, 451, 451, 452, 452, - 453, 453, 448, 448, 447, 15, 447, 17, 447, 19, - 17, 21, 447, 23, 447, 25, 447, 27, 448, 448, - 447, 31, 447, 447, 447, 447, 447, 447, 447, 454, - 454, 447, 454, 455, 454, 454, 447, 447, 447, 447, - 447, 447, 447, 456, 456, 456, 447, 447, 456, 447, - 457, 447, 457, 457, 457, 457, 458, 447, 458, 447, - 458, 458, 458, 447, 447, 447, 447, 459, 447, 447, - 447, 447, 447, 460, 460, 85, 85, 85, 85, 85, - 85, 85, 85, 85, 85, 85, 85, 85, 447, 447, - - 461, 447, 447, 447, 447, 447, 462, 447, 447, 447, - 447, 447, 459, 447, 447, 463, 464, 447, 447, 465, - 466, 447, 447, 447, 447, 447, 447, 467, 447, 447, - 447, 447, 447, 468, 468, 468, 447, 447, 447, 469, - 447, 447, 447, 447, 447, 447, 447, 447, 454, 454, - 454, 447, 454, 454, 454, 454, 447, 447, 447, 456, - 456, 447, 447, 447, 456, 447, 457, 447, 457, 457, - 457, 457, 457, 457, 458, 447, 447, 458, 458, 458, - 447, 458, 447, 447, 447, 447, 459, 447, 447, 470, - 447, 447, 447, 85, 85, 85, 85, 85, 85, 85, - - 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, - 85, 85, 85, 85, 461, 471, 447, 447, 447, 447, - 447, 447, 447, 447, 447, 447, 462, 472, 447, 447, - 447, 473, 447, 447, 463, 464, 474, 447, 447, 447, - 447, 447, 465, 466, 447, 447, 447, 447, 447, 447, - 447, 467, 447, 447, 447, 468, 468, 468, 468, 447, - 447, 469, 475, 447, 447, 476, 476, 477, 447, 447, - 478, 478, 479, 480, 480, 481, 454, 454, 482, 482, - 483, 484, 484, 485, 457, 457, 486, 486, 487, 447, - 447, 488, 458, 489, 447, 447, 470, 85, 461, 85, - - 85, 85, 85, 85, 85, 85, 85, 447, 447, 447, - 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, - 447, 447, 471, 447, 473, 463, 464, 447, 474, 468, - 468, 468, 468, 475, 490, 491, 447, 447, 447, 477, - 447, 492, 493, 447, 479, 447, 454, 454, 454, 481, - 494, 495, 454, 483, 457, 447, 457, 457, 485, 447, - 496, 497, 457, 447, 487, 447, 447, 447, 447, 488, - 498, 489, 85, 85, 85, 85, 85, 85, 447, 85, - 85, 85, 85, 85, 85, 85, 85, 447, 468, 468, - 468, 468, 447, 491, 447, 447, 493, 447, 454, 495, - - 457, 447, 497, 447, 447, 498, 85, 85, 85, 85, - 85, 85, 85, 447, 85, 447, 468, 468, 468, 468, - 447, 447, 499, 447, 447, 85, 85, 447, 85, 447, - 468, 468, 468, 468, 447, 85, 447, 468, 468, 468, - 447, 468, 447, 468, 447, 447, 0, 447, 447, 447, - 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, - 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, - 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, - 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, - 447, 447, 447, 447, 447, 447, 447, 447, 447 - - } ; - -static yyconst short int yy_nxt[2044] = - { 0, - 447, 328, 35, 36, 38, 35, 36, 35, 41, 234, - 42, 38, 45, 35, 41, 37, 42, 143, 39, 102, - 43, 144, 48, 49, 103, 39, 46, 444, 44, 443, - 52, 48, 49, 39, 44, 50, 55, 35, 56, 59, - 35, 56, 341, 51, 53, 118, 57, 62, 63, 57, - 58, 340, 51, 60, 65, 62, 63, 68, 69, 119, - 64, 72, 68, 69, 35, 36, 70, 38, 66, 38, - 71, 70, 38, 35, 36, 73, 147, 37, 150, 442, - 148, 39, 151, 39, 251, 251, 39, 34, 74, 75, - 76, 34, 77, 34, 34, 78, 34, 34, 34, 79, - - 80, 81, 37, 82, 83, 79, 34, 79, 34, 84, - 34, 85, 86, 87, 88, 89, 90, 91, 84, 92, - 84, 84, 84, 93, 84, 84, 94, 95, 96, 97, - 84, 98, 84, 99, 100, 101, 34, 34, 35, 36, - 34, 77, 34, 34, 78, 104, 105, 34, 106, 34, - 34, 37, 34, 34, 34, 34, 34, 34, 107, 34, - 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, - 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, - 107, 107, 34, 34, 34, 108, 109, 110, 111, 108, - 112, 108, 108, 113, 34, 108, 108, 108, 108, 108, - - 114, 34, 115, 108, 108, 108, 108, 116, 108, 116, - 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, - 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, - 116, 108, 108, 117, 34, 130, 137, 155, 38, 143, - 147, 156, 143, 157, 159, 257, 164, 441, 258, 39, - 39, 120, 39, 120, 120, 120, 120, 120, 120, 120, - 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, - 120, 120, 120, 120, 120, 34, 34, 35, 36, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 37, 34, 34, 34, 34, 34, 34, 121, 34, 121, - - 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, - 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, - 121, 122, 34, 34, 34, 123, 124, 36, 34, 34, - 34, 125, 34, 34, 34, 125, 34, 34, 34, 37, - 34, 126, 127, 34, 34, 34, 128, 34, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 129, 34, 34, 34, 131, 35, 36, 34, 34, 34, - 34, 34, 34, 34, 34, 132, 34, 34, 37, 34, - 34, 34, 133, 34, 34, 134, 34, 134, 134, 134, - - 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, - 134, 135, 134, 134, 134, 134, 136, 134, 134, 129, - 34, 34, 35, 36, 38, 35, 36, 161, 147, 141, - 177, 194, 166, 194, 178, 37, 181, 162, 39, 138, - 182, 139, 138, 142, 139, 34, 34, 35, 36, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 140, - 37, 140, 34, 34, 34, 34, 34, 140, 34, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 34, 34, 34, 145, 153, 141, 145, 440, 141, - - 290, 291, 165, 171, 168, 168, 168, 141, 146, 154, - 142, 146, 162, 142, 169, 173, 146, 172, 170, 174, - 179, 142, 183, 183, 183, 185, 183, 183, 183, 183, - 183, 214, 251, 251, 180, 191, 192, 183, 184, 142, - 194, 184, 194, 193, 184, 191, 192, 183, 201, 197, - 194, 184, 194, 193, 198, 202, 346, 202, 255, 439, - 194, 184, 194, 203, 199, 345, 194, 200, 194, 194, - 194, 194, 194, 204, 205, 206, 194, 194, 194, 194, - 207, 194, 208, 194, 195, 209, 196, 194, 210, 194, - 438, 143, 194, 330, 194, 144, 211, 194, 331, 194, - - 213, 147, 212, 248, 194, 148, 194, 215, 215, 215, - 217, 183, 183, 220, 220, 218, 255, 224, 229, 229, - 229, 225, 226, 250, 146, 228, 184, 250, 437, 221, - 222, 231, 229, 229, 230, 229, 229, 229, 233, 229, - 229, 236, 236, 236, 328, 142, 234, 230, 238, 229, - 229, 230, 234, 264, 230, 239, 239, 265, 223, 245, - 246, 248, 146, 240, 230, 249, 246, 241, 242, 254, - 246, 228, 260, 141, 261, 247, 269, 268, 145, 142, - 270, 247, 266, 146, 263, 247, 146, 142, 268, 267, - 261, 271, 146, 274, 273, 276, 153, 277, 272, 265, - - 275, 278, 279, 161, 248, 273, 276, 281, 268, 280, - 154, 273, 268, 162, 248, 165, 273, 248, 281, 268, - 171, 168, 273, 268, 168, 162, 282, 273, 168, 146, - 284, 168, 266, 283, 172, 168, 168, 289, 287, 267, - 285, 284, 292, 179, 286, 288, 269, 271, 289, 294, - 293, 202, 434, 292, 272, 250, 194, 180, 194, 250, - 294, 183, 183, 183, 185, 183, 183, 297, 297, 297, - 433, 191, 192, 183, 192, 192, 183, 184, 142, 193, - 184, 301, 432, 184, 194, 300, 194, 184, 304, 306, - 184, 251, 251, 194, 307, 194, 302, 303, 194, 305, - - 194, 336, 194, 194, 194, 194, 194, 308, 309, 311, - 328, 194, 336, 343, 299, 310, 202, 194, 234, 194, - 194, 312, 194, 194, 343, 194, 431, 202, 194, 313, - 194, 314, 194, 315, 194, 447, 318, 316, 194, 339, - 194, 194, 319, 194, 317, 194, 194, 194, 194, 194, - 194, 194, 194, 320, 202, 215, 215, 215, 321, 322, - 430, 194, 352, 194, 245, 246, 193, 217, 183, 183, - 220, 220, 218, 352, 224, 229, 229, 229, 225, 226, - 247, 146, 228, 184, 290, 291, 221, 222, 231, 229, - 229, 230, 325, 325, 325, 233, 229, 229, 233, 229, - - 229, 447, 142, 234, 230, 339, 234, 428, 230, 248, - 168, 230, 246, 246, 230, 223, 236, 236, 236, 238, - 229, 229, 335, 358, 239, 239, 322, 322, 247, 335, - 239, 239, 240, 146, 260, 230, 241, 242, 240, 327, - 249, 246, 241, 242, 254, 246, 228, 261, 146, 194, - 202, 194, 342, 194, 142, 194, 247, 263, 146, 342, - 247, 337, 337, 261, 337, 337, 341, 404, 341, 340, - 348, 149, 421, 351, 149, 349, 168, 340, 361, 248, - 351, 344, 337, 337, 344, 361, 422, 340, 344, 248, - 348, 344, 346, 371, 149, 345, 421, 149, 356, 356, - - 168, 349, 344, 168, 371, 362, 364, 357, 167, 344, - 422, 167, 358, 345, 364, 357, 362, 367, 368, 167, - 297, 297, 297, 167, 215, 215, 215, 358, 373, 202, - 375, 369, 194, 374, 377, 398, 184, 194, 376, 194, - 395, 194, 378, 194, 194, 420, 194, 194, 202, 194, - 194, 194, 194, 194, 194, 419, 194, 308, 309, 183, - 309, 309, 183, 202, 194, 310, 380, 299, 379, 194, - 383, 381, 194, 184, 418, 194, 184, 194, 194, 382, - 194, 384, 385, 387, 194, 386, 194, 417, 194, 194, - 194, 194, 321, 322, 194, 398, 194, 321, 322, 416, - - 193, 325, 325, 325, 397, 193, 233, 229, 229, 236, - 236, 236, 341, 261, 234, 340, 398, 230, 396, 397, - 405, 396, 230, 263, 407, 346, 194, 149, 345, 261, - 366, 149, 402, 340, 168, 367, 368, 397, 346, 396, - 404, 167, 367, 368, 202, 167, 345, 345, 327, 369, - 202, 194, 408, 194, 412, 194, 369, 409, 413, 194, - 194, 194, 194, 194, 410, 194, 411, 194, 194, 194, - 194, 415, 194, 423, 194, 308, 309, 194, 202, 194, - 423, 202, 360, 310, 194, 407, 194, 414, 168, 194, - 194, 194, 194, 398, 398, 424, 425, 397, 427, 426, - - 168, 349, 397, 194, 194, 194, 194, 202, 194, 407, - 194, 429, 346, 398, 194, 397, 194, 202, 202, 194, - 341, 194, 194, 194, 194, 194, 194, 339, 194, 424, - 425, 183, 395, 194, 194, 436, 194, 193, 425, 425, - 183, 194, 202, 194, 202, 184, 202, 445, 445, 392, - 244, 446, 446, 244, 184, 194, 252, 194, 194, 252, - 194, 256, 391, 390, 256, 446, 446, 34, 34, 34, - 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, - 34, 34, 34, 40, 40, 40, 40, 40, 40, 40, - 40, 40, 40, 40, 40, 40, 40, 40, 40, 47, - - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 54, 54, 54, 54, 54, - 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, - 54, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 67, 67, 67, - 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 149, 149, 389, 149, 388, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 295, 149, 152, - 152, 366, 152, 152, 152, 152, 152, 152, 152, 152, - 152, 152, 152, 152, 152, 160, 160, 360, 160, 160, - - 160, 346, 160, 160, 338, 160, 160, 160, 160, 160, - 160, 167, 167, 167, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 175, 175, 341, - 175, 175, 175, 338, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 186, 186, 333, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 194, - 194, 194, 332, 194, 253, 253, 242, 232, 194, 194, - 226, 194, 216, 216, 216, 324, 219, 189, 296, 295, - 190, 168, 163, 259, 216, 227, 253, 227, 227, 232, - 227, 227, 187, 227, 235, 235, 235, 219, 235, 190, - - 189, 188, 187, 235, 235, 176, 235, 237, 237, 237, - 168, 168, 163, 158, 447, 447, 447, 447, 447, 237, - 243, 243, 447, 447, 243, 447, 243, 243, 447, 243, - 243, 447, 243, 262, 447, 447, 447, 262, 262, 262, - 447, 262, 262, 298, 298, 298, 447, 447, 447, 447, - 447, 447, 447, 298, 447, 298, 447, 298, 323, 323, - 447, 447, 323, 447, 447, 447, 447, 323, 447, 447, - 323, 228, 228, 447, 228, 326, 326, 326, 447, 447, - 447, 447, 447, 447, 447, 326, 447, 326, 447, 326, - 329, 447, 447, 447, 329, 447, 447, 447, 447, 329, - - 447, 447, 329, 334, 447, 334, 447, 447, 334, 337, - 337, 337, 337, 337, 337, 337, 337, 337, 447, 337, - 337, 337, 337, 337, 337, 340, 340, 340, 340, 340, - 340, 340, 340, 340, 340, 340, 340, 340, 340, 340, - 340, 344, 344, 344, 344, 344, 344, 344, 344, 344, - 447, 344, 344, 344, 344, 344, 344, 345, 345, 345, - 345, 345, 345, 345, 345, 345, 345, 345, 345, 345, - 345, 345, 345, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 350, - 350, 350, 350, 350, 350, 350, 350, 350, 350, 350, - - 350, 350, 350, 350, 350, 353, 353, 353, 353, 353, - 353, 353, 353, 353, 353, 353, 353, 353, 353, 353, - 353, 354, 354, 354, 354, 354, 354, 354, 354, 354, - 354, 354, 354, 354, 354, 354, 354, 355, 355, 355, - 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, - 355, 355, 355, 359, 359, 359, 359, 359, 359, 359, - 359, 359, 359, 359, 359, 359, 359, 359, 359, 363, - 363, 363, 363, 363, 363, 363, 363, 363, 363, 363, - 363, 363, 363, 363, 363, 365, 365, 365, 365, 365, - 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, - - 365, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 370, 370, 370, 370, 370, 370, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 393, 393, 393, 393, 393, 393, 447, - 393, 393, 447, 393, 393, 393, 393, 393, 393, 394, - 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, - 394, 394, 394, 394, 394, 396, 396, 396, 396, 396, - 396, 447, 396, 396, 447, 396, 396, 396, 396, 396, - 396, 397, 397, 397, 397, 397, 397, 397, 397, 397, - 397, 397, 397, 397, 397, 397, 397, 399, 399, 399, - - 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, - 399, 399, 399, 400, 400, 400, 400, 400, 400, 400, - 400, 400, 400, 400, 400, 400, 400, 400, 400, 401, - 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, - 401, 401, 401, 401, 401, 403, 403, 403, 403, 403, - 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, - 403, 406, 406, 406, 406, 406, 406, 406, 406, 406, - 406, 406, 406, 406, 406, 406, 406, 435, 435, 435, - 435, 435, 435, 447, 435, 435, 447, 435, 435, 435, - 435, 435, 435, 33, 447, 447, 447, 447, 447, 447, - - 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, - 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, - 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, - 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, - 447, 447, 447 - } ; - -static yyconst short int yy_chk[2044] = - { 0, - 0, 237, 1, 1, 2, 2, 2, 3, 3, 237, - 3, 18, 4, 4, 4, 1, 4, 37, 2, 16, - 3, 37, 5, 5, 16, 18, 4, 442, 3, 441, - 6, 6, 6, 16, 4, 5, 7, 7, 7, 8, - 8, 8, 292, 5, 6, 20, 7, 9, 9, 8, - 7, 292, 6, 8, 10, 10, 10, 11, 11, 20, - 9, 12, 12, 12, 13, 13, 11, 22, 10, 24, - 11, 12, 14, 14, 14, 12, 39, 13, 43, 439, - 39, 22, 43, 24, 126, 126, 14, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 21, 26, 28, 46, 32, 50, - 53, 46, 58, 50, 53, 135, 58, 437, 135, 26, - 28, 21, 32, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 25, 25, 25, 25, 25, 25, - 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 25, 25, 25, 27, 27, 27, 27, 27, 27, 27, - 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - - 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - 27, 27, 29, 29, 30, 30, 30, 55, 60, 35, - 71, 194, 60, 194, 71, 29, 73, 55, 30, 29, - 73, 29, 30, 35, 30, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 38, 45, 48, 52, 434, 62, - - 176, 176, 59, 65, 65, 64, 66, 68, 38, 45, - 48, 52, 59, 62, 64, 66, 59, 65, 64, 66, - 72, 68, 74, 74, 74, 75, 75, 75, 76, 76, - 76, 98, 247, 247, 72, 84, 84, 84, 74, 75, - 98, 75, 98, 84, 76, 85, 85, 85, 88, 86, - 86, 84, 86, 85, 87, 92, 294, 88, 131, 432, - 88, 85, 88, 89, 87, 294, 92, 87, 92, 89, - 87, 89, 87, 90, 91, 93, 90, 91, 90, 91, - 94, 95, 95, 95, 85, 95, 85, 93, 96, 93, - 431, 114, 94, 257, 94, 114, 96, 96, 257, 96, - - 97, 119, 96, 131, 97, 119, 97, 101, 101, 101, - 102, 102, 102, 105, 105, 102, 255, 107, 109, 109, - 109, 107, 107, 125, 102, 107, 102, 125, 430, 105, - 105, 110, 110, 110, 109, 111, 111, 111, 116, 116, - 116, 117, 117, 117, 328, 110, 116, 110, 118, 118, - 118, 111, 328, 142, 116, 120, 120, 142, 105, 123, - 123, 255, 118, 120, 118, 124, 124, 120, 120, 130, - 130, 120, 137, 141, 140, 123, 146, 144, 145, 124, - 146, 124, 143, 130, 140, 130, 137, 141, 144, 143, - 140, 147, 145, 150, 148, 151, 153, 154, 147, 422, - - 150, 154, 155, 161, 123, 148, 151, 156, 157, 155, - 153, 159, 164, 161, 130, 165, 166, 137, 156, 157, - 171, 171, 159, 164, 169, 165, 169, 166, 170, 165, - 170, 172, 177, 169, 171, 174, 173, 174, 173, 177, - 172, 170, 178, 179, 172, 173, 180, 181, 174, 182, - 180, 195, 420, 178, 181, 250, 195, 179, 195, 250, - 182, 183, 183, 183, 185, 185, 185, 190, 190, 190, - 419, 191, 191, 191, 192, 192, 192, 183, 185, 191, - 185, 197, 418, 190, 196, 196, 196, 191, 199, 201, - 192, 251, 251, 197, 201, 197, 198, 198, 198, 200, - - 201, 265, 201, 200, 199, 200, 199, 202, 202, 203, - 329, 203, 265, 270, 190, 202, 204, 204, 329, 204, - 205, 205, 205, 206, 270, 206, 417, 206, 207, 207, - 207, 208, 208, 209, 208, 267, 212, 210, 212, 267, - 212, 209, 213, 209, 210, 210, 202, 210, 202, 211, - 213, 211, 213, 214, 211, 215, 215, 215, 216, 216, - 416, 214, 278, 214, 245, 245, 216, 217, 217, 217, - 220, 220, 217, 278, 227, 229, 229, 229, 227, 227, - 245, 217, 227, 217, 290, 290, 220, 220, 231, 231, - 231, 229, 232, 232, 232, 233, 233, 233, 235, 235, - - 235, 272, 231, 233, 231, 272, 235, 414, 232, 245, - 357, 233, 246, 246, 235, 220, 236, 236, 236, 238, - 238, 238, 264, 357, 239, 239, 322, 322, 246, 264, - 243, 243, 239, 238, 260, 238, 239, 239, 243, 232, - 249, 249, 243, 243, 254, 254, 243, 262, 260, 298, - 300, 298, 269, 300, 249, 300, 249, 262, 254, 269, - 254, 274, 275, 262, 274, 275, 276, 403, 370, 276, - 274, 275, 395, 277, 274, 275, 285, 370, 285, 260, - 277, 279, 274, 275, 279, 285, 395, 276, 280, 254, - 279, 280, 281, 293, 279, 281, 421, 280, 282, 283, - - 401, 280, 279, 286, 293, 286, 287, 282, 283, 280, - 421, 282, 283, 281, 288, 287, 286, 291, 291, 287, - 297, 297, 297, 288, 299, 299, 299, 288, 301, 302, - 304, 291, 304, 303, 306, 397, 297, 305, 305, 305, - 394, 302, 307, 302, 301, 392, 301, 303, 312, 303, - 306, 312, 306, 312, 307, 391, 307, 308, 308, 308, - 309, 309, 309, 311, 313, 308, 313, 297, 309, 314, - 316, 314, 316, 308, 390, 311, 309, 311, 315, 315, - 315, 317, 318, 320, 317, 319, 317, 389, 319, 320, - 319, 320, 321, 321, 318, 371, 318, 323, 323, 388, - - 321, 325, 325, 325, 371, 323, 326, 326, 326, 327, - 327, 327, 350, 334, 326, 350, 352, 325, 351, 352, - 369, 351, 326, 334, 375, 354, 375, 351, 354, 334, - 365, 351, 361, 350, 363, 367, 367, 352, 372, 351, - 362, 361, 368, 368, 373, 361, 354, 372, 325, 367, - 374, 373, 376, 373, 381, 377, 368, 377, 382, 374, - 376, 374, 376, 378, 378, 378, 380, 380, 381, 380, - 381, 385, 382, 405, 382, 383, 383, 384, 387, 384, - 405, 384, 359, 383, 385, 386, 385, 383, 358, 386, - 387, 386, 387, 406, 400, 407, 407, 400, 409, 408, - - 355, 348, 406, 408, 409, 408, 409, 410, 412, 412, - 412, 415, 345, 343, 383, 400, 383, 413, 411, 410, - 340, 410, 411, 415, 411, 415, 413, 338, 413, 424, - 424, 424, 336, 426, 407, 426, 407, 424, 425, 425, - 425, 427, 427, 427, 429, 424, 436, 443, 445, 333, - 466, 443, 445, 466, 425, 429, 467, 429, 436, 467, - 436, 468, 332, 331, 468, 443, 445, 448, 448, 448, - 448, 448, 448, 448, 448, 448, 448, 448, 448, 448, - 448, 448, 448, 449, 449, 449, 449, 449, 449, 449, - 449, 449, 449, 449, 449, 449, 449, 449, 449, 450, - - 450, 450, 450, 450, 450, 450, 450, 450, 450, 450, - 450, 450, 450, 450, 450, 451, 451, 451, 451, 451, - 451, 451, 451, 451, 451, 451, 451, 451, 451, 451, - 451, 452, 452, 452, 452, 452, 452, 452, 452, 452, - 452, 452, 452, 452, 452, 452, 452, 453, 453, 453, - 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, - 453, 453, 453, 454, 454, 330, 454, 324, 454, 454, - 454, 454, 454, 454, 454, 454, 454, 296, 454, 455, - 455, 289, 455, 455, 455, 455, 455, 455, 455, 455, - 455, 455, 455, 455, 455, 456, 456, 284, 456, 456, - - 456, 273, 456, 456, 271, 456, 456, 456, 456, 456, - 456, 457, 457, 457, 457, 457, 457, 457, 457, 457, - 457, 457, 457, 457, 457, 457, 457, 458, 458, 268, - 458, 458, 458, 266, 458, 458, 458, 458, 458, 458, - 458, 458, 458, 459, 459, 259, 459, 459, 459, 459, - 459, 459, 459, 459, 459, 459, 459, 459, 459, 460, - 460, 460, 258, 460, 253, 248, 241, 230, 460, 460, - 225, 460, 461, 461, 461, 219, 218, 189, 187, 186, - 184, 167, 162, 136, 461, 462, 129, 462, 462, 115, - 462, 462, 113, 462, 463, 463, 463, 103, 463, 83, - - 82, 80, 78, 463, 463, 70, 463, 464, 464, 464, - 63, 61, 57, 51, 33, 0, 0, 0, 0, 464, - 465, 465, 0, 0, 465, 0, 465, 465, 0, 465, - 465, 0, 465, 469, 0, 0, 0, 469, 469, 469, - 0, 469, 469, 470, 470, 470, 0, 0, 0, 0, - 0, 0, 0, 470, 0, 470, 0, 470, 471, 471, - 0, 0, 471, 0, 0, 0, 0, 471, 0, 0, - 471, 472, 472, 0, 472, 473, 473, 473, 0, 0, - 0, 0, 0, 0, 0, 473, 0, 473, 0, 473, - 474, 0, 0, 0, 474, 0, 0, 0, 0, 474, - - 0, 0, 474, 475, 0, 475, 0, 0, 475, 476, - 476, 476, 476, 476, 476, 476, 476, 476, 0, 476, - 476, 476, 476, 476, 476, 477, 477, 477, 477, 477, - 477, 477, 477, 477, 477, 477, 477, 477, 477, 477, - 477, 478, 478, 478, 478, 478, 478, 478, 478, 478, - 0, 478, 478, 478, 478, 478, 478, 479, 479, 479, - 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, - 479, 479, 479, 480, 480, 480, 480, 480, 480, 480, - 480, 480, 480, 480, 480, 480, 480, 480, 480, 481, - 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, - - 481, 481, 481, 481, 481, 482, 482, 482, 482, 482, - 482, 482, 482, 482, 482, 482, 482, 482, 482, 482, - 482, 483, 483, 483, 483, 483, 483, 483, 483, 483, - 483, 483, 483, 483, 483, 483, 483, 484, 484, 484, - 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, - 484, 484, 484, 485, 485, 485, 485, 485, 485, 485, - 485, 485, 485, 485, 485, 485, 485, 485, 485, 486, - 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, - 486, 486, 486, 486, 486, 487, 487, 487, 487, 487, - 487, 487, 487, 487, 487, 487, 487, 487, 487, 487, - - 487, 488, 488, 488, 488, 488, 488, 488, 488, 488, - 488, 488, 488, 488, 488, 488, 488, 489, 489, 489, - 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, - 489, 489, 489, 490, 490, 490, 490, 490, 490, 0, - 490, 490, 0, 490, 490, 490, 490, 490, 490, 491, - 491, 491, 491, 491, 491, 491, 491, 491, 491, 491, - 491, 491, 491, 491, 491, 492, 492, 492, 492, 492, - 492, 0, 492, 492, 0, 492, 492, 492, 492, 492, - 492, 493, 493, 493, 493, 493, 493, 493, 493, 493, - 493, 493, 493, 493, 493, 493, 493, 494, 494, 494, - - 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, - 494, 494, 494, 495, 495, 495, 495, 495, 495, 495, - 495, 495, 495, 495, 495, 495, 495, 495, 495, 496, - 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, - 496, 496, 496, 496, 496, 497, 497, 497, 497, 497, - 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, - 497, 498, 498, 498, 498, 498, 498, 498, 498, 498, - 498, 498, 498, 498, 498, 498, 498, 499, 499, 499, - 499, 499, 499, 0, 499, 499, 0, 499, 499, 499, - 499, 499, 499, 447, 447, 447, 447, 447, 447, 447, - - 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, - 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, - 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, - 447, 447, 447, 447, 447, 447, 447, 447, 447, 447, - 447, 447, 447 - } ; - -static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr; -static char *yy_full_match; -static int yy_lp; -static int yy_looking_for_trail_begin = 0; -static int yy_full_lp; -static int *yy_full_state; -#define YY_TRAILING_MASK 0x2000 -#define YY_TRAILING_HEAD_MASK 0x4000 -#define REJECT \ -{ \ -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ \ -yy_cp = yy_full_match; /* restore poss. backed-over text */ \ -yy_lp = yy_full_lp; /* restore orig. accepting pos. */ \ -yy_state_ptr = yy_full_state; /* restore orig. state */ \ -yy_current_state = *yy_state_ptr; /* restore curr. state */ \ -++yy_lp; \ -goto find_rule; \ -} -#define yymore() yymore_used_but_not_detected -#define YY_MORE_ADJ 0 -#define YY_RESTORE_YY_MORE_OFFSET -char *yytext; -#line 1 "code.l" -#define INITIAL 0 -/****************************************************************************** - * - * $Id$ - * - * Copyright (C) 1997-2000 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - * All output generated with Doxygen is not covered by this license. - * - */ -#line 18 "code.l" - -/* - * includes - */ -#include -#include -#include -#include -#include - -#include "qtbc.h" -#include "scanner.h" -#include "entry.h" -#include "doxygen.h" -#include "message.h" -#include "outputlist.h" -#include "util.h" - -#define YY_NO_UNPUT -#define YY_NEVER_INTERACTIVE 1 - -class CodeClassDef -{ - public: - CodeClassDef() {} - CodeClassDef(const CodeClassDef &d) - { - name = d.name; - bases = d.bases; - } - ~CodeClassDef() {} - - QCString name; - QStrList bases; -}; - -class CodeVarDef -{ - public: - CodeVarDef() {} - CodeVarDef(const CodeVarDef &d) - { - name = d.name; - type = d.type; - classScope = d.classScope; - } - ~CodeVarDef() {} - - QCString name; - QCString type; - QCString classScope; -}; - -typedef QList CodeClassList; -typedef QDict CodeClassDict; -typedef QList CodeVarList; - -/* ----------------------------------------------------------------- - * statics - */ - -static CodeClassList g_codeClassList; -static CodeClassDict g_codeClassDict(1009); -static CodeVarList g_codeVarList; -static CodeVarList g_codeParmList; -static const char * g_inputString; //!< the code fragment as text -static int g_inputPosition; //!< read offset during parsing -static int g_inputLines; //!< number of line in the code fragment -static int g_yyLineNr; //!< current line number -static int g_lastCContext; -static int g_lastSpecialCContext; -static int g_lastStringContext; -static int g_bracketCount = 0; -static int g_curlyCount = 0; -static int g_sharpCount = 0; -static QCString g_type; -static QCString g_name; -static QCString g_args; -static QCString g_parmType; -static QCString g_parmName; -static bool g_inClass; -static QCString g_classScope; -static OutputList * g_code; -static CodeClassDef g_ccd; -static CodeVarDef g_cvd; -static bool g_exampleBlock; -static QCString g_exampleName; -static QCString g_exampleFile; -static int g_anchorCount; -static FileDef * g_sourceFileDef; -static bool g_includeCodeFragment; - -// start a new line of code, inserting a line number if g_sourceFileDef -// is TRUE. If a definition starts at the current line, then the line -// number is linked to the documentation of that definition. -static void startCodeLine(OutputList &ol) -{ - if (g_sourceFileDef) - { - QCString lineNumber,lineAnchor; - lineNumber.sprintf("%05d",g_yyLineNr); - lineAnchor.sprintf("l%05d",g_yyLineNr); - Definition *d = g_sourceFileDef->getSourceDefinition(g_yyLineNr); - QCString anchor = g_sourceFileDef->getSourceAnchor(g_yyLineNr); - if (!g_includeCodeFragment && d && d->isLinkableInProject()) - { - ol.startCodeAnchor(lineAnchor); - ol.writeCodeLink(d->getReference(),d->getOutputFileBase(), - anchor,lineNumber); - ol.endCodeAnchor(); - ol.codify(" "); - } - else - { - ol.codify(lineNumber); - ol.codify(" "); - } - } - ol.startCodeLine(); -} - -// write a code fragment `text' that may span multiple lines, inserting -// line numbers for each line. -static void codifyLines(char *text) -{ - char *p=text,*sp=p; - char c; - bool done=FALSE; - while (!done) - { - sp=p; - while ((c=*p++) && c!='\n'); - if (c=='\n') - { - g_yyLineNr++; - *(p-1)='\0'; - g_code->codify(sp); - g_code->endCodeLine(); - if (g_yyLineNrcodify(sp); - done=TRUE; - } - } -} - -// writes a link to a fragment `text' that may span multiple lines, inserting -// line numbers for each line. If `text' contains newlines, the link will be -// split into multiple links with the same destination, one for each line. -static void writeMultiLineCodeLink(OutputList &ol, - const char *ref,const char *file, - const char *anchor,const char *text) -{ - bool done=FALSE; - QCString ts = text; - char *p=ts.data(); - while (!done) - { - char *sp=p; - char c; - while ((c=*p++) && c!='\n'); - if (c=='\n') - { - g_yyLineNr++; - *(p-1)='\0'; - ol.writeCodeLink(ref,file,anchor,sp); - ol.endCodeLine(); - if (g_yyLineNrNew class scope `%s'\n",g_classScope.data()); -} - -static void addVariable() -{ - g_cvd.name=g_name.copy().simplifyWhiteSpace(); - g_cvd.type=g_type.copy().simplifyWhiteSpace(); - if (g_type.isEmpty()) - return; - else if ((getClass(g_cvd.type)) || (g_codeClassDict[g_cvd.type])) - { - g_cvd.classScope=g_classScope; - g_codeVarList.append(new CodeVarDef(g_cvd)); // add it to a list - } -} - -static void addParameter() -{ - g_cvd.name=g_parmName.copy().simplifyWhiteSpace(); - g_cvd.type=g_parmType.copy().simplifyWhiteSpace(); - if (g_cvd.type.isEmpty()) - return; - else if ((getClass(g_cvd.type)) || (g_codeClassDict[g_cvd.type])) - { - g_cvd.classScope=g_classScope; - g_codeParmList.append(new CodeVarDef(g_cvd)); // add it to a list - } -} - -static void generateClassLink(OutputList &ol,char *clName) -{ - QCString className=clName; - if (className.isEmpty()) return; - ClassDef *cd; - if ((cd=getClass(className)) && cd->isLinkable()) - { - if (g_exampleBlock) - { - QCString anchor; - anchor.sprintf("_a%d",g_anchorCount); - //printf("addExampleClass(%s,%s,%s)\n",anchor.data(),g_exampleName.data(), - // g_exampleFile.data()); - if (cd->addExample(anchor,g_exampleName,g_exampleFile)) - { - ol.pushGeneratorState(); - //bool latexOn = ol.isEnabled(OutputGenerator::Latex); - //if (latexOn) ol.disable(OutputGenerator::Latex); - ol.disable(OutputGenerator::Latex); - ol.disable(OutputGenerator::RTF); - ol.writeAnchor(anchor); - //if (latexOn) ol.enable(OutputGenerator::Latex); - ol.popGeneratorState(); - g_anchorCount++; - } - } - //ol.writeCodeLink(cd->getReference(),cd->getOutputFileBase(),0,className); - writeMultiLineCodeLink(ol,cd->getReference(),cd->getOutputFileBase(),0,className); - } - else - { - codifyLines(clName); - } -} - -static bool getLink(const char *className, - const char *memberName,OutputList &result, - const char *text=0) -{ - MemberDef *md; - ClassDef *cd; - FileDef *fd; - NamespaceDef *nd; - QCString m=memberName; - QCString c=className; - //printf("Trying `%s'::`%s'\n",c.data(),m.data()); - if (getDefs(c,m,"()",md,cd,fd,nd) && md->isLinkable()) - { - //printf("Found!\n"); - if (g_exampleBlock) - { - QCString anchor; - anchor.sprintf("a%d",g_anchorCount); - //printf("addExampleFile(%s,%s,%s)\n",anchor.data(),g_exampleName.data(), - // g_exampleFile.data()); - if (md->addExample(anchor,g_exampleName,g_exampleFile)) - { - //bool latexEnabled = result.isEnabled(OutputGenerator::Latex); - result.pushGeneratorState(); - //if (latexEnabled) result.disable(OutputGenerator::Latex); - result.disable(OutputGenerator::Latex); - result.writeAnchor(anchor); - result.popGeneratorState(); - //if (latexEnabled) result.enable(OutputGenerator::Latex); - g_anchorCount++; - } - } - Definition *d=0; - if (cd) d=cd; else if (cd) d=nd; else d=fd; - - if (d) - { - //printf("d->getOutputBase()=`%s' name=`%s'\n",d->getOutputFileBase().data(),md->name().data()); - //result.writeCodeLink(d->getReference(),d->getOutputFileBase(), - // md->anchor(),text ? text : memberName); - writeMultiLineCodeLink(result,d->getReference(),d->getOutputFileBase(), - md->anchor(),text ? text : memberName); - return TRUE; - } - } - return FALSE; -} - -static ClassDef *stripClassName(const char *s) -{ - QCString tmp=s; - static const QRegExp re("[a-z_A-Z][a-z_A-Z0-9:]*"); - int p=0,i,l; - while ((i=re.match(tmp,p,&l))!=-1) - { - ClassDef *cd=getClass(tmp.mid(i,l)); - if (cd) return cd; - p=i+l; - } - return 0; -} - -static void generateMemberLink(OutputList &ol,const char *varName, - char *memName) -{ - //printf("generateMemberLink(object=%s,mem=%s) classScope=%s\n", - // varName,memName,classScope.data()); - CodeVarDef *cvd=g_codeParmList.last(); - while (cvd && cvd->name!=varName) cvd=g_codeParmList.prev(); - if (!cvd) - { - cvd=g_codeVarList.last(); - while (cvd && cvd->name!=varName) cvd=g_codeVarList.prev(); - } - if (cvd) // variable found - { - //printf("variable found type=%s!\n",cvd->type.data()); - CodeClassDef *ccd=g_codeClassDict[cvd->type]; - if (ccd) - { - //printf("Class found!\n"); - OutputList result(&ol); - if (getLink(ccd->name,memName,result)) - { - //printf("Found result!\n"); - ol+=result; - return; - } - char *s=ccd->bases.first(); - while (s) - { - OutputList result(&ol); - if (getLink(s,memName,result)) - { - //printf("Found result!\n"); - ol+=result; - return; - } - s=ccd->bases.next(); - } - } - else - { - OutputList result(&ol); - if (getLink(cvd->type,memName,result)) - { - ol+=result; - } - else - { - codifyLines(memName); - } - return; - } - } - else - { - ClassDef *vcd = getClass(g_classScope); - if (vcd) - { - //printf("Found class for variable `%s'\n",varName); - MemberName *vmn=memberNameDict[varName]; - if (vmn) - { - MemberNameIterator vmni(*vmn); - MemberDef *vmd; - for (;(vmd=vmni.current());++vmni) - { - if (vmd->isVariable() && vmd->memberClass()==vcd) - { - //printf("Found variable type=%s\n",vmd->typeString()); - ClassDef *mcd=stripClassName(vmd->typeString()); - if (mcd) - { - MemberName *mmn=memberNameDict[memName]; - if (mmn) - { - MemberNameIterator mmni(*mmn); - MemberDef *mmd; - for (;(mmd=mmni.current());++mmni) - { - if (mmd->memberClass()==mcd) - { - //ol.writeCodeLink(mcd->getReference(),mcd->getOutputFileBase(), - // mmd->anchor(),memName); - writeMultiLineCodeLink(ol,mcd->getReference(), - mcd->getOutputFileBase(),mmd->anchor(),memName); - return; - } - } - } - } - } - } - } - } - } - codifyLines(memName); - return; -} - -static QCString removeWhiteSpace(const char *s) -{ - QCString result; - if (s) - { - const char *p=s; - int c; - while ((c=*p++)) - { - if (c!=' ' && c!='\n' && c!='\r' && c!='\t') result+=c; - } - } - return result; -} - -static void generateFunctionLink(OutputList &ol,char *funcName) -{ - OutputList result(&ol); - CodeClassDef *ccd=0; - QCString locScope=g_classScope.copy(); - QCString locFunc=removeWhiteSpace(funcName); - int i=locFunc.findRev("::"); - if (i>0) - { - locScope=locFunc.left(i); - locFunc=locFunc.right(locFunc.length()-i-2); - } - //printf("generateFunctionLink(%s) classScope=%s\n",locFunc.data(),locScope.data()); - if (!locScope.isEmpty() && (ccd=g_codeClassDict[locScope])) - { - //printf("using classScope %s\n",g_classScope.data()); - char *s=ccd->bases.first(); - while (s) - { - if (getLink(s,locFunc,result,funcName)) - { - ol+=result; - return; - } - s=ccd->bases.next(); - } - } - if (getLink(locScope,locFunc,result,funcName)) - { - ol+=result; - } - else - { - codifyLines(funcName); - } - return; -} - -/*! counts the number of lines in the input */ -static int countLines() -{ - const char *p=g_inputString; - char c; - int count=1; - while ((c=*p++)) if (c=='\n') count++; - return count; -} - -/* ----------------------------------------------------------------- - */ -#undef YY_INPUT -#define YY_INPUT(buf,result,max_size) result=yyread(buf,max_size); - -static int yyread(char *buf,int max_size) -{ - int c=0; - while( c < max_size && g_inputString[g_inputPosition] ) - { - *buf = g_inputString[g_inputPosition++] ; - c++; buf++; - } - return c; -} - -#define SkipString 1 - -#define SkipCPP 2 - -#define SkipComment 3 - -#define SkipCxxComment 4 - -#define RemoveSpecialCComment 5 - -#define StripSpecialCComment 6 - -#define Body 7 - -#define FuncCall 8 - -#define MemberCall 9 - -#define MemberCall2 10 - -#define SkipInits 11 - -#define ClassName 12 - -#define Bases 13 - -#define SkipSharp 14 - -#define ReadInclude 15 - - -/* Macros after this point can all be overridden by user definitions in - * section 1. - */ - -#ifndef YY_SKIP_YYWRAP -#ifdef __cplusplus -extern "C" int yywrap YY_PROTO(( void )); -#else -extern int yywrap YY_PROTO(( void )); -#endif -#endif - -#ifndef YY_NO_UNPUT -static void yyunput YY_PROTO(( int c, char *buf_ptr )); -#endif - -#ifndef yytext_ptr -static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int )); -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen YY_PROTO(( yyconst char * )); -#endif - -#ifndef YY_NO_INPUT -#ifdef __cplusplus -static int yyinput YY_PROTO(( void )); -#else -static int input YY_PROTO(( void )); -#endif -#endif - -#if YY_STACK_USED -static int yy_start_stack_ptr = 0; -static int yy_start_stack_depth = 0; -static int *yy_start_stack = 0; -#ifndef YY_NO_PUSH_STATE -static void yy_push_state YY_PROTO(( int new_state )); -#endif -#ifndef YY_NO_POP_STATE -static void yy_pop_state YY_PROTO(( void )); -#endif -#ifndef YY_NO_TOP_STATE -static int yy_top_state YY_PROTO(( void )); -#endif - -#else -#define YY_NO_PUSH_STATE 1 -#define YY_NO_POP_STATE 1 -#define YY_NO_TOP_STATE 1 -#endif - -#ifdef YY_MALLOC_DECL -YY_MALLOC_DECL -#else -#if __STDC__ -#ifndef __cplusplus -#include -#endif -#else -/* Just try to get by without declaring the routines. This will fail - * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int) - * or sizeof(void*) != sizeof(int). - */ -#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 (void) fwrite( yytext, yyleng, 1, yyout ) -#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->yy_is_interactive ) \ - { \ - int c = '*', n; \ - for ( n = 0; n < max_size && \ - (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ - buf[n] = (char) c; \ - if ( c == '\n' ) \ - buf[n++] = (char) c; \ - if ( c == EOF && ferror( yyin ) ) \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - result = n; \ - } \ - else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \ - && ferror( yyin ) ) \ - YY_FATAL_ERROR( "input in flex scanner failed" ); -#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 - -/* Default declaration of generated scanner - a define so the user can - * easily add parameters. - */ -#ifndef YY_DECL -#define YY_DECL int yylex YY_PROTO(( void )) -#endif - -/* Code executed at the beginning of each rule, after yytext and yyleng - * have been set up. - */ -#ifndef YY_USER_ACTION -#define YY_USER_ACTION -#endif - -/* Code executed at the end of each rule. */ -#ifndef YY_BREAK -#define YY_BREAK break; -#endif - -#define YY_RULE_SETUP \ - if ( yyleng > 0 ) \ - yy_current_buffer->yy_at_bol = \ - (yytext[yyleng - 1] == '\n'); \ - YY_USER_ACTION - -YY_DECL - { - register yy_state_type yy_current_state; - register char *yy_cp, *yy_bp; - register int yy_act; - -#line 561 "code.l" - - - - if ( yy_init ) - { - yy_init = 0; - -#ifdef YY_USER_INIT - YY_USER_INIT; -#endif - - if ( ! yy_start ) - yy_start = 1; /* first start state */ - - if ( ! yyin ) - yyin = stdin; - - if ( ! yyout ) - yyout = stdout; - - if ( ! yy_current_buffer ) - yy_current_buffer = - yy_create_buffer( yyin, YY_BUF_SIZE ); - - yy_load_buffer_state(); - } - - while ( 1 ) /* loops until end-of-file is reached */ - { - yy_cp = yy_c_buf_p; - - /* Support of yytext. */ - *yy_cp = yy_hold_char; - - /* yy_bp points to the position in yy_ch_buf of the start of - * the current run. - */ - yy_bp = yy_cp; - - yy_current_state = yy_start; - yy_current_state += YY_AT_BOL(); - yy_state_ptr = yy_state_buf; - *yy_state_ptr++ = yy_current_state; -yy_match: - do - { - register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 448 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - *yy_state_ptr++ = yy_current_state; - ++yy_cp; - } - while ( yy_base[yy_current_state] != 1994 ); - -yy_find_action: - yy_current_state = *--yy_state_ptr; - yy_lp = yy_accept[yy_current_state]; -find_rule: /* we branch to this label when backing up */ - for ( ; ; ) /* until we find what rule we matched */ - { - if ( yy_lp && yy_lp < yy_accept[yy_current_state + 1] ) - { - yy_act = yy_acclist[yy_lp]; - if ( yy_act & YY_TRAILING_HEAD_MASK || - yy_looking_for_trail_begin ) - { - if ( yy_act == yy_looking_for_trail_begin ) - { - yy_looking_for_trail_begin = 0; - yy_act &= ~YY_TRAILING_HEAD_MASK; - break; - } - } - else if ( yy_act & YY_TRAILING_MASK ) - { - yy_looking_for_trail_begin = yy_act & ~YY_TRAILING_MASK; - yy_looking_for_trail_begin |= YY_TRAILING_HEAD_MASK; - } - else - { - yy_full_match = yy_cp; - yy_full_state = yy_state_ptr; - yy_full_lp = yy_lp; - break; - } - ++yy_lp; - goto find_rule; - } - --yy_cp; - yy_current_state = *--yy_state_ptr; - yy_lp = yy_accept[yy_current_state]; - } - - YY_DO_BEFORE_ACTION; - - -do_action: /* This label is used only to access EOF actions. */ - - - switch ( yy_act ) - { /* beginning of action switch */ -case 1: -YY_RULE_SETUP -#line 563 "code.l" - - YY_BREAK -case 2: -YY_RULE_SETUP -#line 564 "code.l" -{ - g_code->codify(yytext); - BEGIN( ReadInclude ); - } - YY_BREAK -case 3: -YY_RULE_SETUP -#line 568 "code.l" -{ - codifyLines(yytext); - //g_code->codify(yytext); - BEGIN( ClassName ); - } - YY_BREAK -case 4: -YY_RULE_SETUP -#line 573 "code.l" -{ - //FileInfo *f; - bool ambig; - FileDef *fd; - if ((fd=findFileDef(&inputNameDict,yytext,ambig)) && - fd->isLinkable()) - { - g_code->writeCodeLink(fd->getReference(),fd->getOutputFileBase(),0,yytext); - } - else - { - g_code->codify(yytext); - } - char c=yyinput(); - QCString text; - text+=c; - g_code->codify(text); - BEGIN( Body ); - } - YY_BREAK -case 5: -YY_RULE_SETUP -#line 592 "code.l" -{ - g_code->codify(yytext); - BEGIN( SkipCPP ) ; - } - YY_BREAK -case 6: -YY_RULE_SETUP -#line 596 "code.l" -{ - g_code->codify(yytext); - } - YY_BREAK -case 7: -YY_RULE_SETUP -#line 599 "code.l" -{ - codifyLines(yytext); - } - YY_BREAK -case 8: -YY_RULE_SETUP -#line 602 "code.l" -{ - codifyLines(yytext); - BEGIN( Body ) ; - } - YY_BREAK -case 9: -YY_RULE_SETUP -#line 606 "code.l" -{ - g_code->codify(yytext); - } - YY_BREAK -case 10: -YY_RULE_SETUP -#line 609 "code.l" -{ - g_code->codify(yytext); - g_curlyCount++; - g_type.resize(0); - g_name.resize(0); - } - YY_BREAK -case 11: -YY_RULE_SETUP -#line 615 "code.l" -{ - g_code->codify(yytext); - g_inClass=FALSE; - if (--g_curlyCount<=0) - { - g_classScope.resize(0); - g_codeParmList.clear(); - } - } - YY_BREAK -case 12: -YY_RULE_SETUP -#line 624 "code.l" -{ - g_code->codify(yytext); - BEGIN( Body ); - } - YY_BREAK -case 13: -YY_RULE_SETUP -#line 628 "code.l" -{ - addType(); - g_code->codify(yytext); - } - YY_BREAK -case 14: -YY_RULE_SETUP -#line 632 "code.l" -{ - g_ccd.name=yytext; - addType(); - generateClassLink(*g_code,yytext); - } - YY_BREAK -case 15: -YY_RULE_SETUP -#line 637 "code.l" -{ - codifyLines(yytext); - BEGIN( Bases ); - } - YY_BREAK -case 16: -YY_RULE_SETUP -#line 641 "code.l" -{ - g_code->codify(yytext); - g_curlyCount++; - g_inClass=TRUE; - if (!g_ccd.name.isEmpty()) - { - g_classScope=g_ccd.name.copy(); - CodeClassDef *cd=new CodeClassDef(g_ccd); - g_codeClassList.append(cd); - g_codeClassDict.insert(cd->name,cd); - } - BEGIN( Body ); - } - YY_BREAK -case 17: -YY_RULE_SETUP -#line 654 "code.l" -{ - g_code->codify(yytext); - } - YY_BREAK -case 18: -YY_RULE_SETUP -#line 657 "code.l" -{ - g_code->codify(yytext); - } - YY_BREAK -case 19: -YY_RULE_SETUP -#line 660 "code.l" -{ - g_code->codify(yytext); - } - YY_BREAK -case 20: -YY_RULE_SETUP -#line 663 "code.l" -{ - g_code->codify(yytext); - } - YY_BREAK -case 21: -YY_RULE_SETUP -#line 666 "code.l" -{ - //printf("%s:addBase(%s)\n",g_ccd.name.data(),yytext); - g_ccd.bases.inSort(yytext); - generateClassLink(*g_code,yytext); - } - YY_BREAK -case 22: -YY_RULE_SETUP -#line 671 "code.l" -{ - g_code->codify(yytext); - g_sharpCount=1; - BEGIN ( SkipSharp ); - } - YY_BREAK -case 23: -YY_RULE_SETUP -#line 676 "code.l" -{ - g_code->codify(yytext); - ++g_sharpCount; - } - YY_BREAK -case 24: -YY_RULE_SETUP -#line 680 "code.l" -{ - g_code->codify(yytext); - if (--g_sharpCount<=0) - BEGIN ( Bases ); - } - YY_BREAK -case 25: -YY_RULE_SETUP -#line 685 "code.l" -{ - g_code->codify(yytext); - } - YY_BREAK -case 26: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 690 "code.l" -{ - codifyLines(yytext); - g_name.resize(0);g_type.resize(0); - } - YY_BREAK -case 27: -YY_RULE_SETUP -#line 694 "code.l" -{ - codifyLines(yytext); - g_name.resize(0);g_type.resize(0); - } - YY_BREAK -/* -([a-z_A-Z~][a-z_A-Z0-9]*)/([ \t]*) { - generateClassLink(*g_code,yytext); - addType(); - name+=yytext; - } - */ -case 28: -YY_RULE_SETUP -#line 705 "code.l" -{ - generateClassLink(*g_code,yytext); - //codifyLines(yytext); - addType(); - g_name+=yytext; - } - YY_BREAK -case 29: -YY_RULE_SETUP -#line 711 "code.l" -{ - addType(); - //if (type.isEmpty()) - QCString tmp=yytext; - generateFunctionLink(*g_code,yytext); - //else - // g_code->codify(yytext); - g_bracketCount=1; - g_args.resize(0); - g_name+=yytext; - BEGIN( FuncCall ); - } - YY_BREAK -case 30: -YY_RULE_SETUP -#line 723 "code.l" -{ - g_code->codify(yytext); - g_lastStringContext=YY_START; - BEGIN( SkipString ); - } - YY_BREAK -case 31: -YY_RULE_SETUP -#line 728 "code.l" -{ - g_code->codify(yytext); - } - YY_BREAK -case 32: -YY_RULE_SETUP -#line 731 "code.l" -{ - g_code->codify(yytext); - } - YY_BREAK -case 33: -YY_RULE_SETUP -#line 734 "code.l" -{ - g_code->codify(yytext); - BEGIN( g_lastStringContext ); - } - YY_BREAK -case 34: -YY_RULE_SETUP -#line 738 "code.l" -{ - g_code->codify(yytext); - } - YY_BREAK -case 35: -YY_RULE_SETUP -#line 741 "code.l" -{ - g_code->codify(yytext); - g_name.resize(0);g_type.resize(0); - } - YY_BREAK -case 36: -YY_RULE_SETUP -#line 745 "code.l" -{ - g_code->codify(yytext); - } - YY_BREAK -case 37: -YY_RULE_SETUP -#line 748 "code.l" -{ g_code->codify(yytext); } - YY_BREAK -case 38: -YY_RULE_SETUP -#line 749 "code.l" -{ - g_code->codify(yytext); - BEGIN( MemberCall ); - } - YY_BREAK -case 39: -YY_RULE_SETUP -#line 753 "code.l" -{ - if (!g_name.isEmpty()) - generateMemberLink(*g_code,g_name,yytext); - else - g_code->codify(yytext); - g_name.resize(0);g_type.resize(0); - g_bracketCount=0; - BEGIN(FuncCall); - } - YY_BREAK -case 40: -YY_RULE_SETUP -#line 762 "code.l" -{ - g_code->codify(yytext); - g_type.resize(0); - g_name.resize(0); - BEGIN(Body); - } - YY_BREAK -case 41: -YY_RULE_SETUP -#line 768 "code.l" -{ - g_code->codify(yytext); - if (!g_type.isEmpty()) - addVariable(); - g_name.resize(0); - if (*yytext!=',') g_type.resize(0); - g_args.resize(0); - } - YY_BREAK -case 42: -YY_RULE_SETUP -#line 776 "code.l" -{ - g_code->codify(yytext); - } - YY_BREAK -case 43: -YY_RULE_SETUP -#line 779 "code.l" -{ - addParmType(); - g_parmName=yytext; - generateClassLink(*g_code,yytext); - } - YY_BREAK -case 44: -YY_RULE_SETUP -#line 784 "code.l" -{ - g_code->codify(yytext); - addParameter(); - g_parmType.resize(0);g_parmName.resize(0); - } - YY_BREAK -case 45: -YY_RULE_SETUP -#line 789 "code.l" -{ - g_code->codify(yytext); - g_bracketCount++; - } - YY_BREAK -case 46: -YY_RULE_SETUP -#line 793 "code.l" -{ - g_code->codify(yytext); - if (--g_bracketCount<=0) - g_name.resize(0);g_args.resize(0); - g_parmType.resize(0);g_parmName.resize(0); - BEGIN( Body ); - } - YY_BREAK -case 47: -YY_RULE_SETUP -#line 800 "code.l" -{ - codifyLines(yytext); - g_bracketCount=0; - if (!g_inClass && !g_type.isEmpty()) - addVariable(); - g_name.resize(0);g_type.resize(0); - g_parmType.resize(0);g_parmName.resize(0); - BEGIN( Body ); - } - YY_BREAK -case 48: -YY_RULE_SETUP -#line 809 "code.l" -{ - addParameter(); - g_parmType.resize(0);g_parmName.resize(0); - if (g_name.find("::")!=-1) setClassScope(g_name); - codifyLines(yytext); - g_curlyCount++; - g_type.resize(0); g_name.resize(0); - BEGIN( Body ); - } - YY_BREAK -case 49: -YY_RULE_SETUP -#line 818 "code.l" -{ - addParameter(); - g_parmType.resize(0);g_parmName.resize(0); - if (g_name.find("::")!=-1) setClassScope(g_name); - codifyLines(yytext); - g_type.resize(0); g_name.resize(0); - BEGIN( SkipInits ); - } - YY_BREAK -case 50: -YY_RULE_SETUP -#line 826 "code.l" -{ - g_code->codify(yytext); - g_curlyCount++; - BEGIN( Body ); - } - YY_BREAK -case 51: -YY_RULE_SETUP -#line 831 "code.l" -{ - generateClassLink(*g_code,yytext); - } - YY_BREAK -case 52: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 834 "code.l" -{ - generateFunctionLink(*g_code,yytext); - } - YY_BREAK -case 53: -YY_RULE_SETUP -#line 837 "code.l" -{ - g_code->codify(yytext); - g_args=yytext; - BEGIN( MemberCall2 ); - } - YY_BREAK -case 54: -YY_RULE_SETUP -#line 842 "code.l" -{ - if (!g_args.isEmpty()) - generateMemberLink(*g_code,g_args,yytext); - else - g_code->codify(yytext); - g_args.resize(0); - BEGIN( FuncCall ); - } - YY_BREAK -case 55: -YY_RULE_SETUP -#line 850 "code.l" -{ - g_code->codify(yytext); - g_args=yytext; - } - YY_BREAK -case 56: -YY_RULE_SETUP -#line 854 "code.l" -{ - g_code->codify(yytext); - } - YY_BREAK -case 57: -YY_RULE_SETUP -#line 857 "code.l" -{ - g_code->codify(yytext); - } - YY_BREAK -case 58: -YY_RULE_SETUP -#line 860 "code.l" -{ - g_code->codify(yytext); - BEGIN( g_lastCContext ) ; - } - YY_BREAK -case 59: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 864 "code.l" -{ - //codifyLines(yytext); - g_code->codify(yytext); - BEGIN( g_lastCContext ) ; - } - YY_BREAK -case 60: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 869 "code.l" -{ - g_yyLineNr+=QCString(yytext).contains('\n'); - } - YY_BREAK -case 61: -YY_RULE_SETUP -#line 872 "code.l" -{ - g_yyLineNr+=QCString(yytext).contains('\n'); - g_code->endCodeLine(); - if (g_yyLineNrendCodeLine(); - if (g_yyLineNrendCodeLine(); - if (g_yyLineNrcodify(yytext); - BEGIN(SkipComment); - } - } - YY_BREAK -case 72: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp = yy_bp + 3; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 956 "code.l" -{ // special C comment block half way a line - if (Config::stripCommentsFlag) - { - g_lastSpecialCContext = YY_START; - BEGIN(RemoveSpecialCComment); - } - else - { - g_lastCContext = YY_START ; - g_code->codify(yytext); - BEGIN(SkipComment); - } - } - YY_BREAK -case 73: -YY_RULE_SETUP -#line 969 "code.l" -{ if (!Config::stripCommentsFlag) - { - g_code->codify(yytext); - } - } - YY_BREAK -case 74: -YY_RULE_SETUP -#line 974 "code.l" -{ - g_code->codify(yytext); - g_lastCContext = YY_START ; - BEGIN( SkipComment ) ; - } - YY_BREAK -case 75: -YY_RULE_SETUP -#line 979 "code.l" -{ - g_code->codify(yytext); - g_lastCContext = YY_START ; - BEGIN( SkipCxxComment ) ; - } - YY_BREAK -case 76: -YY_RULE_SETUP -#line 984 "code.l" -{ - codifyLines(yytext); - } - YY_BREAK -case 77: -YY_RULE_SETUP -#line 987 "code.l" -{ - g_code->codify(yytext); - } - YY_BREAK -/* -<*>([ \t\n]*"\n"){2,} { // combine multiple blank lines - //QCString sepLine=yytext; - //g_code->codify("\n\n"); - //g_yyLineNr+=sepLine.contains('\n'); - //char sepLine[3]="\n\n"; - codifyLines(yytext); - } - */ -case 78: -YY_RULE_SETUP -#line 1000 "code.l" -ECHO; - YY_BREAK - case YY_STATE_EOF(INITIAL): - case YY_STATE_EOF(SkipString): - case YY_STATE_EOF(SkipCPP): - case YY_STATE_EOF(SkipComment): - case YY_STATE_EOF(SkipCxxComment): - case YY_STATE_EOF(RemoveSpecialCComment): - case YY_STATE_EOF(StripSpecialCComment): - case YY_STATE_EOF(Body): - case YY_STATE_EOF(FuncCall): - case YY_STATE_EOF(MemberCall): - case YY_STATE_EOF(MemberCall2): - case YY_STATE_EOF(SkipInits): - case YY_STATE_EOF(ClassName): - case YY_STATE_EOF(Bases): - case YY_STATE_EOF(SkipSharp): - case YY_STATE_EOF(ReadInclude): - 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->yy_buffer_status == YY_BUFFER_NEW ) - { - /* We're scanning a new file or input source. It's - * possible that this happened because the user - * just pointed yyin at a new source and called - * yylex(). If so, then we have to assure - * consistency between yy_current_buffer and our - * globals. Here is the right place to do so, because - * this is the first action (other than possibly a - * back-up) that will match for the new input source. - */ - yy_n_chars = yy_current_buffer->yy_n_chars; - yy_current_buffer->yy_input_file = yyin; - yy_current_buffer->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->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 ( yywrap() ) - { - /* Note: because we've taken care in - * yy_get_next_buffer() to have set up - * yytext, we can now set up - * yy_c_buf_p so that if some total - * hoser (like flex itself) wants to - * call the scanner after we return the - * YY_NULL, it'll still work - another - * YY_NULL will get returned. - */ - yy_c_buf_p = yytext_ptr + YY_MORE_ADJ; - - yy_act = YY_STATE_EOF(YY_START); - goto do_action; - } - - else - { - if ( ! yy_did_buffer_switch_on_eof ) - YY_NEW_FILE; - } - break; - } - - case EOB_ACT_CONTINUE_SCAN: - yy_c_buf_p = - yytext_ptr + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state(); - - yy_cp = yy_c_buf_p; - yy_bp = yytext_ptr + YY_MORE_ADJ; - goto yy_match; - - case EOB_ACT_LAST_MATCH: - yy_c_buf_p = - &yy_current_buffer->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 yylex */ - - -/* yy_get_next_buffer - try to read in a new buffer - * - * Returns a code representing an action: - * EOB_ACT_LAST_MATCH - - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position - * EOB_ACT_END_OF_FILE - end of file - */ - -static int yy_get_next_buffer() - { - register char *dest = yy_current_buffer->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->yy_ch_buf[yy_n_chars + 1] ) - YY_FATAL_ERROR( - "fatal flex scanner internal error--end of buffer missed" ); - - if ( yy_current_buffer->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->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->yy_n_chars = yy_n_chars = 0; - - else - { - int num_to_read = - yy_current_buffer->yy_buf_size - number_to_move - 1; - - while ( num_to_read <= 0 ) - { /* Not enough room in the buffer - grow it. */ -#ifdef YY_USES_REJECT - YY_FATAL_ERROR( -"input buffer overflow, can't enlarge buffer because scanner uses REJECT" ); -#else - - /* 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. */ - yy_flex_realloc( (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->yy_buf_size - - number_to_move - 1; -#endif - } - - if ( num_to_read > YY_READ_BUF_SIZE ) - num_to_read = YY_READ_BUF_SIZE; - - /* Read in more data. */ - YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]), - yy_n_chars, num_to_read ); - - yy_current_buffer->yy_n_chars = yy_n_chars; - } - - if ( yy_n_chars == 0 ) - { - if ( number_to_move == YY_MORE_ADJ ) - { - ret_val = EOB_ACT_END_OF_FILE; - yyrestart( yyin ); - } - - else - { - ret_val = EOB_ACT_LAST_MATCH; - yy_current_buffer->yy_buffer_status = - YY_BUFFER_EOF_PENDING; - } - } - - else - ret_val = EOB_ACT_CONTINUE_SCAN; - - yy_n_chars += number_to_move; - yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR; - yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; - - yytext_ptr = &yy_current_buffer->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() - { - register yy_state_type yy_current_state; - register char *yy_cp; - - yy_current_state = yy_start; - yy_current_state += YY_AT_BOL(); - yy_state_ptr = yy_state_buf; - *yy_state_ptr++ = yy_current_state; - - for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp ) - { - register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 448 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - *yy_state_ptr++ = yy_current_state; - } - - return yy_current_state; - } - - -/* yy_try_NUL_trans - try to make a transition on the NUL character - * - * synopsis - * next_state = yy_try_NUL_trans( current_state ); - */ - -#ifdef YY_USE_PROTOS -static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state ) -#else -static yy_state_type yy_try_NUL_trans( yy_current_state ) -yy_state_type yy_current_state; -#endif - { - register int yy_is_jam; - - register YY_CHAR yy_c = 1; - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 448 ) - 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 == 447); - if ( ! yy_is_jam ) - *yy_state_ptr++ = yy_current_state; - - return yy_is_jam ? 0 : yy_current_state; - } - - -#ifndef YY_NO_UNPUT -#ifdef YY_USE_PROTOS -static void yyunput( int c, register char *yy_bp ) -#else -static void yyunput( c, yy_bp ) -int c; -register char *yy_bp; -#endif - { - register char *yy_cp = yy_c_buf_p; - - /* undo effects of setting up yytext */ - *yy_cp = yy_hold_char; - - if ( yy_cp < yy_current_buffer->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->yy_ch_buf[ - yy_current_buffer->yy_buf_size + 2]; - register char *source = - &yy_current_buffer->yy_ch_buf[number_to_move]; - - while ( source > yy_current_buffer->yy_ch_buf ) - *--dest = *--source; - - yy_cp += (int) (dest - source); - yy_bp += (int) (dest - source); - yy_current_buffer->yy_n_chars = - yy_n_chars = yy_current_buffer->yy_buf_size; - - if ( yy_cp < yy_current_buffer->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; - } -#endif /* ifndef YY_NO_UNPUT */ - - -#ifdef __cplusplus -static int yyinput() -#else -static int input() -#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->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. */ - yyrestart( yyin ); - - /* fall through */ - - case EOB_ACT_END_OF_FILE: - { - if ( yywrap() ) - 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 yytext */ - yy_hold_char = *++yy_c_buf_p; - - yy_current_buffer->yy_at_bol = (c == '\n'); - - return c; - } - - -#ifdef YY_USE_PROTOS -void yyrestart( FILE *input_file ) -#else -void yyrestart( input_file ) -FILE *input_file; -#endif - { - if ( ! yy_current_buffer ) - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); - - yy_init_buffer( yy_current_buffer, input_file ); - yy_load_buffer_state(); - } - - -#ifdef YY_USE_PROTOS -void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer ) -#else -void yy_switch_to_buffer( new_buffer ) -YY_BUFFER_STATE new_buffer; -#endif - { - 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->yy_buf_pos = yy_c_buf_p; - yy_current_buffer->yy_n_chars = yy_n_chars; - } - - yy_current_buffer = new_buffer; - yy_load_buffer_state(); - - /* We don't actually know whether we did this switch during - * EOF (yywrap()) processing, but the only time this flag - * is looked at is after yywrap() is called, so it's safe - * to go ahead and always set it. - */ - yy_did_buffer_switch_on_eof = 1; - } - - -#ifdef YY_USE_PROTOS -void yy_load_buffer_state( void ) -#else -void yy_load_buffer_state() -#endif - { - yy_n_chars = yy_current_buffer->yy_n_chars; - yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos; - yyin = yy_current_buffer->yy_input_file; - yy_hold_char = *yy_c_buf_p; - } - - -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_create_buffer( FILE *file, int size ) -#else -YY_BUFFER_STATE yy_create_buffer( file, size ) -FILE *file; -int size; -#endif - { - YY_BUFFER_STATE b; - - b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_buf_size = size; - - /* yy_ch_buf has to be 2 characters longer than the size given because - * we need to put in 2 end-of-buffer characters. - */ - b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 ); - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_is_our_buffer = 1; - - yy_init_buffer( b, file ); - - return b; - } - - -#ifdef YY_USE_PROTOS -void yy_delete_buffer( YY_BUFFER_STATE b ) -#else -void yy_delete_buffer( b ) -YY_BUFFER_STATE b; -#endif - { - if ( ! b ) - return; - - if ( b == yy_current_buffer ) - yy_current_buffer = (YY_BUFFER_STATE) 0; - - if ( b->yy_is_our_buffer ) - yy_flex_free( (void *) b->yy_ch_buf ); - - yy_flex_free( (void *) b ); - } - - -#ifndef YY_ALWAYS_INTERACTIVE -#ifndef YY_NEVER_INTERACTIVE -extern int isatty YY_PROTO(( int )); -#endif -#endif - -#ifdef YY_USE_PROTOS -void yy_init_buffer( YY_BUFFER_STATE b, FILE *file ) -#else -void yy_init_buffer( b, file ) -YY_BUFFER_STATE b; -FILE *file; -#endif - - - { - yy_flush_buffer( b ); - - b->yy_input_file = file; - b->yy_fill_buffer = 1; - -#if YY_ALWAYS_INTERACTIVE - b->yy_is_interactive = 1; -#else -#if YY_NEVER_INTERACTIVE - b->yy_is_interactive = 0; -#else - b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; -#endif -#endif - } - - -#ifdef YY_USE_PROTOS -void yy_flush_buffer( YY_BUFFER_STATE b ) -#else -void yy_flush_buffer( b ) -YY_BUFFER_STATE b; -#endif - - { - if ( ! b ) - return; - - b->yy_n_chars = 0; - - /* We always need two end-of-buffer characters. The first causes - * a transition to the end-of-buffer state. The second causes - * a jam in that state. - */ - b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; - b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; - - b->yy_buf_pos = &b->yy_ch_buf[0]; - - b->yy_at_bol = 1; - b->yy_buffer_status = YY_BUFFER_NEW; - - if ( b == yy_current_buffer ) - yy_load_buffer_state(); - } - - -#ifndef YY_NO_SCAN_BUFFER -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size ) -#else -YY_BUFFER_STATE yy_scan_buffer( base, size ) -char *base; -yy_size_t size; -#endif - { - 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) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_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; - - yy_switch_to_buffer( b ); - - return b; - } -#endif - - -#ifndef YY_NO_SCAN_STRING -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str ) -#else -YY_BUFFER_STATE yy_scan_string( yy_str ) -yyconst char *yy_str; -#endif - { - int len; - for ( len = 0; yy_str[len]; ++len ) - ; - - return yy_scan_bytes( yy_str, len ); - } -#endif - - -#ifndef YY_NO_SCAN_BYTES -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len ) -#else -YY_BUFFER_STATE yy_scan_bytes( bytes, len ) -yyconst char *bytes; -int len; -#endif - { - YY_BUFFER_STATE b; - char *buf; - yy_size_t n; - int i; - - /* Get memory for full buffer, including space for trailing EOB's. */ - n = len + 2; - buf = (char *) yy_flex_alloc( n ); - if ( ! buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); - - for ( i = 0; i < len; ++i ) - buf[i] = bytes[i]; - - buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR; - - b = yy_scan_buffer( buf, n ); - if ( ! b ) - YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); - - /* It's okay to grow etc. this buffer, and we should throw it - * away when we're done. - */ - b->yy_is_our_buffer = 1; - - return b; - } -#endif - - -#ifndef YY_NO_PUSH_STATE -#ifdef YY_USE_PROTOS -static void yy_push_state( int new_state ) -#else -static void yy_push_state( new_state ) -int new_state; -#endif - { - if ( yy_start_stack_ptr >= yy_start_stack_depth ) - { - yy_size_t new_size; - - yy_start_stack_depth += YY_START_STACK_INCR; - new_size = yy_start_stack_depth * sizeof( int ); - - if ( ! yy_start_stack ) - yy_start_stack = (int *) yy_flex_alloc( new_size ); - - else - yy_start_stack = (int *) yy_flex_realloc( - (void *) yy_start_stack, new_size ); - - if ( ! yy_start_stack ) - YY_FATAL_ERROR( - "out of memory expanding start-condition stack" ); - } - - yy_start_stack[yy_start_stack_ptr++] = YY_START; - - BEGIN(new_state); - } -#endif - - -#ifndef YY_NO_POP_STATE -static void yy_pop_state() - { - if ( --yy_start_stack_ptr < 0 ) - YY_FATAL_ERROR( "start-condition stack underflow" ); - - BEGIN(yy_start_stack[yy_start_stack_ptr]); - } -#endif - - -#ifndef YY_NO_TOP_STATE -static int yy_top_state() - { - return yy_start_stack[yy_start_stack_ptr - 1]; - } -#endif - -#ifndef YY_EXIT_FAILURE -#define YY_EXIT_FAILURE 2 -#endif - -#ifdef YY_USE_PROTOS -static void yy_fatal_error( yyconst char msg[] ) -#else -static void yy_fatal_error( msg ) -char msg[]; -#endif - { - (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 yytext. */ \ - yytext[yyleng] = yy_hold_char; \ - yy_c_buf_p = yytext + n; \ - yy_hold_char = *yy_c_buf_p; \ - *yy_c_buf_p = '\0'; \ - yyleng = n; \ - } \ - while ( 0 ) - - -/* Internal utility routines. */ - -#ifndef yytext_ptr -#ifdef YY_USE_PROTOS -static void yy_flex_strncpy( char *s1, yyconst char *s2, int n ) -#else -static void yy_flex_strncpy( s1, s2, n ) -char *s1; -yyconst char *s2; -int n; -#endif - { - register int i; - for ( i = 0; i < n; ++i ) - s1[i] = s2[i]; - } -#endif - -#ifdef YY_NEED_STRLEN -#ifdef YY_USE_PROTOS -static int yy_flex_strlen( yyconst char *s ) -#else -static int yy_flex_strlen( s ) -yyconst char *s; -#endif - { - register int n; - for ( n = 0; s[n]; ++n ) - ; - - return n; - } -#endif - - -#ifdef YY_USE_PROTOS -static void *yy_flex_alloc( yy_size_t size ) -#else -static void *yy_flex_alloc( size ) -yy_size_t size; -#endif - { - return (void *) malloc( size ); - } - -#ifdef YY_USE_PROTOS -static void *yy_flex_realloc( void *ptr, yy_size_t size ) -#else -static void *yy_flex_realloc( ptr, size ) -void *ptr; -yy_size_t size; -#endif - { - /* 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 ); - } - -#ifdef YY_USE_PROTOS -static void yy_flex_free( void *ptr ) -#else -static void yy_flex_free( ptr ) -void *ptr; -#endif - { - free( ptr ); - } - -#if YY_MAIN -int main() - { - yylex(); - return 0; - } -#endif -#line 1000 "code.l" - - -/*@ ---------------------------------------------------------------------------- - */ - -void initParseCodeContext() -{ - g_codeClassList.setAutoDelete(TRUE); - g_codeVarList.setAutoDelete(TRUE); - g_codeParmList.setAutoDelete(TRUE); - g_codeClassDict.clear(); - g_codeClassList.clear(); - g_codeVarList.clear(); - g_codeParmList.clear(); - g_ccd.bases.clear(); - g_anchorCount = 0; -} - -void parseCode(OutputList &ol,const char *className,const QCString &s, - bool exBlock, const char *exName,FileDef *fd, - int startLine,int endLine,bool inlineFragment) -{ - g_code = new OutputList(&ol); - if (s.isEmpty()) return; - g_inputString = s; - g_inputPosition = 0; - if (endLine!=-1) - g_inputLines = endLine+1; - else - g_inputLines = countLines(); - if (startLine!=-1) - g_yyLineNr = startLine; - else - g_yyLineNr = 1; - g_curlyCount = 0; - g_bracketCount = 0; - g_sharpCount = 0; - g_classScope = className; - g_exampleBlock = exBlock; - g_exampleName = exName; - g_sourceFileDef = fd; - g_exampleFile = convertSlashes(g_exampleName,TRUE)+"-example"; - g_includeCodeFragment = inlineFragment; - startCodeLine(*g_code); - g_type.resize(0); - g_name.resize(0); - g_args.resize(0); - g_parmName.resize(0); - g_parmType.resize(0); - codeYYrestart( codeYYin ); - BEGIN( Body ); - codeYYlex(); - //if (g_yyLineNr<=g_inputLines) code->endCodeLine(); - ol+=*g_code; - delete g_code; - return; -} - -extern "C" { // some bogus code to keep the compiler happy -// int codeYYwrap() { return 1 ; } - void codeYYdummy() { yy_flex_realloc(0,0); } -} diff --git a/src/config.cpp b/src/config.cpp deleted file mode 100644 index b49e8a3..0000000 --- a/src/config.cpp +++ /dev/null @@ -1,4316 +0,0 @@ -#define yy_create_buffer configYY_create_buffer -#define yy_delete_buffer configYY_delete_buffer -#define yy_scan_buffer configYY_scan_buffer -#define yy_scan_string configYY_scan_string -#define yy_scan_bytes configYY_scan_bytes -#define yy_flex_debug configYY_flex_debug -#define yy_init_buffer configYY_init_buffer -#define yy_flush_buffer configYY_flush_buffer -#define yy_load_buffer_state configYY_load_buffer_state -#define yy_switch_to_buffer configYY_switch_to_buffer -#define yyin configYYin -#define yyleng configYYleng -#define yylex configYYlex -#define yyout configYYout -#define yyrestart configYYrestart -#define yytext configYYtext - -/* A lexical scanner generated by flex */ - -/* Scanner skeleton version: - * $Header$ - */ - -#define FLEX_SCANNER -#define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 5 - -#include - - -/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */ -#ifdef c_plusplus -#ifndef __cplusplus -#define __cplusplus -#endif -#endif - - -#ifdef __cplusplus - -#include -#include - -/* Use prototypes in function declarations. */ -#define YY_USE_PROTOS - -/* The "const" storage-class-modifier is valid. */ -#define YY_USE_CONST - -#else /* ! __cplusplus */ - -#if __STDC__ - -#define YY_USE_PROTOS -#define YY_USE_CONST - -#endif /* __STDC__ */ -#endif /* ! __cplusplus */ - -#ifdef __TURBOC__ - #pragma warn -rch - #pragma warn -use -#include -#include -#define YY_USE_CONST -#define YY_USE_PROTOS -#endif - -#ifdef YY_USE_CONST -#define yyconst const -#else -#define yyconst -#endif - - -#ifdef YY_USE_PROTOS -#define YY_PROTO(proto) proto -#else -#define YY_PROTO(proto) () -#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 yyrestart( yyin ) - -#define YY_END_OF_BUFFER_CHAR 0 - -/* Size of default input buffer. */ -#define YY_BUF_SIZE 16384 - -typedef struct yy_buffer_state *YY_BUFFER_STATE; - -extern int yyleng; -extern FILE *yyin, *yyout; - -#define EOB_ACT_CONTINUE_SCAN 0 -#define EOB_ACT_END_OF_FILE 1 -#define EOB_ACT_LAST_MATCH 2 - -/* The funky do-while in the following #define is used to turn the definition - * int a single C statement (which needs a semi-colon terminator). This - * avoids problems with code like: - * - * if ( condition_holds ) - * yyless( 5 ); - * else - * do_something_else(); - * - * Prior to using the do-while the compiler would get upset at the - * "else" because it interpreted the "if" statement as being all - * done when it reached the ';' after the yyless() call. - */ - -/* Return all but the first 'n' matched characters back to the input stream. */ - -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - *yy_cp = yy_hold_char; \ - YY_RESTORE_YY_MORE_OFFSET \ - yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \ - YY_DO_BEFORE_ACTION; /* set up yytext again */ \ - } \ - while ( 0 ) - -#define unput(c) yyunput( c, yytext_ptr ) - -/* The following is because we cannot portably get our hands on size_t - * (without autoconf's help, which isn't available because we want - * flex-generated scanners to compile on their own). - */ -typedef unsigned int yy_size_t; - - -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; - - /* Whether to try to fill the input buffer when we reach the - * end of it. - */ - int yy_fill_buffer; - - int yy_buffer_status; -#define YY_BUFFER_NEW 0 -#define YY_BUFFER_NORMAL 1 - /* When an EOF's been seen but there's still some text to process - * then we mark the buffer as YY_EOF_PENDING, to indicate that we - * shouldn't try reading from the input source any more. We might - * still have a bunch of tokens to match, though, because of - * possible backing-up. - * - * When we actually see the EOF, we change the status to "new" - * (via yyrestart()), so that the user can continue scanning by - * just pointing yyin at a new input file. - */ -#define YY_BUFFER_EOF_PENDING 2 - }; - -static YY_BUFFER_STATE yy_current_buffer = 0; - -/* 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". - */ -#define YY_CURRENT_BUFFER yy_current_buffer - - -/* yy_hold_char holds the character lost when yytext is formed. */ -static char yy_hold_char; - -static int yy_n_chars; /* number of characters read into yy_ch_buf */ - - -int yyleng; - -/* Points to current character in buffer. */ -static char *yy_c_buf_p = (char *) 0; -static int yy_init = 1; /* whether we need to initialize */ -static int yy_start = 0; /* start state number */ - -/* Flag which is used to allow yywrap()'s to do buffer switches - * instead of setting up a fresh yyin. A bit of a hack ... - */ -static int yy_did_buffer_switch_on_eof; - -void yyrestart YY_PROTO(( FILE *input_file )); - -void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer )); -void yy_load_buffer_state YY_PROTO(( void )); -YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size )); -void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b )); -void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file )); -void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b )); -#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer ) - -YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size )); -YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str )); -YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len )); - -static void *yy_flex_alloc YY_PROTO(( yy_size_t )); -static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t )); -static void yy_flex_free YY_PROTO(( void * )); - -#define yy_new_buffer yy_create_buffer - -#define yy_set_interactive(is_interactive) \ - { \ - if ( ! yy_current_buffer ) \ - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ - yy_current_buffer->yy_is_interactive = is_interactive; \ - } - -#define yy_set_bol(at_bol) \ - { \ - if ( ! yy_current_buffer ) \ - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ - yy_current_buffer->yy_at_bol = at_bol; \ - } - -#define YY_AT_BOL() (yy_current_buffer->yy_at_bol) - - -#define yywrap() 1 -#define YY_SKIP_YYWRAP -typedef unsigned char YY_CHAR; -FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; -typedef int yy_state_type; -extern char *yytext; -#define yytext_ptr yytext - -static yy_state_type yy_get_previous_state YY_PROTO(( void )); -static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state )); -static int yy_get_next_buffer YY_PROTO(( void )); -static void yy_fatal_error YY_PROTO(( yyconst char msg[] )); - -/* Done after the current pattern has been matched and before the - * corresponding action - sets up yytext. - */ -#define YY_DO_BEFORE_ACTION \ - yytext_ptr = yy_bp; \ - yyleng = (int) (yy_cp - yy_bp); \ - yy_hold_char = *yy_cp; \ - *yy_cp = '\0'; \ - yy_c_buf_p = yy_cp; - -#define YY_NUM_RULES 105 -#define YY_END_OF_BUFFER 106 -static yyconst short int yy_accept[1089] = - { 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 106, 103, 104, 103, - 103, 2, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 100, 103, 91, 88, 92, 2, 103, - 91, 91, 98, 99, 90, 89, 99, 99, 97, 95, - 95, 97, 97, 97, 103, 0, 102, 0, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - - 87, 87, 87, 87, 87, 87, 87, 87, 0, 101, - 91, 93, 91, 98, 99, 90, 99, 96, 94, 0, - 0, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 91, 99, 1, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 1, 1, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 0, 31, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 0, - 42, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 0, 14, - 87, 87, 87, 87, 87, 87, 0, 15, 87, 87, - 0, 32, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 0, 13, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 0, 77, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 0, 24, 0, 37, 87, 0, 43, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 0, 18, 87, 87, 87, 0, - 44, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 0, 30, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - - 87, 87, 87, 0, 7, 87, 87, 0, 21, 87, - 0, 39, 87, 87, 87, 87, 0, 9, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 0, - 16, 87, 87, 87, 87, 87, 87, 0, 82, 87, - 0, 17, 87, 87, 87, 87, 87, 0, 47, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 0, 11, 0, 10, 0, 6, 87, - 87, 87, 87, 87, 87, 0, 75, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - - 0, 45, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 0, 29, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 0, 52, 0, 81, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 0, 28, 0, - 74, 87, 0, 20, 87, 87, 0, 12, 0, 8, - 87, 87, 87, 87, 87, 0, 3, 87, 0, 64, - 87, 0, 46, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 0, 63, 0, - 49, 87, 87, 87, 87, 87, 87, 0, 38, 0, - 33, 87, 0, 51, 87, 87, 87, 87, 87, 87, - - 87, 87, 0, 27, 87, 0, 79, 87, 0, 65, - 87, 87, 0, 23, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 0, 62, 87, 87, 87, 87, 87, 87, 87, 0, - 40, 87, 87, 0, 50, 87, 87, 87, 87, 87, - 87, 0, 36, 0, 76, 87, 87, 87, 87, 0, - 73, 0, 4, 0, 83, 87, 87, 87, 0, 69, - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 0, 48, 0, 61, 87, 87, 87, - 87, 87, 87, 0, 25, 87, 0, 54, 87, 0, - - 22, 0, 55, 87, 87, 87, 0, 41, 87, 87, - 87, 87, 0, 66, 87, 87, 87, 0, 35, 0, - 34, 87, 87, 0, 19, 87, 87, 87, 87, 87, - 0, 5, 87, 0, 86, 87, 0, 67, 87, 87, - 0, 56, 87, 87, 87, 87, 0, 71, 87, 87, - 87, 87, 0, 70, 87, 87, 0, 72, 87, 87, - 87, 87, 0, 60, 87, 0, 59, 0, 58, 0, - 68, 0, 84, 87, 0, 57, 0, 78, 0, 26, - 87, 0, 80, 0, 85, 0, 53, 0 - } ; - -static yyconst int 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, 2, 1, 5, 6, 7, 1, 1, 1, 8, - 9, 1, 1, 1, 1, 1, 1, 10, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 1, 1, 1, - 12, 1, 1, 1, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 1, 39, 1, 1, 40, 1, 41, 41, 41, 42, - - 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, - 41, 41, 41, 41, 41, 41, 41, 41, 41, 43, - 41, 41, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1 - } ; - -static yyconst int yy_meta[45] = - { 0, - 1, 2, 2, 2, 2, 3, 2, 1, 4, 5, - 5, 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, 1, 5, - 6, 6, 6, 1 - } ; - -static yyconst short int yy_base[1100] = - { 0, - 0, 1, 45, 0, 87, 88, 131, 174, 218, 262, - 305, 348, 100, 101, 392, 436, 1413, 1414, 1414, 3, - 1369, 1414, 0, 1387, 0, 0, 1, 0, 2, 1, - 79, 76, 1397, 1396, 1395, 1374, 80, 1373, 0, 92, - 1392, 1387, 1390, 1414, 6, 0, 1414, 1414, 0, 1394, - 12, 1358, 0, 0, 1398, 1414, 39, 1356, 1414, 1414, - 1414, 1390, 111, 1354, 1387, 118, 1414, 1385, 0, 118, - 1368, 1372, 1361, 1370, 1377, 9, 1358, 1373, 1374, 115, - 1362, 1361, 1358, 1370, 1348, 1365, 1355, 1353, 1365, 134, - 1343, 1344, 103, 1343, 1346, 1355, 1342, 124, 1350, 10, - - 1352, 1356, 1341, 122, 1337, 80, 1336, 1335, 157, 1414, - 0, 1414, 1354, 0, 0, 1361, 1352, 1414, 1414, 1352, - 1318, 1342, 1338, 1344, 1316, 1338, 1337, 1313, 1321, 126, - 1323, 1337, 1309, 1334, 1322, 1322, 1332, 133, 1327, 1319, - 1325, 1313, 1323, 1322, 1314, 1310, 1317, 1311, 1317, 1312, - 1299, 1314, 1317, 1312, 1298, 1287, 1298, 1308, 1284, 1299, - 1306, 1299, 1303, 1286, 1301, 1277, 1286, 1280, 1282, 1283, - 1291, 1271, 1292, 1295, 1282, 1265, 1264, 1414, 1269, 1291, - 1266, 1289, 1283, 1260, 138, 1268, 1285, 1257, 1283, 1281, - 135, 1270, 1265, 1259, 1265, 1277, 1273, 1248, 1247, 1256, - - 1265, 1244, 1243, 1242, 1251, 1263, 1246, 1248, 1251, 1244, - 1245, 1258, 1237, 1245, 155, 1238, 1240, 1249, 1228, 1250, - 1249, 1233, 1234, 1250, 147, 1247, 1221, 1220, 1244, 1230, - 1226, 1235, 1242, 1233, 0, 0, 1221, 1238, 1220, 1236, - 1209, 1217, 1234, 1216, 1205, 1230, 1222, 1227, 1217, 1226, - 1209, 1221, 1213, 1220, 1219, 83, 1207, 1205, 1204, 1218, - 1209, 1213, 1195, 170, 1210, 1186, 1209, 1203, 1206, 191, - 1196, 1194, 1180, 1179, 1182, 1184, 1184, 1175, 1177, 1185, - 1194, 1196, 0, 1179, 1177, 1171, 1174, 1186, 1184, 1179, - 1186, 1162, 1180, 1176, 1167, 1172, 1180, 1179, 1155, 1163, - - 1168, 1175, 1166, 1166, 1173, 1161, 1161, 1154, 1168, 1153, - 1159, 1142, 1164, 1163, 1139, 1146, 1149, 1161, 1162, 1161, - 1141, 1157, 1144, 1144, 1145, 1141, 1150, 1133, 1133, 1124, - 1135, 1145, 1129, 1120, 182, 1414, 1141, 1145, 1142, 165, - 1139, 1123, 1122, 1113, 1120, 1123, 1137, 1128, 1116, 184, - 1414, 1126, 1106, 1117, 1112, 170, 1117, 1125, 1101, 180, - 1102, 1122, 1117, 1118, 1106, 1103, 1118, 1105, 1115, 1105, - 1113, 187, 1108, 1098, 1087, 1086, 1085, 1096, 200, 1095, - 1082, 202, 1094, 1080, 1106, 1078, 1085, 1084, 1098, 1101, - 1081, 1096, 1090, 1083, 1096, 1076, 1070, 1078, 1092, 1064, - - 1063, 184, 1081, 1077, 1060, 1082, 1065, 1061, 1079, 1067, - 13, 1057, 1076, 1060, 1065, 1050, 1055, 1074, 1070, 1058, - 1059, 1063, 1068, 1057, 1067, 1053, 1049, 1061, 1046, 1051, - 1044, 1048, 1052, 1055, 1058, 1045, 1038, 204, 205, 1414, - 1055, 1054, 1053, 208, 1044, 1051, 231, 1414, 1033, 1034, - 232, 1414, 1033, 1034, 222, 1044, 1030, 1025, 1036, 1015, - 1030, 234, 1026, 1033, 1019, 1034, 1021, 1024, 1017, 1014, - 137, 1029, 1018, 1016, 1018, 1001, 1027, 1026, 1006, 1009, - 1010, 1002, 1013, 1020, 1004, 1001, 1010, 1012, 1002, 1010, - 996, 995, 991, 1004, 996, 997, 1006, 989, 1002, 990, - - 235, 237, 976, 239, 1002, 999, 981, 980, 997, 993, - 243, 1414, 990, 976, 983, 993, 973, 978, 971, 985, - 988, 987, 975, 974, 967, 973, 982, 977, 953, 255, - 952, 274, 1414, 976, 964, 972, 971, 954, 969, 968, - 220, 954, 970, 955, 963, 947, 947, 962, 944, 960, - 947, 961, 942, 940, 941, 944, 952, 944, 276, 951, - 178, 279, 945, 941, 932, 942, 947, 928, 943, 932, - 941, 932, 280, 1414, 281, 1414, 936, 282, 1414, 931, - 941, 940, 932, 934, 910, 919, 927, 919, 914, 927, - 928, 923, 914, 909, 908, 902, 914, 916, 923, 903, - - 904, 907, 900, 918, 917, 897, 915, 907, 886, 885, - 894, 893, 890, 890, 896, 287, 896, 894, 831, 847, - 834, 87, 108, 142, 168, 191, 176, 222, 232, 288, - 237, 237, 293, 238, 301, 1414, 302, 235, 236, 313, - 1414, 260, 275, 314, 271, 274, 301, 288, 284, 280, - 281, 305, 292, 300, 306, 326, 299, 304, 318, 305, - 313, 317, 333, 319, 335, 309, 326, 308, 301, 354, - 308, 324, 328, 331, 346, 335, 329, 336, 345, 345, - 344, 352, 343, 367, 368, 369, 352, 352, 372, 1414, - 345, 348, 358, 351, 400, 368, 355, 371, 361, 359, - - 358, 360, 376, 403, 1414, 391, 374, 406, 1414, 383, - 408, 1414, 394, 399, 396, 390, 415, 1414, 402, 388, - 405, 383, 393, 410, 398, 415, 444, 389, 406, 445, - 1414, 392, 420, 409, 409, 436, 414, 449, 1414, 416, - 451, 1414, 427, 453, 441, 442, 432, 460, 1414, 451, - 449, 436, 437, 444, 446, 454, 471, 472, 458, 460, - 454, 462, 464, 480, 1414, 483, 1414, 484, 1414, 470, - 452, 463, 470, 489, 491, 492, 1414, 480, 496, 468, - 486, 500, 503, 485, 481, 477, 497, 488, 511, 497, - 514, 494, 516, 503, 480, 505, 505, 497, 512, 511, - - 527, 1414, 509, 514, 516, 508, 503, 495, 496, 535, - 536, 525, 539, 1414, 512, 513, 514, 513, 515, 547, - 548, 535, 551, 518, 553, 1414, 554, 1414, 536, 528, - 548, 537, 539, 550, 566, 538, 568, 570, 1414, 571, - 1414, 543, 573, 1414, 574, 547, 577, 1414, 579, 1414, - 557, 585, 561, 571, 561, 591, 1414, 564, 593, 1414, - 565, 596, 1414, 582, 582, 574, 572, 579, 574, 590, - 583, 594, 594, 595, 611, 595, 594, 614, 1414, 615, - 1414, 601, 593, 594, 604, 605, 622, 623, 1414, 626, - 1414, 598, 628, 1414, 614, 630, 609, 623, 606, 625, - - 627, 611, 642, 1414, 643, 644, 1414, 645, 646, 1414, - 628, 624, 649, 1414, 622, 636, 657, 658, 660, 632, - 643, 650, 664, 642, 648, 641, 657, 634, 644, 646, - 676, 1414, 649, 654, 650, 651, 652, 668, 683, 684, - 1414, 685, 665, 688, 1414, 674, 662, 662, 677, 681, - 697, 699, 1414, 700, 1414, 686, 702, 668, 704, 705, - 1414, 706, 1414, 708, 1414, 711, 691, 688, 719, 1414, - 705, 722, 694, 709, 696, 713, 727, 717, 716, 702, - 733, 734, 720, 736, 1414, 738, 1414, 713, 740, 728, - 727, 717, 719, 749, 1414, 735, 752, 1414, 753, 754, - - 1414, 755, 1414, 741, 757, 734, 760, 1414, 761, 732, - 753, 769, 772, 1414, 747, 759, 756, 776, 1414, 777, - 1414, 762, 780, 781, 1414, 765, 755, 756, 759, 789, - 792, 1414, 764, 794, 1414, 765, 796, 1414, 797, 785, - 800, 1414, 783, 769, 781, 808, 809, 1414, 776, 812, - 813, 814, 815, 1414, 816, 788, 820, 1414, 821, 827, - 828, 812, 832, 1414, 833, 834, 1414, 835, 1414, 836, - 1414, 839, 1414, 840, 841, 1414, 847, 1414, 848, 1414, - 852, 853, 1414, 854, 1414, 855, 1414, 1414, 867, 873, - 879, 885, 891, 897, 899, 905, 852, 911, 914 - - } ; - -static yyconst short int yy_def[1100] = - { 0, - 1089, 1089, 1088, 3, 1089, 1089, 1090, 1090, 1091, 1091, - 1092, 1092, 1093, 1093, 1094, 1094, 1088, 1088, 1088, 1088, - 1088, 1088, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - 1095, 1095, 1095, 1088, 1088, 1096, 1088, 1088, 1096, 1088, - 1096, 1096, 1097, 1098, 1088, 1088, 1098, 1098, 1088, 1088, - 1088, 1088, 1088, 1088, 1099, 1088, 1088, 1088, 1095, 1095, - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1088, 1088, - 1096, 1088, 1096, 1097, 1098, 1088, 1098, 1088, 1088, 1099, - 1088, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - 1095, 1095, 1095, 1095, 1095, 1096, 1098, 1088, 1095, 1095, - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - 1095, 1095, 1095, 1095, 1096, 1098, 1095, 1095, 1095, 1095, - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - 1095, 1095, 1095, 1095, 1088, 1088, 1095, 1095, 1095, 1095, - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1088, - 1088, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1088, 1088, - 1095, 1095, 1095, 1095, 1095, 1095, 1088, 1088, 1095, 1095, - 1088, 1088, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - 1088, 1088, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - 1095, 1088, 1088, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - 1095, 1095, 1088, 1088, 1088, 1088, 1095, 1088, 1088, 1095, - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - 1095, 1095, 1095, 1095, 1088, 1088, 1095, 1095, 1095, 1088, - 1088, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1088, 1088, - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - - 1095, 1095, 1095, 1088, 1088, 1095, 1095, 1088, 1088, 1095, - 1088, 1088, 1095, 1095, 1095, 1095, 1088, 1088, 1095, 1095, - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1088, - 1088, 1095, 1095, 1095, 1095, 1095, 1095, 1088, 1088, 1095, - 1088, 1088, 1095, 1095, 1095, 1095, 1095, 1088, 1088, 1095, - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - 1095, 1095, 1095, 1088, 1088, 1088, 1088, 1088, 1088, 1095, - 1095, 1095, 1095, 1095, 1095, 1088, 1088, 1095, 1095, 1095, - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - - 1088, 1088, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - 1095, 1095, 1088, 1088, 1095, 1095, 1095, 1095, 1095, 1095, - 1095, 1095, 1095, 1095, 1088, 1088, 1088, 1088, 1095, 1095, - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1088, 1088, 1088, - 1088, 1095, 1088, 1088, 1095, 1095, 1088, 1088, 1088, 1088, - 1095, 1095, 1095, 1095, 1095, 1088, 1088, 1095, 1088, 1088, - 1095, 1088, 1088, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1088, 1088, 1088, - 1088, 1095, 1095, 1095, 1095, 1095, 1095, 1088, 1088, 1088, - 1088, 1095, 1088, 1088, 1095, 1095, 1095, 1095, 1095, 1095, - - 1095, 1095, 1088, 1088, 1095, 1088, 1088, 1095, 1088, 1088, - 1095, 1095, 1088, 1088, 1095, 1095, 1095, 1095, 1095, 1095, - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - 1088, 1088, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1088, - 1088, 1095, 1095, 1088, 1088, 1095, 1095, 1095, 1095, 1095, - 1095, 1088, 1088, 1088, 1088, 1095, 1095, 1095, 1095, 1088, - 1088, 1088, 1088, 1088, 1088, 1095, 1095, 1095, 1088, 1088, - 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, - 1095, 1095, 1095, 1088, 1088, 1088, 1088, 1095, 1095, 1095, - 1095, 1095, 1095, 1088, 1088, 1095, 1088, 1088, 1095, 1088, - - 1088, 1088, 1088, 1095, 1095, 1095, 1088, 1088, 1095, 1095, - 1095, 1095, 1088, 1088, 1095, 1095, 1095, 1088, 1088, 1088, - 1088, 1095, 1095, 1088, 1088, 1095, 1095, 1095, 1095, 1095, - 1088, 1088, 1095, 1088, 1088, 1095, 1088, 1088, 1095, 1095, - 1088, 1088, 1095, 1095, 1095, 1095, 1088, 1088, 1095, 1095, - 1095, 1095, 1088, 1088, 1095, 1095, 1088, 1088, 1095, 1095, - 1095, 1095, 1088, 1088, 1095, 1088, 1088, 1088, 1088, 1088, - 1088, 1088, 1088, 1095, 1088, 1088, 1088, 1088, 1088, 1088, - 1095, 1088, 1088, 1088, 1088, 1088, 1088, 0, 1088, 1088, - 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088 - - } ; - -static yyconst short int yy_nxt[1459] = - { 0, - 1088, 350, 19, 19, 66, 67, 66, 109, 110, 109, - 1088, 351, 73, 66, 67, 66, 100, 83, 74, 1088, - 71, 77, 81, 75, 164, 79, 76, 78, 483, 72, - 84, 101, 130, 131, 82, 80, 484, 165, 20, 20, - 66, 67, 66, 21, 21, 18, 18, 19, 18, 18, - 22, 18, 18, 18, 23, 23, 18, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 23, 34, 35, - 23, 36, 37, 38, 39, 40, 41, 23, 42, 43, - 23, 23, 23, 20, 23, 23, 23, 23, 21, 44, - 44, 85, 95, 172, 88, 96, 97, 316, 173, 86, - - 89, 90, 60, 60, 61, 61, 62, 62, 102, 98, - 87, 103, 66, 67, 66, 118, 696, 155, 104, 66, - 67, 66, 317, 105, 697, 45, 45, 135, 156, 136, - 21, 21, 18, 47, 18, 48, 49, 50, 63, 63, - 161, 122, 137, 64, 64, 123, 138, 250, 148, 187, - 162, 169, 124, 149, 170, 542, 188, 150, 109, 110, - 109, 151, 196, 243, 543, 152, 286, 251, 698, 51, - 244, 275, 197, 287, 52, 18, 47, 18, 48, 49, - 50, 276, 325, 335, 406, 350, 421, 326, 439, 327, - 638, 407, 335, 336, 426, 351, 328, 427, 440, 699, - - 329, 447, 336, 451, 473, 511, 439, 700, 701, 422, - 639, 448, 51, 452, 474, 512, 440, 52, 18, 18, - 47, 18, 18, 22, 18, 18, 18, 18, 18, 18, - 337, 516, 447, 451, 524, 532, 573, 517, 575, 616, - 578, 453, 448, 452, 511, 533, 574, 702, 576, 525, - 579, 617, 703, 706, 512, 707, 20, 18, 710, 713, - 714, 21, 18, 18, 47, 18, 18, 22, 18, 18, - 18, 18, 18, 18, 603, 532, 715, 635, 604, 605, - 640, 573, 575, 578, 606, 533, 607, 636, 689, 704, - 641, 574, 576, 579, 708, 716, 719, 720, 690, 705, - - 20, 18, 635, 711, 709, 21, 55, 56, 18, 48, - 22, 50, 636, 712, 640, 717, 721, 722, 723, 724, - 725, 726, 727, 728, 641, 718, 729, 730, 732, 733, - 734, 735, 736, 737, 738, 740, 741, 731, 743, 746, - 747, 750, 751, 57, 739, 744, 742, 752, 58, 55, - 56, 18, 48, 22, 50, 748, 753, 745, 754, 755, - 756, 757, 758, 759, 760, 749, 761, 763, 764, 766, - 768, 770, 771, 689, 772, 773, 762, 774, 765, 767, - 769, 775, 778, 690, 779, 780, 57, 781, 782, 783, - 784, 58, 18, 18, 19, 18, 18, 18, 18, 18, - - 18, 776, 785, 18, 704, 786, 787, 708, 788, 711, - 789, 777, 790, 791, 705, 792, 717, 709, 793, 712, - 794, 795, 796, 797, 798, 799, 718, 800, 803, 804, - 20, 805, 806, 807, 808, 21, 18, 18, 19, 18, - 18, 18, 18, 18, 18, 801, 730, 18, 809, 810, - 738, 811, 741, 812, 813, 802, 731, 815, 816, 817, - 739, 748, 742, 818, 814, 819, 820, 821, 822, 823, - 824, 749, 825, 827, 20, 829, 830, 831, 832, 21, - 833, 764, 826, 828, 766, 768, 834, 835, 836, 837, - 838, 765, 840, 776, 767, 769, 842, 843, 845, 846, - - 839, 847, 841, 777, 849, 851, 852, 844, 853, 854, - 855, 848, 856, 858, 850, 859, 861, 862, 864, 865, - 866, 867, 857, 868, 869, 860, 870, 863, 801, 871, - 872, 873, 874, 875, 876, 877, 878, 880, 802, 882, - 813, 883, 884, 885, 886, 887, 879, 881, 888, 890, - 814, 892, 893, 896, 825, 827, 897, 898, 889, 891, - 899, 900, 894, 901, 826, 828, 902, 903, 905, 906, - 895, 838, 840, 908, 843, 909, 911, 904, 847, 907, - 849, 839, 841, 912, 844, 910, 913, 915, 848, 916, - 850, 917, 856, 918, 859, 919, 914, 862, 920, 921, - - 922, 923, 857, 924, 860, 925, 926, 863, 927, 928, - 929, 930, 931, 933, 934, 878, 880, 935, 936, 937, - 938, 939, 932, 940, 888, 879, 881, 890, 942, 893, - 943, 944, 946, 941, 889, 947, 948, 891, 949, 894, - 950, 945, 951, 903, 952, 906, 954, 909, 956, 957, - 913, 958, 959, 904, 953, 907, 955, 910, 960, 962, - 914, 964, 966, 967, 968, 969, 971, 972, 961, 963, - 973, 965, 974, 975, 976, 970, 977, 931, 978, 979, - 980, 981, 982, 983, 984, 940, 986, 932, 988, 944, - 989, 990, 991, 992, 985, 941, 987, 993, 994, 945, - - 952, 954, 996, 997, 999, 1000, 960, 962, 995, 964, - 953, 955, 1002, 998, 1004, 1001, 961, 963, 1005, 965, - 969, 1006, 1003, 1007, 1009, 1010, 1011, 1012, 1013, 1015, - 970, 1016, 1017, 1008, 1018, 1020, 1022, 984, 1014, 986, - 1023, 1024, 1026, 1027, 1019, 1021, 1028, 985, 1029, 987, - 994, 1025, 1030, 997, 1031, 1000, 1002, 1033, 1034, 1036, - 995, 1007, 1037, 998, 1032, 1001, 1003, 1039, 1035, 1040, - 1041, 1008, 1038, 1013, 1043, 1044, 1045, 1018, 1020, 1046, - 1042, 1047, 1024, 1014, 1049, 1050, 1051, 1019, 1021, 1052, - 1053, 1048, 1025, 1031, 1055, 1034, 1056, 1037, 1057, 1059, - - 1054, 1041, 1060, 1032, 1061, 1035, 1062, 1038, 1058, 1063, - 1047, 1042, 1065, 1066, 1068, 1070, 1053, 1072, 1074, 1064, - 1048, 1057, 1075, 1067, 1069, 1071, 1054, 1073, 1077, 1079, - 1081, 1058, 1076, 1063, 1082, 1066, 1068, 1070, 1078, 1080, - 1072, 1084, 1075, 1064, 1083, 1067, 1069, 1071, 1077, 1079, - 1073, 1085, 1076, 1086, 1082, 1084, 1086, 114, 1078, 1080, - 695, 694, 693, 1087, 1083, 1085, 1087, 18, 18, 18, - 18, 18, 18, 46, 46, 46, 46, 46, 46, 53, - 53, 53, 53, 53, 53, 54, 54, 54, 54, 54, - 54, 59, 59, 59, 59, 59, 59, 65, 65, 65, - - 65, 65, 65, 69, 69, 111, 692, 111, 111, 111, - 111, 115, 691, 688, 115, 115, 115, 120, 120, 120, - 687, 686, 685, 684, 683, 682, 681, 680, 679, 678, - 677, 676, 675, 674, 673, 672, 671, 670, 669, 668, - 667, 666, 665, 664, 663, 662, 661, 660, 659, 658, - 657, 656, 655, 654, 653, 652, 651, 650, 649, 648, - 647, 646, 645, 644, 643, 642, 637, 634, 633, 632, - 631, 630, 629, 628, 627, 626, 625, 624, 623, 622, - 621, 620, 619, 618, 615, 614, 613, 612, 611, 610, - 609, 608, 602, 601, 600, 599, 598, 597, 596, 595, - - 594, 593, 592, 591, 590, 589, 588, 587, 586, 585, - 584, 583, 582, 581, 580, 577, 572, 571, 570, 569, - 568, 567, 566, 565, 564, 563, 562, 561, 560, 559, - 558, 557, 556, 555, 554, 553, 552, 551, 550, 549, - 548, 547, 546, 545, 544, 541, 540, 539, 538, 537, - 536, 535, 534, 531, 530, 529, 528, 527, 526, 523, - 522, 521, 520, 519, 518, 515, 514, 513, 510, 509, - 508, 507, 506, 505, 504, 503, 502, 501, 500, 499, - 498, 497, 496, 495, 494, 493, 492, 491, 490, 489, - 488, 487, 486, 485, 482, 481, 480, 479, 478, 477, - - 476, 475, 472, 471, 470, 469, 468, 467, 466, 465, - 464, 463, 462, 461, 460, 459, 458, 457, 456, 455, - 454, 450, 449, 446, 445, 444, 443, 442, 441, 438, - 437, 436, 435, 434, 433, 432, 431, 430, 429, 428, - 425, 424, 423, 420, 419, 418, 417, 416, 415, 414, - 413, 412, 411, 410, 409, 408, 405, 404, 403, 402, - 401, 400, 399, 398, 397, 396, 395, 394, 393, 392, - 391, 390, 389, 388, 387, 386, 385, 384, 383, 382, - 381, 380, 379, 378, 377, 376, 375, 374, 373, 372, - 371, 370, 369, 368, 367, 366, 365, 364, 363, 362, - - 361, 360, 359, 358, 357, 356, 355, 354, 353, 352, - 349, 348, 347, 346, 345, 344, 343, 342, 341, 340, - 339, 338, 334, 333, 332, 331, 330, 324, 323, 322, - 321, 320, 319, 318, 315, 314, 313, 312, 311, 310, - 309, 308, 307, 306, 305, 304, 303, 302, 301, 300, - 299, 298, 297, 296, 295, 294, 293, 292, 291, 290, - 289, 288, 285, 284, 283, 282, 281, 280, 279, 278, - 277, 274, 273, 272, 271, 270, 269, 268, 267, 266, - 265, 264, 263, 262, 261, 260, 259, 258, 257, 256, - 255, 254, 253, 252, 249, 248, 247, 246, 245, 242, - - 241, 240, 239, 238, 237, 236, 235, 234, 233, 232, - 231, 230, 229, 228, 227, 226, 225, 224, 223, 222, - 221, 220, 219, 218, 217, 216, 215, 214, 213, 212, - 211, 210, 209, 208, 207, 206, 205, 204, 203, 202, - 201, 200, 199, 198, 195, 194, 193, 192, 191, 190, - 189, 186, 185, 184, 183, 182, 181, 180, 179, 178, - 119, 177, 116, 176, 175, 174, 171, 168, 167, 166, - 163, 160, 159, 158, 157, 154, 153, 147, 146, 145, - 144, 143, 142, 141, 140, 139, 134, 133, 132, 129, - 128, 127, 126, 125, 121, 119, 68, 112, 117, 116, - - 113, 112, 108, 107, 106, 99, 94, 93, 92, 91, - 70, 68, 1088, 17, 1088, 1088, 1088, 1088, 1088, 1088, - 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, - 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, - 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, - 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088 - } ; - -static yyconst short int yy_chk[1459] = - { 0, - 0, 283, 1, 2, 20, 20, 20, 45, 45, 45, - 0, 283, 26, 51, 51, 51, 39, 30, 26, 0, - 25, 27, 29, 26, 100, 28, 26, 27, 411, 25, - 30, 39, 76, 76, 29, 28, 411, 100, 1, 2, - 57, 57, 57, 1, 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, 5, - 6, 31, 37, 106, 32, 37, 37, 256, 106, 31, - - 32, 32, 13, 14, 13, 14, 13, 14, 40, 37, - 31, 40, 63, 63, 63, 63, 622, 93, 40, 66, - 66, 66, 256, 40, 623, 5, 6, 80, 93, 80, - 5, 6, 7, 7, 7, 7, 7, 7, 13, 14, - 98, 70, 80, 13, 14, 70, 80, 191, 90, 130, - 98, 104, 70, 90, 104, 471, 130, 90, 109, 109, - 109, 90, 138, 185, 471, 90, 225, 191, 624, 7, - 185, 215, 138, 225, 7, 8, 8, 8, 8, 8, - 8, 215, 264, 335, 340, 350, 356, 264, 372, 264, - 561, 340, 270, 335, 360, 350, 264, 360, 372, 625, - - 264, 379, 270, 382, 402, 438, 439, 626, 627, 356, - 561, 379, 8, 382, 402, 438, 439, 8, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 270, 444, 447, 451, 455, 462, 501, 444, 502, 541, - 504, 382, 447, 451, 511, 462, 501, 628, 502, 455, - 504, 541, 629, 631, 511, 632, 9, 9, 634, 638, - 639, 9, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 530, 532, 642, 559, 530, 530, - 562, 573, 575, 578, 530, 532, 530, 559, 616, 630, - 562, 573, 575, 578, 633, 643, 645, 646, 616, 630, - - 10, 10, 635, 637, 633, 10, 11, 11, 11, 11, - 11, 11, 635, 637, 640, 644, 647, 648, 649, 650, - 651, 652, 653, 654, 640, 644, 655, 656, 657, 658, - 659, 660, 661, 662, 663, 664, 665, 656, 666, 668, - 669, 671, 672, 11, 663, 667, 665, 673, 11, 12, - 12, 12, 12, 12, 12, 670, 674, 667, 675, 676, - 677, 678, 679, 680, 681, 670, 682, 683, 684, 685, - 686, 687, 688, 689, 691, 692, 682, 693, 684, 685, - 686, 694, 696, 689, 697, 698, 12, 699, 700, 701, - 702, 12, 15, 15, 15, 15, 15, 15, 15, 15, - - 15, 695, 703, 15, 704, 706, 707, 708, 710, 711, - 713, 695, 714, 715, 704, 716, 717, 708, 719, 711, - 720, 721, 722, 723, 724, 725, 717, 726, 728, 729, - 15, 732, 733, 734, 735, 15, 16, 16, 16, 16, - 16, 16, 16, 16, 16, 727, 730, 16, 736, 737, - 738, 740, 741, 743, 744, 727, 730, 745, 746, 747, - 738, 748, 741, 750, 744, 751, 752, 753, 754, 755, - 756, 748, 757, 758, 16, 759, 760, 761, 762, 16, - 763, 764, 757, 758, 766, 768, 770, 771, 772, 773, - 774, 764, 775, 776, 766, 768, 778, 779, 780, 781, - - 774, 782, 775, 776, 783, 784, 785, 779, 786, 787, - 788, 782, 789, 790, 783, 791, 792, 793, 794, 795, - 796, 797, 789, 798, 799, 791, 800, 793, 801, 803, - 804, 805, 806, 807, 808, 809, 810, 811, 801, 812, - 813, 815, 816, 817, 818, 819, 810, 811, 820, 821, - 813, 822, 823, 824, 825, 827, 829, 830, 820, 821, - 831, 832, 823, 833, 825, 827, 834, 835, 836, 837, - 823, 838, 840, 842, 843, 845, 846, 835, 847, 837, - 849, 838, 840, 851, 843, 845, 852, 853, 847, 854, - 849, 855, 856, 858, 859, 861, 852, 862, 864, 865, - - 866, 867, 856, 868, 859, 869, 870, 862, 871, 872, - 873, 874, 875, 876, 877, 878, 880, 882, 883, 884, - 885, 886, 875, 887, 888, 878, 880, 890, 892, 893, - 895, 896, 897, 887, 888, 898, 899, 890, 900, 893, - 901, 896, 902, 903, 905, 906, 908, 909, 911, 912, - 913, 915, 916, 903, 905, 906, 908, 909, 917, 918, - 913, 919, 920, 921, 922, 923, 924, 925, 917, 918, - 926, 919, 927, 928, 929, 923, 930, 931, 933, 934, - 935, 936, 937, 938, 939, 940, 942, 931, 943, 944, - 946, 947, 948, 949, 939, 940, 942, 950, 951, 944, - - 952, 954, 956, 957, 958, 959, 960, 962, 951, 964, - 952, 954, 966, 957, 967, 959, 960, 962, 968, 964, - 969, 971, 966, 972, 973, 974, 975, 976, 977, 978, - 969, 979, 980, 972, 981, 982, 983, 984, 977, 986, - 988, 989, 990, 991, 981, 982, 992, 984, 993, 986, - 994, 989, 996, 997, 999, 1000, 1002, 1004, 1005, 1006, - 994, 1007, 1009, 997, 999, 1000, 1002, 1010, 1005, 1011, - 1012, 1007, 1009, 1013, 1015, 1016, 1017, 1018, 1020, 1022, - 1012, 1023, 1024, 1013, 1026, 1027, 1028, 1018, 1020, 1029, - 1030, 1023, 1024, 1031, 1033, 1034, 1036, 1037, 1039, 1040, - - 1030, 1041, 1043, 1031, 1044, 1034, 1045, 1037, 1039, 1046, - 1047, 1041, 1049, 1050, 1051, 1052, 1053, 1055, 1056, 1046, - 1047, 1057, 1059, 1050, 1051, 1052, 1053, 1055, 1060, 1061, - 1062, 1057, 1059, 1063, 1065, 1066, 1068, 1070, 1060, 1061, - 1072, 1074, 1075, 1063, 1065, 1066, 1068, 1070, 1077, 1079, - 1072, 1074, 1075, 1081, 1082, 1084, 1086, 1097, 1077, 1079, - 621, 620, 619, 1081, 1082, 1084, 1086, 1089, 1089, 1089, - 1089, 1089, 1089, 1090, 1090, 1090, 1090, 1090, 1090, 1091, - 1091, 1091, 1091, 1091, 1091, 1092, 1092, 1092, 1092, 1092, - 1092, 1093, 1093, 1093, 1093, 1093, 1093, 1094, 1094, 1094, - - 1094, 1094, 1094, 1095, 1095, 1096, 618, 1096, 1096, 1096, - 1096, 1098, 617, 615, 1098, 1098, 1098, 1099, 1099, 1099, - 614, 613, 612, 611, 610, 609, 608, 607, 606, 605, - 604, 603, 602, 601, 600, 599, 598, 597, 596, 595, - 594, 593, 592, 591, 590, 589, 588, 587, 586, 585, - 584, 583, 582, 581, 580, 577, 572, 571, 570, 569, - 568, 567, 566, 565, 564, 563, 560, 558, 557, 556, - 555, 554, 553, 552, 551, 550, 549, 548, 547, 546, - 545, 544, 543, 542, 540, 539, 538, 537, 536, 535, - 534, 531, 529, 528, 527, 526, 525, 524, 523, 522, - - 521, 520, 519, 518, 517, 516, 515, 514, 513, 510, - 509, 508, 507, 506, 505, 503, 500, 499, 498, 497, - 496, 495, 494, 493, 492, 491, 490, 489, 488, 487, - 486, 485, 484, 483, 482, 481, 480, 479, 478, 477, - 476, 475, 474, 473, 472, 470, 469, 468, 467, 466, - 465, 464, 463, 461, 460, 459, 458, 457, 456, 454, - 453, 450, 449, 446, 445, 443, 442, 441, 437, 436, - 435, 434, 433, 432, 431, 430, 429, 428, 427, 426, - 425, 424, 423, 422, 421, 420, 419, 418, 417, 416, - 415, 414, 413, 412, 410, 409, 408, 407, 406, 405, - - 404, 403, 401, 400, 399, 398, 397, 396, 395, 394, - 393, 392, 391, 390, 389, 388, 387, 386, 385, 384, - 383, 381, 380, 378, 377, 376, 375, 374, 373, 371, - 370, 369, 368, 367, 366, 365, 364, 363, 362, 361, - 359, 358, 357, 355, 354, 353, 352, 349, 348, 347, - 346, 345, 344, 343, 342, 341, 339, 338, 337, 334, - 333, 332, 331, 330, 329, 328, 327, 326, 325, 324, - 323, 322, 321, 320, 319, 318, 317, 316, 315, 314, - 313, 312, 311, 310, 309, 308, 307, 306, 305, 304, - 303, 302, 301, 300, 299, 298, 297, 296, 295, 294, - - 293, 292, 291, 290, 289, 288, 287, 286, 285, 284, - 282, 281, 280, 279, 278, 277, 276, 275, 274, 273, - 272, 271, 269, 268, 267, 266, 265, 263, 262, 261, - 260, 259, 258, 257, 255, 254, 253, 252, 251, 250, - 249, 248, 247, 246, 245, 244, 243, 242, 241, 240, - 239, 238, 237, 234, 233, 232, 231, 230, 229, 228, - 227, 226, 224, 223, 222, 221, 220, 219, 218, 217, - 216, 214, 213, 212, 211, 210, 209, 208, 207, 206, - 205, 204, 203, 202, 201, 200, 199, 198, 197, 196, - 195, 194, 193, 192, 190, 189, 188, 187, 186, 184, - - 183, 182, 181, 180, 179, 177, 176, 175, 174, 173, - 172, 171, 170, 169, 168, 167, 166, 165, 164, 163, - 162, 161, 160, 159, 158, 157, 156, 155, 154, 153, - 152, 151, 150, 149, 148, 147, 146, 145, 144, 143, - 142, 141, 140, 139, 137, 136, 135, 134, 133, 132, - 131, 129, 128, 127, 126, 125, 124, 123, 122, 121, - 120, 117, 116, 113, 108, 107, 105, 103, 102, 101, - 99, 97, 96, 95, 94, 92, 91, 89, 88, 87, - 86, 85, 84, 83, 82, 81, 79, 78, 77, 75, - 74, 73, 72, 71, 68, 65, 64, 62, 58, 55, - - 52, 50, 43, 42, 41, 38, 36, 35, 34, 33, - 24, 21, 17, 1088, 1088, 1088, 1088, 1088, 1088, 1088, - 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, - 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, - 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088, - 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1088 - } ; - -static yy_state_type yy_last_accepting_state; -static char *yy_last_accepting_cpos; - -/* The intent behind this definition is that it'll catch - * any uses of REJECT which flex missed. - */ -#define REJECT reject_used_but_not_detected -#define yymore() yymore_used_but_not_detected -#define YY_MORE_ADJ 0 -#define YY_RESTORE_YY_MORE_OFFSET -char *yytext; -#line 1 "config.l" -#define INITIAL 0 -/****************************************************************************** - * - * $Id$ - * - * Copyright (C) 1997-2000 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - * All output generated with Doxygen is not covered by this license. - * - */ -#line 18 "config.l" - -/* - * includes - */ -#include -#include -#include -#include -#include - -#include -#include -#include - -#include "config.h" -#include "version.h" - -#ifdef DOXYWIZARD -#include -void err(const char *fmt, ...) -{ - va_list args; - va_start(args, fmt); - vfprintf(stderr, fmt, args); - va_end(args); -} -void warn(const char *fmt, ...) -{ - va_list args; - va_start(args, fmt); - vfprintf(stderr, fmt, args); - va_end(args); -} -#else -#include "doxygen.h" -#include "message.h" -#include "pre.h" -#include "version.h" -#include "language.h" -#endif - -#define YY_NEVER_INTERACTIVE 1 - -/* ----------------------------------------------------------------- - * - * exported variables - */ - -QCString Config::projectName; -QCString Config::projectNumber; -QCString Config::outputDir; -QCString Config::htmlOutputDir; -QCString Config::latexOutputDir; -QCString Config::manOutputDir; -QCString Config::rtfOutputDir; -QCString Config::outputLanguage; -QCString Config::headerFile; -QCString Config::latexHeaderFile; -QCString Config::footerFile; -QCString Config::cgiName; -QCString Config::cgiURL; -QCString Config::docURL; -QCString Config::binAbsPath; -QCString Config::docAbsPath; -QCString Config::perlPath; -QCString Config::genTagFile; -QCString Config::inputFilter; -QCString Config::paperType; -QCString Config::manExtension; -QCString Config::htmlStyleSheet; -QStrList Config::ignorePrefixList; -QStrList Config::includePath; -QStrList Config::examplePath; -QStrList Config::imagePath; -QStrList Config::inputSources; -QStrList Config::excludeSources; -QStrList Config::filePatternList; -QStrList Config::excludePatternList; -QStrList Config::examplePatternList; -QStrList Config::imagePatternList; -QStrList Config::tagFileList; -QStrList Config::extDocPathList; -QStrList Config::predefined; -QStrList Config::extraPackageList; -QStrList Config::stripFromPath; -bool Config::quietFlag = FALSE; -bool Config::recursiveFlag = FALSE; -bool Config::allExtFlag = FALSE; -bool Config::searchEngineFlag = FALSE; -bool Config::extractAllFlag = FALSE; -bool Config::extractPrivateFlag = FALSE; -bool Config::noIndexFlag = FALSE; -bool Config::hideMemberFlag = FALSE; -bool Config::hideClassFlag = FALSE; -bool Config::macroExpansionFlag = FALSE; -bool Config::onlyPredefinedFlag = FALSE; -bool Config::fullPathNameFlag = FALSE; -bool Config::compactLatexFlag = FALSE; -bool Config::internalDocsFlag = FALSE; -bool Config::caseSensitiveNames = FALSE; -bool Config::sourceBrowseFlag = FALSE; -bool Config::htmlHelpFlag = FALSE; -bool Config::alphaIndexFlag = FALSE; -bool Config::pdfHyperFlag = FALSE; -bool Config::alwaysDetailsFlag = FALSE; -bool Config::inlineSourceFlag = FALSE; -bool Config::rtfHyperFlag = FALSE; -bool Config::compactRTFFlag = FALSE; -bool Config::haveDotFlag = FALSE; -bool Config::autoBriefFlag = TRUE; -bool Config::warningFlag = TRUE; -bool Config::generateHtml = TRUE; -bool Config::generateLatex = TRUE; -bool Config::generateMan = TRUE; -bool Config::generateRTF = FALSE; -bool Config::preprocessingFlag = TRUE; -bool Config::briefMemDescFlag = TRUE; -bool Config::searchIncludeFlag = TRUE; -bool Config::classDiagramFlag = TRUE; -bool Config::repeatBriefFlag = TRUE; -bool Config::verbatimHeaderFlag = TRUE; -bool Config::htmlAlignMemberFlag = TRUE; -bool Config::inheritDocsFlag = TRUE; -bool Config::inlineInfoFlag = TRUE; -bool Config::collGraphFlag = TRUE; -bool Config::includeGraphFlag = TRUE; -bool Config::gfxHierarchyFlag = TRUE; -bool Config::showIncFileFlag = TRUE; -bool Config::stripCommentsFlag = TRUE; -bool Config::sortMembersFlag = TRUE; -int Config::tabSize = 8; -int Config::colsInAlphaIndex = 5; - -/* ----------------------------------------------------------------- - * - * static variables - */ - -static const char * inputString; -static int inputPosition; -static int yyLineNr; -static QCString tmpString; -static QCString * s=0; -static bool * b=0; -static QStrList * l=0; -static int lastState; -static int lastEnvState; -static QCString elemStr; -static QCString tabSizeString; -static QCString colsInAlphaIndexString; - -/* ----------------------------------------------------------------- - */ -#undef YY_INPUT -#define YY_INPUT(buf,result,max_size) result=yyread(buf,max_size); - -static int yyread(char *buf,int max_size) -{ - int c=0; - while( c < max_size && inputString[inputPosition] ) - { - *buf = inputString[inputPosition++] ; - c++; buf++; - } - return c; -} - -#define Start 1 - -#define SkipComment 2 - -#define GetString 3 - -#define GetBool 4 - -#define GetStrList 5 - -#define GetQuotedString 6 - -#define GetEnvVar 7 - - -/* Macros after this point can all be overridden by user definitions in - * section 1. - */ - -#ifndef YY_SKIP_YYWRAP -#ifdef __cplusplus -extern "C" int yywrap YY_PROTO(( void )); -#else -extern int yywrap YY_PROTO(( void )); -#endif -#endif - -#ifndef YY_NO_UNPUT -static void yyunput YY_PROTO(( int c, char *buf_ptr )); -#endif - -#ifndef yytext_ptr -static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int )); -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen YY_PROTO(( yyconst char * )); -#endif - -#ifndef YY_NO_INPUT -#ifdef __cplusplus -static int yyinput YY_PROTO(( void )); -#else -static int input YY_PROTO(( void )); -#endif -#endif - -#if YY_STACK_USED -static int yy_start_stack_ptr = 0; -static int yy_start_stack_depth = 0; -static int *yy_start_stack = 0; -#ifndef YY_NO_PUSH_STATE -static void yy_push_state YY_PROTO(( int new_state )); -#endif -#ifndef YY_NO_POP_STATE -static void yy_pop_state YY_PROTO(( void )); -#endif -#ifndef YY_NO_TOP_STATE -static int yy_top_state YY_PROTO(( void )); -#endif - -#else -#define YY_NO_PUSH_STATE 1 -#define YY_NO_POP_STATE 1 -#define YY_NO_TOP_STATE 1 -#endif - -#ifdef YY_MALLOC_DECL -YY_MALLOC_DECL -#else -#if __STDC__ -#ifndef __cplusplus -#include -#endif -#else -/* Just try to get by without declaring the routines. This will fail - * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int) - * or sizeof(void*) != sizeof(int). - */ -#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 (void) fwrite( yytext, yyleng, 1, yyout ) -#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->yy_is_interactive ) \ - { \ - int c = '*', n; \ - for ( n = 0; n < max_size && \ - (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ - buf[n] = (char) c; \ - if ( c == '\n' ) \ - buf[n++] = (char) c; \ - if ( c == EOF && ferror( yyin ) ) \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - result = n; \ - } \ - else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \ - && ferror( yyin ) ) \ - YY_FATAL_ERROR( "input in flex scanner failed" ); -#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 - -/* Default declaration of generated scanner - a define so the user can - * easily add parameters. - */ -#ifndef YY_DECL -#define YY_DECL int yylex YY_PROTO(( void )) -#endif - -/* Code executed at the beginning of each rule, after yytext and yyleng - * have been set up. - */ -#ifndef YY_USER_ACTION -#define YY_USER_ACTION -#endif - -/* Code executed at the end of each rule. */ -#ifndef YY_BREAK -#define YY_BREAK break; -#endif - -#define YY_RULE_SETUP \ - YY_USER_ACTION - -YY_DECL - { - register yy_state_type yy_current_state; - register char *yy_cp, *yy_bp; - register int yy_act; - -#line 197 "config.l" - - - - if ( yy_init ) - { - yy_init = 0; - -#ifdef YY_USER_INIT - YY_USER_INIT; -#endif - - if ( ! yy_start ) - yy_start = 1; /* first start state */ - - if ( ! yyin ) - yyin = stdin; - - if ( ! yyout ) - yyout = stdout; - - if ( ! yy_current_buffer ) - yy_current_buffer = - yy_create_buffer( yyin, YY_BUF_SIZE ); - - yy_load_buffer_state(); - } - - while ( 1 ) /* loops until end-of-file is reached */ - { - yy_cp = yy_c_buf_p; - - /* Support of yytext. */ - *yy_cp = yy_hold_char; - - /* yy_bp points to the position in yy_ch_buf of the start of - * the current run. - */ - yy_bp = yy_cp; - - yy_current_state = yy_start; -yy_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 >= 1089 ) - 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] != 1414 ); - -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: -YY_RULE_SETUP -#line 199 "config.l" - - YY_BREAK -case 2: -YY_RULE_SETUP -#line 200 "config.l" -{ BEGIN(SkipComment); } - YY_BREAK -case 3: -YY_RULE_SETUP -#line 201 "config.l" -{ BEGIN(GetString); s=&Config::projectName; s->resize(0); } - YY_BREAK -case 4: -YY_RULE_SETUP -#line 202 "config.l" -{ BEGIN(GetString); s=&Config::projectNumber; s->resize(0); } - YY_BREAK -case 5: -YY_RULE_SETUP -#line 203 "config.l" -{ BEGIN(GetString); s=&Config::outputDir; s->resize(0); } - YY_BREAK -case 6: -YY_RULE_SETUP -#line 204 "config.l" -{ BEGIN(GetString); s=&Config::htmlOutputDir; s->resize(0); } - YY_BREAK -case 7: -YY_RULE_SETUP -#line 205 "config.l" -{ BEGIN(GetString); s=&Config::manOutputDir; s->resize(0); } - YY_BREAK -case 8: -YY_RULE_SETUP -#line 206 "config.l" -{ BEGIN(GetString); s=&Config::latexOutputDir; s->resize(0); } - YY_BREAK -case 9: -YY_RULE_SETUP -#line 207 "config.l" -{ BEGIN(GetString); s=&Config::rtfOutputDir; s->resize(0); } - YY_BREAK -case 10: -YY_RULE_SETUP -#line 208 "config.l" -{ BEGIN(GetString); s=&Config::headerFile; s->resize(0); } - YY_BREAK -case 11: -YY_RULE_SETUP -#line 209 "config.l" -{ BEGIN(GetString); s=&Config::footerFile; s->resize(0); } - YY_BREAK -case 12: -YY_RULE_SETUP -#line 210 "config.l" -{ BEGIN(GetString); s=&Config::latexHeaderFile; s->resize(0); } - YY_BREAK -case 13: -YY_RULE_SETUP -#line 211 "config.l" -{ BEGIN(GetString); s=&Config::cgiName; s->resize(0); } - YY_BREAK -case 14: -YY_RULE_SETUP -#line 212 "config.l" -{ BEGIN(GetString); s=&Config::cgiURL; s->resize(0); } - YY_BREAK -case 15: -YY_RULE_SETUP -#line 213 "config.l" -{ BEGIN(GetString); s=&Config::docURL; s->resize(0); } - YY_BREAK -case 16: -YY_RULE_SETUP -#line 214 "config.l" -{ BEGIN(GetString); s=&Config::binAbsPath; s->resize(0); } - YY_BREAK -case 17: -YY_RULE_SETUP -#line 215 "config.l" -{ BEGIN(GetString); s=&Config::docAbsPath; s->resize(0); } - YY_BREAK -case 18: -YY_RULE_SETUP -#line 216 "config.l" -{ BEGIN(GetString); s=&Config::perlPath; s->resize(0); } - YY_BREAK -case 19: -YY_RULE_SETUP -#line 217 "config.l" -{ BEGIN(GetString); s=&Config::genTagFile; s->resize(0); } - YY_BREAK -case 20: -YY_RULE_SETUP -#line 218 "config.l" -{ BEGIN(GetString); s=&Config::inputFilter; s->resize(0); } - YY_BREAK -case 21: -YY_RULE_SETUP -#line 219 "config.l" -{ BEGIN(GetString); s=&Config::paperType; s->resize(0); } - YY_BREAK -case 22: -YY_RULE_SETUP -#line 220 "config.l" -{ BEGIN(GetString); s=&Config::outputLanguage; s->resize(0); } - YY_BREAK -case 23: -YY_RULE_SETUP -#line 221 "config.l" -{ BEGIN(GetString); s=&Config::manExtension; s->resize(0); } - YY_BREAK -case 24: -YY_RULE_SETUP -#line 222 "config.l" -{ BEGIN(GetString); s=&tabSizeString; s->resize(0); } - YY_BREAK -case 25: -YY_RULE_SETUP -#line 223 "config.l" -{ BEGIN(GetString); s=&Config::htmlStyleSheet; s->resize(0); } - YY_BREAK -case 26: -YY_RULE_SETUP -#line 224 "config.l" -{ BEGIN(GetString); s=&colsInAlphaIndexString; s->resize(0); } - YY_BREAK -case 27: -YY_RULE_SETUP -#line 225 "config.l" -{ BEGIN(GetStrList); l=&Config::ignorePrefixList; l->clear(); elemStr=""; } - YY_BREAK -case 28: -YY_RULE_SETUP -#line 226 "config.l" -{ BEGIN(GetStrList); l=&Config::includePath; l->clear(); elemStr=""; } - YY_BREAK -case 29: -YY_RULE_SETUP -#line 227 "config.l" -{ BEGIN(GetStrList); l=&Config::examplePath; l->clear(); elemStr=""; } - YY_BREAK -case 30: -YY_RULE_SETUP -#line 228 "config.l" -{ BEGIN(GetStrList); l=&Config::imagePath; l->clear(); elemStr=""; } - YY_BREAK -case 31: -YY_RULE_SETUP -#line 229 "config.l" -{ BEGIN(GetStrList); l=&Config::inputSources; l->clear(); elemStr=""; } - YY_BREAK -case 32: -YY_RULE_SETUP -#line 230 "config.l" -{ BEGIN(GetStrList); l=&Config::excludeSources; l->clear(); elemStr=""; } - YY_BREAK -case 33: -YY_RULE_SETUP -#line 231 "config.l" -{ BEGIN(GetStrList); l=&Config::filePatternList; l->clear(); elemStr=""; } - YY_BREAK -case 34: -YY_RULE_SETUP -#line 232 "config.l" -{ BEGIN(GetStrList); l=&Config::excludePatternList; l->clear(); elemStr=""; } - YY_BREAK -case 35: -YY_RULE_SETUP -#line 233 "config.l" -{ BEGIN(GetStrList); l=&Config::examplePatternList; l->clear(); elemStr=""; } - YY_BREAK -case 36: -YY_RULE_SETUP -#line 234 "config.l" -{ BEGIN(GetStrList); l=&Config::imagePatternList; l->clear(); elemStr=""; } - YY_BREAK -case 37: -YY_RULE_SETUP -#line 235 "config.l" -{ BEGIN(GetStrList); l=&Config::tagFileList; l->clear(); elemStr=""; } - YY_BREAK -case 38: -YY_RULE_SETUP -#line 236 "config.l" -{ BEGIN(GetStrList); l=&Config::extDocPathList; l->clear(); elemStr=""; } - YY_BREAK -case 39: -YY_RULE_SETUP -#line 237 "config.l" -{ BEGIN(GetStrList); l=&Config::predefined; l->clear(); elemStr=""; } - YY_BREAK -case 40: -YY_RULE_SETUP -#line 238 "config.l" -{ BEGIN(GetStrList); l=&Config::extraPackageList; l->clear(); elemStr=""; } - YY_BREAK -case 41: -YY_RULE_SETUP -#line 239 "config.l" -{ BEGIN(GetStrList); l=&Config::stripFromPath; l->clear(); elemStr=""; } - YY_BREAK -case 42: -YY_RULE_SETUP -#line 240 "config.l" -{ BEGIN(GetBool); b=&Config::quietFlag; } - YY_BREAK -case 43: -YY_RULE_SETUP -#line 241 "config.l" -{ BEGIN(GetBool); b=&Config::warningFlag; } - YY_BREAK -case 44: -YY_RULE_SETUP -#line 242 "config.l" -{ BEGIN(GetBool); b=&Config::recursiveFlag; } - YY_BREAK -case 45: -YY_RULE_SETUP -#line 243 "config.l" -{ BEGIN(GetBool); b=&Config::allExtFlag; } - YY_BREAK -case 46: -YY_RULE_SETUP -#line 244 "config.l" -{ BEGIN(GetBool); b=&Config::searchEngineFlag; } - YY_BREAK -case 47: -YY_RULE_SETUP -#line 245 "config.l" -{ BEGIN(GetBool); b=&Config::extractAllFlag; } - YY_BREAK -case 48: -YY_RULE_SETUP -#line 246 "config.l" -{ BEGIN(GetBool); b=&Config::extractPrivateFlag; } - YY_BREAK -case 49: -YY_RULE_SETUP -#line 247 "config.l" -{ BEGIN(GetBool); b=&Config::noIndexFlag; } - YY_BREAK -case 50: -YY_RULE_SETUP -#line 248 "config.l" -{ BEGIN(GetBool); b=&Config::generateLatex; } - YY_BREAK -case 51: -YY_RULE_SETUP -#line 249 "config.l" -{ BEGIN(GetBool); b=&Config::generateHtml; } - YY_BREAK -case 52: -YY_RULE_SETUP -#line 250 "config.l" -{ BEGIN(GetBool); b=&Config::generateMan; } - YY_BREAK -case 53: -YY_RULE_SETUP -#line 251 "config.l" -{ BEGIN(GetBool); b=&Config::preprocessingFlag; } - YY_BREAK -case 54: -YY_RULE_SETUP -#line 252 "config.l" -{ BEGIN(GetBool); b=&Config::macroExpansionFlag; } - YY_BREAK -case 55: -YY_RULE_SETUP -#line 253 "config.l" -{ BEGIN(GetBool); b=&Config::searchIncludeFlag; } - YY_BREAK -case 56: -YY_RULE_SETUP -#line 254 "config.l" -{ BEGIN(GetBool); b=&Config::briefMemDescFlag; } - YY_BREAK -case 57: -YY_RULE_SETUP -#line 255 "config.l" -{ BEGIN(GetBool); b=&Config::alwaysDetailsFlag; } - YY_BREAK -case 58: -YY_RULE_SETUP -#line 256 "config.l" -{ BEGIN(GetBool); b=&Config::hideMemberFlag; } - YY_BREAK -case 59: -YY_RULE_SETUP -#line 257 "config.l" -{ BEGIN(GetBool); b=&Config::hideClassFlag; } - YY_BREAK -case 60: -YY_RULE_SETUP -#line 258 "config.l" -{ BEGIN(GetBool); b=&Config::onlyPredefinedFlag; } - YY_BREAK -case 61: -YY_RULE_SETUP -#line 259 "config.l" -{ BEGIN(GetBool); b=&Config::fullPathNameFlag; } - YY_BREAK -case 62: -YY_RULE_SETUP -#line 260 "config.l" -{ BEGIN(GetBool); b=&Config::classDiagramFlag; } - YY_BREAK -case 63: -YY_RULE_SETUP -#line 261 "config.l" -{ BEGIN(GetBool); b=&Config::compactLatexFlag; } - YY_BREAK -case 64: -YY_RULE_SETUP -#line 262 "config.l" -{ BEGIN(GetBool); b=&Config::repeatBriefFlag; } - YY_BREAK -case 65: -YY_RULE_SETUP -#line 263 "config.l" -{ BEGIN(GetBool); b=&Config::internalDocsFlag; } - YY_BREAK -case 66: -YY_RULE_SETUP -#line 264 "config.l" -{ BEGIN(GetBool); b=&Config::caseSensitiveNames; } - YY_BREAK -case 67: -YY_RULE_SETUP -#line 265 "config.l" -{ BEGIN(GetBool); b=&Config::verbatimHeaderFlag; } - YY_BREAK -case 68: -YY_RULE_SETUP -#line 266 "config.l" -{ BEGIN(GetBool); b=&Config::htmlAlignMemberFlag; } - YY_BREAK -case 69: -YY_RULE_SETUP -#line 267 "config.l" -{ BEGIN(GetBool); b=&Config::sourceBrowseFlag; } - YY_BREAK -case 70: -YY_RULE_SETUP -#line 268 "config.l" -{ BEGIN(GetBool); b=&Config::autoBriefFlag; } - YY_BREAK -case 71: -YY_RULE_SETUP -#line 269 "config.l" -{ BEGIN(GetBool); b=&Config::htmlHelpFlag; } - YY_BREAK -case 72: -YY_RULE_SETUP -#line 270 "config.l" -{ BEGIN(GetBool); b=&Config::alphaIndexFlag; } - YY_BREAK -case 73: -YY_RULE_SETUP -#line 271 "config.l" -{ BEGIN(GetBool); b=&Config::pdfHyperFlag; } - YY_BREAK -case 74: -YY_RULE_SETUP -#line 272 "config.l" -{ BEGIN(GetBool); b=&Config::inheritDocsFlag; } - YY_BREAK -case 75: -YY_RULE_SETUP -#line 273 "config.l" -{ BEGIN(GetBool); b=&Config::inlineInfoFlag; } - YY_BREAK -case 76: -YY_RULE_SETUP -#line 274 "config.l" -{ BEGIN(GetBool); b=&Config::inlineSourceFlag; } - YY_BREAK -case 77: -YY_RULE_SETUP -#line 275 "config.l" -{ BEGIN(GetBool); b=&Config::haveDotFlag; } - YY_BREAK -case 78: -YY_RULE_SETUP -#line 276 "config.l" -{ BEGIN(GetBool); b=&Config::collGraphFlag; } - YY_BREAK -case 79: -YY_RULE_SETUP -#line 277 "config.l" -{ BEGIN(GetBool); b=&Config::includeGraphFlag; } - YY_BREAK -case 80: -YY_RULE_SETUP -#line 278 "config.l" -{ BEGIN(GetBool); b=&Config::gfxHierarchyFlag; } - YY_BREAK -case 81: -YY_RULE_SETUP -#line 279 "config.l" -{ BEGIN(GetBool); b=&Config::generateRTF; } - YY_BREAK -case 82: -YY_RULE_SETUP -#line 280 "config.l" -{ BEGIN(GetBool); b=&Config::compactRTFFlag; } - YY_BREAK -case 83: -YY_RULE_SETUP -#line 281 "config.l" -{ BEGIN(GetBool); b=&Config::rtfHyperFlag; } - YY_BREAK -case 84: -YY_RULE_SETUP -#line 282 "config.l" -{ BEGIN(GetBool); b=&Config::showIncFileFlag; } - YY_BREAK -case 85: -YY_RULE_SETUP -#line 283 "config.l" -{ BEGIN(GetBool); b=&Config::stripCommentsFlag; } - YY_BREAK -case 86: -YY_RULE_SETUP -#line 284 "config.l" -{ BEGIN(GetBool); b=&Config::sortMembersFlag; } - YY_BREAK -case 87: -YY_RULE_SETUP -#line 285 "config.l" -{ err("Warning: ignoring unknown tag `%s' at line %d\n",yytext,yyLineNr); } - YY_BREAK -case 88: -YY_RULE_SETUP -#line 286 "config.l" -{ yyLineNr++; BEGIN(Start); } - YY_BREAK -case 89: -YY_RULE_SETUP -#line 287 "config.l" -{ - yyLineNr++; - if (!elemStr.isEmpty()) - { - //printf("elemStr1=`%s'\n",elemStr.data()); - l->append(elemStr); - } - BEGIN(Start); - } - YY_BREAK -case 90: -YY_RULE_SETUP -#line 296 "config.l" -{ - if (!elemStr.isEmpty()) - { - //printf("elemStr2=`%s'\n",elemStr.data()); - l->append(elemStr); - } - elemStr.resize(0); - } - YY_BREAK -case 91: -YY_RULE_SETUP -#line 304 "config.l" -{ (*s)+=yytext; } - YY_BREAK -case 92: -YY_RULE_SETUP -#line 305 "config.l" -{ lastState=YY_START; - BEGIN(GetQuotedString); - tmpString.resize(0); - } - YY_BREAK -case 93: -YY_RULE_SETUP -#line 309 "config.l" -{ - //printf(">> Enter env\n"); - lastEnvState=YY_START; - BEGIN(GetEnvVar); - } - YY_BREAK -case 94: -YY_RULE_SETUP -#line 314 "config.l" -{ - yytext[yyleng-1]='\0'; - const char *env=getenv(yytext); - int i; - int l=strlen(env); - //printf("env name=`%s' text=`%s'\n",yytext,env); - for (i=l-1;i>=0;i--) unput(env[i]); - BEGIN(lastEnvState); - } - YY_BREAK -case 95: -YY_RULE_SETUP -#line 323 "config.l" -{ - //printf("Quoted String = `%s'\n",tmpString.data()); - if (lastState==GetString) - (*s)+=tmpString; - else - elemStr+=tmpString; - if (*yytext=='\n') - { - err("Warning: Missing end quote (\") on line %d\n",yyLineNr); - yyLineNr++; - } - BEGIN(lastState); - } - YY_BREAK -case 96: -YY_RULE_SETUP -#line 336 "config.l" -{ - tmpString+='"'; - } - YY_BREAK -case 97: -YY_RULE_SETUP -#line 339 "config.l" -{ tmpString+=*yytext; } - YY_BREAK -case 98: -YY_RULE_SETUP -#line 340 "config.l" -{ - QCString bs=yytext; - bs=bs.upper(); - if (bs=="YES") - *b=TRUE; - else if (bs=="NO") - *b=FALSE; - else - { - *b=FALSE; - warn("Warning: Invalid value `%s' for " - "boolean tag in line %d; use YES or NO\n", - bs.data(),yyLineNr); - } - } - YY_BREAK -case 99: -YY_RULE_SETUP -#line 355 "config.l" -{ - elemStr+=yytext; - } - YY_BREAK -case 100: -YY_RULE_SETUP -#line 358 "config.l" -{ yyLineNr++; BEGIN(Start); } - YY_BREAK -case 101: -YY_RULE_SETUP -#line 359 "config.l" -{ yyLineNr++; BEGIN(Start); } - YY_BREAK -case 102: -YY_RULE_SETUP -#line 360 "config.l" -{ yyLineNr++; } - YY_BREAK -case 103: -YY_RULE_SETUP -#line 361 "config.l" - - YY_BREAK -case 104: -YY_RULE_SETUP -#line 362 "config.l" -{ yyLineNr++ ; } - YY_BREAK -case 105: -YY_RULE_SETUP -#line 364 "config.l" -ECHO; - YY_BREAK -case YY_STATE_EOF(INITIAL): -case YY_STATE_EOF(Start): -case YY_STATE_EOF(SkipComment): -case YY_STATE_EOF(GetString): -case YY_STATE_EOF(GetBool): -case YY_STATE_EOF(GetStrList): -case YY_STATE_EOF(GetQuotedString): -case YY_STATE_EOF(GetEnvVar): - 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->yy_buffer_status == YY_BUFFER_NEW ) - { - /* We're scanning a new file or input source. It's - * possible that this happened because the user - * just pointed yyin at a new source and called - * yylex(). If so, then we have to assure - * consistency between yy_current_buffer and our - * globals. Here is the right place to do so, because - * this is the first action (other than possibly a - * back-up) that will match for the new input source. - */ - yy_n_chars = yy_current_buffer->yy_n_chars; - yy_current_buffer->yy_input_file = yyin; - yy_current_buffer->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->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 ( yywrap() ) - { - /* Note: because we've taken care in - * yy_get_next_buffer() to have set up - * yytext, we can now set up - * yy_c_buf_p so that if some total - * hoser (like flex itself) wants to - * call the scanner after we return the - * YY_NULL, it'll still work - another - * YY_NULL will get returned. - */ - yy_c_buf_p = yytext_ptr + YY_MORE_ADJ; - - yy_act = YY_STATE_EOF(YY_START); - goto do_action; - } - - else - { - if ( ! yy_did_buffer_switch_on_eof ) - YY_NEW_FILE; - } - break; - } - - case EOB_ACT_CONTINUE_SCAN: - yy_c_buf_p = - yytext_ptr + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state(); - - yy_cp = yy_c_buf_p; - yy_bp = yytext_ptr + YY_MORE_ADJ; - goto yy_match; - - case EOB_ACT_LAST_MATCH: - yy_c_buf_p = - &yy_current_buffer->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 yylex */ - - -/* yy_get_next_buffer - try to read in a new buffer - * - * Returns a code representing an action: - * EOB_ACT_LAST_MATCH - - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position - * EOB_ACT_END_OF_FILE - end of file - */ - -static int yy_get_next_buffer() - { - register char *dest = yy_current_buffer->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->yy_ch_buf[yy_n_chars + 1] ) - YY_FATAL_ERROR( - "fatal flex scanner internal error--end of buffer missed" ); - - if ( yy_current_buffer->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->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->yy_n_chars = yy_n_chars = 0; - - else - { - int num_to_read = - yy_current_buffer->yy_buf_size - number_to_move - 1; - - while ( num_to_read <= 0 ) - { /* Not enough room in the buffer - grow it. */ -#ifdef YY_USES_REJECT - YY_FATAL_ERROR( -"input buffer overflow, can't enlarge buffer because scanner uses REJECT" ); -#else - - /* 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. */ - yy_flex_realloc( (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->yy_buf_size - - number_to_move - 1; -#endif - } - - if ( num_to_read > YY_READ_BUF_SIZE ) - num_to_read = YY_READ_BUF_SIZE; - - /* Read in more data. */ - YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]), - yy_n_chars, num_to_read ); - - yy_current_buffer->yy_n_chars = yy_n_chars; - } - - if ( yy_n_chars == 0 ) - { - if ( number_to_move == YY_MORE_ADJ ) - { - ret_val = EOB_ACT_END_OF_FILE; - yyrestart( yyin ); - } - - else - { - ret_val = EOB_ACT_LAST_MATCH; - yy_current_buffer->yy_buffer_status = - YY_BUFFER_EOF_PENDING; - } - } - - else - ret_val = EOB_ACT_CONTINUE_SCAN; - - yy_n_chars += number_to_move; - yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR; - yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; - - yytext_ptr = &yy_current_buffer->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() - { - 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)] : 44); - 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 >= 1089 ) - 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 ); - */ - -#ifdef YY_USE_PROTOS -static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state ) -#else -static yy_state_type yy_try_NUL_trans( yy_current_state ) -yy_state_type yy_current_state; -#endif - { - register int yy_is_jam; - register char *yy_cp = yy_c_buf_p; - - register YY_CHAR yy_c = 44; - 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 >= 1089 ) - 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 == 1088); - - return yy_is_jam ? 0 : yy_current_state; - } - - -#ifndef YY_NO_UNPUT -#ifdef YY_USE_PROTOS -static void yyunput( int c, register char *yy_bp ) -#else -static void yyunput( c, yy_bp ) -int c; -register char *yy_bp; -#endif - { - register char *yy_cp = yy_c_buf_p; - - /* undo effects of setting up yytext */ - *yy_cp = yy_hold_char; - - if ( yy_cp < yy_current_buffer->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->yy_ch_buf[ - yy_current_buffer->yy_buf_size + 2]; - register char *source = - &yy_current_buffer->yy_ch_buf[number_to_move]; - - while ( source > yy_current_buffer->yy_ch_buf ) - *--dest = *--source; - - yy_cp += (int) (dest - source); - yy_bp += (int) (dest - source); - yy_current_buffer->yy_n_chars = - yy_n_chars = yy_current_buffer->yy_buf_size; - - if ( yy_cp < yy_current_buffer->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; - } -#endif /* ifndef YY_NO_UNPUT */ - - -#ifdef __cplusplus -static int yyinput() -#else -static int input() -#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->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. */ - yyrestart( yyin ); - - /* fall through */ - - case EOB_ACT_END_OF_FILE: - { - if ( yywrap() ) - 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 yytext */ - yy_hold_char = *++yy_c_buf_p; - - - return c; - } - - -#ifdef YY_USE_PROTOS -void yyrestart( FILE *input_file ) -#else -void yyrestart( input_file ) -FILE *input_file; -#endif - { - if ( ! yy_current_buffer ) - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); - - yy_init_buffer( yy_current_buffer, input_file ); - yy_load_buffer_state(); - } - - -#ifdef YY_USE_PROTOS -void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer ) -#else -void yy_switch_to_buffer( new_buffer ) -YY_BUFFER_STATE new_buffer; -#endif - { - 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->yy_buf_pos = yy_c_buf_p; - yy_current_buffer->yy_n_chars = yy_n_chars; - } - - yy_current_buffer = new_buffer; - yy_load_buffer_state(); - - /* We don't actually know whether we did this switch during - * EOF (yywrap()) processing, but the only time this flag - * is looked at is after yywrap() is called, so it's safe - * to go ahead and always set it. - */ - yy_did_buffer_switch_on_eof = 1; - } - - -#ifdef YY_USE_PROTOS -void yy_load_buffer_state( void ) -#else -void yy_load_buffer_state() -#endif - { - yy_n_chars = yy_current_buffer->yy_n_chars; - yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos; - yyin = yy_current_buffer->yy_input_file; - yy_hold_char = *yy_c_buf_p; - } - - -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_create_buffer( FILE *file, int size ) -#else -YY_BUFFER_STATE yy_create_buffer( file, size ) -FILE *file; -int size; -#endif - { - YY_BUFFER_STATE b; - - b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_buf_size = size; - - /* yy_ch_buf has to be 2 characters longer than the size given because - * we need to put in 2 end-of-buffer characters. - */ - b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 ); - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_is_our_buffer = 1; - - yy_init_buffer( b, file ); - - return b; - } - - -#ifdef YY_USE_PROTOS -void yy_delete_buffer( YY_BUFFER_STATE b ) -#else -void yy_delete_buffer( b ) -YY_BUFFER_STATE b; -#endif - { - if ( ! b ) - return; - - if ( b == yy_current_buffer ) - yy_current_buffer = (YY_BUFFER_STATE) 0; - - if ( b->yy_is_our_buffer ) - yy_flex_free( (void *) b->yy_ch_buf ); - - yy_flex_free( (void *) b ); - } - - -#ifndef YY_ALWAYS_INTERACTIVE -#ifndef YY_NEVER_INTERACTIVE -extern int isatty YY_PROTO(( int )); -#endif -#endif - -#ifdef YY_USE_PROTOS -void yy_init_buffer( YY_BUFFER_STATE b, FILE *file ) -#else -void yy_init_buffer( b, file ) -YY_BUFFER_STATE b; -FILE *file; -#endif - - - { - yy_flush_buffer( b ); - - b->yy_input_file = file; - b->yy_fill_buffer = 1; - -#if YY_ALWAYS_INTERACTIVE - b->yy_is_interactive = 1; -#else -#if YY_NEVER_INTERACTIVE - b->yy_is_interactive = 0; -#else - b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; -#endif -#endif - } - - -#ifdef YY_USE_PROTOS -void yy_flush_buffer( YY_BUFFER_STATE b ) -#else -void yy_flush_buffer( b ) -YY_BUFFER_STATE b; -#endif - - { - if ( ! b ) - return; - - b->yy_n_chars = 0; - - /* We always need two end-of-buffer characters. The first causes - * a transition to the end-of-buffer state. The second causes - * a jam in that state. - */ - b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; - b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; - - b->yy_buf_pos = &b->yy_ch_buf[0]; - - b->yy_at_bol = 1; - b->yy_buffer_status = YY_BUFFER_NEW; - - if ( b == yy_current_buffer ) - yy_load_buffer_state(); - } - - -#ifndef YY_NO_SCAN_BUFFER -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size ) -#else -YY_BUFFER_STATE yy_scan_buffer( base, size ) -char *base; -yy_size_t size; -#endif - { - 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) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_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; - - yy_switch_to_buffer( b ); - - return b; - } -#endif - - -#ifndef YY_NO_SCAN_STRING -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str ) -#else -YY_BUFFER_STATE yy_scan_string( yy_str ) -yyconst char *yy_str; -#endif - { - int len; - for ( len = 0; yy_str[len]; ++len ) - ; - - return yy_scan_bytes( yy_str, len ); - } -#endif - - -#ifndef YY_NO_SCAN_BYTES -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len ) -#else -YY_BUFFER_STATE yy_scan_bytes( bytes, len ) -yyconst char *bytes; -int len; -#endif - { - YY_BUFFER_STATE b; - char *buf; - yy_size_t n; - int i; - - /* Get memory for full buffer, including space for trailing EOB's. */ - n = len + 2; - buf = (char *) yy_flex_alloc( n ); - if ( ! buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); - - for ( i = 0; i < len; ++i ) - buf[i] = bytes[i]; - - buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR; - - b = yy_scan_buffer( buf, n ); - if ( ! b ) - YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); - - /* It's okay to grow etc. this buffer, and we should throw it - * away when we're done. - */ - b->yy_is_our_buffer = 1; - - return b; - } -#endif - - -#ifndef YY_NO_PUSH_STATE -#ifdef YY_USE_PROTOS -static void yy_push_state( int new_state ) -#else -static void yy_push_state( new_state ) -int new_state; -#endif - { - if ( yy_start_stack_ptr >= yy_start_stack_depth ) - { - yy_size_t new_size; - - yy_start_stack_depth += YY_START_STACK_INCR; - new_size = yy_start_stack_depth * sizeof( int ); - - if ( ! yy_start_stack ) - yy_start_stack = (int *) yy_flex_alloc( new_size ); - - else - yy_start_stack = (int *) yy_flex_realloc( - (void *) yy_start_stack, new_size ); - - if ( ! yy_start_stack ) - YY_FATAL_ERROR( - "out of memory expanding start-condition stack" ); - } - - yy_start_stack[yy_start_stack_ptr++] = YY_START; - - BEGIN(new_state); - } -#endif - - -#ifndef YY_NO_POP_STATE -static void yy_pop_state() - { - if ( --yy_start_stack_ptr < 0 ) - YY_FATAL_ERROR( "start-condition stack underflow" ); - - BEGIN(yy_start_stack[yy_start_stack_ptr]); - } -#endif - - -#ifndef YY_NO_TOP_STATE -static int yy_top_state() - { - return yy_start_stack[yy_start_stack_ptr - 1]; - } -#endif - -#ifndef YY_EXIT_FAILURE -#define YY_EXIT_FAILURE 2 -#endif - -#ifdef YY_USE_PROTOS -static void yy_fatal_error( yyconst char msg[] ) -#else -static void yy_fatal_error( msg ) -char msg[]; -#endif - { - (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 yytext. */ \ - yytext[yyleng] = yy_hold_char; \ - yy_c_buf_p = yytext + n; \ - yy_hold_char = *yy_c_buf_p; \ - *yy_c_buf_p = '\0'; \ - yyleng = n; \ - } \ - while ( 0 ) - - -/* Internal utility routines. */ - -#ifndef yytext_ptr -#ifdef YY_USE_PROTOS -static void yy_flex_strncpy( char *s1, yyconst char *s2, int n ) -#else -static void yy_flex_strncpy( s1, s2, n ) -char *s1; -yyconst char *s2; -int n; -#endif - { - register int i; - for ( i = 0; i < n; ++i ) - s1[i] = s2[i]; - } -#endif - -#ifdef YY_NEED_STRLEN -#ifdef YY_USE_PROTOS -static int yy_flex_strlen( yyconst char *s ) -#else -static int yy_flex_strlen( s ) -yyconst char *s; -#endif - { - register int n; - for ( n = 0; s[n]; ++n ) - ; - - return n; - } -#endif - - -#ifdef YY_USE_PROTOS -static void *yy_flex_alloc( yy_size_t size ) -#else -static void *yy_flex_alloc( size ) -yy_size_t size; -#endif - { - return (void *) malloc( size ); - } - -#ifdef YY_USE_PROTOS -static void *yy_flex_realloc( void *ptr, yy_size_t size ) -#else -static void *yy_flex_realloc( ptr, size ) -void *ptr; -yy_size_t size; -#endif - { - /* 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 ); - } - -#ifdef YY_USE_PROTOS -static void yy_flex_free( void *ptr ) -#else -static void yy_flex_free( ptr ) -void *ptr; -#endif - { - free( ptr ); - } - -#if YY_MAIN -int main() - { - yylex(); - return 0; - } -#endif -#line 364 "config.l" - - -/*@ ---------------------------------------------------------------------------- - */ - - -void dumpConfig() -{ - printf("projectName=`%s'\n",Config::projectName.data()); - printf("outputDir=`%s'\n", Config::outputDir.data()); - printf("headerFile=`%s'\n", Config::headerFile.data()); - printf("footerFile=`%s'\n", Config::footerFile.data()); - char *ip=Config::includePath.first(); - while (ip) - { - printf("includePath=`%s'\n",ip); - ip=Config::includePath.next(); - } - printf("quiet=`%d'\n", Config::quietFlag); - printf("warnings=`%d'\n", Config::warningFlag); - char *is=Config::inputSources.first(); - while (is) - { - printf("inputSources=`%s'\n",is); - is=Config::inputSources.next(); - } - char *fp=Config::filePatternList.first(); - while (fp) - { - printf("filePattern=`%s'\n",fp); - fp=Config::filePatternList.next(); - } - printf("recusive=`%d'\n",Config::recursiveFlag); - printf("inputFilter=`%s'\n",Config::inputFilter.data()); - char *tf=Config::tagFileList.first(); - while (tf) - { - printf("tagFile=`%s'\n",tf); - tf=Config::tagFileList.next(); - } - printf("allExternals=`%d'\n",Config::allExtFlag); - printf("searchEngine=`%d'\n",Config::searchEngineFlag); - printf("cgiName=`%s'\n",Config::cgiName.data()); - printf("cgiURL=`%s'\n",Config::cgiURL.data()); - printf("docURL=`%s'\n",Config::docURL.data()); - printf("binAbsPath=`%s'\n",Config::binAbsPath.data()); - char *ed=Config::extDocPathList.first(); - while (ed) - { - printf("binAbsPathFile=`%s'\n",ed); - ed=Config::extDocPathList.next(); - } -} - -void Config::init() -{ - Config::projectName.resize(0); - Config::projectNumber.resize(0); - Config::outputDir.resize(0); - Config::htmlOutputDir = "html"; - Config::latexOutputDir ="latex"; - Config::manOutputDir ="man"; - Config::rtfOutputDir = "rtf"; - Config::outputLanguage = "English"; - Config::headerFile.resize(0); - Config::latexHeaderFile.resize(0); - Config::footerFile.resize(0); - Config::cgiName = "search.cgi"; - Config::cgiURL.resize(0); - Config::docURL.resize(0); - Config::binAbsPath = "/usr/local/bin/"; - Config::docAbsPath.resize(0); - Config::perlPath = "/usr/bin/perl"; - Config::genTagFile.resize(0); - Config::inputFilter.resize(0); - Config::paperType = "a4wide"; - Config::manExtension = ".3"; - Config::htmlStyleSheet.resize(0); - Config::ignorePrefixList.clear(); - Config::includePath.clear(); - Config::examplePath.clear(); - Config::imagePath.clear(); - Config::inputSources.clear(); - Config::excludeSources.clear(); - Config::filePatternList.clear(); - Config::examplePatternList.clear(); - Config::imagePatternList.clear(); - Config::excludePatternList.clear(); - Config::tagFileList.clear(); - Config::extDocPathList.clear(); - Config::predefined.clear(); - Config::extraPackageList.clear(); - Config::stripFromPath.clear(); - Config::tabSize=8; - Config::colsInAlphaIndex=5; - Config::quietFlag = FALSE; - Config::recursiveFlag = FALSE; - Config::allExtFlag = FALSE; - Config::searchEngineFlag = FALSE; - Config::extractAllFlag = FALSE; - Config::extractPrivateFlag = FALSE; - Config::noIndexFlag = FALSE; - Config::hideMemberFlag = FALSE; - Config::hideClassFlag = FALSE; - Config::macroExpansionFlag = FALSE; - Config::onlyPredefinedFlag = FALSE; - Config::fullPathNameFlag = FALSE; - Config::compactLatexFlag = FALSE; - Config::internalDocsFlag = FALSE; - Config::caseSensitiveNames = FALSE; - Config::sourceBrowseFlag = FALSE; - Config::htmlHelpFlag = FALSE; - Config::alphaIndexFlag = FALSE; - Config::pdfHyperFlag = FALSE; - Config::alwaysDetailsFlag = FALSE; - Config::inlineSourceFlag = FALSE; - Config::haveDotFlag = FALSE; - Config::compactRTFFlag = FALSE; - Config::rtfHyperFlag = FALSE; - Config::warningFlag = TRUE; - Config::generateHtml = TRUE; - Config::generateLatex = TRUE; - Config::generateMan = TRUE; - Config::generateRTF = FALSE; - Config::preprocessingFlag = TRUE; - Config::briefMemDescFlag = TRUE; - Config::searchIncludeFlag = TRUE; - Config::classDiagramFlag = TRUE; - Config::repeatBriefFlag = TRUE; - Config::verbatimHeaderFlag = TRUE; - Config::htmlAlignMemberFlag = TRUE; - Config::autoBriefFlag = TRUE; - Config::inheritDocsFlag = TRUE; - Config::inlineInfoFlag = TRUE; - Config::collGraphFlag = TRUE; - Config::includeGraphFlag = TRUE; - Config::gfxHierarchyFlag = TRUE; - Config::showIncFileFlag = TRUE; - Config::stripCommentsFlag = TRUE; - Config::sortMembersFlag = TRUE; -} - -void writeTemplateConfig(QFile *f,bool sl) -{ - QTextStream t(f); -#ifdef DOXYWIZARD - t << "# Doxygen configuration generated by Doxywizard version " << versionString << endl; -#else - t << "# Doxyfile " << versionString << endl << endl; -#endif - if (!sl) - { - t << "# This file describes the settings to be used by doxygen for a project\n"; - t << "#\n"; - t << "# All text after a hash (#) is considered a comment and will be ignored\n"; - t << "# The format is:\n"; - t << "# TAG = value [value, ...]\n"; - t << "# Values that contain spaces should be placed between quotes (\" \")\n"; - t << "\n"; - } - t << "#---------------------------------------------------------------------------\n"; - t << "# General configuration options\n"; - t << "#---------------------------------------------------------------------------\n"; - if (!sl) - { - t << "\n"; - t << "# The PROJECT_NAME tag is a single word (or a sequence of word surrounded\n"; - t << "# by quotes) that should identify the project. \n"; - t << "\n"; - } - t << "PROJECT_NAME =\n"; - if (!sl) - { - t << "\n"; - t << "# The PROJECT_NUMBER tag can be used to enter a project or revision number.\n" ; - t << "# This could be handy for archiving the generated documentation or \n"; - t << "# if some version control system is used.\n"; - t << "\n"; - } - t << "PROJECT_NUMBER =\n"; - if (!sl) - { - t << "\n"; - t << "# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) \n"; - t << "# base path where the generated documentation will be put. \n"; - t << "# If a relative path is entered, it will be relative to the location \n"; - t << "# where doxygen was started. If left blank the current directory will be used.\n"; - t << "\n"; - } - t << "OUTPUT_DIRECTORY =\n"; - if (!sl) - { - t << "\n"; - t << "# The OUTPUT_LANGUAGE tag is used to specify the language in which all\n"; - t << "# documentation generated by doxygen is written. Doxygen will use this\n"; - t << "# information to generate all constant output in the proper language.\n"; - t << "# The default language is English, other supported languages are: \n"; - t << "# Dutch, French, Italian, Czech, Swedish, German and Japanese\n"; - t << "\n"; - } - t << "OUTPUT_LANGUAGE = English\n"; - if (!sl) - { - t << "\n"; - t << "# The QUIET tag can be used to turn on/off the messages that are generated\n"; - t << "# by doxygen. Possible values are YES and NO. If left blank NO is used.\n"; - t << "\n"; - } - t << "QUIET = NO\n"; - if (!sl) - { - t << "\n"; - t << "# The WARNINGS tag can be used to turn on/off the warning messages that are\n"; - t << "# generated by doxygen. Possible values are YES and NO. If left blank\n"; - t << "# NO is used.\n"; - t << "\n"; - } - t << "WARNINGS = YES\n"; - if (!sl) - { - t << "\n"; - t << "# The DISABLE_INDEX tag can be used to turn on/off the condensed index at\n"; - t << "# top of each HTML page. The value NO (the default) enables the index and\n"; - t << "# the value YES disables it.\n"; - t << "\n"; - } - t << "DISABLE_INDEX = NO\n"; - if (!sl) - { - t << "\n"; - t << "# If the EXTRACT_ALL tag is set to YES all classes and functions will be\n"; - t << "# included in the documentation, even if no documentation was available.\n"; - t << "\n"; - } - t << "EXTRACT_ALL = NO\n"; - if (!sl) - { - t << "\n"; - t << "# If the EXTRACT_PRIVATE tag is set to YES all private members of a class\n"; - t << "# will be included in the documentation.\n"; - t << "\n"; - } - t << "EXTRACT_PRIVATE = NO\n"; - if (!sl) - { - t << "\n"; - t << "# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all\n"; - t << "# undocumented members inside documented classes or files.\n"; - t << "\n"; - } - t << "HIDE_UNDOC_MEMBERS = NO\n"; - if (!sl) - { - t << "\n"; - t << "# If the HIDE_UNDOC_CLASSESS tag is set to YES, Doxygen will hide all\n"; - t << "# undocumented classes.\n"; - t << "\n"; - } - t << "HIDE_UNDOC_CLASSES = NO\n"; - if (!sl) - { - t << "\n"; - t << "# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will\n"; - t << "# include brief member descriptions after the members that are listed in \n"; - t << "# the file and class documentation (similar to JavaDoc).\n"; - t << "# Set to NO to disable this.\n"; - t << "\n"; - } - t << "BRIEF_MEMBER_DESC = YES\n"; - if (!sl) - { - t << "\n"; - t << "# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend\n"; - t << "# the brief description of a member or function before the detailed description.\n"; - t << "# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the \n"; - t << "# brief descriptions will be completely suppressed.\n"; - t << "\n"; - } - t << "REPEAT_BRIEF = YES\n"; - if (!sl) - { - t <<"\n"; - t << "# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then\n"; - t << "# Doxygen will generate a detailed section even if there is only a brief\n"; - t << "# description.\n"; - t <<"\n"; - } - t << "ALWAYS_DETAILED_SEC = NO\n"; - if (!sl) - { - t << "\n"; - t << "# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full\n"; - t << "# path before files name in the file list and in the header files. If set\n" ; - t << "# to NO the shortest path that makes the file name unique will be used.\n"; - t << "\n"; - } - t << "FULL_PATH_NAMES = NO\n"; - if (!sl) - { - t << "\n"; - t << "# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag\n"; - t << "# can be used to strip a user defined part of the path. Stripping is\n" ; - t << "# only done if one of the specified strings matches the left-hand part of\n"; - t << "# the path.\n"; - t << "\n"; - } - t << "STRIP_FROM_PATH =\n"; - if (!sl) - { - t << "\n"; - t << "# The INTERNAL_DOCS tag determines if documentation\n"; - t << "# that is typed after a \\internal command is included. If the tag is set \n"; - t << "# to NO (the default) then the documentation will be excluded.\n"; - t << "# Set it to YES to include the internal documentation.\n"; - t << "\n"; - } - t << "INTERNAL_DOCS = NO\n"; - if (!sl) - { - t << "\n"; - t << "# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will\n"; - t << "# generate a class diagram (in Html and LaTeX) for classes with base or\n"; - t << "# super classes. Setting the tag to NO turns the diagrams off.\n"; - t << "\n"; - } - t << "CLASS_DIAGRAMS = YES\n"; - if (!sl) - { - t << "\n"; - t << "# If the SOURCE_BROWSER tag is set to YES then a list of source files will\n"; - t << "# be generated. Documented entities will be cross-referenced with these sources.\n"; - t << "\n"; - } - t << "SOURCE_BROWSER = NO\n"; - if (!sl) - { - t << "\n"; - t << "# Setting the INLINE_SOURCES tag to YES will include the body\n"; - t << "# of functions and classes directly in the documentation.\n"; - t << "\n"; - } - t << "INLINE_SOURCES = NO\n"; - if (!sl) - { - t << "\n"; - t << "# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct\n"; - t << "# doxygen to hide any special comment blocks from generated source code\n"; - t << "# fragments. Normal C and C++ comments will always remain visible.\n"; - t << "\n"; - } - t << "STRIP_CODE_COMMENTS = YES\n"; - if (!sl) - { - t << "\n"; - t << "# If the CASE_SENSE_NAMES tag is set to NO (the default) then Doxygen\n"; - t << "# will only generate file names in lower case letters. If set to\n"; - t << "# YES upper case letters are also allowed. This is useful if you have\n"; - t << "# classes or files whose names only differ in case and if your file system\n"; - t << "# supports case sensitive file names.\n"; - t << "\n"; - } - t << "CASE_SENSE_NAMES = NO\n"; - if (!sl) - { - t << "\n"; - t << "# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen\n"; - t << "# will generate a verbatim copy of the header file for each class for\n"; - t << "# which an include is specified. Set to NO to disable this.\n"; - t << "\n"; - } - t << "VERBATIM_HEADERS = YES\n"; - if (!sl) - { - t << "\n"; - t << "# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen\n"; - t << "# will put list of the files that are included by a file in the documentation\n"; - t << "# of that file.\n"; - t << "\n"; - } - t << "SHOW_INCLUDE_FILES = YES\n"; - if (!sl) - { - t << "\n"; - t << "# If the JAVADOC_AUTOBRIEF tag is set to YES (the default) then Doxygen\n"; - t << "# will interpret the first line (until the first dot) of a JavaDoc-style\n"; - t << "# comment as the brief description. If set to NO, the Javadoc-style will\n"; - t << "# behave just like the Qt-style comments.\n"; - t << "\n"; - } - t << "JAVADOC_AUTOBRIEF = YES\n"; - if (!sl) - { - t << "\n"; - t << "# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented\n"; - t << "# member inherits the documentation from any documented member that it\n"; - t << "# reimplements.\n"; - t << "\n"; - } - t << "INHERIT_DOCS = YES\n"; - if (!sl) - { - t << "\n"; - t << "# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]\n"; - t << "# is inserted in the documentation for inline members.\n"; - t << "\n"; - } - t << "INLINE_INFO = YES\n"; - if (!sl) - { - t << "\n"; - t << "# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen\n"; - t << "# will sort the (detailed) documentation of file and class members \n"; - t << "# alphabetically by member name. If set to NO the members will appear in\n"; - t << "# declaration order.\n"; - t << "\n"; - } - t << "SORT_MEMBER_DOCS = YES\n"; - if (!sl) - { - t << "\n"; - t << "# The TAB_SIZE tag can be used to set the number of spaces in a tab.\n"; - t << "# Doxygen uses this value to replace tabs by spaces in code fragments.\n"; - t << "\n"; - } - t << "TAB_SIZE = 8\n"; - if (!sl) - { - t << "\n"; - } - t << "#---------------------------------------------------------------------------\n"; - t << "# configuration options related to the input files\n"; - t << "#---------------------------------------------------------------------------\n"; - if (!sl) - { - t << "\n"; - t << "# The INPUT tag can be used to specify the files and/or directories that contain \n"; - t << "# documented source files. You may enter file names like \"myfile.cpp\" or \n"; - t << "# directories like \"/usr/src/myproject\". Separate the files or directories \n"; - t << "# with spaces.\n"; - t << "\n"; - } - t << "INPUT =\n"; - if (!sl) - { - t << "\n"; - t << "# If the value of the INPUT tag contains directories, you can use the \n"; - t << "# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp \n"; - t << "# and *.h) to filter out the source-files in the directories. If left \n"; - t << "# blank all files are included.\n"; - t << "\n"; - } - t << "FILE_PATTERNS =\n"; - if (!sl) - { - t << "\n"; - t << "# The RECURSIVE tag can be used to turn specify whether or not subdirectories\n"; - t << "# should be searched for input files as well. Possible values are YES and NO.\n"; - t << "# If left blank NO is used.\n"; - t << "\n"; - } - t << "RECURSIVE = NO\n"; - if (!sl) - { - t << "\n"; - t << "# The EXCLUDE tag can be used to specify files and/or directories that should\n"; - t << "# excluded from the INPUT source files. This way you can easily exclude a \n"; - t << "# subdirectory from a directory tree whose root is specified with the INPUT tag.\n"; - t << "\n"; - } - t << "EXCLUDE =\n"; - if (!sl) - { - t << "\n"; - t << "# If the value of the INPUT tag contains directories, you can use the\n"; - t << "# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude\n"; - t << "# certain files from those directories.\n"; - t << "\n"; - } - t << "EXCLUDE_PATTERNS =\n"; - if (!sl) - { - t << "\n"; - t << "# The EXAMPLE_PATH tag can be used to specify one or more files or \n"; - t << "# directories that contain example code fragments that are included (see \n"; - t << "# the \\include command).\n"; - t << "\n"; - } - t << "EXAMPLE_PATH =\n"; - if (!sl) - { - t << "\n"; - t << "# If the value of the EXAMPLE_PATH tag contains directories, you can use the\n"; - t << "# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp \n"; - t << "# and *.h) to filter out the source-files in the directories. If left \n"; - t << "# blank all files are included.\n"; - t << "\n"; - } - t << "EXAMPLE_PATTERNS =\n"; - - if (!sl) - { - t << "\n"; - t << "# The IMAGE_PATH tag can be used to specify one or more files or \n"; - t << "# directories that contain image that are included in the documentation (see \n"; - t << "# the \\image command).\n"; - t << "\n"; - } - t << "IMAGE_PATH =\n"; - if (!sl) - { - t << "\n"; - t << "# The INPUT_FILTER tag can be used to specify a program that doxygen should\n"; - t << "# invoke to filter for each input file. Doxygen will invoke the filter program \n"; - t << "# by executing (via popen()) the command , where \n"; - t << "# is the value of the INPUT_FILTER tag, and is the name of an\n"; - t << "# input file. Doxygen will then use the output that the filter program writes\n"; - t << "# to standard output.\n"; - t << "\n"; - } - t << "INPUT_FILTER =\n"; - if (!sl) - { - t << "\n"; - } - t << "#---------------------------------------------------------------------------\n"; - t << "# configuration options related to the HTML output\n"; - t << "#---------------------------------------------------------------------------\n"; - if (!sl) - { - t << "\n"; - t << "# If the GENERATE_HTML tag is set to YES (the default) Doxygen will\n"; - t << "# generate HTML output\n"; - t << "\n"; - } - t << "GENERATE_HTML = YES\n"; - if (!sl) - { - t << "\n"; - t << "# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.\n"; - t << "# If a relative path is entered the value of OUTPUT_DIRECTORY will be\n"; - t << "# put in front of it. If left blank `html' will be used as the default path.\n"; - t << "\n"; - } - t << "HTML_OUTPUT =\n"; - if (!sl) - { - t << "\n"; - t << "# The HTML_HEADER tag can be used to specify a personal HTML header for \n"; - t << "# each generated HTML page. If it is left blank doxygen will generate a \n"; - t << "# standard header.\n"; - t << "\n"; - } - t << "HTML_HEADER =\n"; - if (!sl) - { - t << "\n"; - t << "# The HTML_FOOTER tag can be used to specify a personal HTML footer for \n"; - t << "# each generated HTML page. If it is left blank doxygen will generate a \n"; - t << "# standard footer.\n"; - t << "\n"; - } - t << "HTML_FOOTER =\n"; - if (!sl) - { - t << "\n"; - t << "# The HTML_STYLESHEET tag can be used to specify a user defined cascading\n"; - t << "# style sheet that is used by each HTML page. It can be used to \n"; - t << "# fine-tune the look of the HTML output. If the tag is left blank doxygen\n"; - t << "# will generate a default style sheet\n"; - t << "\n"; - } - t << "HTML_STYLESHEET =\n"; - if (!sl) - { - t << "\n"; - t << "# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,\n"; - t << "# files or namespaces will be aligned in HTML using tables. If set to\n"; - t << "# NO a bullet list will be used.\n"; - t << "\n"; - } - t << "HTML_ALIGN_MEMBERS = YES\n"; - if (!sl) - { - t << "\n"; - t << "# If the GENERATE_HTMLHELP tag is set to YES, additional index files\n"; - t << "# will be generated that can be used as input for tools like the\n"; - t << "# Microsoft HTML help workshop to generate a compressed HTML help file (.chm)\n"; - t << "# of the generated HTML documentation.\n"; - t << "\n"; - } - t << "GENERATE_HTMLHELP = NO\n"; - if (!sl) - { - t << "\n"; - } - t << "#---------------------------------------------------------------------------\n"; - t << "# configuration options related to the alphabetical class index\n"; - t << "#---------------------------------------------------------------------------\n"; - if (!sl) - { - t << "\n"; - t << "# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index\n"; - t << "# of all compounds will be generated. Enable this if the project\n"; - t << "# contains a lot of classes, structs, unions or interfaces.\n"; - t << "\n"; - } - t << "ALPHABETICAL_INDEX = NO\n"; - if (!sl) - { - t << "\n"; - t << "# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then\n"; - t << "# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns\n"; - t << "# in which this list will be split (can be a number in the range [1..20])\n"; - t << "\n"; - } - t << "COLS_IN_ALPHA_INDEX = 5\n"; - if (!sl) - { - t << "\n"; - t << "# In case all classes in a project start with a common prefix, all\n"; - t << "# classes will be put under the same header in the alphabetical index.\n"; - t << "# The IGNORE_PREFIX tag can be used to specify one or more prefixes that\n"; - t << "# should be ignored while generating the index headers.\n"; - t << "\n"; - } - t << "IGNORE_PREFIX = \n"; - if (!sl) - { - t << "\n"; - } - t << "#---------------------------------------------------------------------------\n"; - t << "# configuration options related to the LaTeX output\n"; - t << "#---------------------------------------------------------------------------\n"; - if (!sl) - { - t << "\n"; - t << "# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will\n"; - t << "# generate Latex output.\n"; - t << "\n"; - } - t << "GENERATE_LATEX = YES\n"; - if (!sl) - { - t << "\n"; - t << "# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.\n"; - t << "# If a relative path is entered the value of OUTPUT_DIRECTORY will be\n"; - t << "# put in front of it. If left blank `latex' will be used as the default path.\n"; - t << "\n"; - } - t << "LATEX_OUTPUT =\n"; - if (!sl) - { - t << "\n"; - t << "# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact\n"; - t << "# LaTeX documents. This may be useful for small projects and may help to\n"; - t << "# save some trees in general.\n"; - t << "\n"; - } - t << "COMPACT_LATEX = NO\n"; - if (!sl) - { - t << "\n"; - t << "# The PAPER_TYPE tag can be used to set the paper type that is used\n"; - t << "# by the printer. Possible values are: a4, a4wide, letter, legal and \n"; - t << "# executive. If left blank a4wide will be used.\n"; - t << "\n"; - } - t << "PAPER_TYPE = a4wide\n"; - if (!sl) - { - t << "\n"; - t << "# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX\n"; - t << "# packages that should be included in the LaTeX output.\n"; - t << "\n"; - } - t << "EXTRA_PACKAGES =\n"; - if (!sl) - { - t << "\n"; - t << "# The LATEX_HEADER tag can be used to specify a personal LaTeX header for \n"; - t << "# the generated latex document. The header should contain everything until\n"; - t << "# the first chapter. If it is left blank doxygen will generate a \n"; - t << "# standard header. Notice: only use this tag if you know what you are doing!\n"; - t << "\n"; - } - t << "LATEX_HEADER =\n"; - if (!sl) - { - t << "\n"; - t << "# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated\n"; - t << "# is prepared for conversion to pdf (using ps2pdf). The pdf file will\n"; - t << "# contain links (just like the HTML output) instead of page references\n"; - t << "# This makes the output suitable for online browsing using a pdf viewer.\n"; - t << "\n"; - } - t << "PDF_HYPERLINKS = NO\n"; - if (!sl) - { - t << "\n"; - } - t << "#---------------------------------------------------------------------------\n"; - t << "# configuration options related to the RTF output\n"; - t << "#---------------------------------------------------------------------------\n"; - if (!sl) - { - t << "\n"; - t << "# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output\n"; - t << "# For now this is experimental and is disabled by default. The RTF output\n"; - t << "# is optimised for Word 97 and may not look too pretty with other readers\n"; - t << "# or editors.\n"; - t << "\n"; - } - t << "GENERATE_RTF = NO\n"; - if (!sl) - { - t << "\n"; - t << "# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.\n"; - t << "# If a relative path is entered the value of OUTPUT_DIRECTORY will be\n"; - t << "# put in front of it. If left blank `rtf' will be used as the default path.\n"; - t << "\n"; - } - t << "RTF_OUTPUT =\n"; - if (!sl) - { - t << "\n"; - t << "# If the COMPACT_RTF tag is set to YES Doxygen generates more compact\n"; - t << "# RTF documents. This may be useful for small projects and may help to\n"; - t << "# save some trees in general.\n"; - t << "\n"; - } - t << "COMPACT_RTF = NO\n"; - if (!sl) - { - t << "\n"; - t << "# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated\n"; - t << "# will contain hyperlink fields. The RTF file will\n"; - t << "# contain links (just like the HTML output) instead of page references.\n"; - t << "# This makes the output suitable for online browsing using a WORD or other.\n"; - t << "# programs which support those fields.\n"; - t << "# Note: wordpad (write) and others do not support links.\n"; - t << "\n"; - } - t << "RTF_HYPERLINKS = NO\n"; - - t << "#---------------------------------------------------------------------------\n"; - t << "# configuration options related to the man page output\n"; - t << "#---------------------------------------------------------------------------\n"; - if (!sl) - { - t << "\n"; - t << "# If the GENERATE_MAN tag is set to YES (the default) Doxygen will\n"; - t << "# generate man pages\n"; - t << "\n"; - } - t << "GENERATE_MAN = YES\n"; - if (!sl) - { - t << "\n"; - t << "# The MAN_OUTPUT tag is used to specify where the man pages will be put.\n"; - t << "# If a relative path is entered the value of OUTPUT_DIRECTORY will be\n"; - t << "# put in front of it. If left blank `man' will be used as the default path.\n"; - t << "\n"; - } - t << "MAN_OUTPUT =\n"; - if (!sl) - { - t << "\n"; - t << "# The MAN_EXTENSION tag determines the extension that is added to\n"; - t << "# the generated man pages (default is the subroutine's section .3)\n"; - t << "\n"; - } - t << "MAN_EXTENSION = .3\n"; - - if (!sl) - { - t << "\n"; - } - t << "#---------------------------------------------------------------------------\n"; - t << "# Configuration options related to the preprocessor \n"; - t << "#---------------------------------------------------------------------------\n"; - if (!sl) - { - t << "\n"; - t << "# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will\n"; - t << "# evaluate all C-preprocessor directives found in the sources and include\n"; - t << "# files.\n"; - t << "\n"; - } - t << "ENABLE_PREPROCESSING = YES\n"; - if (!sl) - { - t << "\n"; - t << "# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro\n"; - t << "# names in the source code. If set to NO (the default) only conditional \n"; - t << "# compilation will be performed.\n"; - t << "\n"; - } - t << "MACRO_EXPANSION = NO\n"; - if (!sl) - { - t << "\n"; - t << "# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files\n"; - t << "# in the INCLUDE_PATH (see below) will be search if a #include is found.\n"; - t << "\n"; - } - t << "SEARCH_INCLUDES = YES\n"; - if (!sl) - { - t << "\n"; - t << "# The INCLUDE_PATH tag can be used to specify one or more directories that\n"; - t << "# contain include files that are not input files but should be processed by\n"; - t << "# the preprocessor.\n" ; - t << "\n"; - } - t << "INCLUDE_PATH =\n"; - if (!sl) - { - t << "\n"; - t << "# The PREDEFINED tag can be used to specify one or more macro names that\n"; - t << "# are defined before the preprocessor is started (similar to the -D option of\n"; - t << "# gcc). The argument of the tag is a list of macros of the form: name\n"; - t << "# or name=definition (no spaces). If the definition and the = are \n"; - t << "# omitted =1 is assumed.\n"; - t << "\n"; - } - t << "PREDEFINED =\n"; - if (!sl) - { - t << "\n"; - t << "# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES\n"; - t << "# then the macro expansion is limited to the macros specified with the\n"; - t << "# PREDEFINED tag.\n"; - t << "\n"; - } - t << "EXPAND_ONLY_PREDEF = NO\n"; - if (!sl) - { - t << "\n"; - } - t << "#---------------------------------------------------------------------------\n"; - t << "# Configuration options related to external references \n"; - t << "#---------------------------------------------------------------------------\n"; - if (!sl) - { - t << "\n"; - t << "# The TAGFILES tag can be used to specify one or more tagfiles. \n"; - t << "\n"; - } - t << "TAGFILES =\n"; - if (!sl) - { - t << "\n"; - t << "# When a file name is specified after GENERATE_TAGFILE, doxygen will create\n"; - t << "# a tag file that is based on the input files it reads.\n"; - t << "\n"; - } - t << "GENERATE_TAGFILE =\n"; - if (!sl) - { - t << "\n"; - t << "# If the ALLEXTERNALS tag is set to YES all external classes will be listed\n"; - t << "# in the class index. If set to NO only the inherited external classes\n"; - t << "# will be listed.\n"; - t << "\n"; - } - t << "ALLEXTERNALS = NO\n"; - if (!sl) - { - t << "\n"; - t << "# The PERL_PATH should be the absolute path and name of the perl script\n"; - t << "# interpreter (i.e. the result of `which perl').\n"; - t << "\n"; - } - t << "PERL_PATH = /usr/bin/perl\n"; - if (!sl) - { - t << "\n"; - } - t << "#---------------------------------------------------------------------------\n"; - t << "# Configuration options related to the dot tool \n"; - t << "#---------------------------------------------------------------------------\n"; - if (!sl) - { - t << "\n"; - t << "# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is\n"; - t << "# available from the path. This tool is part of Graphviz, a graph visualization\n"; - t << "# toolkit from AT&T and Lucent Bell Labs. The other options in this section\n"; - t << "# have no effect if this option is set to NO (the default)\n"; - t << "\n"; - } - t << "HAVE_DOT = NO\n"; - if (!sl) - { - t << "\n"; - t << "# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen\n"; - t << "# will generate a graph for each documented class showing the direct and\n"; - t << "# indirect implementation dependencies (inheritance, containment, and\n"; - t << "# class references variables) of the class with other documented classes.\n"; - t << "\n"; - } - t << "COLLABORATION_GRAPH = YES\n"; - if (!sl) - { - t << "\n"; - t << "# If the ENABLE_PREPROCESSING, INCLUDE_GRAPH, and HAVE_DOT tags are set to\n"; - t << "# YES then doxygen will generate a graph for each documented file showing\n"; - t << "# the direct and indirect include dependencies of the file with other \n"; - t << "# documented files.\n"; - t << "\n"; - } - t << "INCLUDE_GRAPH = YES\n"; - if (!sl) - { - t << "\n"; - t << "# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen\n"; - t << "# will graphical hierarchy of all classes instead of a textual one.\n"; - t << "\n"; - } - t << "GRAPHICAL_HIERARCHY = YES\n"; - if (!sl) - { - t << "\n"; - } - t << "#---------------------------------------------------------------------------\n"; - t << "# Configuration options related to the search engine \n"; - t << "#---------------------------------------------------------------------------\n"; - if (!sl) - { - t << "\n"; - t << "# The SEARCHENGINE tag specifies whether or not a search engine should be \n"; - t << "# used. If set to NO the values of all tags below this one will be ignored.\n"; - t << "\n"; - } - t << "SEARCHENGINE = NO\n"; - if (!sl) - { - t << "\n"; - t << "# The CGI_NAME tag should be the name of the CGI script that\n"; - t << "# starts the search engine (doxysearch) with the correct parameters.\n"; - t << "# A script with this name will be generated by doxygen.\n"; - t << "\n"; - } - t << "CGI_NAME = search.cgi\n"; - if (!sl) - { - t << "\n"; - t << "# The CGI_URL tag should be the absolute URL to the directory where the\n"; - t << "# cgi binaries are located. See the documentation of your http daemon for \n"; - t << "# details.\n"; - t << "\n"; - } - t << "CGI_URL =\n"; - if (!sl) - { - t << "\n"; - t << "# The DOC_URL tag should be the absolute URL to the directory where the\n"; - t << "# documentation is located. If left blank the absolute path to the \n"; - t << "# documentation, with file:// prepended to it, will be used.\n"; - t << "\n"; - } - t << "DOC_URL =\n"; - if (!sl) - { - t << "\n"; - t << "# The DOC_ABSPATH tag should be the absolute path to the directory where the\n"; - t << "# documentation is located. If left blank the directory on the local machine\n"; - t << "# will be used.\n"; - t << "\n"; - } - t << "DOC_ABSPATH =\n"; - if (!sl) - { - t << "\n"; - t << "# The BIN_ABSPATH tag must point to the directory where the doxysearch binary\n"; - t << "# is installed.\n"; - t << "\n"; - } - t << "BIN_ABSPATH = /usr/local/bin/\n"; - if (!sl) - { - t << "\n"; - t << "# The EXT_DOC_PATHS tag can be used to specify one or more paths to \n"; - t << "# documentation generated for other projects. This allows doxysearch to search\n"; - t << "# the documentation for these projects as well.\n"; - t << "\n"; - } - t << "EXT_DOC_PATHS =\n"; -} - -void checkConfig() -{ - //if (!projectName.isEmpty()) - //{ - // projectName[0]=toupper(projectName[0]); - //} - - if (tabSizeString.isEmpty()) - { - Config::tabSize=8; - } - else - { - bool ok; - int ts = tabSizeString.toInt(&ok); - if (!ok || ts<1 || ts>16) - { - warn("Warning: argument of TAB_SIZE is not a valid number, using tab size of 8 spaces!\n"); - ts=8; - } - Config::tabSize = ts; - } - - if (colsInAlphaIndexString.isEmpty()) - { - Config::colsInAlphaIndex=5; - } - else - { - bool ok; - int cols = colsInAlphaIndexString.toInt(&ok); - if (!ok || cols<1 || cols>20) - { - warn("Warning: argument of COLS_IN_ALPHA_INDEX is not a valid number in the range [1..20]!\n" - "Using the default of 5 columns!\n"); - cols = 5; - } - Config::colsInAlphaIndex=cols; - } - - // set default man page extension if non is given by the user - if (Config::manExtension.isEmpty()) - { - Config::manExtension=".3"; - } - - Config::paperType = Config::paperType.lower().stripWhiteSpace(); - if (Config::paperType.isEmpty()) - { - Config::paperType = "a4wide"; - } - if (Config::paperType!="a4" && Config::paperType!="a4wide" && Config::paperType!="letter" && - Config::paperType!="legal" && Config::paperType!="executive") - { - err("Error: Unknown page type specified"); - } - - Config::outputLanguage=Config::outputLanguage.stripWhiteSpace(); - if (Config::outputLanguage.isEmpty()) - { - Config::outputLanguage = "English"; -#ifndef DOXYWIZARD - setTranslator("English"); -#endif - } - else - { -#ifndef DOXYWIZARD - if (!setTranslator(Config::outputLanguage)) - { - err("Error: Output language %s not supported! Using English instead.\n", - Config::outputLanguage.data()); - } -#endif - } - - // Test to see if output directory is valid - if (Config::outputDir.isEmpty()) - Config::outputDir=QDir::currentDirPath(); - else - { - QDir dir(Config::outputDir); - if (!dir.exists()) - { - dir.setPath(QDir::currentDirPath()); - if (!dir.mkdir(Config::outputDir)) - { - err("Error: tag OUTPUT_DIRECTORY: Output directory `%s' does not " - "exist and cannot be created\n",Config::outputDir.data()); - exit(1); - } - else if (!Config::quietFlag) - { - err("Notice: Output directory `%s' does not exist. " - "I have created it for you.\n", Config::outputDir.data()); - } - dir.cd(Config::outputDir); - } - Config::outputDir=dir.absPath(); - } - - if (Config::htmlOutputDir.isEmpty() && Config::generateHtml) - { - Config::htmlOutputDir=Config::outputDir+"/html"; - } - else if (Config::htmlOutputDir && Config::htmlOutputDir[0]!='/') - { - Config::htmlOutputDir.prepend(Config::outputDir+'/'); - } - QDir htmlDir(Config::htmlOutputDir); - if (Config::generateHtml && !htmlDir.exists() && - !htmlDir.mkdir(Config::htmlOutputDir)) - { - err("Could not create output directory %s\n",Config::htmlOutputDir.data()); - exit(1); - } - - if (Config::latexOutputDir.isEmpty() && Config::generateLatex) - { - Config::latexOutputDir=Config::outputDir+"/latex"; - } - else if (Config::latexOutputDir && Config::latexOutputDir[0]!='/') - { - Config::latexOutputDir.prepend(Config::outputDir+'/'); - } - QDir latexDir(Config::latexOutputDir); - if (Config::generateLatex && !latexDir.exists() && - !latexDir.mkdir(Config::latexOutputDir)) - { - err("Could not create output directory %s\n",Config::latexOutputDir.data()); - exit(1); - } - - if (Config::rtfOutputDir.isEmpty() && Config::generateRTF) - { - Config::rtfOutputDir=Config::outputDir+"/rtf"; - } - else if (Config::rtfOutputDir && Config::rtfOutputDir[0]!='/') - { - Config::rtfOutputDir.prepend(Config::outputDir+'/'); - } - QDir rtfDir(Config::rtfOutputDir); - if (Config::generateRTF && !rtfDir.exists() && - !rtfDir.mkdir(Config::rtfOutputDir)) - { - err("Could not create output directory %s\n",Config::rtfOutputDir.data()); - exit(1); - } - - if (Config::manOutputDir.isEmpty() && Config::generateMan) - { - Config::manOutputDir=Config::outputDir+"/man"; - } - else if (Config::manOutputDir && Config::manOutputDir[0]!='/') - { - Config::manOutputDir.prepend(Config::outputDir+'/'); - } - QDir manDir(Config::manOutputDir); - if (Config::generateMan && !manDir.exists() && - !manDir.mkdir(Config::manOutputDir)) - { - err("Could not create output directory %s\n",Config::manOutputDir.data()); - exit(1); - } - - // Test to see if HTML header is valid - if (!Config::headerFile.isEmpty()) - { - QFileInfo fi(Config::headerFile); - if (!fi.exists()) - { - err("Error: tag HTML_HEADER: header file `%s' " - "does not exist\n",Config::headerFile.data()); - exit(1); - } - } - // Test to see if HTML footer is valid - if (!Config::footerFile.isEmpty()) - { - QFileInfo fi(Config::footerFile); - if (!fi.exists()) - { - err("Error: tag HTML_FOOTER: footer file `%s' " - "does not exist\n",Config::footerFile.data()); - exit(1); - } - } - // Test to see if LaTeX header is valid - if (!Config::latexHeaderFile.isEmpty()) - { - QFileInfo fi(Config::latexHeaderFile); - if (!fi.exists()) - { - err("Error: tag LATEX_HEADER: header file `%s' " - "does not exist\n",Config::latexHeaderFile.data()); - exit(1); - } - } - // check include path - char *s=Config::includePath.first(); - while (s) - { - QFileInfo fi(s); - if (!fi.exists()) err("Warning: tag INCLUDE_PATH: include path `%s' " - "does not exist\n",s); -#ifndef DOXYWIZARD - addSearchDir(fi.absFilePath()); -#endif - s=Config::includePath.next(); - } - // check input - if (Config::inputSources.count()==0) - { - err("Error: tag INPUT: no input files specified after the INPUT tag.\n"); - exit(1); - } - else - { - s=Config::inputSources.first(); - while (s) - { - QFileInfo fi(s); - if (!fi.exists()) - { - err("Error: tag INPUT: input source `%s' does not exist\n",s); - exit(1); - } - s=Config::inputSources.next(); - } - } - - // add default pattern if needed - if (Config::filePatternList.count()==0) - { - Config::filePatternList.append("*"); - } - - // add default pattern if needed - if (Config::examplePatternList.count()==0) - { - Config::examplePatternList.append("*"); - } - - // add default pattern if needed - if (Config::imagePatternList.count()==0) - { - Config::imagePatternList.append("*"); - } - - // more checks needed if and only if the search engine is enabled. - if (Config::searchEngineFlag) - { - // check cgi name - if (Config::cgiName.isEmpty()) - { - err("Error: tag CGI_NAME: no cgi script name after the CGI_NAME tag.\n"); - exit(1); - } - // check cgi URL - if (Config::cgiURL.isEmpty()) - { - err("Error: tag CGI_URL: no URL to cgi directory specified.\n"); - exit(1); - } - else if (Config::cgiURL.left(7)!="http://") - { - err("Error: tag CGI_URL: URL to cgi directory is invalid (must " - "start with http://).\n"); - exit(1); - } - // check documentation URL - if (Config::docURL.isEmpty()) - { - Config::docURL = Config::outputDir.copy().prepend("file://").append("html"); - } - else if (Config::docURL.left(7)!="http://" && Config::docURL.left(7)!="file://") - { - err("Error: tag DOC_URL: URL to documentation is invalid or " - "not absolute.\n"); - exit(1); - } - // check absolute documentation path - if (Config::docAbsPath.isEmpty()) - { - Config::docAbsPath = Config::outputDir+"/html"; - } - else if (Config::docAbsPath[0]!='/' && Config::docAbsPath[1]!=':') - { - err("Error: tag DOC_ABSPATH: path is not absolute!\n"); - exit(1); - } - // check path to doxysearch - if (Config::binAbsPath.isEmpty()) - { - err("Error: tag BIN_ABSPATH: no absolute path to doxysearch " - "specified.\n"); - exit(1); - } - else if (Config::binAbsPath[0]!='/' && Config::binAbsPath[1]!=':') - { - err("Error: tag BIN_ABSPATH: path is not absolute!\n"); - exit(1); - } - - // check perl path - bool found=FALSE; - if (Config::perlPath.isEmpty()) - { - QFileInfo fi; - fi.setFile("/usr/bin/perl"); - if (fi.exists()) - { - Config::perlPath="/usr/bin/perl"; - found=TRUE; - } - else - { - fi.setFile("/usr/local/bin/perl"); - if (fi.exists()) - { - Config::perlPath="/usr/local/bin/perl"; - found=TRUE; - } - } - } - if (!found) - { - QFileInfo fi(Config::perlPath); - if (!fi.exists()) - { - warn("Warning: tag PERL_PATH: perl interpreter not found at default or" - "user specified (%s) location\n", - Config::perlPath.data()); - } - } - } - -#if defined(_WIN32) - if (Config::haveDotFlag) _putenv("DOTFONTPATH=."); -#endif - -} - -void parseConfig(const QCString &s) -{ - inputString = s; - inputPosition = 0; - yyLineNr = 1; - configYYrestart( configYYin ); - BEGIN( Start ); - configYYlex(); -} - -//extern "C" { // some bogus code to keep the compiler happy -// int configYYwrap() { return 1 ; } -//} diff --git a/src/declinfo.cpp b/src/declinfo.cpp deleted file mode 100644 index 882f60c..0000000 --- a/src/declinfo.cpp +++ /dev/null @@ -1,1972 +0,0 @@ -#define yy_create_buffer declinfoYY_create_buffer -#define yy_delete_buffer declinfoYY_delete_buffer -#define yy_scan_buffer declinfoYY_scan_buffer -#define yy_scan_string declinfoYY_scan_string -#define yy_scan_bytes declinfoYY_scan_bytes -#define yy_flex_debug declinfoYY_flex_debug -#define yy_init_buffer declinfoYY_init_buffer -#define yy_flush_buffer declinfoYY_flush_buffer -#define yy_load_buffer_state declinfoYY_load_buffer_state -#define yy_switch_to_buffer declinfoYY_switch_to_buffer -#define yyin declinfoYYin -#define yyleng declinfoYYleng -#define yylex declinfoYYlex -#define yyout declinfoYYout -#define yyrestart declinfoYYrestart -#define yytext declinfoYYtext - -/* A lexical scanner generated by flex */ - -/* Scanner skeleton version: - * $Header$ - */ - -#define FLEX_SCANNER -#define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 5 - -#include - - -/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */ -#ifdef c_plusplus -#ifndef __cplusplus -#define __cplusplus -#endif -#endif - - -#ifdef __cplusplus - -#include -#include - -/* Use prototypes in function declarations. */ -#define YY_USE_PROTOS - -/* The "const" storage-class-modifier is valid. */ -#define YY_USE_CONST - -#else /* ! __cplusplus */ - -#if __STDC__ - -#define YY_USE_PROTOS -#define YY_USE_CONST - -#endif /* __STDC__ */ -#endif /* ! __cplusplus */ - -#ifdef __TURBOC__ - #pragma warn -rch - #pragma warn -use -#include -#include -#define YY_USE_CONST -#define YY_USE_PROTOS -#endif - -#ifdef YY_USE_CONST -#define yyconst const -#else -#define yyconst -#endif - - -#ifdef YY_USE_PROTOS -#define YY_PROTO(proto) proto -#else -#define YY_PROTO(proto) () -#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 yyrestart( yyin ) - -#define YY_END_OF_BUFFER_CHAR 0 - -/* Size of default input buffer. */ -#define YY_BUF_SIZE 16384 - -typedef struct yy_buffer_state *YY_BUFFER_STATE; - -extern int yyleng; -extern FILE *yyin, *yyout; - -#define EOB_ACT_CONTINUE_SCAN 0 -#define EOB_ACT_END_OF_FILE 1 -#define EOB_ACT_LAST_MATCH 2 - -/* The funky do-while in the following #define is used to turn the definition - * int a single C statement (which needs a semi-colon terminator). This - * avoids problems with code like: - * - * if ( condition_holds ) - * yyless( 5 ); - * else - * do_something_else(); - * - * Prior to using the do-while the compiler would get upset at the - * "else" because it interpreted the "if" statement as being all - * done when it reached the ';' after the yyless() call. - */ - -/* Return all but the first 'n' matched characters back to the input stream. */ - -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - *yy_cp = yy_hold_char; \ - YY_RESTORE_YY_MORE_OFFSET \ - yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \ - YY_DO_BEFORE_ACTION; /* set up yytext again */ \ - } \ - while ( 0 ) - -#define unput(c) yyunput( c, yytext_ptr ) - -/* The following is because we cannot portably get our hands on size_t - * (without autoconf's help, which isn't available because we want - * flex-generated scanners to compile on their own). - */ -typedef unsigned int yy_size_t; - - -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; - - /* Whether to try to fill the input buffer when we reach the - * end of it. - */ - int yy_fill_buffer; - - int yy_buffer_status; -#define YY_BUFFER_NEW 0 -#define YY_BUFFER_NORMAL 1 - /* When an EOF's been seen but there's still some text to process - * then we mark the buffer as YY_EOF_PENDING, to indicate that we - * shouldn't try reading from the input source any more. We might - * still have a bunch of tokens to match, though, because of - * possible backing-up. - * - * When we actually see the EOF, we change the status to "new" - * (via yyrestart()), so that the user can continue scanning by - * just pointing yyin at a new input file. - */ -#define YY_BUFFER_EOF_PENDING 2 - }; - -static YY_BUFFER_STATE yy_current_buffer = 0; - -/* 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". - */ -#define YY_CURRENT_BUFFER yy_current_buffer - - -/* yy_hold_char holds the character lost when yytext is formed. */ -static char yy_hold_char; - -static int yy_n_chars; /* number of characters read into yy_ch_buf */ - - -int yyleng; - -/* Points to current character in buffer. */ -static char *yy_c_buf_p = (char *) 0; -static int yy_init = 1; /* whether we need to initialize */ -static int yy_start = 0; /* start state number */ - -/* Flag which is used to allow yywrap()'s to do buffer switches - * instead of setting up a fresh yyin. A bit of a hack ... - */ -static int yy_did_buffer_switch_on_eof; - -void yyrestart YY_PROTO(( FILE *input_file )); - -void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer )); -void yy_load_buffer_state YY_PROTO(( void )); -YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size )); -void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b )); -void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file )); -void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b )); -#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer ) - -YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size )); -YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str )); -YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len )); - -static void *yy_flex_alloc YY_PROTO(( yy_size_t )); -static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t )); -static void yy_flex_free YY_PROTO(( void * )); - -#define yy_new_buffer yy_create_buffer - -#define yy_set_interactive(is_interactive) \ - { \ - if ( ! yy_current_buffer ) \ - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ - yy_current_buffer->yy_is_interactive = is_interactive; \ - } - -#define yy_set_bol(at_bol) \ - { \ - if ( ! yy_current_buffer ) \ - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ - yy_current_buffer->yy_at_bol = at_bol; \ - } - -#define YY_AT_BOL() (yy_current_buffer->yy_at_bol) - - -#define yywrap() 1 -#define YY_SKIP_YYWRAP -typedef unsigned char YY_CHAR; -FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; -typedef int yy_state_type; -extern char *yytext; -#define yytext_ptr yytext - -static yy_state_type yy_get_previous_state YY_PROTO(( void )); -static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state )); -static int yy_get_next_buffer YY_PROTO(( void )); -static void yy_fatal_error YY_PROTO(( yyconst char msg[] )); - -/* Done after the current pattern has been matched and before the - * corresponding action - sets up yytext. - */ -#define YY_DO_BEFORE_ACTION \ - yytext_ptr = yy_bp; \ - yyleng = (int) (yy_cp - yy_bp); \ - yy_hold_char = *yy_cp; \ - *yy_cp = '\0'; \ - yy_c_buf_p = yy_cp; - -#define YY_NUM_RULES 22 -#define YY_END_OF_BUFFER 23 -static yyconst short int yy_accept[89] = - { 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 23, 20, 21, 5, 4, 8, 7, 20, 10, 2, - 9, 2, 20, 13, 11, 12, 18, 18, 20, 20, - 21, 16, 20, 19, 5, 8, 7, 0, 10, 9, - 4, 0, 6, 3, 2, 2, 0, 2, 0, 0, - 0, 16, 0, 0, 16, 0, 0, 0, 3, 2, - 0, 0, 15, 0, 0, 2, 0, 0, 2, 0, - 0, 14, 2, 0, 17, 2, 1, 0 - } ; - -static yyconst int yy_ec[256] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 1, 1, 1, 1, 1, 4, 1, 5, - 6, 7, 1, 1, 1, 1, 1, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 9, 1, 10, - 1, 11, 1, 1, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 13, 1, 1, 1, 12, 1, 14, 12, 12, 12, - - 15, 12, 12, 16, 12, 12, 12, 12, 12, 12, - 17, 18, 12, 19, 12, 20, 12, 12, 21, 12, - 12, 12, 1, 1, 1, 22, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1 - } ; - -static yyconst int yy_meta[23] = - { 0, - 1, 2, 1, 1, 1, 1, 1, 3, 1, 1, - 1, 4, 1, 4, 4, 4, 4, 4, 4, 4, - 4, 1 - } ; - -static yyconst short int yy_base[97] = - { 0, - 164, 163, 0, 0, 20, 22, 21, 23, 42, 51, - 162, 161, 160, 159, 158, 157, 156, 155, 154, 153, - 155, 168, 168, 60, 30, 33, 168, 145, 168, 0, - 168, 135, 150, 168, 168, 168, 168, 130, 53, 62, - 66, 36, 75, 168, 0, 44, 168, 111, 168, 168, - 32, 72, 168, 112, 0, 93, 105, 0, 75, 73, - 79, 168, 88, 86, 95, 98, 100, 101, 85, 63, - 42, 107, 168, 39, 111, 35, 27, 55, 9, 90, - 113, 168, 11, 117, 168, 8, 0, 168, 122, 126, - 130, 134, 138, 140, 143, 147 - - } ; - -static yyconst short int yy_def[97] = - { 0, - 89, 89, 88, 3, 90, 90, 91, 91, 92, 92, - 89, 89, 89, 89, 89, 89, 89, 89, 93, 93, - 88, 88, 88, 88, 88, 88, 88, 88, 88, 94, - 88, 94, 95, 88, 88, 88, 88, 88, 96, 96, - 96, 88, 96, 88, 24, 88, 88, 88, 88, 88, - 88, 88, 88, 88, 94, 94, 95, 94, 88, 96, - 96, 88, 96, 96, 88, 88, 88, 96, 88, 94, - 88, 88, 88, 88, 96, 94, 88, 88, 94, 88, - 88, 88, 94, 88, 88, 94, 94, 0, 88, 88, - 88, 88, 88, 88, 88, 88 - - } ; - -static yyconst short int yy_nxt[191] = - { 0, - 22, 24, 23, 25, 26, 27, 25, 22, 28, 29, - 22, 30, 31, 30, 30, 30, 32, 30, 30, 30, - 30, 33, 23, 23, 23, 23, 87, 86, 83, 35, - 36, 35, 36, 51, 52, 51, 51, 66, 51, 53, - 38, 67, 38, 40, 41, 52, 42, 80, 79, 78, - 53, 43, 40, 41, 61, 42, 81, 62, 77, 82, - 43, 45, 63, 64, 46, 47, 65, 61, 48, 49, - 62, 63, 50, 52, 61, 63, 61, 62, 53, 62, - 61, 76, 63, 62, 63, 68, 69, 64, 63, 61, - 65, 84, 62, 71, 85, 63, 66, 63, 68, 66, - - 67, 72, 75, 67, 73, 62, 57, 70, 72, 74, - 63, 73, 75, 69, 81, 62, 74, 82, 84, 54, - 63, 85, 22, 22, 22, 22, 34, 34, 34, 34, - 37, 37, 37, 37, 39, 39, 39, 39, 44, 44, - 44, 44, 55, 55, 58, 59, 58, 60, 60, 60, - 60, 57, 56, 54, 88, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 21, 88, 88, - 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, - 88, 88, 88, 88, 88, 88, 88, 88, 88, 88 - } ; - -static yyconst short int yy_chk[191] = - { 0, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 5, 7, 6, 8, 86, 83, 79, 5, - 5, 6, 6, 25, 26, 51, 25, 42, 51, 26, - 7, 42, 8, 9, 9, 46, 9, 77, 76, 74, - 46, 9, 10, 10, 39, 10, 78, 39, 71, 78, - 10, 24, 39, 40, 24, 24, 40, 41, 24, 24, - 41, 40, 24, 52, 60, 41, 43, 60, 52, 43, - 61, 70, 60, 61, 43, 43, 69, 64, 61, 63, - 64, 80, 63, 59, 80, 64, 65, 63, 63, 66, - - 65, 67, 68, 66, 67, 68, 57, 56, 72, 67, - 68, 72, 75, 54, 81, 75, 72, 81, 84, 48, - 75, 84, 89, 89, 89, 89, 90, 90, 90, 90, - 91, 91, 91, 91, 92, 92, 92, 92, 93, 93, - 93, 93, 94, 94, 95, 38, 95, 96, 96, 96, - 96, 33, 32, 28, 21, 20, 19, 18, 17, 16, - 15, 14, 13, 12, 11, 2, 1, 88, 88, 88, - 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, - 88, 88, 88, 88, 88, 88, 88, 88, 88, 88 - } ; - -static yy_state_type yy_last_accepting_state; -static char *yy_last_accepting_cpos; - -/* The intent behind this definition is that it'll catch - * any uses of REJECT which flex missed. - */ -#define REJECT reject_used_but_not_detected -#define yymore() yymore_used_but_not_detected -#define YY_MORE_ADJ 0 -#define YY_RESTORE_YY_MORE_OFFSET -char *yytext; -#line 1 "declinfo.l" -#define INITIAL 0 -/****************************************************************************** - * - * $Id$ - * - * Copyright (C) 1997-2000 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - * All output generated with Doxygen is not covered by this license. - * - */ -#line 18 "declinfo.l" - -/* - * includes - */ -#include -#include -#include -#include - -#include "declinfo.h" -#include "util.h" - - -#define YY_NO_UNPUT - -/* ----------------------------------------------------------------- - * - * statics - */ - -static const char * inputString; -static int inputPosition; -static QCString scope; -static QCString className; -static QCString classTempList; -static QCString funcTempList; -static QCString type; -static QCString name; -static QCString args; -static QCString tmpType; -static int sharpCount; -static bool classTempListFound; -static bool funcTempListFound; -static QCString exceptionString; - -static void addType() -{ - //printf("addType() type=`%s' scope=`%s' name=`%s'\n", - // type.data(),scope.data(),name.data()); - if (name.isEmpty() && scope.isEmpty()) return; - if (!type.isEmpty()) type+=' '; - if (!scope.isEmpty()) type+=scope+"::"; - type+=name; - scope.resize(0); - name.resize(0); -} - -static void addTypeName() -{ - //printf("addTypeName() type=`%s' scope=`%s' name=`%s'\n", - // type.data(),scope.data(),name.data()); - if (name.isEmpty()) return; - if (!type.isEmpty()) type+=' '; - type+=name; - name.resize(0); -} - -#define YY_NEVER_INTERACTIVE 1 - -/* ----------------------------------------------------------------- - */ -#undef YY_INPUT -#define YY_INPUT(buf,result,max_size) result=yyread(buf,max_size); - -static int yyread(char *buf,int max_size) -{ - int c=0; - while( c < max_size && inputString[inputPosition] ) - { - *buf = inputString[inputPosition++] ; - c++; buf++; - } - return c; -} - -#define Start 1 - -#define Template 2 - -#define ReadArgs 3 - -#define Operator 4 - -#define FuncPtr 5 - -#define EndTemplate 6 - -#define StripTempArgs 7 - -#define SkipSharp 8 - -#define ReadExceptions 9 - - -/* Macros after this point can all be overridden by user definitions in - * section 1. - */ - -#ifndef YY_SKIP_YYWRAP -#ifdef __cplusplus -extern "C" int yywrap YY_PROTO(( void )); -#else -extern int yywrap YY_PROTO(( void )); -#endif -#endif - -#ifndef YY_NO_UNPUT -static void yyunput YY_PROTO(( int c, char *buf_ptr )); -#endif - -#ifndef yytext_ptr -static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int )); -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen YY_PROTO(( yyconst char * )); -#endif - -#ifndef YY_NO_INPUT -#ifdef __cplusplus -static int yyinput YY_PROTO(( void )); -#else -static int input YY_PROTO(( void )); -#endif -#endif - -#if YY_STACK_USED -static int yy_start_stack_ptr = 0; -static int yy_start_stack_depth = 0; -static int *yy_start_stack = 0; -#ifndef YY_NO_PUSH_STATE -static void yy_push_state YY_PROTO(( int new_state )); -#endif -#ifndef YY_NO_POP_STATE -static void yy_pop_state YY_PROTO(( void )); -#endif -#ifndef YY_NO_TOP_STATE -static int yy_top_state YY_PROTO(( void )); -#endif - -#else -#define YY_NO_PUSH_STATE 1 -#define YY_NO_POP_STATE 1 -#define YY_NO_TOP_STATE 1 -#endif - -#ifdef YY_MALLOC_DECL -YY_MALLOC_DECL -#else -#if __STDC__ -#ifndef __cplusplus -#include -#endif -#else -/* Just try to get by without declaring the routines. This will fail - * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int) - * or sizeof(void*) != sizeof(int). - */ -#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 (void) fwrite( yytext, yyleng, 1, yyout ) -#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->yy_is_interactive ) \ - { \ - int c = '*', n; \ - for ( n = 0; n < max_size && \ - (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ - buf[n] = (char) c; \ - if ( c == '\n' ) \ - buf[n++] = (char) c; \ - if ( c == EOF && ferror( yyin ) ) \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - result = n; \ - } \ - else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \ - && ferror( yyin ) ) \ - YY_FATAL_ERROR( "input in flex scanner failed" ); -#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 - -/* Default declaration of generated scanner - a define so the user can - * easily add parameters. - */ -#ifndef YY_DECL -#define YY_DECL int yylex YY_PROTO(( void )) -#endif - -/* Code executed at the beginning of each rule, after yytext and yyleng - * have been set up. - */ -#ifndef YY_USER_ACTION -#define YY_USER_ACTION -#endif - -/* Code executed at the end of each rule. */ -#ifndef YY_BREAK -#define YY_BREAK break; -#endif - -#define YY_RULE_SETUP \ - YY_USER_ACTION - -YY_DECL - { - register yy_state_type yy_current_state; - register char *yy_cp, *yy_bp; - register int yy_act; - -#line 110 "declinfo.l" - - - - if ( yy_init ) - { - yy_init = 0; - -#ifdef YY_USER_INIT - YY_USER_INIT; -#endif - - if ( ! yy_start ) - yy_start = 1; /* first start state */ - - if ( ! yyin ) - yyin = stdin; - - if ( ! yyout ) - yyout = stdout; - - if ( ! yy_current_buffer ) - yy_current_buffer = - yy_create_buffer( yyin, YY_BUF_SIZE ); - - yy_load_buffer_state(); - } - - while ( 1 ) /* loops until end-of-file is reached */ - { - yy_cp = yy_c_buf_p; - - /* Support of yytext. */ - *yy_cp = yy_hold_char; - - /* yy_bp points to the position in yy_ch_buf of the start of - * the current run. - */ - yy_bp = yy_cp; - - yy_current_state = yy_start; -yy_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 >= 89 ) - 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] != 168 ); - -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: -YY_RULE_SETUP -#line 112 "declinfo.l" -{ // operator rule must be before {ID} rule - name += yytext; - BEGIN(Operator); - } - YY_BREAK -case 2: -YY_RULE_SETUP -#line 116 "declinfo.l" -{ - addTypeName(); - name += yytext; - } - YY_BREAK -case 3: -YY_RULE_SETUP -#line 120 "declinfo.l" -{ // found a scope specifier - if (!scope.isEmpty()) - { - scope+="::"+name; // add name to scope - } - else - { - scope = name.copy(); // scope becomes name - } - name.resize(0); - } - YY_BREAK -case 4: -YY_RULE_SETUP -#line 131 "declinfo.l" -{ - addType(); - type+=yytext; - } - YY_BREAK -case 5: -YY_RULE_SETUP -#line 135 "declinfo.l" -{ - addType(); - } - YY_BREAK -case 6: -YY_RULE_SETUP -#line 138 "declinfo.l" -{ - addType(); - type+="(*"; - } - YY_BREAK -case 7: -YY_RULE_SETUP -#line 142 "declinfo.l" -{ - type+=")"; - } - YY_BREAK -case 8: -YY_RULE_SETUP -#line 145 "declinfo.l" -{ // TODO: function pointers - args+="("; - BEGIN(ReadArgs); - } - YY_BREAK -case 9: -YY_RULE_SETUP -#line 149 "declinfo.l" -{ - args+="["; - BEGIN(ReadArgs); - } - YY_BREAK -case 10: -YY_RULE_SETUP -#line 153 "declinfo.l" -{ - name+="<"; - sharpCount=0; - BEGIN(Template); - } - YY_BREAK -case 11: -YY_RULE_SETUP -#line 158 "declinfo.l" -{ - name+="<"; - sharpCount++; - } - YY_BREAK -case 12: -YY_RULE_SETUP -#line 162 "declinfo.l" -{ - name+=">"; - if (sharpCount) - --sharpCount; - else - { - BEGIN(Start); - } - } - YY_BREAK -case 13: -YY_RULE_SETUP -#line 171 "declinfo.l" -{ - name+=*yytext; - } - YY_BREAK -case 14: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 174 "declinfo.l" -{ - name+="() <>"; - BEGIN(ReadArgs); - } - YY_BREAK -case 15: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 178 "declinfo.l" -{ - name+="()"; - BEGIN(ReadArgs); - } - YY_BREAK -case 16: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 182 "declinfo.l" -{ - name+=yytext; - BEGIN(ReadArgs); - } - YY_BREAK -case 17: -YY_RULE_SETUP -#line 186 "declinfo.l" -{ - exceptionString="throw("; - BEGIN(ReadExceptions); - } - YY_BREAK -case 18: -YY_RULE_SETUP -#line 190 "declinfo.l" -{ - args+=*yytext; - } - YY_BREAK -case 19: -YY_RULE_SETUP -#line 193 "declinfo.l" -{ - exceptionString+=*yytext; - } - YY_BREAK -case 20: -YY_RULE_SETUP -#line 196 "declinfo.l" - - YY_BREAK -case 21: -YY_RULE_SETUP -#line 197 "declinfo.l" - - YY_BREAK -case 22: -YY_RULE_SETUP -#line 199 "declinfo.l" -ECHO; - YY_BREAK -case YY_STATE_EOF(INITIAL): -case YY_STATE_EOF(Start): -case YY_STATE_EOF(Template): -case YY_STATE_EOF(ReadArgs): -case YY_STATE_EOF(Operator): -case YY_STATE_EOF(FuncPtr): -case YY_STATE_EOF(EndTemplate): -case YY_STATE_EOF(StripTempArgs): -case YY_STATE_EOF(SkipSharp): -case YY_STATE_EOF(ReadExceptions): - 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->yy_buffer_status == YY_BUFFER_NEW ) - { - /* We're scanning a new file or input source. It's - * possible that this happened because the user - * just pointed yyin at a new source and called - * yylex(). If so, then we have to assure - * consistency between yy_current_buffer and our - * globals. Here is the right place to do so, because - * this is the first action (other than possibly a - * back-up) that will match for the new input source. - */ - yy_n_chars = yy_current_buffer->yy_n_chars; - yy_current_buffer->yy_input_file = yyin; - yy_current_buffer->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->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 ( yywrap() ) - { - /* Note: because we've taken care in - * yy_get_next_buffer() to have set up - * yytext, we can now set up - * yy_c_buf_p so that if some total - * hoser (like flex itself) wants to - * call the scanner after we return the - * YY_NULL, it'll still work - another - * YY_NULL will get returned. - */ - yy_c_buf_p = yytext_ptr + YY_MORE_ADJ; - - yy_act = YY_STATE_EOF(YY_START); - goto do_action; - } - - else - { - if ( ! yy_did_buffer_switch_on_eof ) - YY_NEW_FILE; - } - break; - } - - case EOB_ACT_CONTINUE_SCAN: - yy_c_buf_p = - yytext_ptr + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state(); - - yy_cp = yy_c_buf_p; - yy_bp = yytext_ptr + YY_MORE_ADJ; - goto yy_match; - - case EOB_ACT_LAST_MATCH: - yy_c_buf_p = - &yy_current_buffer->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 yylex */ - - -/* yy_get_next_buffer - try to read in a new buffer - * - * Returns a code representing an action: - * EOB_ACT_LAST_MATCH - - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position - * EOB_ACT_END_OF_FILE - end of file - */ - -static int yy_get_next_buffer() - { - register char *dest = yy_current_buffer->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->yy_ch_buf[yy_n_chars + 1] ) - YY_FATAL_ERROR( - "fatal flex scanner internal error--end of buffer missed" ); - - if ( yy_current_buffer->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->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->yy_n_chars = yy_n_chars = 0; - - else - { - int num_to_read = - yy_current_buffer->yy_buf_size - number_to_move - 1; - - while ( num_to_read <= 0 ) - { /* Not enough room in the buffer - grow it. */ -#ifdef YY_USES_REJECT - YY_FATAL_ERROR( -"input buffer overflow, can't enlarge buffer because scanner uses REJECT" ); -#else - - /* 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. */ - yy_flex_realloc( (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->yy_buf_size - - number_to_move - 1; -#endif - } - - if ( num_to_read > YY_READ_BUF_SIZE ) - num_to_read = YY_READ_BUF_SIZE; - - /* Read in more data. */ - YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]), - yy_n_chars, num_to_read ); - - yy_current_buffer->yy_n_chars = yy_n_chars; - } - - if ( yy_n_chars == 0 ) - { - if ( number_to_move == YY_MORE_ADJ ) - { - ret_val = EOB_ACT_END_OF_FILE; - yyrestart( yyin ); - } - - else - { - ret_val = EOB_ACT_LAST_MATCH; - yy_current_buffer->yy_buffer_status = - YY_BUFFER_EOF_PENDING; - } - } - - else - ret_val = EOB_ACT_CONTINUE_SCAN; - - yy_n_chars += number_to_move; - yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR; - yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; - - yytext_ptr = &yy_current_buffer->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() - { - 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 >= 89 ) - 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 ); - */ - -#ifdef YY_USE_PROTOS -static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state ) -#else -static yy_state_type yy_try_NUL_trans( yy_current_state ) -yy_state_type yy_current_state; -#endif - { - 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 >= 89 ) - 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 == 88); - - return yy_is_jam ? 0 : yy_current_state; - } - - -#ifndef YY_NO_UNPUT -#ifdef YY_USE_PROTOS -static void yyunput( int c, register char *yy_bp ) -#else -static void yyunput( c, yy_bp ) -int c; -register char *yy_bp; -#endif - { - register char *yy_cp = yy_c_buf_p; - - /* undo effects of setting up yytext */ - *yy_cp = yy_hold_char; - - if ( yy_cp < yy_current_buffer->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->yy_ch_buf[ - yy_current_buffer->yy_buf_size + 2]; - register char *source = - &yy_current_buffer->yy_ch_buf[number_to_move]; - - while ( source > yy_current_buffer->yy_ch_buf ) - *--dest = *--source; - - yy_cp += (int) (dest - source); - yy_bp += (int) (dest - source); - yy_current_buffer->yy_n_chars = - yy_n_chars = yy_current_buffer->yy_buf_size; - - if ( yy_cp < yy_current_buffer->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; - } -#endif /* ifndef YY_NO_UNPUT */ - - -#ifdef __cplusplus -static int yyinput() -#else -static int input() -#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->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. */ - yyrestart( yyin ); - - /* fall through */ - - case EOB_ACT_END_OF_FILE: - { - if ( yywrap() ) - 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 yytext */ - yy_hold_char = *++yy_c_buf_p; - - - return c; - } - - -#ifdef YY_USE_PROTOS -void yyrestart( FILE *input_file ) -#else -void yyrestart( input_file ) -FILE *input_file; -#endif - { - if ( ! yy_current_buffer ) - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); - - yy_init_buffer( yy_current_buffer, input_file ); - yy_load_buffer_state(); - } - - -#ifdef YY_USE_PROTOS -void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer ) -#else -void yy_switch_to_buffer( new_buffer ) -YY_BUFFER_STATE new_buffer; -#endif - { - 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->yy_buf_pos = yy_c_buf_p; - yy_current_buffer->yy_n_chars = yy_n_chars; - } - - yy_current_buffer = new_buffer; - yy_load_buffer_state(); - - /* We don't actually know whether we did this switch during - * EOF (yywrap()) processing, but the only time this flag - * is looked at is after yywrap() is called, so it's safe - * to go ahead and always set it. - */ - yy_did_buffer_switch_on_eof = 1; - } - - -#ifdef YY_USE_PROTOS -void yy_load_buffer_state( void ) -#else -void yy_load_buffer_state() -#endif - { - yy_n_chars = yy_current_buffer->yy_n_chars; - yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos; - yyin = yy_current_buffer->yy_input_file; - yy_hold_char = *yy_c_buf_p; - } - - -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_create_buffer( FILE *file, int size ) -#else -YY_BUFFER_STATE yy_create_buffer( file, size ) -FILE *file; -int size; -#endif - { - YY_BUFFER_STATE b; - - b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_buf_size = size; - - /* yy_ch_buf has to be 2 characters longer than the size given because - * we need to put in 2 end-of-buffer characters. - */ - b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 ); - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_is_our_buffer = 1; - - yy_init_buffer( b, file ); - - return b; - } - - -#ifdef YY_USE_PROTOS -void yy_delete_buffer( YY_BUFFER_STATE b ) -#else -void yy_delete_buffer( b ) -YY_BUFFER_STATE b; -#endif - { - if ( ! b ) - return; - - if ( b == yy_current_buffer ) - yy_current_buffer = (YY_BUFFER_STATE) 0; - - if ( b->yy_is_our_buffer ) - yy_flex_free( (void *) b->yy_ch_buf ); - - yy_flex_free( (void *) b ); - } - - -#ifndef YY_ALWAYS_INTERACTIVE -#ifndef YY_NEVER_INTERACTIVE -extern int isatty YY_PROTO(( int )); -#endif -#endif - -#ifdef YY_USE_PROTOS -void yy_init_buffer( YY_BUFFER_STATE b, FILE *file ) -#else -void yy_init_buffer( b, file ) -YY_BUFFER_STATE b; -FILE *file; -#endif - - - { - yy_flush_buffer( b ); - - b->yy_input_file = file; - b->yy_fill_buffer = 1; - -#if YY_ALWAYS_INTERACTIVE - b->yy_is_interactive = 1; -#else -#if YY_NEVER_INTERACTIVE - b->yy_is_interactive = 0; -#else - b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; -#endif -#endif - } - - -#ifdef YY_USE_PROTOS -void yy_flush_buffer( YY_BUFFER_STATE b ) -#else -void yy_flush_buffer( b ) -YY_BUFFER_STATE b; -#endif - - { - if ( ! b ) - return; - - b->yy_n_chars = 0; - - /* We always need two end-of-buffer characters. The first causes - * a transition to the end-of-buffer state. The second causes - * a jam in that state. - */ - b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; - b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; - - b->yy_buf_pos = &b->yy_ch_buf[0]; - - b->yy_at_bol = 1; - b->yy_buffer_status = YY_BUFFER_NEW; - - if ( b == yy_current_buffer ) - yy_load_buffer_state(); - } - - -#ifndef YY_NO_SCAN_BUFFER -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size ) -#else -YY_BUFFER_STATE yy_scan_buffer( base, size ) -char *base; -yy_size_t size; -#endif - { - 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) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_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; - - yy_switch_to_buffer( b ); - - return b; - } -#endif - - -#ifndef YY_NO_SCAN_STRING -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str ) -#else -YY_BUFFER_STATE yy_scan_string( yy_str ) -yyconst char *yy_str; -#endif - { - int len; - for ( len = 0; yy_str[len]; ++len ) - ; - - return yy_scan_bytes( yy_str, len ); - } -#endif - - -#ifndef YY_NO_SCAN_BYTES -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len ) -#else -YY_BUFFER_STATE yy_scan_bytes( bytes, len ) -yyconst char *bytes; -int len; -#endif - { - YY_BUFFER_STATE b; - char *buf; - yy_size_t n; - int i; - - /* Get memory for full buffer, including space for trailing EOB's. */ - n = len + 2; - buf = (char *) yy_flex_alloc( n ); - if ( ! buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); - - for ( i = 0; i < len; ++i ) - buf[i] = bytes[i]; - - buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR; - - b = yy_scan_buffer( buf, n ); - if ( ! b ) - YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); - - /* It's okay to grow etc. this buffer, and we should throw it - * away when we're done. - */ - b->yy_is_our_buffer = 1; - - return b; - } -#endif - - -#ifndef YY_NO_PUSH_STATE -#ifdef YY_USE_PROTOS -static void yy_push_state( int new_state ) -#else -static void yy_push_state( new_state ) -int new_state; -#endif - { - if ( yy_start_stack_ptr >= yy_start_stack_depth ) - { - yy_size_t new_size; - - yy_start_stack_depth += YY_START_STACK_INCR; - new_size = yy_start_stack_depth * sizeof( int ); - - if ( ! yy_start_stack ) - yy_start_stack = (int *) yy_flex_alloc( new_size ); - - else - yy_start_stack = (int *) yy_flex_realloc( - (void *) yy_start_stack, new_size ); - - if ( ! yy_start_stack ) - YY_FATAL_ERROR( - "out of memory expanding start-condition stack" ); - } - - yy_start_stack[yy_start_stack_ptr++] = YY_START; - - BEGIN(new_state); - } -#endif - - -#ifndef YY_NO_POP_STATE -static void yy_pop_state() - { - if ( --yy_start_stack_ptr < 0 ) - YY_FATAL_ERROR( "start-condition stack underflow" ); - - BEGIN(yy_start_stack[yy_start_stack_ptr]); - } -#endif - - -#ifndef YY_NO_TOP_STATE -static int yy_top_state() - { - return yy_start_stack[yy_start_stack_ptr - 1]; - } -#endif - -#ifndef YY_EXIT_FAILURE -#define YY_EXIT_FAILURE 2 -#endif - -#ifdef YY_USE_PROTOS -static void yy_fatal_error( yyconst char msg[] ) -#else -static void yy_fatal_error( msg ) -char msg[]; -#endif - { - (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 yytext. */ \ - yytext[yyleng] = yy_hold_char; \ - yy_c_buf_p = yytext + n; \ - yy_hold_char = *yy_c_buf_p; \ - *yy_c_buf_p = '\0'; \ - yyleng = n; \ - } \ - while ( 0 ) - - -/* Internal utility routines. */ - -#ifndef yytext_ptr -#ifdef YY_USE_PROTOS -static void yy_flex_strncpy( char *s1, yyconst char *s2, int n ) -#else -static void yy_flex_strncpy( s1, s2, n ) -char *s1; -yyconst char *s2; -int n; -#endif - { - register int i; - for ( i = 0; i < n; ++i ) - s1[i] = s2[i]; - } -#endif - -#ifdef YY_NEED_STRLEN -#ifdef YY_USE_PROTOS -static int yy_flex_strlen( yyconst char *s ) -#else -static int yy_flex_strlen( s ) -yyconst char *s; -#endif - { - register int n; - for ( n = 0; s[n]; ++n ) - ; - - return n; - } -#endif - - -#ifdef YY_USE_PROTOS -static void *yy_flex_alloc( yy_size_t size ) -#else -static void *yy_flex_alloc( size ) -yy_size_t size; -#endif - { - return (void *) malloc( size ); - } - -#ifdef YY_USE_PROTOS -static void *yy_flex_realloc( void *ptr, yy_size_t size ) -#else -static void *yy_flex_realloc( ptr, size ) -void *ptr; -yy_size_t size; -#endif - { - /* 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 ); - } - -#ifdef YY_USE_PROTOS -static void yy_flex_free( void *ptr ) -#else -static void yy_flex_free( ptr ) -void *ptr; -#endif - { - free( ptr ); - } - -#if YY_MAIN -int main() - { - yylex(); - return 0; - } -#endif -#line 199 "declinfo.l" - - -/*@ ---------------------------------------------------------------------------- - */ - -void parseFuncDecl(const QCString &decl,QCString &cl,QCString &ctl,QCString &t, - QCString &n,QCString &a,QCString &ftl,QCString &exc) -{ - inputString = decl; - //printf("Input=`%s'\n",inputString); - if (inputString==0) return; - inputPosition = 0; - classTempListFound = FALSE; - funcTempListFound = FALSE; - scope.resize(0); - className.resize(0); - classTempList.resize(0); - funcTempList.resize(0); - name.resize(0); - type.resize(0); - args.resize(0); - exceptionString.resize(0); - // first we try to find the type, scope, name and arguments - declinfoYYrestart( declinfoYYin ); - BEGIN( Start ); - declinfoYYlex(); - - cl=scope.copy(); - //printf("scope=`%s'\n",scope.data()); - int il=0,ir=0; - if ((il=cl.find('<'))!=-1 && (ir=cl.findRev('>'))!=-1) // split up scope and template arguments - { - ctl=removeRedundantWhiteSpace(cl.mid(il,ir-il+1)); - cl=cl.left(il)+cl.right(cl.length()-ir-1); - } - //printf("cl=`%s' ctl=`%s'\n",cl.data(),ctl.data()); - n=removeRedundantWhiteSpace(name); - if ((il=n.find('<'))!=-1 && (ir=n.findRev('>'))!=-1) - // TODO: handle cases like where n="operator<< " - { - ftl=removeRedundantWhiteSpace(n.right(n.length()-il)); - n=n.left(il); - } - - //ctl=classTempList.copy(); - //ftl=funcTempList.copy(); - t=removeRedundantWhiteSpace(type); - a=removeRedundantWhiteSpace(args); - exc=removeRedundantWhiteSpace(exceptionString); - - if (!t.isEmpty() && t.at(t.length()-1)==')') - { - a.prepend(")"); - t=t.left(t.length()-1); - } - //printf("type=`%s' class=`%s' name=`%s' args=`%s'\n", - // t.data(),cl.data(),n.data(),a.data()); - - return; - - -} - -//extern "C" { // some bogus code to keep the compiler happy -// int declinfoYYwrap() { return 1 ; } -// void declinfoYYdummy() { yy_flex_realloc(0,0); } -//} - -#if 0 -void dumpDecl(const char *s) -{ - QCString className; - QCString classTNames; - QCString type; - QCString name; - QCString args; - QCString funcTNames; - printf("-----------------------------------------\n"); - parseFuncDecl(s,className,classTNames,type,name,args,funcTNames); - printf("type=`%s' class=`%s' classTempl=`%s' name=`%s' " - "funcTemplateNames=`%s' args=`%s'\n", - type.data(),className.data(),classTNames.data(), - name.data(),funcTNames.data(),args.data() - ); -} - -// some test code -int main() -{ - dumpDecl("A < T > :: Value * A < T > :: getValue < S > ( const A < T > & a )"); - dumpDecl("const A::Value* A::getValue(const A&a)"); - dumpDecl("func()"); - dumpDecl("friend void bla<>()"); - dumpDecl("name< T > :: operator () (int bla)"); - dumpDecl("name< T > :: operator << (int bla)"); - dumpDecl("name< T > :: operator << <> (int bla)"); - dumpDecl("className::func()"); - dumpDecl("void ( * Name < T > :: bla ) ( int, char * )"); -} -#endif diff --git a/src/defargs.cpp b/src/defargs.cpp deleted file mode 100644 index 86adfb6..0000000 --- a/src/defargs.cpp +++ /dev/null @@ -1,2245 +0,0 @@ -#define yy_create_buffer defargsYY_create_buffer -#define yy_delete_buffer defargsYY_delete_buffer -#define yy_scan_buffer defargsYY_scan_buffer -#define yy_scan_string defargsYY_scan_string -#define yy_scan_bytes defargsYY_scan_bytes -#define yy_flex_debug defargsYY_flex_debug -#define yy_init_buffer defargsYY_init_buffer -#define yy_flush_buffer defargsYY_flush_buffer -#define yy_load_buffer_state defargsYY_load_buffer_state -#define yy_switch_to_buffer defargsYY_switch_to_buffer -#define yyin defargsYYin -#define yyleng defargsYYleng -#define yylex defargsYYlex -#define yyout defargsYYout -#define yyrestart defargsYYrestart -#define yytext defargsYYtext - -/* A lexical scanner generated by flex */ - -/* Scanner skeleton version: - * $Header$ - */ - -#define FLEX_SCANNER -#define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 5 - -#include - - -/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */ -#ifdef c_plusplus -#ifndef __cplusplus -#define __cplusplus -#endif -#endif - - -#ifdef __cplusplus - -#include -#include - -/* Use prototypes in function declarations. */ -#define YY_USE_PROTOS - -/* The "const" storage-class-modifier is valid. */ -#define YY_USE_CONST - -#else /* ! __cplusplus */ - -#if __STDC__ - -#define YY_USE_PROTOS -#define YY_USE_CONST - -#endif /* __STDC__ */ -#endif /* ! __cplusplus */ - -#ifdef __TURBOC__ - #pragma warn -rch - #pragma warn -use -#include -#include -#define YY_USE_CONST -#define YY_USE_PROTOS -#endif - -#ifdef YY_USE_CONST -#define yyconst const -#else -#define yyconst -#endif - - -#ifdef YY_USE_PROTOS -#define YY_PROTO(proto) proto -#else -#define YY_PROTO(proto) () -#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 yyrestart( yyin ) - -#define YY_END_OF_BUFFER_CHAR 0 - -/* Size of default input buffer. */ -#define YY_BUF_SIZE 16384 - -typedef struct yy_buffer_state *YY_BUFFER_STATE; - -extern int yyleng; -extern FILE *yyin, *yyout; - -#define EOB_ACT_CONTINUE_SCAN 0 -#define EOB_ACT_END_OF_FILE 1 -#define EOB_ACT_LAST_MATCH 2 - -/* The funky do-while in the following #define is used to turn the definition - * int a single C statement (which needs a semi-colon terminator). This - * avoids problems with code like: - * - * if ( condition_holds ) - * yyless( 5 ); - * else - * do_something_else(); - * - * Prior to using the do-while the compiler would get upset at the - * "else" because it interpreted the "if" statement as being all - * done when it reached the ';' after the yyless() call. - */ - -/* Return all but the first 'n' matched characters back to the input stream. */ - -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - *yy_cp = yy_hold_char; \ - YY_RESTORE_YY_MORE_OFFSET \ - yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \ - YY_DO_BEFORE_ACTION; /* set up yytext again */ \ - } \ - while ( 0 ) - -#define unput(c) yyunput( c, yytext_ptr ) - -/* The following is because we cannot portably get our hands on size_t - * (without autoconf's help, which isn't available because we want - * flex-generated scanners to compile on their own). - */ -typedef unsigned int yy_size_t; - - -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; - - /* Whether to try to fill the input buffer when we reach the - * end of it. - */ - int yy_fill_buffer; - - int yy_buffer_status; -#define YY_BUFFER_NEW 0 -#define YY_BUFFER_NORMAL 1 - /* When an EOF's been seen but there's still some text to process - * then we mark the buffer as YY_EOF_PENDING, to indicate that we - * shouldn't try reading from the input source any more. We might - * still have a bunch of tokens to match, though, because of - * possible backing-up. - * - * When we actually see the EOF, we change the status to "new" - * (via yyrestart()), so that the user can continue scanning by - * just pointing yyin at a new input file. - */ -#define YY_BUFFER_EOF_PENDING 2 - }; - -static YY_BUFFER_STATE yy_current_buffer = 0; - -/* 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". - */ -#define YY_CURRENT_BUFFER yy_current_buffer - - -/* yy_hold_char holds the character lost when yytext is formed. */ -static char yy_hold_char; - -static int yy_n_chars; /* number of characters read into yy_ch_buf */ - - -int yyleng; - -/* Points to current character in buffer. */ -static char *yy_c_buf_p = (char *) 0; -static int yy_init = 1; /* whether we need to initialize */ -static int yy_start = 0; /* start state number */ - -/* Flag which is used to allow yywrap()'s to do buffer switches - * instead of setting up a fresh yyin. A bit of a hack ... - */ -static int yy_did_buffer_switch_on_eof; - -void yyrestart YY_PROTO(( FILE *input_file )); - -void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer )); -void yy_load_buffer_state YY_PROTO(( void )); -YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size )); -void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b )); -void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file )); -void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b )); -#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer ) - -YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size )); -YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str )); -YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len )); - -static void *yy_flex_alloc YY_PROTO(( yy_size_t )); -static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t )); -static void yy_flex_free YY_PROTO(( void * )); - -#define yy_new_buffer yy_create_buffer - -#define yy_set_interactive(is_interactive) \ - { \ - if ( ! yy_current_buffer ) \ - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ - yy_current_buffer->yy_is_interactive = is_interactive; \ - } - -#define yy_set_bol(at_bol) \ - { \ - if ( ! yy_current_buffer ) \ - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ - yy_current_buffer->yy_at_bol = at_bol; \ - } - -#define YY_AT_BOL() (yy_current_buffer->yy_at_bol) - - -#define YY_USES_REJECT - -#define yywrap() 1 -#define YY_SKIP_YYWRAP -typedef unsigned char YY_CHAR; -FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; -typedef int yy_state_type; -extern char *yytext; -#define yytext_ptr yytext - -static yy_state_type yy_get_previous_state YY_PROTO(( void )); -static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state )); -static int yy_get_next_buffer YY_PROTO(( void )); -static void yy_fatal_error YY_PROTO(( yyconst char msg[] )); - -/* Done after the current pattern has been matched and before the - * corresponding action - sets up yytext. - */ -#define YY_DO_BEFORE_ACTION \ - yytext_ptr = yy_bp; \ - yyleng = (int) (yy_cp - yy_bp); \ - yy_hold_char = *yy_cp; \ - *yy_cp = '\0'; \ - yy_c_buf_p = yy_cp; - -#define YY_NUM_RULES 41 -#define YY_END_OF_BUFFER 42 -static yyconst short int yy_acclist[184] = - { 0, - 2, 2, 42, 40, 41, 39, 41, 40, 41, 1, - 40, 41, 26, 40, 41, 20, 26, 40, 41, 26, - 40, 41, 26, 40, 41, 28, 40, 41, 13, 28, - 40, 41, 14, 28, 40, 41, 28, 40, 41, 27, - 28, 40, 41, 15, 28, 40, 41, 16, 28, 40, - 41, 18, 28, 40, 41, 17, 28, 40, 41, 25, - 40, 41, 2, 25, 40, 41, 12, 25, 40, 41, - 23, 25, 40, 41, 25, 40, 41, 12, 25, 40, - 41, 21, 25, 40, 41, 24, 25, 40, 41, 25, - 40, 41, 7, 26, 40, 41, 26, 40, 41, 12, - - 26, 40, 41, 23, 26, 40, 41, 11, 25, 40, - 41, 9, 24, 25, 40, 41, 40, 41, 40, 41, - 40, 41, 32, 37, 40, 41, 36, 39, 41, 37, - 40, 41, 32, 37, 40, 41, 33, 40, 41, 35, - 39, 41, 33, 40, 41, 19, 27, 2,16392, 24, - 3, 10, 9, 24, 31, 32, 34, 32, 33, 33, - 33, 38,16392, 8200, 6, 6, 32, 38, 33, 38, - 38, 8200, 5, 4, 5, 32, 38, 33, 38, 22, - 4, 29, 30 - } ; - -static yyconst short int yy_accept[135] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 2, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 4, 6, 8, - 10, 13, 16, 20, 23, 26, 29, 33, 37, 40, - 44, 48, 52, 56, 60, 63, 67, 71, 75, 78, - 82, 86, 90, 93, 97, 100, 104, 108, 112, 117, - 119, 121, 123, 127, 130, 133, 137, 140, 143, 146, - 146, 146, 147, 148, 149, 149, 149, 150, 150, 150, - 151, 151, 152, 152, 152, 152, 153, 155, 155, 156, - 156, 156, 157, 158, 159, 160, 161, 162, 163, 163, - - 163, 163, 164, 165, 165, 165, 166, 166, 167, 167, - 167, 167, 169, 171, 172, 172, 173, 173, 174, 176, - 176, 176, 176, 178, 180, 181, 182, 182, 183, 183, - 183, 183, 184, 184 - } ; - -static yyconst int yy_ec[256] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 4, 5, 1, 1, 1, 6, 7, 8, - 9, 10, 1, 11, 1, 1, 12, 13, 14, 14, - 14, 14, 14, 14, 14, 15, 15, 16, 1, 17, - 18, 19, 1, 1, 20, 20, 20, 20, 20, 20, - 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 21, 22, 23, 1, 20, 1, 24, 20, 25, 20, - - 26, 20, 20, 20, 27, 20, 20, 28, 20, 29, - 30, 20, 20, 20, 31, 32, 20, 33, 20, 20, - 20, 20, 34, 1, 35, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1 - } ; - -static yyconst int yy_meta[36] = - { 0, - 1, 1, 2, 1, 1, 1, 1, 1, 3, 4, - 1, 1, 5, 5, 5, 3, 1, 1, 1, 5, - 1, 1, 1, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 1, 1 - } ; - -static yyconst short int yy_base[149] = - { 0, - 0, 1, 2, 3, 4, 18, 40, 0, 0, 0, - 68, 71, 73, 75, 109, 0, 142, 0, 174, 205, - 145, 155, 15, 19, 5, 21, 287, 363, 363, 22, - 363, 363, 363, 25, 0, 363, 363, 363, 26, 0, - 363, 363, 363, 363, 363, 284, 87, 84, 82, 363, - 363, 0, 258, 363, 258, 363, 89, 96, 0, 26, - 249, 248, 0, 363, 265, 90, 0, 363, 150, 95, - 152, 363, 0, 274, 150, 169, 237, 153, 162, 0, - 252, 363, 267, 177, 179, 363, 0, 180, 363, 244, - 244, 0, 363, 185, 0, 205, 206, 243, 210, 240, - - 238, 186, 269, 209, 212, 363, 248, 244, 214, 219, - 222, 225, 206, 363, 239, 0, 205, 363, 363, 245, - 188, 179, 0, 0, 363, 363, 188, 363, 142, 140, - 120, 363, 363, 302, 307, 312, 317, 322, 327, 103, - 332, 90, 337, 342, 73, 347, 352, 357 - } ; - -static yyconst short int yy_def[149] = - { 0, - 134, 134, 134, 134, 135, 135, 133, 7, 7, 7, - 7, 7, 7, 7, 133, 15, 135, 17, 136, 136, - 134, 134, 137, 137, 138, 138, 133, 133, 133, 133, - 133, 133, 133, 133, 139, 133, 133, 133, 133, 140, - 133, 133, 133, 133, 133, 133, 141, 133, 133, 133, - 133, 142, 143, 133, 144, 133, 133, 133, 145, 133, - 133, 133, 146, 133, 133, 146, 147, 133, 147, 133, - 133, 133, 140, 133, 141, 141, 141, 133, 133, 142, - 143, 133, 133, 148, 133, 133, 145, 133, 133, 133, - 133, 146, 133, 146, 147, 147, 147, 133, 141, 133, - - 141, 77, 141, 133, 133, 133, 133, 133, 133, 133, - 133, 146, 147, 133, 141, 103, 133, 133, 133, 133, - 133, 133, 146, 147, 133, 133, 133, 133, 133, 133, - 133, 133, 0, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133 - } ; - -static yyconst short int yy_nxt[399] = - { 0, - 133, 133, 29, 29, 29, 29, 29, 68, 33, 31, - 31, 30, 30, 30, 30, 34, 69, 64, 31, 31, - 29, 64, 33, 68, 65, 35, 66, 88, 65, 34, - 66, 70, 69, 71, 70, 70, 71, 71, 89, 35, - 36, 36, 29, 36, 36, 36, 36, 37, 38, 36, - 36, 39, 36, 36, 36, 36, 36, 36, 36, 40, - 36, 36, 36, 40, 40, 40, 40, 40, 40, 40, - 40, 40, 40, 36, 36, 36, 36, 87, 36, 36, - 36, 36, 36, 36, 41, 78, 42, 41, 76, 42, - 78, 70, 77, 71, 80, 79, 77, 85, 98, 70, - - 79, 94, 43, 86, 98, 43, 44, 73, 44, 45, - 46, 29, 45, 45, 45, 45, 47, 48, 45, 48, - 49, 45, 45, 45, 45, 50, 51, 48, 52, 53, - 45, 45, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 50, 45, 29, 132, 54, 29, 55, 56, - 57, 99, 57, 34, 78, 98, 30, 29, 56, 96, - 57, 97, 60, 98, 79, 100, 30, 131, 130, 61, - 101, 104, 60, 105, 77, 56, 29, 62, 77, 61, - 85, 88, 58, 108, 100, 49, 86, 62, 112, 109, - 109, 75, 89, 59, 126, 75, 112, 59, 59, 59, - - 59, 59, 59, 59, 59, 59, 59, 29, 113, 113, - 129, 99, 117, 58, 113, 117, 49, 113, 117, 128, - 119, 125, 124, 117, 59, 100, 120, 120, 59, 59, - 59, 59, 59, 59, 59, 59, 59, 59, 102, 101, - 76, 123, 77, 77, 77, 122, 77, 77, 77, 121, - 118, 126, 100, 100, 118, 115, 103, 127, 127, 114, - 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, - 99, 111, 110, 106, 82, 74, 93, 91, 90, 84, - 82, 116, 116, 116, 100, 74, 133, 133, 116, 133, - 133, 133, 116, 116, 116, 116, 116, 116, 116, 116, - - 116, 116, 28, 28, 28, 28, 28, 32, 32, 32, - 32, 32, 45, 45, 45, 45, 45, 63, 63, 63, - 63, 63, 67, 67, 67, 67, 67, 72, 133, 72, - 72, 72, 75, 75, 133, 75, 75, 81, 81, 81, - 81, 81, 83, 133, 83, 83, 83, 92, 133, 92, - 133, 92, 95, 133, 95, 95, 95, 107, 133, 107, - 107, 107, 27, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133 - - } ; - -static yyconst short int yy_chk[399] = - { 0, - 0, 0, 1, 2, 3, 4, 5, 25, 5, 3, - 4, 1, 2, 3, 4, 5, 25, 23, 3, 4, - 6, 24, 6, 26, 23, 5, 23, 60, 24, 6, - 24, 30, 26, 30, 34, 39, 34, 39, 60, 6, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 11, 11, 145, 12, 12, - 13, 13, 14, 14, 11, 48, 11, 12, 47, 12, - 57, 49, 47, 49, 142, 48, 47, 58, 70, 66, - - 57, 66, 11, 58, 70, 12, 13, 140, 14, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 17, 131, 17, 21, 17, 17, - 17, 75, 17, 17, 78, 71, 21, 22, 17, 69, - 17, 69, 21, 71, 78, 75, 22, 130, 129, 21, - 76, 79, 22, 79, 76, 17, 19, 21, 76, 22, - 85, 88, 19, 84, 76, 19, 85, 22, 94, 84, - 84, 102, 88, 19, 127, 102, 94, 19, 19, 19, - - 19, 19, 19, 19, 19, 19, 19, 20, 96, 97, - 122, 99, 104, 20, 96, 105, 20, 97, 104, 121, - 109, 117, 113, 105, 20, 99, 109, 109, 20, 20, - 20, 20, 20, 20, 20, 20, 20, 20, 77, 101, - 115, 112, 77, 101, 115, 111, 77, 101, 115, 110, - 108, 120, 77, 101, 107, 100, 77, 120, 120, 98, - 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, - 103, 91, 90, 83, 81, 74, 65, 62, 61, 55, - 53, 103, 103, 103, 103, 46, 27, 0, 103, 0, - 0, 0, 103, 103, 103, 103, 103, 103, 103, 103, - - 103, 103, 134, 134, 134, 134, 134, 135, 135, 135, - 135, 135, 136, 136, 136, 136, 136, 137, 137, 137, - 137, 137, 138, 138, 138, 138, 138, 139, 0, 139, - 139, 139, 141, 141, 0, 141, 141, 143, 143, 143, - 143, 143, 144, 0, 144, 144, 144, 146, 0, 146, - 0, 146, 147, 0, 147, 147, 147, 148, 0, 148, - 148, 148, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133 - - } ; - -static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr; -static char *yy_full_match; -static int yy_lp; -static int yy_looking_for_trail_begin = 0; -static int yy_full_lp; -static int *yy_full_state; -#define YY_TRAILING_MASK 0x2000 -#define YY_TRAILING_HEAD_MASK 0x4000 -#define REJECT \ -{ \ -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ \ -yy_cp = yy_full_match; /* restore poss. backed-over text */ \ -yy_lp = yy_full_lp; /* restore orig. accepting pos. */ \ -yy_state_ptr = yy_full_state; /* restore orig. state */ \ -yy_current_state = *yy_state_ptr; /* restore curr. state */ \ -++yy_lp; \ -goto find_rule; \ -} -#define yymore() yymore_used_but_not_detected -#define YY_MORE_ADJ 0 -#define YY_RESTORE_YY_MORE_OFFSET -char *yytext; -#line 1 "defargs.l" -#define INITIAL 0 -/****************************************************************************** - * - * $Id$ - * - * Copyright (C) 1997-2000 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - * All output generated with Doxygen is not covered by this license. - * - */ -/*! \file - * This scanner is used to convert a string into a list of function or - * template arguments. Each parsed argument results in a Argument struct, - * that is put into an ArgumentList in declaration order. - * Comment blocks for arguments can also be included in the string. - * The argument string does not contain new-lines (except inside any - * comment blocks). - * An Argument consists of the string fields: - * type,name,default value, and documentation - * The Argument list as a whole can be pure, constant or volatile. - * - * Examples of input strings are: - * \code - * "(int a,int b) const" - * "(const char *s="hello world",int=5) = 0" - * "" - * "(char c,const char)" - * \endcode - * - * Note: It is not always possible to distinguish between the name and - * type of an argument. In case of doubt the name is added to the - * type, and the matchArgumentList in util.cpp is be used to - * further determine the correct separation. - */ -#line 43 "defargs.l" - -/* - * includes - */ -#include "qtbc.h" -#include -#include -#include -#include -#include - -#include "defargs.h" -#include "entry.h" -#include "util.h" - -#define YY_NEVER_INTERACTIVE 1 - -/* ----------------------------------------------------------------- - * state variables - */ -static const char *g_inputString; -static int g_inputPosition; -static ArgumentList *g_argList; -static QCString *g_copyArgValue; -static QCString g_curArgTypeName; -static QCString g_curArgDefValue; -static QCString g_curArgName; -static QCString g_curArgDocs; -static QCString g_curArgAttrib; -static QCString g_curArgArray; -static int g_argRoundCount; -static int g_argSharpCount; -static int g_argCurlyCount; -static int g_readArgContext; -static int g_lastDocContext; -static int g_lastDocChar; - -/* ----------------------------------------------------------------- - */ -#undef YY_INPUT -#define YY_INPUT(buf,result,max_size) result=yyread(buf,max_size); - -static int yyread(char *buf,int max_size) -{ - int c=0; - while( c < max_size && g_inputString[g_inputPosition] ) - { - *buf = g_inputString[g_inputPosition++] ; - c++; buf++; - } - return c; -} - -#define Start 1 - -#define CopyArgString 2 - -#define CopyArgRound 3 - -#define CopyArgRound2 4 - -#define CopyArgSharp 5 - -#define CopyArgCurly 6 - -#define ReadFuncArgType 7 - -#define ReadFuncArgDef 8 - -#define ReadFuncArgPtr 9 - -#define FuncQual 10 - -#define ReadDocBlock 11 - -#define ReadDocLine 12 - - -/* Macros after this point can all be overridden by user definitions in - * section 1. - */ - -#ifndef YY_SKIP_YYWRAP -#ifdef __cplusplus -extern "C" int yywrap YY_PROTO(( void )); -#else -extern int yywrap YY_PROTO(( void )); -#endif -#endif - -#ifndef YY_NO_UNPUT -static void yyunput YY_PROTO(( int c, char *buf_ptr )); -#endif - -#ifndef yytext_ptr -static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int )); -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen YY_PROTO(( yyconst char * )); -#endif - -#ifndef YY_NO_INPUT -#ifdef __cplusplus -static int yyinput YY_PROTO(( void )); -#else -static int input YY_PROTO(( void )); -#endif -#endif - -#if YY_STACK_USED -static int yy_start_stack_ptr = 0; -static int yy_start_stack_depth = 0; -static int *yy_start_stack = 0; -#ifndef YY_NO_PUSH_STATE -static void yy_push_state YY_PROTO(( int new_state )); -#endif -#ifndef YY_NO_POP_STATE -static void yy_pop_state YY_PROTO(( void )); -#endif -#ifndef YY_NO_TOP_STATE -static int yy_top_state YY_PROTO(( void )); -#endif - -#else -#define YY_NO_PUSH_STATE 1 -#define YY_NO_POP_STATE 1 -#define YY_NO_TOP_STATE 1 -#endif - -#ifdef YY_MALLOC_DECL -YY_MALLOC_DECL -#else -#if __STDC__ -#ifndef __cplusplus -#include -#endif -#else -/* Just try to get by without declaring the routines. This will fail - * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int) - * or sizeof(void*) != sizeof(int). - */ -#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 (void) fwrite( yytext, yyleng, 1, yyout ) -#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->yy_is_interactive ) \ - { \ - int c = '*', n; \ - for ( n = 0; n < max_size && \ - (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ - buf[n] = (char) c; \ - if ( c == '\n' ) \ - buf[n++] = (char) c; \ - if ( c == EOF && ferror( yyin ) ) \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - result = n; \ - } \ - else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \ - && ferror( yyin ) ) \ - YY_FATAL_ERROR( "input in flex scanner failed" ); -#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 - -/* Default declaration of generated scanner - a define so the user can - * easily add parameters. - */ -#ifndef YY_DECL -#define YY_DECL int yylex YY_PROTO(( void )) -#endif - -/* Code executed at the beginning of each rule, after yytext and yyleng - * have been set up. - */ -#ifndef YY_USER_ACTION -#define YY_USER_ACTION -#endif - -/* Code executed at the end of each rule. */ -#ifndef YY_BREAK -#define YY_BREAK break; -#endif - -#define YY_RULE_SETUP \ - YY_USER_ACTION - -YY_DECL - { - register yy_state_type yy_current_state; - register char *yy_cp, *yy_bp; - register int yy_act; - -#line 117 "defargs.l" - - - - if ( yy_init ) - { - yy_init = 0; - -#ifdef YY_USER_INIT - YY_USER_INIT; -#endif - - if ( ! yy_start ) - yy_start = 1; /* first start state */ - - if ( ! yyin ) - yyin = stdin; - - if ( ! yyout ) - yyout = stdout; - - if ( ! yy_current_buffer ) - yy_current_buffer = - yy_create_buffer( yyin, YY_BUF_SIZE ); - - yy_load_buffer_state(); - } - - while ( 1 ) /* loops until end-of-file is reached */ - { - yy_cp = yy_c_buf_p; - - /* Support of yytext. */ - *yy_cp = yy_hold_char; - - /* yy_bp points to the position in yy_ch_buf of the start of - * the current run. - */ - yy_bp = yy_cp; - - yy_current_state = yy_start; - yy_state_ptr = yy_state_buf; - *yy_state_ptr++ = yy_current_state; -yy_match: - do - { - register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 134 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - *yy_state_ptr++ = yy_current_state; - ++yy_cp; - } - while ( yy_base[yy_current_state] != 363 ); - -yy_find_action: - yy_current_state = *--yy_state_ptr; - yy_lp = yy_accept[yy_current_state]; -find_rule: /* we branch to this label when backing up */ - for ( ; ; ) /* until we find what rule we matched */ - { - if ( yy_lp && yy_lp < yy_accept[yy_current_state + 1] ) - { - yy_act = yy_acclist[yy_lp]; - if ( yy_act & YY_TRAILING_HEAD_MASK || - yy_looking_for_trail_begin ) - { - if ( yy_act == yy_looking_for_trail_begin ) - { - yy_looking_for_trail_begin = 0; - yy_act &= ~YY_TRAILING_HEAD_MASK; - break; - } - } - else if ( yy_act & YY_TRAILING_MASK ) - { - yy_looking_for_trail_begin = yy_act & ~YY_TRAILING_MASK; - yy_looking_for_trail_begin |= YY_TRAILING_HEAD_MASK; - } - else - { - yy_full_match = yy_cp; - yy_full_state = yy_state_ptr; - yy_full_lp = yy_lp; - break; - } - ++yy_lp; - goto find_rule; - } - --yy_cp; - yy_current_state = *--yy_state_ptr; - yy_lp = yy_accept[yy_current_state]; - } - - YY_DO_BEFORE_ACTION; - - -do_action: /* This label is used only to access EOF actions. */ - - - switch ( yy_act ) - { /* beginning of action switch */ -case 1: -YY_RULE_SETUP -#line 119 "defargs.l" -{ BEGIN(ReadFuncArgType); } - YY_BREAK -case 2: -YY_RULE_SETUP -#line 121 "defargs.l" -{ - g_curArgTypeName+=" "; - } - YY_BREAK -case 3: -YY_RULE_SETUP -#line 124 "defargs.l" -{ - if (g_curArgTypeName.stripWhiteSpace().isEmpty()) - { - g_curArgAttrib=yytext; // for M$-IDL - } - else // array type - { - g_curArgArray+=yytext; - } - } - YY_BREAK -case 4: -YY_RULE_SETUP -#line 134 "defargs.l" -{ g_curArgDefValue+=yytext; } - YY_BREAK -case 5: -YY_RULE_SETUP -#line 135 "defargs.l" -{ g_curArgDefValue+=yytext; } - YY_BREAK -case 6: -YY_RULE_SETUP -#line 136 "defargs.l" -{ g_curArgDefValue+=yytext; } - YY_BREAK -case 7: -YY_RULE_SETUP -#line 137 "defargs.l" -{ - g_curArgDefValue+=*yytext; - BEGIN( CopyArgString ); - } - YY_BREAK -case 8: -YY_RULE_SETUP -#line 141 "defargs.l" -{ - // function pointer as argument - g_curArgTypeName+=yytext; - //g_curArgTypeName=g_curArgTypeName.simplifyWhiteSpace(); - BEGIN( ReadFuncArgPtr ); - } - YY_BREAK -case 9: -YY_RULE_SETUP -#line 147 "defargs.l" -{ - g_curArgName=yytext; - } - YY_BREAK -case 10: -YY_RULE_SETUP -#line 150 "defargs.l" -{ - g_curArgTypeName+=yytext; - //g_curArgTypeName=g_curArgTypeName.simplifyWhiteSpace(); - g_readArgContext = ReadFuncArgType; - g_copyArgValue=&g_curArgTypeName; - g_argRoundCount=0; - BEGIN( CopyArgRound2 ); - } - YY_BREAK -case 11: -YY_RULE_SETUP -#line 158 "defargs.l" -{ // redundant braces detected / remove them - int i=g_curArgTypeName.findRev('('),l=g_curArgTypeName.length(); - if (i!=-1) - g_curArgTypeName=g_curArgTypeName.left(i)+ - g_curArgTypeName.right(l-i-1); - g_curArgTypeName+=g_curArgName; - BEGIN( ReadFuncArgType ); - } - YY_BREAK -case 12: -YY_RULE_SETUP -#line 166 "defargs.l" -{ - if (YY_START==ReadFuncArgType) - { - g_curArgTypeName+=*yytext; - g_copyArgValue=&g_curArgTypeName; - } - else // YY_START==ReadFuncArgDef - { - g_curArgDefValue+=*yytext; - g_copyArgValue=&g_curArgDefValue; - } - g_readArgContext = YY_START; - if (*yytext=='(') - { - g_argRoundCount=0; - BEGIN( CopyArgRound ); - } - else if (*yytext=='{') - { - g_argCurlyCount=0; - BEGIN( CopyArgCurly ); - } - else // yytext=='<' - { - g_argSharpCount=0; - BEGIN( CopyArgSharp ); - } - } - YY_BREAK -case 13: -YY_RULE_SETUP -#line 194 "defargs.l" -{ - g_argRoundCount++; - *g_copyArgValue += *yytext; - } - YY_BREAK -case 14: -YY_RULE_SETUP -#line 198 "defargs.l" -{ - *g_copyArgValue += *yytext; - if (g_argRoundCount>0) - { - g_argRoundCount--; - } - else - { - if (YY_START==CopyArgRound2) - { - *g_copyArgValue+=" "+g_curArgName; - } - BEGIN( g_readArgContext ); - } - } - YY_BREAK -case 15: -YY_RULE_SETUP -#line 213 "defargs.l" -{ - g_argSharpCount++; - *g_copyArgValue += *yytext; - } - YY_BREAK -case 16: -YY_RULE_SETUP -#line 217 "defargs.l" -{ - *g_copyArgValue += *yytext; - if (g_argSharpCount>0) g_argSharpCount--; - else BEGIN( g_readArgContext ); - } - YY_BREAK -case 17: -YY_RULE_SETUP -#line 222 "defargs.l" -{ - g_argCurlyCount++; - *g_copyArgValue += *yytext; - } - YY_BREAK -case 18: -YY_RULE_SETUP -#line 226 "defargs.l" -{ - *g_copyArgValue += *yytext; - if (g_argCurlyCount>0) g_argCurlyCount--; - else BEGIN( g_readArgContext ); - } - YY_BREAK -case 19: -YY_RULE_SETUP -#line 231 "defargs.l" -{ - g_curArgDefValue+=yytext; - } - YY_BREAK -case 20: -YY_RULE_SETUP -#line 234 "defargs.l" -{ - g_curArgDefValue+=*yytext; - BEGIN( ReadFuncArgDef ); - } - YY_BREAK -case 21: -YY_RULE_SETUP -#line 238 "defargs.l" -{ - BEGIN( ReadFuncArgDef ); - } - YY_BREAK -case 22: -YY_RULE_SETUP -#line 241 "defargs.l" -{ - g_lastDocContext=YY_START; - g_lastDocChar=*yytext; - QCString text=yytext; - if (text.find("//")!=-1) - BEGIN( ReadDocLine ); - else - BEGIN( ReadDocBlock ); - } - YY_BREAK -case 23: -YY_RULE_SETUP -#line 250 "defargs.l" -{ - g_curArgTypeName=removeRedundantWhiteSpace( - g_curArgTypeName.simplifyWhiteSpace()); - g_curArgDefValue=g_curArgDefValue.stripWhiteSpace(); - int l=g_curArgTypeName.length(); - if (l>0) - { - int i=l-1; - while (i>=0 && - ( - isspace(g_curArgTypeName.at(i)) || - isId(g_curArgTypeName.at(i)) - ) - ) i--; - Argument *a = new Argument; - a->attrib = g_curArgAttrib.copy(); - if (i>=0 && g_curArgTypeName.at(i)!=':') - { // type contains a name - a->type = g_curArgTypeName.left(i+1).stripWhiteSpace(); - a->name = g_curArgTypeName.right(g_curArgTypeName.length()-i-1); - } - else // assume only the type was specified, try to determine name later - { - a->type = g_curArgTypeName.stripWhiteSpace(); - } - a->array = g_curArgArray.copy(); - a->defval = g_curArgDefValue.copy(); - a->docs = g_curArgDocs.stripWhiteSpace(); - //printf("Argument %s %s adding docs=`%s'\n",a->type.data(),a->name.data(),a->docs.data()); - g_argList->append(a); - } - g_curArgAttrib.resize(0); - g_curArgTypeName.resize(0); - g_curArgDefValue.resize(0); - g_curArgArray.resize(0); - g_curArgDocs.resize(0); - if (*yytext==')') - { - BEGIN(FuncQual); - //printf(">>> end of argument list\n"); - } - else - { - BEGIN( ReadFuncArgType ); - } - } - YY_BREAK -case 24: -YY_RULE_SETUP -#line 296 "defargs.l" -{ - QCString name=yytext; //resolveDefines(yytext); - //printf("resolveName `%s'->`%s'\n",yytext,name.data()); - g_curArgTypeName+=name; - } - YY_BREAK -case 25: -YY_RULE_SETUP -#line 301 "defargs.l" -{ - g_curArgTypeName+=*yytext; - } - YY_BREAK -case 26: -YY_RULE_SETUP -#line 304 "defargs.l" -{ - g_curArgDefValue+=*yytext; - } - YY_BREAK -case 27: -YY_RULE_SETUP -#line 307 "defargs.l" -{ - QCString name=yytext; //resolveDefines(yytext); - *g_copyArgValue+=name; - } - YY_BREAK -case 28: -YY_RULE_SETUP -#line 311 "defargs.l" -{ - *g_copyArgValue += *yytext; - } - YY_BREAK -case 29: -YY_RULE_SETUP -#line 314 "defargs.l" -{ - g_argList->constSpecifier=TRUE; - } - YY_BREAK -case 30: -YY_RULE_SETUP -#line 317 "defargs.l" -{ - g_argList->volatileSpecifier=TRUE; - } - YY_BREAK -case 31: -YY_RULE_SETUP -#line 320 "defargs.l" -{ - g_argList->pureSpecifier=TRUE; - } - YY_BREAK -case 32: -YY_RULE_SETUP -#line 323 "defargs.l" -{ - g_curArgDocs+=yytext; - } - YY_BREAK -case 33: -YY_RULE_SETUP -#line 326 "defargs.l" -{ - g_curArgDocs+=yytext; - } - YY_BREAK -case 34: -YY_RULE_SETUP -#line 329 "defargs.l" -{ - if (g_lastDocChar!=0) - unput(g_lastDocChar); - BEGIN(g_lastDocContext); - } - YY_BREAK -case 35: -YY_RULE_SETUP -#line 334 "defargs.l" -{ - if (g_lastDocChar!=0) - unput(g_lastDocChar); - BEGIN(g_lastDocContext); - } - YY_BREAK -case 36: -YY_RULE_SETUP -#line 339 "defargs.l" -{ - g_curArgDocs+=*yytext; - } - YY_BREAK -case 37: -YY_RULE_SETUP -#line 342 "defargs.l" -{ - g_curArgDocs+=*yytext; - } - YY_BREAK -case 38: -YY_RULE_SETUP -#line 345 "defargs.l" -{ - g_lastDocContext=YY_START; - g_lastDocChar=0; - if (yytext[1]=='/') - BEGIN( ReadDocLine ); - else - BEGIN( ReadDocBlock ); - } - YY_BREAK -case 39: -YY_RULE_SETUP -#line 353 "defargs.l" - - YY_BREAK -case 40: -YY_RULE_SETUP -#line 354 "defargs.l" - - YY_BREAK -case 41: -YY_RULE_SETUP -#line 356 "defargs.l" -ECHO; - YY_BREAK - case YY_STATE_EOF(INITIAL): - case YY_STATE_EOF(Start): - case YY_STATE_EOF(CopyArgString): - case YY_STATE_EOF(CopyArgRound): - case YY_STATE_EOF(CopyArgRound2): - case YY_STATE_EOF(CopyArgSharp): - case YY_STATE_EOF(CopyArgCurly): - case YY_STATE_EOF(ReadFuncArgType): - case YY_STATE_EOF(ReadFuncArgDef): - case YY_STATE_EOF(ReadFuncArgPtr): - case YY_STATE_EOF(FuncQual): - case YY_STATE_EOF(ReadDocBlock): - case YY_STATE_EOF(ReadDocLine): - 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->yy_buffer_status == YY_BUFFER_NEW ) - { - /* We're scanning a new file or input source. It's - * possible that this happened because the user - * just pointed yyin at a new source and called - * yylex(). If so, then we have to assure - * consistency between yy_current_buffer and our - * globals. Here is the right place to do so, because - * this is the first action (other than possibly a - * back-up) that will match for the new input source. - */ - yy_n_chars = yy_current_buffer->yy_n_chars; - yy_current_buffer->yy_input_file = yyin; - yy_current_buffer->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->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 ( yywrap() ) - { - /* Note: because we've taken care in - * yy_get_next_buffer() to have set up - * yytext, we can now set up - * yy_c_buf_p so that if some total - * hoser (like flex itself) wants to - * call the scanner after we return the - * YY_NULL, it'll still work - another - * YY_NULL will get returned. - */ - yy_c_buf_p = yytext_ptr + YY_MORE_ADJ; - - yy_act = YY_STATE_EOF(YY_START); - goto do_action; - } - - else - { - if ( ! yy_did_buffer_switch_on_eof ) - YY_NEW_FILE; - } - break; - } - - case EOB_ACT_CONTINUE_SCAN: - yy_c_buf_p = - yytext_ptr + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state(); - - yy_cp = yy_c_buf_p; - yy_bp = yytext_ptr + YY_MORE_ADJ; - goto yy_match; - - case EOB_ACT_LAST_MATCH: - yy_c_buf_p = - &yy_current_buffer->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 yylex */ - - -/* yy_get_next_buffer - try to read in a new buffer - * - * Returns a code representing an action: - * EOB_ACT_LAST_MATCH - - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position - * EOB_ACT_END_OF_FILE - end of file - */ - -static int yy_get_next_buffer() - { - register char *dest = yy_current_buffer->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->yy_ch_buf[yy_n_chars + 1] ) - YY_FATAL_ERROR( - "fatal flex scanner internal error--end of buffer missed" ); - - if ( yy_current_buffer->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->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->yy_n_chars = yy_n_chars = 0; - - else - { - int num_to_read = - yy_current_buffer->yy_buf_size - number_to_move - 1; - - while ( num_to_read <= 0 ) - { /* Not enough room in the buffer - grow it. */ -#ifdef YY_USES_REJECT - YY_FATAL_ERROR( -"input buffer overflow, can't enlarge buffer because scanner uses REJECT" ); -#else - - /* 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. */ - yy_flex_realloc( (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->yy_buf_size - - number_to_move - 1; -#endif - } - - if ( num_to_read > YY_READ_BUF_SIZE ) - num_to_read = YY_READ_BUF_SIZE; - - /* Read in more data. */ - YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]), - yy_n_chars, num_to_read ); - - yy_current_buffer->yy_n_chars = yy_n_chars; - } - - if ( yy_n_chars == 0 ) - { - if ( number_to_move == YY_MORE_ADJ ) - { - ret_val = EOB_ACT_END_OF_FILE; - yyrestart( yyin ); - } - - else - { - ret_val = EOB_ACT_LAST_MATCH; - yy_current_buffer->yy_buffer_status = - YY_BUFFER_EOF_PENDING; - } - } - - else - ret_val = EOB_ACT_CONTINUE_SCAN; - - yy_n_chars += number_to_move; - yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR; - yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; - - yytext_ptr = &yy_current_buffer->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() - { - register yy_state_type yy_current_state; - register char *yy_cp; - - yy_current_state = yy_start; - yy_state_ptr = yy_state_buf; - *yy_state_ptr++ = yy_current_state; - - for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp ) - { - register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 134 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - *yy_state_ptr++ = yy_current_state; - } - - return yy_current_state; - } - - -/* yy_try_NUL_trans - try to make a transition on the NUL character - * - * synopsis - * next_state = yy_try_NUL_trans( current_state ); - */ - -#ifdef YY_USE_PROTOS -static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state ) -#else -static yy_state_type yy_try_NUL_trans( yy_current_state ) -yy_state_type yy_current_state; -#endif - { - register int yy_is_jam; - - register YY_CHAR yy_c = 1; - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 134 ) - 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 == 133); - if ( ! yy_is_jam ) - *yy_state_ptr++ = yy_current_state; - - return yy_is_jam ? 0 : yy_current_state; - } - - -#ifndef YY_NO_UNPUT -#ifdef YY_USE_PROTOS -static void yyunput( int c, register char *yy_bp ) -#else -static void yyunput( c, yy_bp ) -int c; -register char *yy_bp; -#endif - { - register char *yy_cp = yy_c_buf_p; - - /* undo effects of setting up yytext */ - *yy_cp = yy_hold_char; - - if ( yy_cp < yy_current_buffer->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->yy_ch_buf[ - yy_current_buffer->yy_buf_size + 2]; - register char *source = - &yy_current_buffer->yy_ch_buf[number_to_move]; - - while ( source > yy_current_buffer->yy_ch_buf ) - *--dest = *--source; - - yy_cp += (int) (dest - source); - yy_bp += (int) (dest - source); - yy_current_buffer->yy_n_chars = - yy_n_chars = yy_current_buffer->yy_buf_size; - - if ( yy_cp < yy_current_buffer->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; - } -#endif /* ifndef YY_NO_UNPUT */ - - -#ifdef __cplusplus -static int yyinput() -#else -static int input() -#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->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. */ - yyrestart( yyin ); - - /* fall through */ - - case EOB_ACT_END_OF_FILE: - { - if ( yywrap() ) - 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 yytext */ - yy_hold_char = *++yy_c_buf_p; - - - return c; - } - - -#ifdef YY_USE_PROTOS -void yyrestart( FILE *input_file ) -#else -void yyrestart( input_file ) -FILE *input_file; -#endif - { - if ( ! yy_current_buffer ) - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); - - yy_init_buffer( yy_current_buffer, input_file ); - yy_load_buffer_state(); - } - - -#ifdef YY_USE_PROTOS -void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer ) -#else -void yy_switch_to_buffer( new_buffer ) -YY_BUFFER_STATE new_buffer; -#endif - { - 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->yy_buf_pos = yy_c_buf_p; - yy_current_buffer->yy_n_chars = yy_n_chars; - } - - yy_current_buffer = new_buffer; - yy_load_buffer_state(); - - /* We don't actually know whether we did this switch during - * EOF (yywrap()) processing, but the only time this flag - * is looked at is after yywrap() is called, so it's safe - * to go ahead and always set it. - */ - yy_did_buffer_switch_on_eof = 1; - } - - -#ifdef YY_USE_PROTOS -void yy_load_buffer_state( void ) -#else -void yy_load_buffer_state() -#endif - { - yy_n_chars = yy_current_buffer->yy_n_chars; - yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos; - yyin = yy_current_buffer->yy_input_file; - yy_hold_char = *yy_c_buf_p; - } - - -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_create_buffer( FILE *file, int size ) -#else -YY_BUFFER_STATE yy_create_buffer( file, size ) -FILE *file; -int size; -#endif - { - YY_BUFFER_STATE b; - - b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_buf_size = size; - - /* yy_ch_buf has to be 2 characters longer than the size given because - * we need to put in 2 end-of-buffer characters. - */ - b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 ); - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_is_our_buffer = 1; - - yy_init_buffer( b, file ); - - return b; - } - - -#ifdef YY_USE_PROTOS -void yy_delete_buffer( YY_BUFFER_STATE b ) -#else -void yy_delete_buffer( b ) -YY_BUFFER_STATE b; -#endif - { - if ( ! b ) - return; - - if ( b == yy_current_buffer ) - yy_current_buffer = (YY_BUFFER_STATE) 0; - - if ( b->yy_is_our_buffer ) - yy_flex_free( (void *) b->yy_ch_buf ); - - yy_flex_free( (void *) b ); - } - - -#ifndef YY_ALWAYS_INTERACTIVE -#ifndef YY_NEVER_INTERACTIVE -extern int isatty YY_PROTO(( int )); -#endif -#endif - -#ifdef YY_USE_PROTOS -void yy_init_buffer( YY_BUFFER_STATE b, FILE *file ) -#else -void yy_init_buffer( b, file ) -YY_BUFFER_STATE b; -FILE *file; -#endif - - - { - yy_flush_buffer( b ); - - b->yy_input_file = file; - b->yy_fill_buffer = 1; - -#if YY_ALWAYS_INTERACTIVE - b->yy_is_interactive = 1; -#else -#if YY_NEVER_INTERACTIVE - b->yy_is_interactive = 0; -#else - b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; -#endif -#endif - } - - -#ifdef YY_USE_PROTOS -void yy_flush_buffer( YY_BUFFER_STATE b ) -#else -void yy_flush_buffer( b ) -YY_BUFFER_STATE b; -#endif - - { - if ( ! b ) - return; - - b->yy_n_chars = 0; - - /* We always need two end-of-buffer characters. The first causes - * a transition to the end-of-buffer state. The second causes - * a jam in that state. - */ - b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; - b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; - - b->yy_buf_pos = &b->yy_ch_buf[0]; - - b->yy_at_bol = 1; - b->yy_buffer_status = YY_BUFFER_NEW; - - if ( b == yy_current_buffer ) - yy_load_buffer_state(); - } - - -#ifndef YY_NO_SCAN_BUFFER -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size ) -#else -YY_BUFFER_STATE yy_scan_buffer( base, size ) -char *base; -yy_size_t size; -#endif - { - 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) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_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; - - yy_switch_to_buffer( b ); - - return b; - } -#endif - - -#ifndef YY_NO_SCAN_STRING -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str ) -#else -YY_BUFFER_STATE yy_scan_string( yy_str ) -yyconst char *yy_str; -#endif - { - int len; - for ( len = 0; yy_str[len]; ++len ) - ; - - return yy_scan_bytes( yy_str, len ); - } -#endif - - -#ifndef YY_NO_SCAN_BYTES -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len ) -#else -YY_BUFFER_STATE yy_scan_bytes( bytes, len ) -yyconst char *bytes; -int len; -#endif - { - YY_BUFFER_STATE b; - char *buf; - yy_size_t n; - int i; - - /* Get memory for full buffer, including space for trailing EOB's. */ - n = len + 2; - buf = (char *) yy_flex_alloc( n ); - if ( ! buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); - - for ( i = 0; i < len; ++i ) - buf[i] = bytes[i]; - - buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR; - - b = yy_scan_buffer( buf, n ); - if ( ! b ) - YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); - - /* It's okay to grow etc. this buffer, and we should throw it - * away when we're done. - */ - b->yy_is_our_buffer = 1; - - return b; - } -#endif - - -#ifndef YY_NO_PUSH_STATE -#ifdef YY_USE_PROTOS -static void yy_push_state( int new_state ) -#else -static void yy_push_state( new_state ) -int new_state; -#endif - { - if ( yy_start_stack_ptr >= yy_start_stack_depth ) - { - yy_size_t new_size; - - yy_start_stack_depth += YY_START_STACK_INCR; - new_size = yy_start_stack_depth * sizeof( int ); - - if ( ! yy_start_stack ) - yy_start_stack = (int *) yy_flex_alloc( new_size ); - - else - yy_start_stack = (int *) yy_flex_realloc( - (void *) yy_start_stack, new_size ); - - if ( ! yy_start_stack ) - YY_FATAL_ERROR( - "out of memory expanding start-condition stack" ); - } - - yy_start_stack[yy_start_stack_ptr++] = YY_START; - - BEGIN(new_state); - } -#endif - - -#ifndef YY_NO_POP_STATE -static void yy_pop_state() - { - if ( --yy_start_stack_ptr < 0 ) - YY_FATAL_ERROR( "start-condition stack underflow" ); - - BEGIN(yy_start_stack[yy_start_stack_ptr]); - } -#endif - - -#ifndef YY_NO_TOP_STATE -static int yy_top_state() - { - return yy_start_stack[yy_start_stack_ptr - 1]; - } -#endif - -#ifndef YY_EXIT_FAILURE -#define YY_EXIT_FAILURE 2 -#endif - -#ifdef YY_USE_PROTOS -static void yy_fatal_error( yyconst char msg[] ) -#else -static void yy_fatal_error( msg ) -char msg[]; -#endif - { - (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 yytext. */ \ - yytext[yyleng] = yy_hold_char; \ - yy_c_buf_p = yytext + n; \ - yy_hold_char = *yy_c_buf_p; \ - *yy_c_buf_p = '\0'; \ - yyleng = n; \ - } \ - while ( 0 ) - - -/* Internal utility routines. */ - -#ifndef yytext_ptr -#ifdef YY_USE_PROTOS -static void yy_flex_strncpy( char *s1, yyconst char *s2, int n ) -#else -static void yy_flex_strncpy( s1, s2, n ) -char *s1; -yyconst char *s2; -int n; -#endif - { - register int i; - for ( i = 0; i < n; ++i ) - s1[i] = s2[i]; - } -#endif - -#ifdef YY_NEED_STRLEN -#ifdef YY_USE_PROTOS -static int yy_flex_strlen( yyconst char *s ) -#else -static int yy_flex_strlen( s ) -yyconst char *s; -#endif - { - register int n; - for ( n = 0; s[n]; ++n ) - ; - - return n; - } -#endif - - -#ifdef YY_USE_PROTOS -static void *yy_flex_alloc( yy_size_t size ) -#else -static void *yy_flex_alloc( size ) -yy_size_t size; -#endif - { - return (void *) malloc( size ); - } - -#ifdef YY_USE_PROTOS -static void *yy_flex_realloc( void *ptr, yy_size_t size ) -#else -static void *yy_flex_realloc( ptr, size ) -void *ptr; -yy_size_t size; -#endif - { - /* 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 ); - } - -#ifdef YY_USE_PROTOS -static void yy_flex_free( void *ptr ) -#else -static void yy_flex_free( ptr ) -void *ptr; -#endif - { - free( ptr ); - } - -#if YY_MAIN -int main() - { - yylex(); - return 0; - } -#endif -#line 356 "defargs.l" - - -/* ---------------------------------------------------------------------------- - */ - -/*! Converts an argument string into an ArgumentList. - * \param argsString the list of Arguments. - * \param al a reference to resulting argument list pointer. - */ - -void stringToArgumentList(const char *argsString,ArgumentList* &al) -{ - if (al==0) return; - if (argsString==0) return; - g_inputString = argsString; - //printf("stringToArgumentList(%s)\n",argsString); - g_inputPosition = 0; - g_curArgTypeName.resize(0); - g_curArgDefValue.resize(0); - g_curArgName.resize(0); - g_argList = al; - defargsYYrestart( defargsYYin ); - BEGIN( Start ); - defargsYYlex(); -} - -extern "C" { // some bogus code to keep the compiler happy - void defargsYYdummy() { yy_flex_realloc(0,0); } -} diff --git a/src/define.h b/src/define.h index 8778a54..1e39ff5 100644 --- a/src/define.h +++ b/src/define.h @@ -53,7 +53,7 @@ class DefineList : public QList ~DefineList() {} int compareItems(GCI i1,GCI i2) { - return strcmp(((Define *)i1)->name,((Define *)i2)->name); + return strcasecmp(((Define *)i1)->name,((Define *)i2)->name); } }; @@ -65,7 +65,7 @@ class DefineName : public QList const char *nameString() const { return name; } int compareItems(GCI i1,GCI i2) { - return strcmp(((Define *)i1)->name,((Define *)i2)->name); + return strcasecmp(((Define *)i1)->name,((Define *)i2)->name); } private: diff --git a/src/dot.cpp b/src/dot.cpp index ce2282d..03f4227 100644 --- a/src/dot.cpp +++ b/src/dot.cpp @@ -20,6 +20,7 @@ #include "dot.h" #include "doxygen.h" #include "message.h" +#include "util.h" #include #include @@ -158,7 +159,7 @@ class DotNodeList : public QList ~DotNodeList() {} int compareItems(GCI item1,GCI item2) { - return strcmp(((DotNode *)item1)->m_label,((DotNode *)item2)->m_label); + return strcasecmp(((DotNode *)item1)->m_label,((DotNode *)item2)->m_label); } }; @@ -173,6 +174,7 @@ DotNode::DotNode(int n,const char *lab,const char *url,int distance,bool isRoot) m_subgraphId=-1; m_deleted=FALSE; m_written=FALSE; + m_hasDoc=FALSE; m_distance = distance; } @@ -269,20 +271,8 @@ void DotNode::deleteNode() delete this; } -void DotNode::write(QTextStream &t,int distance) +void DotNode::writeBox(QTextStream &t,bool hasNonReachableChildren) { - if (m_written) return; // node already written to the output - if (m_distance>distance) return; - bool hasNonReachableChildren=FALSE; - if (m_distance==distance && m_children) - { - QListIterator dnli(*m_children); - DotNode *cn; - for (dnli.toFirst();(cn=dnli.current());++dnli) - { - if (cn->m_distance>distance) hasNonReachableChildren=TRUE; - } - } const char *labCol = (hasNonReachableChildren) ? "red" : (m_url.isEmpty() ? "grey" : "black"); t << " Node" << m_number << " [shape=\"box\",label=\"" << m_label @@ -297,6 +287,42 @@ void DotNode::write(QTextStream &t,int distance) t << ",URL=\"" << m_url << ".html\""; } t << "];" << endl; +} + +void DotNode::writeArrow(QTextStream &t,DotNode *cn,EdgeInfo *ei,bool topDown) +{ + t << " Node"; + if (topDown) t << cn->number(); else t << m_number; + t << " -> Node"; + if (topDown) t << m_number; else t << cn->number(); + t << " ["; + t << "dir=back,"; + t << "color=\"" << edgeColorMap[ei->m_color] + << "\",fontsize=10,style=\"" << edgeStyleMap[ei->m_style] << "\""; + if (!ei->m_label.isEmpty()) + { + t << ",label=\"" << ei->m_label << "\""; + } + t << ",fontname=\"doxfont\""; + t << "];" << endl; +} + +void DotNode::write(QTextStream &t,bool topDown,int distance) +{ + //printf("DotNode::write(%d) name=%s\n",distance,m_label.data()); + if (m_written) return; // node already written to the output + if (m_distance>distance) return; + bool hasNonReachableChildren=FALSE; + if (m_distance==distance && m_children) + { + QListIterator dnli(*m_children); + DotNode *cn; + for (dnli.toFirst();(cn=dnli.current());++dnli) + { + if (cn->m_distance>distance) hasNonReachableChildren=TRUE; + } + } + writeBox(t,hasNonReachableChildren); m_written=TRUE; if (m_children) { @@ -305,19 +331,8 @@ void DotNode::write(QTextStream &t,int distance) DotNode *cn; for (dnli1.toFirst();(cn=dnli1.current());++dnli1,++dnli2) { - if (cn->m_distance<=distance) - { - EdgeInfo *ei=dnli2.current(); - t << " Node" << cn->number() << " -> Node" << m_number - << " [dir=back,color=\"" << edgeColorMap[ei->m_color] - << "\",fontsize=10,style=\"" << edgeStyleMap[ei->m_style] << "\""; - if (!ei->m_label.isEmpty()) - { - t << ",label=\"" << ei->m_label << "\",fontname=\"doxfont\""; - } - t << "];" << endl; - } - cn->write(t,distance); + if (cn->m_distance<=distance) writeArrow(t,cn,dnli2.current(),topDown); + cn->write(t,topDown,distance); } } } @@ -352,7 +367,7 @@ void DotNode::clearWriteFlag() } void DotNode::colorConnectedNodes(int curColor) -{ +{ if (m_children) { QListIterator dnlic(*m_children); @@ -363,6 +378,7 @@ void DotNode::colorConnectedNodes(int curColor) { cn->m_subgraphId=curColor; cn->colorConnectedNodes(curColor); + //printf("coloring node %s (%p): %d\n",cn->m_label.data(),cn,cn->m_subgraphId); } } } @@ -377,22 +393,45 @@ void DotNode::colorConnectedNodes(int curColor) { pn->m_subgraphId=curColor; pn->colorConnectedNodes(curColor); + //printf("coloring node %s (%p): %d\n",pn->m_label.data(),pn,pn->m_subgraphId); } } } } -const DotNode *DotNode::findRoot() const +const DotNode *DotNode::findDocNode() const { - if (m_children==0 || m_children->count()==0) + if (!m_url.isEmpty()) return this; + //printf("findDocNode(): `%s'\n",m_label.data()); + if (m_parents) { - return this; + QListIterator dnli(*m_parents); + DotNode *pn; + for (dnli.toFirst();(pn=dnli.current());++dnli) + { + if (!pn->m_hasDoc) + { + pn->m_hasDoc=TRUE; + const DotNode *dn = pn->findDocNode(); + if (dn) return dn; + } + } } - else + if (m_children) { - DotNode *cn = m_children->first(); - return cn->findRoot(); + QListIterator dnli(*m_children); + DotNode *cn; + for (dnli.toFirst();(cn=dnli.current());++dnli) + { + if (!cn->m_hasDoc) + { + cn->m_hasDoc=TRUE; + const DotNode *dn = cn->findDocNode(); + if (dn) return dn; + } + } } + return 0; } //-------------------------------------------------------------------- @@ -425,7 +464,8 @@ void DotGfxHierarchyTable::writeGraph(QTextStream &out,const char *path) QCString baseName; QCString diskName=n->m_url.copy(); int i=diskName.find('$'); /* should not return -1 */ - if (i!=-1) diskName=diskName.right(diskName.length()-i-1); + ASSERT(i!=-1); + diskName=diskName.right(diskName.length()-i-1); baseName.sprintf("inherit_graph_%s",diskName.data()); QCString dotName=baseName+".dot"; QCString gifName=baseName+".gif"; @@ -441,7 +481,7 @@ void DotGfxHierarchyTable::writeGraph(QTextStream &out,const char *path) DotNode *node; for (;(node=dnli2.current());++dnli2) { - if (node->m_subgraphId==n->m_subgraphId) node->write(t); + if (node->m_subgraphId==n->m_subgraphId) node->write(t,FALSE); } t << "}" << endl; f.close(); @@ -476,41 +516,57 @@ void DotGfxHierarchyTable::writeGraph(QTextStream &out,const char *path) QDir::setCurrent(oldDir); } -void DotGfxHierarchyTable::addHierarchy(DotNode *n,ClassDef *cd) +void DotGfxHierarchyTable::addHierarchy(DotNode *n,ClassDef *cd,bool hideSuper) { - BaseClassListIterator bcli(*cd->baseClasses()); + //printf("addHierarchy `%s' baseClasses=%d\n",cd->name().data(),cd->baseClasses()->count()); + BaseClassListIterator bcli(*cd->superClasses()); BaseClassDef *bcd; for ( ; (bcd=bcli.current()) ; ++bcli ) { ClassDef *bClass=bcd->classDef; - DotNode *bn; - if ((bn=m_usedNodes->find(bClass->name()))) // node already used => make reference node to it + //printf("Trying super class=`%s'\n",bClass->name().data()); + if (bClass->isVisibleInHierarchy() && hasVisibleRoot(bClass->baseClasses())) { - n->addChild(bn,bcd->prot); - bn->addParent(n); - //printf("Adding node %s to existing base node %s (c=%d,p=%d)\n", - // n->m_label.data(), - // bn->m_label.data(), - // bn->m_children ? bn->m_children->count() : 0, - // bn->m_parents ? bn->m_parents->count() : 0 - // ); - } - else // add new node - { - DotNode *newNode = new DotNode(m_curNodeNumber++, - bClass->name(), - bClass->getReference()+"$"+bClass->getOutputFileBase() - ); - n->addChild(newNode,bcd->prot); - newNode->addParent(n); - m_usedNodes->insert(bClass->name(),newNode); // add node to the used list - //printf("Adding node %s to new base node %s (c=%d,p=%d)\n", - // n->m_label.data(), - // newNode->m_label.data(), - // newNode->m_children ? newNode->m_children->count() : 0, - // newNode->m_parents ? newNode->m_parents->count() : 0 - // ); - addHierarchy(newNode,bClass); + DotNode *bn; + //printf("Found visible class=`%s'\n",bClass->name().data()); + if ((bn=m_usedNodes->find(bClass->name()))) // node already present + { + if (n->m_children==0 || n->m_children->findRef(bn)==0) // no arrow yet + { + n->addChild(bn,bcd->prot); + bn->addParent(n); + //printf("Adding node %s to existing base node %s (c=%d,p=%d)\n", + // n->m_label.data(), + // bn->m_label.data(), + // bn->m_children ? bn->m_children->count() : 0, + // bn->m_parents ? bn->m_parents->count() : 0 + // ); + } + } + else + { + bn = new DotNode(m_curNodeNumber++, + bClass->name(), + bClass->isLinkable() ? + (bClass->getReference()+"$"+bClass->getOutputFileBase()).data() : + 0 + ); + //printf("Adding node %s to new base node %s (c=%d,p=%d)\n", + // n->m_label.data(), + // bn->m_label.data(), + // bn->m_children ? bn->m_children->count() : 0, + // bn->m_parents ? bn->m_parents->count() : 0 + // ); + n->addChild(bn,bcd->prot); + bn->addParent(n); + m_usedNodes->insert(bClass->name(),bn); // add node to the used list + } + if (!bClass->visited && !hideSuper && bClass->superClasses()->count()>0) + { + bool wasVisited=bClass->visited; + bClass->visited=TRUE; + addHierarchy(bn,bClass,wasVisited); + } } } } @@ -525,27 +581,32 @@ DotGfxHierarchyTable::DotGfxHierarchyTable() // build a graph with each class as a node and the inheritance relations // as edges + initClassHierarchy(&classList); ClassListIterator cli(classList); ClassDef *cd; for (cli.toFirst();(cd=cli.current());++cli) { //printf("Trying %s superClasses=%d\n",cd->name().data(),cd->superClasses()->count()); - if (isLeaf(cd) && - ( - (!Config::allExtFlag && cd->isLinkableInProject()) || - (Config::allExtFlag && cd->isLinkable()) - ) - ) // root class in the graph + if (!hasVisibleRoot(cd->baseClasses())) { - //printf("Inserting root class %s\n",cd->name().data()); - DotNode *n = new DotNode(m_curNodeNumber++, - cd->name(), - cd->getReference()+"$"+cd->getOutputFileBase() - ); - //m_usedNodes->clear(); - m_usedNodes->insert(cd->name(),n); - addHierarchy(n,cd); - m_rootNodes->insert(0,n); + if (cd->isVisibleInHierarchy()) // root class in the graph + { + //printf("Inserting root class %s\n",cd->name().data()); + DotNode *n = new DotNode(m_curNodeNumber++, + cd->name(), + cd->isLinkable() ? + (cd->getReference()+"$"+cd->getOutputFileBase()).data() : + 0 + ); + //m_usedNodes->clear(); + m_usedNodes->insert(cd->name(),n); + m_rootNodes->insert(0,n); + if (!cd->visited && cd->superClasses()->count()>0) + { + addHierarchy(n,cd,cd->visited); + cd->visited=TRUE; + } + } } } // m_usedNodes now contains all nodes in the graph @@ -562,12 +623,14 @@ DotGfxHierarchyTable::DotGfxHierarchyTable() { if (n->m_subgraphId==-1) // not yet colored { - //printf("Starting at node %s\n",n->m_label.data()); + //printf("Starting at node %s (%p): %d\n",n->m_label.data(),n,curColor); done=FALSE; // still uncolored nodes n->m_subgraphId=curColor; n->colorConnectedNodes(curColor); curColor++; - m_rootSubgraphs->inSort(n->findRoot()); + const DotNode *dn=n->findDocNode(); + ASSERT(dn!=0); + if (dn!=0) m_rootSubgraphs->inSort(dn); } } } @@ -603,38 +666,33 @@ DotGfxHierarchyTable::~DotGfxHierarchyTable() int DotGfxUsageGraph::m_curNodeNumber; void DotGfxUsageGraph::addClass(ClassDef *cd,DotNode *n,int prot, - const char *label,int distance) -{ - if ( - (!Config::allExtFlag && cd->isLinkableInProject()) || - (Config::allExtFlag && cd->isLinkable()) - ) - { - //printf(":: DoxGfxUsageGraph::addClass(class=%s,parent=%s,prot=%d,label=%s,dist=%d)\n", - // cd->name().data(),n->m_label.data(),prot,label,distance); - int edgeStyle = label ? EdgeInfo::Dashed : EdgeInfo::Solid; - DotNode *bn = m_usedNodes->find(cd->name()); - if (bn) // class already inserted - { - n->addChild(bn,prot,edgeStyle,label); - bn->addParent(n); - bn->setDistance(distance); - //printf(" add exiting node %s of %s\n",bn->m_label.data(),n->m_label.data()); - } - else // new class - { - bn = new DotNode(m_curNodeNumber++, - cd->name(), - cd->getReference()+"$"+cd->getOutputFileBase(), - distance - ); - if (distance>m_maxDistance) m_maxDistance=distance; - n->addChild(bn,prot,edgeStyle,label); - bn->addParent(n); - m_usedNodes->insert(cd->name(),bn); - //printf(" add used node %s of %s\n",cd->name().data(),n->m_label.data()); - if (distancename().data(),n->m_label.data(),prot,label,distance); + int edgeStyle = label ? EdgeInfo::Dashed : EdgeInfo::Solid; + DotNode *bn = m_usedNodes->find(cd->name()); + if (bn) // class already inserted + { + n->addChild(bn,prot,edgeStyle,label); + bn->addParent(n); + bn->setDistance(distance); + //printf(" add exiting node %s of %s\n",bn->m_label.data(),n->m_label.data()); + } + else // new class + { + bn = new DotNode(m_curNodeNumber++, + cd->name(), + cd->isLinkable() ? + (cd->getReference()+"$"+cd->getOutputFileBase()).data() : 0, + distance + ); + if (distance>m_maxDistance) m_maxDistance=distance; + n->addChild(bn,prot,edgeStyle,label); + bn->addParent(n); + m_usedNodes->insert(cd->name(),bn); + //printf(" add used node %s of %s\n",cd->name().data(),n->m_label.data()); + if (distancename(), - cd->getReference()+"$"+cd->getOutputFileBase(), + cd->isLinkable() ? + (cd->getReference()+"$"+cd->getOutputFileBase()).data() : 0, 0, // distance TRUE // is a root node ); @@ -723,7 +782,7 @@ static void writeDotGraph(DotNode *root,const QCString &baseName, t << " rankdir=LR;" << endl; } root->clearWriteFlag(); - root->write(t,distance); + root->write(t,TRUE,distance); t << "}" << endl; f.close(); } @@ -864,6 +923,7 @@ void DotInclDepGraph::buildGraph(DotNode *n,FileDef *fd,int distance) { FileDef *bfd = ii->fileDef; QCString in = ii->includeName; + //printf(">>>> in=`%s' bfd=%p\n",ii->includeName.data(),bfd); bool doc=TRUE,src=FALSE; if (bfd) { diff --git a/src/dot.h b/src/dot.h index d0c215d..c8e8f33 100644 --- a/src/dot.h +++ b/src/dot.h @@ -59,13 +59,15 @@ class DotNode void removeChild(DotNode *n); void removeParent(DotNode *n); int number() const { return m_number; } - void write(QTextStream &t,int maxDistance=1000); + void write(QTextStream &t,bool topDown,int maxDistance=1000); int m_subgraphId; void clearWriteFlag(); private: void colorConnectedNodes(int curColor); - const DotNode *findRoot() const; // only works for acyclic graphs! + void writeBox(QTextStream &t,bool hasNonReachableChildren); + void writeArrow(QTextStream &t,DotNode *cn,EdgeInfo *ei,bool topDown); + const DotNode *findDocNode() const; // only works for acyclic graphs! int m_number; QCString m_label; //!< label text QCString m_url; //!< url of the node (format: remove$local) @@ -74,6 +76,7 @@ class DotNode QList *m_edgeInfo; //!< edge info for each child bool m_deleted; //!< used to mark a node as deleted bool m_written; //!< used to mark a node as written + bool m_hasDoc; //!< used to mark a node as documented int m_distance; //!< distance to the root node bool m_isRoot; //!< indicates if this is a root node }; @@ -86,7 +89,7 @@ class DotGfxHierarchyTable void writeGraph(QTextStream &t,const char *path); private: - void addHierarchy(DotNode *n,ClassDef *cd); + void addHierarchy(DotNode *n,ClassDef *cd,bool hide); QList *m_rootNodes; QDict *m_usedNodes; diff --git a/src/doxytag.cpp b/src/doxytag.cpp deleted file mode 100644 index e31593e..0000000 --- a/src/doxytag.cpp +++ /dev/null @@ -1,2760 +0,0 @@ -#define yy_create_buffer tagYY_create_buffer -#define yy_delete_buffer tagYY_delete_buffer -#define yy_scan_buffer tagYY_scan_buffer -#define yy_scan_string tagYY_scan_string -#define yy_scan_bytes tagYY_scan_bytes -#define yy_flex_debug tagYY_flex_debug -#define yy_init_buffer tagYY_init_buffer -#define yy_flush_buffer tagYY_flush_buffer -#define yy_load_buffer_state tagYY_load_buffer_state -#define yy_switch_to_buffer tagYY_switch_to_buffer -#define yyin tagYYin -#define yyleng tagYYleng -#define yylex tagYYlex -#define yyout tagYYout -#define yyrestart tagYYrestart -#define yytext tagYYtext -#define yywrap tagYYwrap - -/* A lexical scanner generated by flex */ - -/* Scanner skeleton version: - * $Header$ - */ - -#define FLEX_SCANNER -#define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 5 - -#include - - -/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */ -#ifdef c_plusplus -#ifndef __cplusplus -#define __cplusplus -#endif -#endif - - -#ifdef __cplusplus - -#include -#include - -/* Use prototypes in function declarations. */ -#define YY_USE_PROTOS - -/* The "const" storage-class-modifier is valid. */ -#define YY_USE_CONST - -#else /* ! __cplusplus */ - -#if __STDC__ - -#define YY_USE_PROTOS -#define YY_USE_CONST - -#endif /* __STDC__ */ -#endif /* ! __cplusplus */ - -#ifdef __TURBOC__ - #pragma warn -rch - #pragma warn -use -#include -#include -#define YY_USE_CONST -#define YY_USE_PROTOS -#endif - -#ifdef YY_USE_CONST -#define yyconst const -#else -#define yyconst -#endif - - -#ifdef YY_USE_PROTOS -#define YY_PROTO(proto) proto -#else -#define YY_PROTO(proto) () -#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 yyrestart( yyin ) - -#define YY_END_OF_BUFFER_CHAR 0 - -/* Size of default input buffer. */ -#define YY_BUF_SIZE 16384 - -typedef struct yy_buffer_state *YY_BUFFER_STATE; - -extern int yyleng; -extern FILE *yyin, *yyout; - -#define EOB_ACT_CONTINUE_SCAN 0 -#define EOB_ACT_END_OF_FILE 1 -#define EOB_ACT_LAST_MATCH 2 - -/* The funky do-while in the following #define is used to turn the definition - * int a single C statement (which needs a semi-colon terminator). This - * avoids problems with code like: - * - * if ( condition_holds ) - * yyless( 5 ); - * else - * do_something_else(); - * - * Prior to using the do-while the compiler would get upset at the - * "else" because it interpreted the "if" statement as being all - * done when it reached the ';' after the yyless() call. - */ - -/* Return all but the first 'n' matched characters back to the input stream. */ - -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - *yy_cp = yy_hold_char; \ - YY_RESTORE_YY_MORE_OFFSET \ - yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \ - YY_DO_BEFORE_ACTION; /* set up yytext again */ \ - } \ - while ( 0 ) - -#define unput(c) yyunput( c, yytext_ptr ) - -/* The following is because we cannot portably get our hands on size_t - * (without autoconf's help, which isn't available because we want - * flex-generated scanners to compile on their own). - */ -typedef unsigned int yy_size_t; - - -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; - - /* Whether to try to fill the input buffer when we reach the - * end of it. - */ - int yy_fill_buffer; - - int yy_buffer_status; -#define YY_BUFFER_NEW 0 -#define YY_BUFFER_NORMAL 1 - /* When an EOF's been seen but there's still some text to process - * then we mark the buffer as YY_EOF_PENDING, to indicate that we - * shouldn't try reading from the input source any more. We might - * still have a bunch of tokens to match, though, because of - * possible backing-up. - * - * When we actually see the EOF, we change the status to "new" - * (via yyrestart()), so that the user can continue scanning by - * just pointing yyin at a new input file. - */ -#define YY_BUFFER_EOF_PENDING 2 - }; - -static YY_BUFFER_STATE yy_current_buffer = 0; - -/* 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". - */ -#define YY_CURRENT_BUFFER yy_current_buffer - - -/* yy_hold_char holds the character lost when yytext is formed. */ -static char yy_hold_char; - -static int yy_n_chars; /* number of characters read into yy_ch_buf */ - - -int yyleng; - -/* Points to current character in buffer. */ -static char *yy_c_buf_p = (char *) 0; -static int yy_init = 1; /* whether we need to initialize */ -static int yy_start = 0; /* start state number */ - -/* Flag which is used to allow yywrap()'s to do buffer switches - * instead of setting up a fresh yyin. A bit of a hack ... - */ -static int yy_did_buffer_switch_on_eof; - -void yyrestart YY_PROTO(( FILE *input_file )); - -void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer )); -void yy_load_buffer_state YY_PROTO(( void )); -YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size )); -void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b )); -void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file )); -void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b )); -#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer ) - -YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size )); -YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str )); -YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len )); - -static void *yy_flex_alloc YY_PROTO(( yy_size_t )); -static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t )); -static void yy_flex_free YY_PROTO(( void * )); - -#define yy_new_buffer yy_create_buffer - -#define yy_set_interactive(is_interactive) \ - { \ - if ( ! yy_current_buffer ) \ - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ - yy_current_buffer->yy_is_interactive = is_interactive; \ - } - -#define yy_set_bol(at_bol) \ - { \ - if ( ! yy_current_buffer ) \ - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ - yy_current_buffer->yy_at_bol = at_bol; \ - } - -#define YY_AT_BOL() (yy_current_buffer->yy_at_bol) - -typedef unsigned char YY_CHAR; -FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; -typedef int yy_state_type; -extern char *yytext; -#define yytext_ptr yytext - -static yy_state_type yy_get_previous_state YY_PROTO(( void )); -static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state )); -static int yy_get_next_buffer YY_PROTO(( void )); -static void yy_fatal_error YY_PROTO(( yyconst char msg[] )); - -/* Done after the current pattern has been matched and before the - * corresponding action - sets up yytext. - */ -#define YY_DO_BEFORE_ACTION \ - yytext_ptr = yy_bp; \ - yyleng = (int) (yy_cp - yy_bp); \ - yy_hold_char = *yy_cp; \ - *yy_cp = '\0'; \ - yy_c_buf_p = yy_cp; - -#define YY_NUM_RULES 51 -#define YY_END_OF_BUFFER 52 -static yyconst short int yy_accept[334] = - { 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, 52, 49, 50, 49, 8, 10, 8, 10, - 49, 29, 28, 27, 27, 27, 24, 30, 49, 32, - 40, 40, 34, 34, 39, 49, 49, 20, 49, 21, - 49, 18, 18, 18, 49, 46, 45, 46, 45, 14, - 47, 48, 13, 12, 12, 49, 0, 0, 0, 10, - 0, 0, 10, 0, 28, 27, 27, 27, 24, 30, - - 0, 0, 40, 40, 0, 0, 0, 0, 0, 21, - 0, 0, 18, 18, 18, 18, 0, 0, 0, 0, - 14, 48, 13, 12, 0, 9, 0, 0, 0, 0, - 0, 10, 0, 27, 27, 31, 0, 40, 0, 0, - 0, 37, 0, 0, 0, 18, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 1, 10, 0, 0, - 27, 27, 0, 40, 36, 35, 0, 0, 0, 0, - 18, 41, 0, 44, 43, 0, 0, 6, 0, 0, - 10, 0, 0, 27, 0, 0, 40, 0, 19, 0, - 0, 18, 42, 0, 0, 0, 0, 10, 0, 0, - - 0, 0, 0, 40, 38, 0, 16, 18, 11, 0, - 0, 0, 10, 0, 0, 0, 0, 0, 40, 0, - 18, 0, 0, 0, 10, 0, 0, 0, 0, 33, - 0, 18, 7, 0, 0, 4, 0, 23, 0, 0, - 0, 0, 17, 0, 0, 17, 17, 17, 18, 18, - 17, 0, 0, 0, 0, 0, 0, 17, 0, 0, - 0, 0, 0, 17, 0, 18, 18, 17, 0, 0, - 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, - 18, 0, 0, 0, 0, 0, 0, 0, 17, 17, - 0, 18, 0, 0, 0, 0, 0, 0, 17, 0, - - 17, 0, 17, 17, 18, 0, 0, 0, 0, 26, - 0, 0, 17, 0, 0, 17, 0, 0, 0, 25, - 0, 0, 0, 0, 5, 0, 0, 2, 0, 0, - 0, 22, 0 - } ; - -static yyconst int yy_ec[256] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 4, 5, 6, 7, 1, 5, 8, 1, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 17, - 19, 17, 17, 17, 17, 17, 17, 20, 21, 22, - 23, 24, 1, 25, 26, 26, 27, 26, 26, 28, - 26, 26, 29, 26, 26, 26, 26, 26, 26, 26, - 26, 30, 26, 26, 26, 26, 26, 26, 26, 26, - 9, 1, 10, 5, 31, 1, 32, 33, 34, 35, - - 36, 37, 38, 39, 40, 26, 26, 41, 42, 43, - 44, 45, 26, 46, 47, 48, 26, 26, 49, 50, - 51, 26, 1, 52, 1, 53, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1 - } ; - -static yyconst int yy_meta[54] = - { 0, - 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, - 1, 3, 1, 3, 3, 2, 4, 4, 4, 5, - 1, 6, 2, 1, 2, 7, 7, 7, 7, 7, - 4, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 1, 8 - } ; - -static yyconst short int yy_base[356] = - { 0, - 980, 979, 0, 32, 52, 53, 75, 128, 181, 0, - 234, 287, 55, 56, 340, 0, 393, 0, 446, 0, - 497, 0, 65, 67, 550, 0, 54, 61, 603, 656, - 68, 70, 98, 99, 709, 0, 762, 0, 815, 0, - 90, 91, 981, 1136, 1136, 0, 71, 0, 78, 937, - 946, 1136, 0, 0, 935, 934, 0, 0, 71, 1136, - 0, 925, 1136, 28, 1136, 933, 932, 1136, 935, 0, - 101, 71, 101, 0, 950, 1136, 1136, 123, 1136, 0, - 1136, 0, 0, 0, 0, 949, 943, 959, 915, 0, - 90, 920, 920, 954, 0, 0, 925, 915, 0, 0, - - 931, 905, 0, 916, 903, 902, 908, 899, 943, 0, - 911, 923, 103, 113, 0, 123, 912, 901, 893, 892, - 0, 0, 0, 0, 894, 1136, 895, 901, 118, 932, - 910, 889, 126, 875, 882, 1136, 871, 870, 894, 893, - 877, 1136, 0, 868, 893, 124, 884, 862, 885, 884, - 858, 871, 877, 867, 1136, 864, 1136, 850, 854, 848, - 846, 888, 838, 845, 1136, 1136, 826, 849, 820, 675, - 216, 1136, 685, 1136, 1136, 669, 662, 1136, 662, 661, - 661, 667, 662, 693, 666, 652, 646, 657, 1136, 641, - 667, 125, 1136, 666, 653, 648, 655, 638, 638, 645, - - 646, 638, 635, 626, 1136, 620, 1136, 118, 1136, 630, - 614, 604, 603, 602, 625, 610, 607, 616, 593, 606, - 208, 631, 593, 588, 630, 609, 624, 586, 586, 0, - 583, 867, 1136, 597, 595, 1136, 611, 1136, 579, 502, - 524, 919, 252, 233, 619, 631, 1136, 965, 232, 263, - 874, 512, 539, 508, 497, 506, 535, 877, 503, 502, - 495, 488, 487, 119, 496, 226, 228, 0, 497, 494, - 489, 493, 485, 1136, 486, 477, 480, 503, 502, 474, - 269, 478, 475, 511, 473, 481, 478, 491, 103, 255, - 489, 270, 456, 497, 497, 304, 301, 286, 294, 295, - - 298, 291, 307, 320, 283, 293, 304, 287, 289, 1136, - 288, 269, 312, 236, 235, 271, 234, 0, 227, 1136, - 209, 228, 225, 155, 1136, 139, 129, 1136, 106, 117, - 108, 1136, 1136, 1018, 1026, 1034, 1042, 1050, 1058, 65, - 1063, 1068, 1072, 1077, 1081, 1085, 1089, 1094, 1100, 1105, - 58, 1109, 1117, 1124, 1128 - } ; - -static yyconst short int yy_def[356] = - { 0, - 334, 334, 333, 3, 334, 334, 335, 335, 333, 9, - 336, 336, 334, 334, 333, 15, 333, 17, 333, 19, - 334, 21, 334, 334, 333, 25, 334, 334, 337, 337, - 334, 334, 338, 338, 333, 35, 333, 37, 333, 39, - 339, 339, 333, 333, 333, 340, 333, 341, 333, 341, - 333, 333, 342, 343, 343, 343, 344, 345, 333, 333, - 346, 346, 333, 333, 333, 333, 333, 333, 333, 347, - 333, 348, 348, 349, 333, 333, 333, 333, 333, 350, - 333, 351, 352, 353, 353, 333, 340, 333, 333, 341, - 333, 333, 341, 333, 342, 343, 343, 343, 344, 345, - - 333, 333, 346, 346, 333, 333, 333, 333, 333, 347, - 333, 333, 348, 348, 349, 348, 333, 333, 333, 333, - 350, 351, 352, 353, 333, 333, 333, 333, 333, 333, - 333, 341, 333, 343, 343, 333, 333, 346, 333, 333, - 333, 333, 354, 333, 333, 348, 333, 333, 333, 333, - 333, 333, 333, 333, 333, 333, 333, 341, 333, 333, - 343, 343, 333, 346, 333, 333, 333, 354, 333, 333, - 348, 333, 333, 333, 333, 333, 333, 333, 333, 333, - 341, 333, 333, 343, 333, 333, 346, 333, 333, 333, - 333, 348, 333, 333, 333, 333, 333, 341, 333, 333, - - 333, 333, 333, 346, 333, 333, 333, 348, 333, 333, - 333, 333, 341, 333, 333, 333, 333, 333, 346, 333, - 348, 333, 333, 333, 341, 333, 333, 333, 333, 346, - 333, 348, 333, 333, 333, 333, 333, 333, 333, 333, - 333, 333, 333, 333, 333, 348, 333, 348, 348, 348, - 349, 333, 333, 333, 333, 333, 333, 333, 333, 333, - 333, 333, 333, 348, 333, 348, 348, 349, 333, 333, - 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, - 348, 333, 333, 333, 333, 333, 333, 333, 333, 333, - 333, 348, 333, 333, 333, 333, 333, 333, 333, 333, - - 333, 333, 333, 333, 348, 333, 333, 333, 333, 333, - 333, 333, 333, 333, 333, 333, 333, 355, 333, 333, - 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, - 333, 333, 0, 333, 333, 333, 333, 333, 333, 333, - 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, - 333, 333, 333, 333, 333 - } ; - -static yyconst short int yy_nxt[1190] = - { 0, - 44, 44, 45, 44, 44, 44, 44, 46, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, - 44, 47, 44, 44, 44, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, - 48, 44, 44, 49, 45, 45, 45, 45, 45, 71, - 50, 52, 52, 45, 122, 105, 71, 68, 106, 68, - 45, 87, 45, 51, 51, 44, 44, 45, 44, 44, - 44, 52, 44, 44, 44, 44, 69, 44, 69, 75, - 44, 75, 85, 85, 44, 44, 44, 44, 44, 44, - - 77, 77, 88, 101, 111, 78, 78, 129, 130, 88, - 300, 86, 86, 332, 114, 89, 91, 102, 92, 79, - 79, 154, 89, 115, 112, 301, 44, 44, 44, 44, - 45, 44, 44, 44, 52, 44, 44, 44, 44, 331, - 44, 155, 330, 44, 114, 116, 114, 44, 44, 44, - 44, 44, 44, 115, 118, 115, 114, 116, 146, 159, - 119, 221, 114, 120, 160, 115, 114, 114, 114, 171, - 115, 115, 208, 313, 329, 115, 115, 115, 328, 44, - 44, 44, 44, 45, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 54, 54, 54, - - 44, 44, 44, 44, 44, 44, 54, 55, 56, 54, - 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, - 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, - 54, 54, 44, 44, 44, 44, 45, 44, 44, 44, - 44, 44, 44, 44, 44, 303, 44, 192, 301, 44, - 327, 114, 116, 232, 44, 44, 44, 44, 44, 114, - 115, 247, 302, 247, 261, 247, 281, 266, 115, 114, - 262, 114, 326, 263, 247, 114, 264, 303, 115, 324, - 115, 316, 323, 322, 115, 44, 44, 44, 44, 45, - 44, 44, 44, 44, 44, 44, 44, 44, 267, 44, - - 321, 312, 44, 247, 292, 300, 114, 44, 44, 44, - 44, 44, 114, 114, 302, 115, 313, 305, 264, 312, - 301, 115, 115, 247, 320, 319, 114, 318, 317, 303, - 316, 315, 314, 311, 313, 115, 310, 309, 44, 44, - 44, 44, 45, 44, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 44, 58, 58, 58, 44, - 44, 44, 44, 44, 44, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, - 58, 44, 44, 44, 44, 45, 44, 44, 44, 44, - - 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 44, 59, 44, 44, 44, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 44, 60, 44, 44, 45, 44, - 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, - 44, 44, 61, 61, 61, 44, 44, 44, 44, 44, - 44, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 62, - 61, 61, 61, 61, 61, 61, 61, 44, 44, 45, - - 308, 63, 307, 306, 64, 63, 63, 63, 63, 304, - 63, 299, 63, 298, 297, 296, 295, 294, 65, 63, - 293, 291, 290, 289, 288, 247, 287, 286, 285, 284, - 283, 66, 282, 280, 279, 278, 277, 276, 275, 67, - 274, 273, 272, 271, 270, 269, 257, 256, 63, 63, - 44, 44, 45, 44, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 44, 70, 70, 70, 44, - 44, 44, 44, 44, 44, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, - - 70, 44, 44, 44, 44, 45, 44, 44, 44, 44, - 44, 44, 44, 44, 255, 44, 254, 253, 44, 252, - 241, 240, 239, 44, 44, 44, 44, 44, 247, 238, - 247, 237, 247, 236, 235, 234, 233, 231, 230, 136, - 247, 247, 264, 229, 264, 228, 73, 227, 226, 225, - 224, 223, 222, 247, 44, 74, 44, 44, 45, 44, - 44, 44, 44, 44, 44, 44, 44, 220, 44, 219, - 247, 44, 218, 217, 114, 216, 44, 44, 44, 44, - 44, 215, 247, 115, 214, 213, 212, 211, 210, 209, - 207, 206, 205, 204, 203, 202, 201, 200, 199, 73, - - 198, 197, 196, 195, 194, 193, 191, 44, 74, 44, - 44, 45, 44, 44, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 80, 80, 80, 44, 44, - 44, 44, 44, 44, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, - 44, 44, 44, 44, 45, 44, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 81, 44, 82, 82, 82, - 82, 82, 44, 82, 82, 82, 82, 82, 82, 82, - - 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 44, 44, 44, 44, 45, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, - 44, 83, 83, 83, 83, 44, 44, 44, 44, 44, - 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, - 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, - 83, 83, 83, 83, 83, 83, 44, 83, 242, 190, - 242, 243, 189, 188, 244, 245, 187, 243, 246, 247, - 248, 186, 243, 247, 265, 268, 247, 268, 247, 243, - 247, 185, 184, 183, 182, 181, 247, 180, 179, 247, - - 178, 249, 177, 176, 175, 174, 173, 172, 170, 250, - 114, 169, 167, 166, 165, 164, 163, 162, 243, 251, - 242, 161, 242, 243, 158, 247, 244, 245, 247, 243, - 243, 247, 258, 157, 243, 156, 153, 152, 151, 150, - 149, 243, 148, 147, 145, 144, 143, 142, 141, 140, - 139, 138, 137, 259, 136, 135, 134, 133, 132, 131, - 128, 260, 127, 126, 125, 117, 109, 108, 107, 104, - 243, 243, 265, 98, 247, 97, 264, 94, 264, 93, - 333, 45, 45, 333, 333, 333, 333, 247, 333, 333, - 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, - - 333, 333, 333, 333, 333, 333, 333, 333, 114, 333, - 333, 333, 333, 333, 333, 333, 247, 115, 44, 44, - 44, 44, 44, 44, 44, 44, 53, 53, 53, 53, - 53, 53, 53, 53, 57, 57, 57, 57, 57, 57, - 57, 57, 72, 72, 72, 72, 72, 72, 72, 72, - 76, 76, 76, 76, 76, 76, 76, 76, 84, 84, - 84, 84, 84, 84, 84, 84, 90, 333, 333, 90, - 95, 95, 333, 333, 95, 96, 333, 333, 96, 99, - 99, 99, 333, 99, 100, 333, 333, 100, 103, 333, - 333, 103, 110, 333, 333, 110, 113, 113, 113, 333, - - 113, 113, 115, 115, 115, 333, 115, 115, 121, 333, - 333, 121, 123, 123, 333, 123, 123, 124, 124, 124, - 124, 124, 333, 124, 124, 168, 168, 168, 168, 333, - 168, 325, 333, 333, 325, 43, 333, 333, 333, 333, - 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, - 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, - 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, - 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, - 333, 333, 333, 333, 333, 333, 333, 333, 333 - } ; - -static yyconst short int yy_chk[1190] = - { 0, - 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, 3, 3, - 3, 3, 3, 4, 5, 6, 27, 13, 14, 27, - 4, 13, 14, 28, 351, 64, 28, 23, 64, 24, - 31, 340, 32, 5, 6, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 23, 7, 24, 31, - 7, 32, 41, 42, 7, 7, 7, 7, 7, 7, - - 33, 34, 47, 59, 71, 33, 34, 91, 91, 49, - 289, 41, 42, 331, 72, 47, 49, 59, 49, 33, - 34, 129, 49, 72, 71, 289, 7, 7, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 330, - 8, 129, 329, 8, 73, 73, 113, 8, 8, 8, - 8, 8, 8, 73, 78, 113, 114, 114, 116, 133, - 78, 208, 264, 78, 133, 114, 116, 146, 192, 146, - 208, 264, 192, 327, 326, 116, 146, 192, 324, 8, - 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 323, 11, 171, 322, 11, - 321, 221, 221, 221, 11, 11, 11, 11, 11, 171, - 221, 243, 290, 243, 244, 243, 266, 249, 171, 266, - 244, 267, 319, 244, 243, 249, 267, 290, 266, 317, - 267, 316, 315, 314, 249, 11, 11, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, 250, 12, - - 312, 299, 12, 243, 281, 301, 250, 12, 12, 12, - 12, 12, 281, 292, 303, 250, 299, 292, 305, 313, - 301, 281, 292, 311, 309, 308, 305, 307, 306, 303, - 304, 302, 300, 298, 313, 305, 297, 296, 12, 12, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 17, 17, 17, 17, 17, 17, 17, - - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 21, - - 295, 21, 294, 293, 21, 21, 21, 21, 21, 291, - 21, 288, 21, 287, 286, 285, 284, 283, 21, 21, - 282, 280, 279, 278, 277, 276, 275, 273, 272, 271, - 270, 21, 269, 265, 263, 262, 261, 260, 259, 21, - 257, 256, 255, 254, 253, 252, 241, 240, 21, 21, - 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - - 25, 25, 25, 29, 29, 29, 29, 29, 29, 29, - 29, 29, 29, 29, 239, 29, 237, 235, 29, 234, - 231, 229, 228, 29, 29, 29, 29, 29, 245, 227, - 245, 226, 245, 225, 224, 223, 222, 220, 219, 218, - 246, 245, 246, 217, 246, 216, 29, 215, 214, 213, - 212, 211, 210, 246, 29, 29, 30, 30, 30, 30, - 30, 30, 30, 30, 30, 30, 30, 206, 30, 204, - 245, 30, 203, 202, 246, 201, 30, 30, 30, 30, - 30, 200, 246, 246, 199, 198, 197, 196, 195, 194, - 191, 190, 188, 187, 186, 185, 184, 183, 182, 30, - - 181, 180, 179, 177, 176, 173, 170, 30, 30, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 37, 37, 37, 37, 37, 37, 37, 37, - 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, - 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, - 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, - - 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, - 37, 37, 37, 37, 37, 39, 39, 39, 39, 39, - 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, - 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, - 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, - 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, - 39, 39, 39, 39, 39, 39, 39, 39, 232, 169, - 232, 232, 168, 167, 232, 232, 164, 232, 232, 232, - 232, 163, 232, 251, 258, 251, 258, 251, 258, 232, - 258, 162, 161, 160, 159, 158, 251, 156, 154, 258, - - 153, 232, 152, 151, 150, 149, 148, 147, 145, 232, - 232, 144, 141, 140, 139, 138, 137, 135, 232, 232, - 242, 134, 242, 242, 132, 251, 242, 242, 258, 242, - 242, 242, 242, 131, 242, 130, 128, 127, 125, 120, - 119, 242, 118, 117, 112, 111, 109, 108, 107, 106, - 105, 104, 102, 242, 101, 98, 97, 94, 93, 92, - 89, 242, 88, 87, 86, 75, 69, 67, 66, 62, - 242, 242, 248, 56, 248, 55, 248, 51, 248, 50, - 43, 2, 1, 0, 0, 0, 0, 248, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 248, 0, - 0, 0, 0, 0, 0, 0, 248, 248, 334, 334, - 334, 334, 334, 334, 334, 334, 335, 335, 335, 335, - 335, 335, 335, 335, 336, 336, 336, 336, 336, 336, - 336, 336, 337, 337, 337, 337, 337, 337, 337, 337, - 338, 338, 338, 338, 338, 338, 338, 338, 339, 339, - 339, 339, 339, 339, 339, 339, 341, 0, 0, 341, - 342, 342, 0, 0, 342, 343, 0, 0, 343, 344, - 344, 344, 0, 344, 345, 0, 0, 345, 346, 0, - 0, 346, 347, 0, 0, 347, 348, 348, 348, 0, - - 348, 348, 349, 349, 349, 0, 349, 349, 350, 0, - 0, 350, 352, 352, 0, 352, 352, 353, 353, 353, - 353, 353, 0, 353, 353, 354, 354, 354, 354, 0, - 354, 355, 0, 0, 355, 333, 333, 333, 333, 333, - 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, - 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, - 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, - 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, - 333, 333, 333, 333, 333, 333, 333, 333, 333 - } ; - -static yy_state_type yy_last_accepting_state; -static char *yy_last_accepting_cpos; - -/* The intent behind this definition is that it'll catch - * any uses of REJECT which flex missed. - */ -#define REJECT reject_used_but_not_detected -#define yymore() yymore_used_but_not_detected -#define YY_MORE_ADJ 0 -#define YY_RESTORE_YY_MORE_OFFSET -char *yytext; -#line 1 "doxytag.l" -#define INITIAL 0 -/****************************************************************************** - * - * $Id$ - * - * Copyright (C) 1997-2000 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - * All output generated with Doxygen is not covered by this license. - * - */ -#line 18 "doxytag.l" -/* - * includes - */ -#include -#include -#include -#include - -#include "qtbc.h" -#include -#include -#include -#include -#include -#include - -#include "version.h" -#include "suffixtree.h" -#include "searchindex.h" -#include "logos.h" - -struct MemberDef -{ - QCString name; - QCString anchor; - QCString args; -}; - -struct ClassDef -{ - QCString name; - QStrList bases; - QCString fileName; - bool isFile; - QList memberList; -}; - -QList classList; -QDict classDict(1009); -QList fileList; -QDict fileDict(1009); - -static bool genTag; -static bool genIndex; - -static QStrList bases; -static QCString inputString; -static int inputPosition; -static QCString yyFileName; -static int yyLineNr; -static QCString classFile; -static QCString memberRef; -static QCString memberName; -static QCString memberArgs; -static QCString className; -//static bool newClass; -static QCString docBaseLink; -static QCString docAnchor; -static QCString docRefName; -static bool nameBug; -static SearchIndex searchIndex; - -#define YY_NEVER_INTERACTIVE 1 - -/* ----------------------------------------------------------------- - */ -#undef YY_INPUT -#define YY_INPUT(buf,result,max_size) result=yyread(buf,max_size); - -static int yyread(char *buf,int max_size) -{ - int c=0; - while( c < max_size && inputString[inputPosition] ) - { - *buf = inputString[inputPosition++] ; - c++; buf++; - } - return c; -} - -static void addClass(const char *clName) -{ - if (classDict[clName]==0) - { - ClassDef *cd=new ClassDef; - cd->name=clName; - cd->fileName=yyFileName; - cd->isFile=FALSE; - classList.append(cd); - classDict.insert(clName,cd); - } -} - -static void addFile(const char *fName) -{ - if (classDict[fName]==0) - { - ClassDef *fd=new ClassDef; - fd->name=fName; - fd->fileName=yyFileName; - fd->isFile=TRUE; - classList.append(fd); - classDict.insert(fName,fd); - } -} - -static void addBases(const char *clName) -{ - ClassDef *cd=0; - if (clName && (cd=classDict[clName])) cd->bases=bases; -} - -static void addMember(const char *memName,const char *memRef,const char *memArgs) -{ - ClassDef *cd=classList.last(); - MemberDef *md; - md=new MemberDef; - md->name=memName; - md->anchor=memRef; - md->args=memArgs; - cd->memberList.append(md); -} - -static void addReference() -{ - //printf("addReference() key: %s ref:%s\n", - // docRefName.data(),(docBaseLink+"#"+docAnchor).data()); - if (genIndex && !docRefName.isEmpty() && !docBaseLink.isEmpty()) - { - if (!docAnchor.isEmpty()) - searchIndex.addReference(docRefName,docBaseLink); - else - searchIndex.addReference(docRefName,docBaseLink+"#"+docAnchor); - searchIndex.addWord(docRefName,docRefName,TRUE); - } -} - -QCString unhtmlify(const char *str) -{ - QCString result; - const char *p=str; - char c; - while ((c=*p)!='\0') - { - if (c!='&') { result+=c; p++; } - else - { - if (strncmp(p,"&",5)==0) { result+='&'; p+=5; } - else if (strncmp(p,"<",4)==0) { result+='<'; p+=4; } - else if (strncmp(p,">",4)==0) { result+='>'; p+=4; } - else /* should not happen */ { result+='&'; p++; } - } - } - return result; -} - -#define Start 1 - -#define SearchClassFile 2 - -#define ReadClassFile 3 - -#define CheckClassName 4 - -#define ReadClassName 5 - -#define SearchMemberRef 6 - -#define ReadMemberRef 7 - -#define SearchMemberName 8 - -#define ReadMemberName 9 - -#define ReadOperator 10 - -#define SearchBaseClasses 11 - -#define ReadBaseClass 12 - -#define SearchRefName 13 - -#define ReadRefName 14 - -#define SearchArgs 15 - -#define ReadArgs 16 - -#define SearchWords 17 - -#define SkipHTMLTag 18 - -#define CheckConstructor 19 - -#define SkipPreformated 20 - - -/* Macros after this point can all be overridden by user definitions in - * section 1. - */ - -#ifndef YY_SKIP_YYWRAP -#ifdef __cplusplus -extern "C" int yywrap YY_PROTO(( void )); -#else -extern int yywrap YY_PROTO(( void )); -#endif -#endif - -#ifndef YY_NO_UNPUT -static void yyunput YY_PROTO(( int c, char *buf_ptr )); -#endif - -#ifndef yytext_ptr -static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int )); -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen YY_PROTO(( yyconst char * )); -#endif - -#ifndef YY_NO_INPUT -#ifdef __cplusplus -static int yyinput YY_PROTO(( void )); -#else -static int input YY_PROTO(( void )); -#endif -#endif - -#if YY_STACK_USED -static int yy_start_stack_ptr = 0; -static int yy_start_stack_depth = 0; -static int *yy_start_stack = 0; -#ifndef YY_NO_PUSH_STATE -static void yy_push_state YY_PROTO(( int new_state )); -#endif -#ifndef YY_NO_POP_STATE -static void yy_pop_state YY_PROTO(( void )); -#endif -#ifndef YY_NO_TOP_STATE -static int yy_top_state YY_PROTO(( void )); -#endif - -#else -#define YY_NO_PUSH_STATE 1 -#define YY_NO_POP_STATE 1 -#define YY_NO_TOP_STATE 1 -#endif - -#ifdef YY_MALLOC_DECL -YY_MALLOC_DECL -#else -#if __STDC__ -#ifndef __cplusplus -#include -#endif -#else -/* Just try to get by without declaring the routines. This will fail - * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int) - * or sizeof(void*) != sizeof(int). - */ -#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 (void) fwrite( yytext, yyleng, 1, yyout ) -#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->yy_is_interactive ) \ - { \ - int c = '*', n; \ - for ( n = 0; n < max_size && \ - (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ - buf[n] = (char) c; \ - if ( c == '\n' ) \ - buf[n++] = (char) c; \ - if ( c == EOF && ferror( yyin ) ) \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - result = n; \ - } \ - else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \ - && ferror( yyin ) ) \ - YY_FATAL_ERROR( "input in flex scanner failed" ); -#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 - -/* Default declaration of generated scanner - a define so the user can - * easily add parameters. - */ -#ifndef YY_DECL -#define YY_DECL int yylex YY_PROTO(( void )) -#endif - -/* Code executed at the beginning of each rule, after yytext and yyleng - * have been set up. - */ -#ifndef YY_USER_ACTION -#define YY_USER_ACTION -#endif - -/* Code executed at the end of each rule. */ -#ifndef YY_BREAK -#define YY_BREAK break; -#endif - -#define YY_RULE_SETUP \ - if ( yyleng > 0 ) \ - yy_current_buffer->yy_at_bol = \ - (yytext[yyleng - 1] == '\n'); \ - YY_USER_ACTION - -YY_DECL - { - register yy_state_type yy_current_state; - register char *yy_cp, *yy_bp; - register int yy_act; - -#line 197 "doxytag.l" - - - - if ( yy_init ) - { - yy_init = 0; - -#ifdef YY_USER_INIT - YY_USER_INIT; -#endif - - if ( ! yy_start ) - yy_start = 1; /* first start state */ - - if ( ! yyin ) - yyin = stdin; - - if ( ! yyout ) - yyout = stdout; - - if ( ! yy_current_buffer ) - yy_current_buffer = - yy_create_buffer( yyin, YY_BUF_SIZE ); - - yy_load_buffer_state(); - } - - while ( 1 ) /* loops until end-of-file is reached */ - { - yy_cp = yy_c_buf_p; - - /* Support of yytext. */ - *yy_cp = yy_hold_char; - - /* yy_bp points to the position in yy_ch_buf of the start of - * the current run. - */ - yy_bp = yy_cp; - - yy_current_state = yy_start; - yy_current_state += YY_AT_BOL(); -yy_match: - do - { - 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 >= 334 ) - 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] != 1136 ); - -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: -YY_RULE_SETUP -#line 199 "doxytag.l" -{ - BEGIN( SearchClassFile ); - } - YY_BREAK -case 2: -YY_RULE_SETUP -#line 202 "doxytag.l" -{ // Qt variant - BEGIN( ReadClassName ); - } - YY_BREAK -case 3: -YY_RULE_SETUP -#line 205 "doxytag.l" -{ // Doxygen variant - BEGIN( ReadClassName ); - } - YY_BREAK -case 4: -YY_RULE_SETUP -#line 208 "doxytag.l" -{ - //printf("Inherits found\n"); - BEGIN( SearchBaseClasses ); - } - YY_BREAK -case 5: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp = yy_bp + 15; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 212 "doxytag.l" -{ // needed due to inconsistency in the Qt docs - BEGIN( CheckConstructor ); - } - YY_BREAK -case 6: -YY_RULE_SETUP -#line 215 "doxytag.l" -{ - BEGIN( SkipPreformated ); - } - YY_BREAK -case 7: -YY_RULE_SETUP -#line 218 "doxytag.l" -{ - BEGIN( SearchWords ); - } - YY_BREAK -case 8: -YY_RULE_SETUP -#line 221 "doxytag.l" -{ - BEGIN( SkipHTMLTag ); - } - YY_BREAK -case 9: -YY_RULE_SETUP -#line 224 "doxytag.l" - - YY_BREAK -case 10: -YY_RULE_SETUP -#line 225 "doxytag.l" -{ - //printf("tag: %s#%s ref: %s word: `%s'\n", - // docBaseLink.data(),docAnchor.data(), - // docRefName.data(),yytext); - if (genIndex && !docRefName.isEmpty() && yyleng>2) - searchIndex.addWord(docRefName, - yytext,FALSE - ); - } - YY_BREAK -case 11: -YY_RULE_SETUP -#line 234 "doxytag.l" -{ - BEGIN( Start ); - } - YY_BREAK -case 12: -YY_RULE_SETUP -#line 237 "doxytag.l" - - YY_BREAK -case 13: -YY_RULE_SETUP -#line 238 "doxytag.l" -{ - QCString s=yytext; - if (s.find("::")!=-1) - { - docRefName=yytext; - addReference(); - nameBug=TRUE; - } - else - { - nameBug=FALSE; - } - BEGIN( Start ); - } - YY_BREAK -case 14: -YY_RULE_SETUP -#line 252 "doxytag.l" -{ - docAnchor = yytext; - if (docAnchor=="details" || - docAnchor=="_details") - { - docRefName=className.copy(); - addReference(); - BEGIN( Start ); - } - else - { - BEGIN( SearchRefName ); - } - } - YY_BREAK -case 15: -YY_RULE_SETUP -#line 266 "doxytag.l" -{ - BEGIN( ReadRefName ); - } - YY_BREAK -case 16: -YY_RULE_SETUP -#line 269 "doxytag.l" -{ - if (nameBug) - BEGIN( Start ); - else - BEGIN( ReadRefName ); - } - YY_BREAK -case 17: -YY_RULE_SETUP -#line 276 "doxytag.l" -{ // hmm, looks impressive :-) - docRefName=unhtmlify(yytext); - addReference(); - BEGIN( Start ); - } - YY_BREAK -case 18: -YY_RULE_SETUP -#line 281 "doxytag.l" -{ - //printf("ReadRef=%s\n",yytext); - docRefName=yytext; - addReference(); - BEGIN( Start ); - } - YY_BREAK -case 19: -YY_RULE_SETUP -#line 287 "doxytag.l" -{ - //printf("Search %s\n",yytext); - BEGIN( ReadBaseClass ); - } - YY_BREAK -case 20: -YY_RULE_SETUP -#line 291 "doxytag.l" -{ - addBases(className); - BEGIN( Start ); - } - YY_BREAK -case 21: -YY_RULE_SETUP -#line 295 "doxytag.l" -{ - bases.append(yytext); - BEGIN( SearchBaseClasses ); - } - YY_BREAK -case 22: -YY_RULE_SETUP -#line 299 "doxytag.l" -{ - BEGIN( ReadClassFile ); - } - YY_BREAK -case 23: -YY_RULE_SETUP -#line 302 "doxytag.l" -{ - BEGIN( ReadClassFile ); - } - YY_BREAK -case 24: -YY_RULE_SETUP -#line 305 "doxytag.l" -{ - className=yytext; - BEGIN( CheckClassName); - } - YY_BREAK -case 25: -YY_RULE_SETUP -#line 309 "doxytag.l" -{ - //printf("className=%s\n",className.data()); - addClass(className); - BEGIN( Start ); - } - YY_BREAK -case 26: -YY_RULE_SETUP -#line 314 "doxytag.l" -{ - //printf("className=%s\n",className.data()); - addFile(className); - BEGIN( Start ); - } - YY_BREAK -case 27: -YY_RULE_SETUP -#line 319 "doxytag.l" -{ // not a class file - className.resize(0); - BEGIN( Start ); - } - YY_BREAK -case 28: -YY_RULE_SETUP -#line 323 "doxytag.l" -{ - classFile=yytext; - BEGIN( SearchMemberRef ); - } - YY_BREAK -case 29: -YY_RULE_SETUP -#line 327 "doxytag.l" -{ - if (YY_START==ReadClassFile) - { - classFile=yyFileName; - } - BEGIN( ReadMemberRef ); - } - YY_BREAK -case 30: -YY_RULE_SETUP -#line 334 "doxytag.l" -{ - memberRef=yytext; - BEGIN( SearchMemberName ); - } - YY_BREAK -case 31: -YY_RULE_SETUP -#line 338 "doxytag.l" -{ // is for qt-1.44, is for qt-2.00 - BEGIN( ReadMemberName ); - } - YY_BREAK -case 32: -YY_RULE_SETUP -#line 341 "doxytag.l" -{ - unput(*yytext); - BEGIN( ReadMemberName ); - } - YY_BREAK -case 33: -YY_RULE_SETUP -#line 345 "doxytag.l" -{ - memberName="operator"; - BEGIN( ReadOperator ); - } - YY_BREAK -case 34: -YY_RULE_SETUP -#line 349 "doxytag.l" -{ memberName+=*yytext; } - YY_BREAK -case 35: -YY_RULE_SETUP -#line 350 "doxytag.l" -{ memberName+="<"; } - YY_BREAK -case 36: -YY_RULE_SETUP -#line 351 "doxytag.l" -{ memberName+=">"; } - YY_BREAK -case 37: -YY_RULE_SETUP -#line 352 "doxytag.l" -{ memberName+=" new"; } - YY_BREAK -case 38: -YY_RULE_SETUP -#line 353 "doxytag.l" -{ memberName+=" delete"; } - YY_BREAK -case 39: -YY_RULE_SETUP -#line 354 "doxytag.l" -{ BEGIN( SearchArgs ); } - YY_BREAK -case 40: -YY_RULE_SETUP -#line 355 "doxytag.l" -{ - memberName=yytext; - BEGIN( SearchArgs ); - } - YY_BREAK -case 41: -YY_RULE_SETUP -#line 359 "doxytag.l" -{ - //printf("SearchArg className=%s memberName=%s\n",className.data(),memberName.data()); - if (!className.isEmpty() && !memberName.isEmpty()) - BEGIN( ReadArgs ); - else - BEGIN( Start ); - } - YY_BREAK -case 42: -YY_RULE_SETUP -#line 366 "doxytag.l" -{ memberArgs+="&"; } - YY_BREAK -case 43: -YY_RULE_SETUP -#line 367 "doxytag.l" -{ memberArgs+="<"; } - YY_BREAK -case 44: -YY_RULE_SETUP -#line 368 "doxytag.l" -{ memberArgs+=">"; } - YY_BREAK -/* -[{}] { // handle enums - memberArgs.resize(0); - addMember(memberName,memberRef,memberArgs); - if (*yytext=='}') - BEGIN( Start ); - else - BEGIN( SearchClassFile ); - } - */ -case 45: -YY_RULE_SETUP -#line 379 "doxytag.l" -{ - //printf("adding member %s\n",memberName.data()); - memberArgs=memberArgs.stripWhiteSpace(); - //if (newClass) - //{ - // newClass=FALSE; - // addClass(className); - //} - addMember(memberName,memberRef,memberArgs); - memberArgs.resize(0); - if (*yytext=='<') - BEGIN( SkipHTMLTag); - else - BEGIN( Start ); - } - YY_BREAK -case 46: -YY_RULE_SETUP -#line 394 "doxytag.l" -{ memberArgs+=(*yytext)&0x7f; } - YY_BREAK -case 47: -YY_RULE_SETUP -#line 395 "doxytag.l" -{ BEGIN( Start ); } - YY_BREAK -case 48: -YY_RULE_SETUP -#line 396 "doxytag.l" - - YY_BREAK -case 49: -YY_RULE_SETUP -#line 397 "doxytag.l" - - YY_BREAK -case 50: -YY_RULE_SETUP -#line 398 "doxytag.l" -{ yyLineNr++; - if (YY_START!=SkipHTMLTag) BEGIN( Start ); - } - YY_BREAK -case 51: -YY_RULE_SETUP -#line 402 "doxytag.l" -ECHO; - YY_BREAK -case YY_STATE_EOF(INITIAL): -case YY_STATE_EOF(Start): -case YY_STATE_EOF(SearchClassFile): -case YY_STATE_EOF(ReadClassFile): -case YY_STATE_EOF(CheckClassName): -case YY_STATE_EOF(ReadClassName): -case YY_STATE_EOF(SearchMemberRef): -case YY_STATE_EOF(ReadMemberRef): -case YY_STATE_EOF(SearchMemberName): -case YY_STATE_EOF(ReadMemberName): -case YY_STATE_EOF(ReadOperator): -case YY_STATE_EOF(SearchBaseClasses): -case YY_STATE_EOF(ReadBaseClass): -case YY_STATE_EOF(SearchRefName): -case YY_STATE_EOF(ReadRefName): -case YY_STATE_EOF(SearchArgs): -case YY_STATE_EOF(ReadArgs): -case YY_STATE_EOF(SearchWords): -case YY_STATE_EOF(SkipHTMLTag): -case YY_STATE_EOF(CheckConstructor): -case YY_STATE_EOF(SkipPreformated): - 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->yy_buffer_status == YY_BUFFER_NEW ) - { - /* We're scanning a new file or input source. It's - * possible that this happened because the user - * just pointed yyin at a new source and called - * yylex(). If so, then we have to assure - * consistency between yy_current_buffer and our - * globals. Here is the right place to do so, because - * this is the first action (other than possibly a - * back-up) that will match for the new input source. - */ - yy_n_chars = yy_current_buffer->yy_n_chars; - yy_current_buffer->yy_input_file = yyin; - yy_current_buffer->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->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 ( yywrap() ) - { - /* Note: because we've taken care in - * yy_get_next_buffer() to have set up - * yytext, we can now set up - * yy_c_buf_p so that if some total - * hoser (like flex itself) wants to - * call the scanner after we return the - * YY_NULL, it'll still work - another - * YY_NULL will get returned. - */ - yy_c_buf_p = yytext_ptr + YY_MORE_ADJ; - - yy_act = YY_STATE_EOF(YY_START); - goto do_action; - } - - else - { - if ( ! yy_did_buffer_switch_on_eof ) - YY_NEW_FILE; - } - break; - } - - case EOB_ACT_CONTINUE_SCAN: - yy_c_buf_p = - yytext_ptr + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state(); - - yy_cp = yy_c_buf_p; - yy_bp = yytext_ptr + YY_MORE_ADJ; - goto yy_match; - - case EOB_ACT_LAST_MATCH: - yy_c_buf_p = - &yy_current_buffer->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 yylex */ - - -/* yy_get_next_buffer - try to read in a new buffer - * - * Returns a code representing an action: - * EOB_ACT_LAST_MATCH - - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position - * EOB_ACT_END_OF_FILE - end of file - */ - -static int yy_get_next_buffer() - { - register char *dest = yy_current_buffer->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->yy_ch_buf[yy_n_chars + 1] ) - YY_FATAL_ERROR( - "fatal flex scanner internal error--end of buffer missed" ); - - if ( yy_current_buffer->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->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->yy_n_chars = yy_n_chars = 0; - - else - { - int num_to_read = - yy_current_buffer->yy_buf_size - number_to_move - 1; - - while ( num_to_read <= 0 ) - { /* Not enough room in the buffer - grow it. */ -#ifdef YY_USES_REJECT - YY_FATAL_ERROR( -"input buffer overflow, can't enlarge buffer because scanner uses REJECT" ); -#else - - /* 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. */ - yy_flex_realloc( (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->yy_buf_size - - number_to_move - 1; -#endif - } - - if ( num_to_read > YY_READ_BUF_SIZE ) - num_to_read = YY_READ_BUF_SIZE; - - /* Read in more data. */ - YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]), - yy_n_chars, num_to_read ); - - yy_current_buffer->yy_n_chars = yy_n_chars; - } - - if ( yy_n_chars == 0 ) - { - if ( number_to_move == YY_MORE_ADJ ) - { - ret_val = EOB_ACT_END_OF_FILE; - yyrestart( yyin ); - } - - else - { - ret_val = EOB_ACT_LAST_MATCH; - yy_current_buffer->yy_buffer_status = - YY_BUFFER_EOF_PENDING; - } - } - - else - ret_val = EOB_ACT_CONTINUE_SCAN; - - yy_n_chars += number_to_move; - yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR; - yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; - - yytext_ptr = &yy_current_buffer->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() - { - register yy_state_type yy_current_state; - register char *yy_cp; - - yy_current_state = yy_start; - yy_current_state += YY_AT_BOL(); - - for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp ) - { - 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 >= 334 ) - 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 ); - */ - -#ifdef YY_USE_PROTOS -static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state ) -#else -static yy_state_type yy_try_NUL_trans( yy_current_state ) -yy_state_type yy_current_state; -#endif - { - 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 >= 334 ) - 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 == 333); - - return yy_is_jam ? 0 : yy_current_state; - } - - -#ifndef YY_NO_UNPUT -#ifdef YY_USE_PROTOS -static void yyunput( int c, register char *yy_bp ) -#else -static void yyunput( c, yy_bp ) -int c; -register char *yy_bp; -#endif - { - register char *yy_cp = yy_c_buf_p; - - /* undo effects of setting up yytext */ - *yy_cp = yy_hold_char; - - if ( yy_cp < yy_current_buffer->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->yy_ch_buf[ - yy_current_buffer->yy_buf_size + 2]; - register char *source = - &yy_current_buffer->yy_ch_buf[number_to_move]; - - while ( source > yy_current_buffer->yy_ch_buf ) - *--dest = *--source; - - yy_cp += (int) (dest - source); - yy_bp += (int) (dest - source); - yy_current_buffer->yy_n_chars = - yy_n_chars = yy_current_buffer->yy_buf_size; - - if ( yy_cp < yy_current_buffer->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; - } -#endif /* ifndef YY_NO_UNPUT */ - - -#ifdef __cplusplus -static int yyinput() -#else -static int input() -#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->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. */ - yyrestart( yyin ); - - /* fall through */ - - case EOB_ACT_END_OF_FILE: - { - if ( yywrap() ) - 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 yytext */ - yy_hold_char = *++yy_c_buf_p; - - yy_current_buffer->yy_at_bol = (c == '\n'); - - return c; - } - - -#ifdef YY_USE_PROTOS -void yyrestart( FILE *input_file ) -#else -void yyrestart( input_file ) -FILE *input_file; -#endif - { - if ( ! yy_current_buffer ) - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); - - yy_init_buffer( yy_current_buffer, input_file ); - yy_load_buffer_state(); - } - - -#ifdef YY_USE_PROTOS -void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer ) -#else -void yy_switch_to_buffer( new_buffer ) -YY_BUFFER_STATE new_buffer; -#endif - { - 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->yy_buf_pos = yy_c_buf_p; - yy_current_buffer->yy_n_chars = yy_n_chars; - } - - yy_current_buffer = new_buffer; - yy_load_buffer_state(); - - /* We don't actually know whether we did this switch during - * EOF (yywrap()) processing, but the only time this flag - * is looked at is after yywrap() is called, so it's safe - * to go ahead and always set it. - */ - yy_did_buffer_switch_on_eof = 1; - } - - -#ifdef YY_USE_PROTOS -void yy_load_buffer_state( void ) -#else -void yy_load_buffer_state() -#endif - { - yy_n_chars = yy_current_buffer->yy_n_chars; - yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos; - yyin = yy_current_buffer->yy_input_file; - yy_hold_char = *yy_c_buf_p; - } - - -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_create_buffer( FILE *file, int size ) -#else -YY_BUFFER_STATE yy_create_buffer( file, size ) -FILE *file; -int size; -#endif - { - YY_BUFFER_STATE b; - - b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_buf_size = size; - - /* yy_ch_buf has to be 2 characters longer than the size given because - * we need to put in 2 end-of-buffer characters. - */ - b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 ); - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_is_our_buffer = 1; - - yy_init_buffer( b, file ); - - return b; - } - - -#ifdef YY_USE_PROTOS -void yy_delete_buffer( YY_BUFFER_STATE b ) -#else -void yy_delete_buffer( b ) -YY_BUFFER_STATE b; -#endif - { - if ( ! b ) - return; - - if ( b == yy_current_buffer ) - yy_current_buffer = (YY_BUFFER_STATE) 0; - - if ( b->yy_is_our_buffer ) - yy_flex_free( (void *) b->yy_ch_buf ); - - yy_flex_free( (void *) b ); - } - - -#ifndef YY_ALWAYS_INTERACTIVE -#ifndef YY_NEVER_INTERACTIVE -extern int isatty YY_PROTO(( int )); -#endif -#endif - -#ifdef YY_USE_PROTOS -void yy_init_buffer( YY_BUFFER_STATE b, FILE *file ) -#else -void yy_init_buffer( b, file ) -YY_BUFFER_STATE b; -FILE *file; -#endif - - - { - yy_flush_buffer( b ); - - b->yy_input_file = file; - b->yy_fill_buffer = 1; - -#if YY_ALWAYS_INTERACTIVE - b->yy_is_interactive = 1; -#else -#if YY_NEVER_INTERACTIVE - b->yy_is_interactive = 0; -#else - b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; -#endif -#endif - } - - -#ifdef YY_USE_PROTOS -void yy_flush_buffer( YY_BUFFER_STATE b ) -#else -void yy_flush_buffer( b ) -YY_BUFFER_STATE b; -#endif - - { - if ( ! b ) - return; - - b->yy_n_chars = 0; - - /* We always need two end-of-buffer characters. The first causes - * a transition to the end-of-buffer state. The second causes - * a jam in that state. - */ - b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; - b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; - - b->yy_buf_pos = &b->yy_ch_buf[0]; - - b->yy_at_bol = 1; - b->yy_buffer_status = YY_BUFFER_NEW; - - if ( b == yy_current_buffer ) - yy_load_buffer_state(); - } - - -#ifndef YY_NO_SCAN_BUFFER -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size ) -#else -YY_BUFFER_STATE yy_scan_buffer( base, size ) -char *base; -yy_size_t size; -#endif - { - 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) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_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; - - yy_switch_to_buffer( b ); - - return b; - } -#endif - - -#ifndef YY_NO_SCAN_STRING -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str ) -#else -YY_BUFFER_STATE yy_scan_string( yy_str ) -yyconst char *yy_str; -#endif - { - int len; - for ( len = 0; yy_str[len]; ++len ) - ; - - return yy_scan_bytes( yy_str, len ); - } -#endif - - -#ifndef YY_NO_SCAN_BYTES -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len ) -#else -YY_BUFFER_STATE yy_scan_bytes( bytes, len ) -yyconst char *bytes; -int len; -#endif - { - YY_BUFFER_STATE b; - char *buf; - yy_size_t n; - int i; - - /* Get memory for full buffer, including space for trailing EOB's. */ - n = len + 2; - buf = (char *) yy_flex_alloc( n ); - if ( ! buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); - - for ( i = 0; i < len; ++i ) - buf[i] = bytes[i]; - - buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR; - - b = yy_scan_buffer( buf, n ); - if ( ! b ) - YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); - - /* It's okay to grow etc. this buffer, and we should throw it - * away when we're done. - */ - b->yy_is_our_buffer = 1; - - return b; - } -#endif - - -#ifndef YY_NO_PUSH_STATE -#ifdef YY_USE_PROTOS -static void yy_push_state( int new_state ) -#else -static void yy_push_state( new_state ) -int new_state; -#endif - { - if ( yy_start_stack_ptr >= yy_start_stack_depth ) - { - yy_size_t new_size; - - yy_start_stack_depth += YY_START_STACK_INCR; - new_size = yy_start_stack_depth * sizeof( int ); - - if ( ! yy_start_stack ) - yy_start_stack = (int *) yy_flex_alloc( new_size ); - - else - yy_start_stack = (int *) yy_flex_realloc( - (void *) yy_start_stack, new_size ); - - if ( ! yy_start_stack ) - YY_FATAL_ERROR( - "out of memory expanding start-condition stack" ); - } - - yy_start_stack[yy_start_stack_ptr++] = YY_START; - - BEGIN(new_state); - } -#endif - - -#ifndef YY_NO_POP_STATE -static void yy_pop_state() - { - if ( --yy_start_stack_ptr < 0 ) - YY_FATAL_ERROR( "start-condition stack underflow" ); - - BEGIN(yy_start_stack[yy_start_stack_ptr]); - } -#endif - - -#ifndef YY_NO_TOP_STATE -static int yy_top_state() - { - return yy_start_stack[yy_start_stack_ptr - 1]; - } -#endif - -#ifndef YY_EXIT_FAILURE -#define YY_EXIT_FAILURE 2 -#endif - -#ifdef YY_USE_PROTOS -static void yy_fatal_error( yyconst char msg[] ) -#else -static void yy_fatal_error( msg ) -char msg[]; -#endif - { - (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 yytext. */ \ - yytext[yyleng] = yy_hold_char; \ - yy_c_buf_p = yytext + n; \ - yy_hold_char = *yy_c_buf_p; \ - *yy_c_buf_p = '\0'; \ - yyleng = n; \ - } \ - while ( 0 ) - - -/* Internal utility routines. */ - -#ifndef yytext_ptr -#ifdef YY_USE_PROTOS -static void yy_flex_strncpy( char *s1, yyconst char *s2, int n ) -#else -static void yy_flex_strncpy( s1, s2, n ) -char *s1; -yyconst char *s2; -int n; -#endif - { - register int i; - for ( i = 0; i < n; ++i ) - s1[i] = s2[i]; - } -#endif - -#ifdef YY_NEED_STRLEN -#ifdef YY_USE_PROTOS -static int yy_flex_strlen( yyconst char *s ) -#else -static int yy_flex_strlen( s ) -yyconst char *s; -#endif - { - register int n; - for ( n = 0; s[n]; ++n ) - ; - - return n; - } -#endif - - -#ifdef YY_USE_PROTOS -static void *yy_flex_alloc( yy_size_t size ) -#else -static void *yy_flex_alloc( size ) -yy_size_t size; -#endif - { - return (void *) malloc( size ); - } - -#ifdef YY_USE_PROTOS -static void *yy_flex_realloc( void *ptr, yy_size_t size ) -#else -static void *yy_flex_realloc( ptr, size ) -void *ptr; -yy_size_t size; -#endif - { - /* 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 ); - } - -#ifdef YY_USE_PROTOS -static void yy_flex_free( void *ptr ) -#else -static void yy_flex_free( ptr ) -void *ptr; -#endif - { - free( ptr ); - } - -#if YY_MAIN -int main() - { - yylex(); - return 0; - } -#endif -#line 402 "doxytag.l" - - -/*@ ---------------------------------------------------------------------------- - */ - - -void parse(QCString &s) -{ - bases.clear(); - nameBug = FALSE; - //newClass = TRUE; - inputString = s; - inputPosition = 0; - yyLineNr = 0; - tagYYrestart( tagYYin ); - BEGIN( Start ); - tagYYlex(); - //printf("Number of lines scanned: %d\n",yyLineNr); -} - -void parseFile(QFileInfo &fi) -{ - fprintf(stderr,"Parsing file %s...\n",fi.fileName().data()); - QFile f(fi.absFilePath().data()); - if (f.open(IO_ReadOnly)) - { - yyFileName = fi.fileName(); - className.resize(0); - memberName.resize(0); - //printf("Parsing file %s...\n",fi.fileName().data()); - QCString input(fi.size()+1); - docBaseLink=fi.fileName(); - docRefName=fi.fileName().copy(); - searchIndex.addReference(docRefName,docBaseLink); - searchIndex.addWord(docRefName,docRefName,TRUE); - f.readBlock(input.data(),fi.size()); - input.at(fi.size())='\0'; - parse(input); - } - else - { - fprintf(stderr,"Warning: Cannot open file %s\n",fi.fileName().data()); - } -} - -void parseFileOrDir(const char *fileName) -{ - QFileInfo fi(fileName); - if (fi.exists()) - { - if (fi.isFile()) - { - parseFile(fi); - } - else if (fi.isDir()) - { - QDir dir(fileName); - dir.setFilter( QDir::Files ); - dir.setNameFilter( "*.html" ); - const QFileInfoList *list = dir.entryInfoList(); - QFileInfoListIterator it( *list ); - QFileInfo *cfi; - for ( it.toFirst() ; (cfi=it.current()) ; ++it) - { - if (cfi->isFile()) - { - parseFile(*cfi); - } - } - } - } - else - { - fprintf(stderr,"Warning: File %s does not exist\n",fileName); - } -} - -void usage(const char *name) -{ - fprintf(stderr,"Doxytag version %s\nCopyright Dimitri van Heesch 1997-2000\n\n", - versionString); - fprintf(stderr," Generates a tag file and/or a search index for a set of HTML files\n\n"); - fprintf(stderr,"Usage: %s [-t tag_file] [-s index_file] [ html_file [html_file...] ]\n",name); - fprintf(stderr,"Options:\n"); - fprintf(stderr," -t Generate tag file .\n"); - fprintf(stderr," -s Generate search index .\n\n"); - fprintf(stderr,"If no HTML files are given all files in the current dir that\n" - "have a .html extension are parsed.\n\n"); - exit(1); -} - -const char *getArg(int argc,char **argv,int &optind,const char c) -{ - char *s=0; - if (strlen(&argv[optind][2])>0) - s=&argv[optind][2]; - else if (optind+1=argc) - { - parseFileOrDir("."); - } - else - { - for (i=optind;iError: $DOXYSEARCH not found. Check cgi script!\"" << endl - << "fi" << endl; - f.close(); - } - else - { - fprintf(stderr,"Error: could not open file %s for writing\n",(dir+"/search.cgi").data()); - } - } - } - } - if (genTag) - { - QFile f(tagName); - if (f.open(IO_WriteOnly)) - { - QTextStream t(&f); - ClassDef *cd=classList.first(); - while (cd) - { - if (cd->isFile) t << "&"; else t << ">"; - t << cd->name << ":"; - char *base=cd->bases.first(); - while (base) - { - t << base << "?"; - base=cd->bases.next(); - } - if (!cd->isFile) t << " \"" << cd->fileName << "\""; - t << endl; - MemberDef *md=cd->memberList.first(); - while (md) - { - t << md->name << " " << md->anchor << " \"" << md->args << "\"" << endl; - md=cd->memberList.next(); - } - cd=classList.next(); - } - } - else - { - fprintf(stderr,"Error: Could not write tag file %s\n",tagName.data()); - } - } - return 0; -} - -extern "C" { -int tagYYwrap() { return 1 ; } -}; diff --git a/src/entry.h b/src/entry.h index f8b4e82..4d1c1c4 100644 --- a/src/entry.h +++ b/src/entry.h @@ -33,7 +33,9 @@ struct BaseInfo struct Argument { + /*! Construct a new argument. */ Argument() {} + /*! Copy an argument (does a deep copy of all strings). */ Argument(const Argument &a) { attrib=a.attrib.copy(); @@ -43,6 +45,7 @@ struct Argument docs=a.docs.copy(); array=a.array.copy(); } + /* Assignment of an argument (does a deep copy of all strings). */ Argument &operator=(const Argument &a) { if (this!=&a) @@ -56,17 +59,20 @@ struct Argument } return *this; } + /*! return TRUE if this argument is documentation and the argument has a + * non empty name. + */ bool hasDocumentation() const { return !name.isEmpty() && !docs.isEmpty(); } - QCString attrib; // argument attribute (IDL only) - QCString type; // argument type - QCString name; // argument name (if any) - QCString array; // argument array specifier (if any) - QCString defval; // argument default value (if any) - QCString docs; // arguments documentation (if any) + QCString attrib; /*!< Argument's attribute (IDL only) */ + QCString type; /*!< Argument's type */ + QCString name; /*!< Argument's name (may be empty) */ + QCString array; /*!< Argument's array specifier (may be empty) */ + QCString defval; /*!< Argument's default value (may be empty) */ + QCString docs; /*!< Argument's documentation (may be empty) */ }; class ArgumentList : public QList diff --git a/src/filedef.cpp b/src/filedef.cpp index db28033..5caacff 100644 --- a/src/filedef.cpp +++ b/src/filedef.cpp @@ -479,7 +479,7 @@ void FileDef::insertMember(MemberDef *md) /*! Adds compound definition \a cd to the list of all compounds of this file */ void FileDef::insertClass(ClassDef *cd) { - classList->append(cd); + classList->inSort(cd); } /*! Adds namespace definition \a nd to the list of all compounds of this file */ @@ -487,7 +487,7 @@ void FileDef::insertNamespace(NamespaceDef *nd) { if (!nd->name().isEmpty() && namespaceDict->find(nd->name())==0) { - namespaceList->append(nd); + namespaceList->inSort(nd); namespaceDict->insert(nd->name(),nd); } } @@ -541,11 +541,10 @@ void FileDef::addUsingDirective(NamespaceDef *nd) void FileDef::addIncludeDependency(FileDef *fd,const char *incName,bool local) { + //printf("FileDef::addIncludeDependency(%p,%s,%d)\n",fd,incName,local); QCString iName = fd ? fd->absFilePath().data() : incName; if (!iName.isEmpty() && includeDict->find(iName)==0) { - //printf("Adding include dependency `%s' to `%s'\n", - // fd->name().data(),name().data()); IncludeInfo *ii = new IncludeInfo; ii->fileDef = fd; ii->includeName = incName; @@ -574,8 +573,8 @@ int FileList::compareItems(GCI item1, GCI item2) FileDef *f2=(FileDef *)item2; ASSERT(f1!=0 && f2!=0); return Config::fullPathNameFlag ? - strcmp(f1->absFilePath(),f2->absFilePath()) : - strcmp(f1->name(),f2->name()); + strcasecmp(f1->absFilePath(),f2->absFilePath()) : + strcasecmp(f1->name(),f2->name()); } /*! Create a file list iterator. */ diff --git a/src/index.cpp b/src/index.cpp index 9072a1f..2b0a163 100644 --- a/src/index.cpp +++ b/src/index.cpp @@ -90,49 +90,6 @@ QCString abbreviate(const char *s,const char *name) //---------------------------------------------------------------------------- -void initBaseClassHierarchy(BaseClassList *bcl) -{ - BaseClassListIterator bcli(*bcl); - for ( ; bcli.current(); ++bcli) - { - ClassDef *cd=bcli.current()->classDef; - if (cd->baseClasses()->count()==0) // no base classes => new root - { - initBaseClassHierarchy(cd->baseClasses()); - } - cd->visited=FALSE; - } -} - -//---------------------------------------------------------------------------- - -void initClassHierarchy(ClassList *cl) -{ - ClassListIterator cli(*cl); - ClassDef *cd; - for ( ; (cd=cli.current()); ++cli) - { - cd->visited=FALSE; - initBaseClassHierarchy(cd->baseClasses()); - } -} - -//---------------------------------------------------------------------------- - -bool hasVisibleRoot(BaseClassList *bcl) -{ - BaseClassListIterator bcli(*bcl); - for ( ; bcli.current(); ++bcli) - { - ClassDef *cd=bcli.current()->classDef; - if (cd->isVisibleInHierarchy()) return TRUE; - hasVisibleRoot(cd->baseClasses()); - } - return FALSE; -} - -//---------------------------------------------------------------------------- - void writeClassTree(OutputList &ol,BaseClassList *bcl,bool hideSuper) { HtmlHelp *htmlHelp=0; diff --git a/src/memberdef.cpp b/src/memberdef.cpp index 2caf362..ef2e877 100644 --- a/src/memberdef.cpp +++ b/src/memberdef.cpp @@ -1099,6 +1099,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, ClassDef *bcd=0; if (bmd && (bcd=bmd->memberClass())) { +#if 0 if (virt!=Normal) // search for virtual member of the deepest base class { MemberDef *lastBmd=bmd; @@ -1112,6 +1113,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, lastBmd=lastBmd->reimplements(); } } +#endif // write class that contains a member that is reimplemented by this one if (bcd->isLinkable()) { diff --git a/src/memberlist.cpp b/src/memberlist.cpp index 6aee11f..60c08aa 100644 --- a/src/memberlist.cpp +++ b/src/memberlist.cpp @@ -36,7 +36,7 @@ int MemberList::compareItems(GCI item1, GCI item2) { MemberDef *c1=(MemberDef *)item1; MemberDef *c2=(MemberDef *)item2; - return strcmp(c1->name(),c2->name()); + return strcasecmp(c1->name(),c2->name()); } void MemberList::countDecMembers() diff --git a/src/namespacedef.h b/src/namespacedef.h index 91c8634..f81542c 100644 --- a/src/namespacedef.h +++ b/src/namespacedef.h @@ -91,7 +91,7 @@ class NamespaceList : public QList ~NamespaceList() {} int compareItems(GCI item1,GCI item2) { - return strcmp(((NamespaceDef *)item1)->name(), + return strcasecmp(((NamespaceDef *)item1)->name(), ((NamespaceDef *)item2)->name() ); } diff --git a/src/pre.cpp b/src/pre.cpp deleted file mode 100644 index 96f5312..0000000 --- a/src/pre.cpp +++ /dev/null @@ -1,4517 +0,0 @@ -#define yy_create_buffer preYY_create_buffer -#define yy_delete_buffer preYY_delete_buffer -#define yy_scan_buffer preYY_scan_buffer -#define yy_scan_string preYY_scan_string -#define yy_scan_bytes preYY_scan_bytes -#define yy_flex_debug preYY_flex_debug -#define yy_init_buffer preYY_init_buffer -#define yy_flush_buffer preYY_flush_buffer -#define yy_load_buffer_state preYY_load_buffer_state -#define yy_switch_to_buffer preYY_switch_to_buffer -#define yyin preYYin -#define yyleng preYYleng -#define yylex preYYlex -#define yyout preYYout -#define yyrestart preYYrestart -#define yytext preYYtext - -/* A lexical scanner generated by flex */ - -/* Scanner skeleton version: - * $Header$ - */ - -#define FLEX_SCANNER -#define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 5 - -#include - - -/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */ -#ifdef c_plusplus -#ifndef __cplusplus -#define __cplusplus -#endif -#endif - - -#ifdef __cplusplus - -#include -#include - -/* Use prototypes in function declarations. */ -#define YY_USE_PROTOS - -/* The "const" storage-class-modifier is valid. */ -#define YY_USE_CONST - -#else /* ! __cplusplus */ - -#if __STDC__ - -#define YY_USE_PROTOS -#define YY_USE_CONST - -#endif /* __STDC__ */ -#endif /* ! __cplusplus */ - -#ifdef __TURBOC__ - #pragma warn -rch - #pragma warn -use -#include -#include -#define YY_USE_CONST -#define YY_USE_PROTOS -#endif - -#ifdef YY_USE_CONST -#define yyconst const -#else -#define yyconst -#endif - - -#ifdef YY_USE_PROTOS -#define YY_PROTO(proto) proto -#else -#define YY_PROTO(proto) () -#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 yyrestart( yyin ) - -#define YY_END_OF_BUFFER_CHAR 0 - -/* Size of default input buffer. */ -#define YY_BUF_SIZE 16384 - -typedef struct yy_buffer_state *YY_BUFFER_STATE; - -extern int yyleng; -extern FILE *yyin, *yyout; - -#define EOB_ACT_CONTINUE_SCAN 0 -#define EOB_ACT_END_OF_FILE 1 -#define EOB_ACT_LAST_MATCH 2 - -/* The funky do-while in the following #define is used to turn the definition - * int a single C statement (which needs a semi-colon terminator). This - * avoids problems with code like: - * - * if ( condition_holds ) - * yyless( 5 ); - * else - * do_something_else(); - * - * Prior to using the do-while the compiler would get upset at the - * "else" because it interpreted the "if" statement as being all - * done when it reached the ';' after the yyless() call. - */ - -/* Return all but the first 'n' matched characters back to the input stream. */ - -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - *yy_cp = yy_hold_char; \ - YY_RESTORE_YY_MORE_OFFSET \ - yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \ - YY_DO_BEFORE_ACTION; /* set up yytext again */ \ - } \ - while ( 0 ) - -#define unput(c) yyunput( c, yytext_ptr ) - -/* The following is because we cannot portably get our hands on size_t - * (without autoconf's help, which isn't available because we want - * flex-generated scanners to compile on their own). - */ -typedef unsigned int yy_size_t; - - -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; - - /* Whether to try to fill the input buffer when we reach the - * end of it. - */ - int yy_fill_buffer; - - int yy_buffer_status; -#define YY_BUFFER_NEW 0 -#define YY_BUFFER_NORMAL 1 - /* When an EOF's been seen but there's still some text to process - * then we mark the buffer as YY_EOF_PENDING, to indicate that we - * shouldn't try reading from the input source any more. We might - * still have a bunch of tokens to match, though, because of - * possible backing-up. - * - * When we actually see the EOF, we change the status to "new" - * (via yyrestart()), so that the user can continue scanning by - * just pointing yyin at a new input file. - */ -#define YY_BUFFER_EOF_PENDING 2 - }; - -static YY_BUFFER_STATE yy_current_buffer = 0; - -/* 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". - */ -#define YY_CURRENT_BUFFER yy_current_buffer - - -/* yy_hold_char holds the character lost when yytext is formed. */ -static char yy_hold_char; - -static int yy_n_chars; /* number of characters read into yy_ch_buf */ - - -int yyleng; - -/* Points to current character in buffer. */ -static char *yy_c_buf_p = (char *) 0; -static int yy_init = 1; /* whether we need to initialize */ -static int yy_start = 0; /* start state number */ - -/* Flag which is used to allow yywrap()'s to do buffer switches - * instead of setting up a fresh yyin. A bit of a hack ... - */ -static int yy_did_buffer_switch_on_eof; - -void yyrestart YY_PROTO(( FILE *input_file )); - -void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer )); -void yy_load_buffer_state YY_PROTO(( void )); -YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size )); -void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b )); -void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file )); -void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b )); -#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer ) - -YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size )); -YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str )); -YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len )); - -static void *yy_flex_alloc YY_PROTO(( yy_size_t )); -static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t )); -static void yy_flex_free YY_PROTO(( void * )); - -#define yy_new_buffer yy_create_buffer - -#define yy_set_interactive(is_interactive) \ - { \ - if ( ! yy_current_buffer ) \ - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ - yy_current_buffer->yy_is_interactive = is_interactive; \ - } - -#define yy_set_bol(at_bol) \ - { \ - if ( ! yy_current_buffer ) \ - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ - yy_current_buffer->yy_at_bol = at_bol; \ - } - -#define YY_AT_BOL() (yy_current_buffer->yy_at_bol) - - -#define YY_USES_REJECT - -#define yywrap() 1 -#define YY_SKIP_YYWRAP -typedef unsigned char YY_CHAR; -FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; -typedef int yy_state_type; -extern char *yytext; -#define yytext_ptr yytext - -static yy_state_type yy_get_previous_state YY_PROTO(( void )); -static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state )); -static int yy_get_next_buffer YY_PROTO(( void )); -static void yy_fatal_error YY_PROTO(( yyconst char msg[] )); - -/* Done after the current pattern has been matched and before the - * corresponding action - sets up yytext. - */ -#define YY_DO_BEFORE_ACTION \ - yytext_ptr = yy_bp; \ - yyleng = (int) (yy_cp - yy_bp); \ - yy_hold_char = *yy_cp; \ - *yy_cp = '\0'; \ - yy_c_buf_p = yy_cp; - -#define YY_NUM_RULES 118 -#define YY_END_OF_BUFFER 119 -static yyconst short int yy_acclist[768] = - { 0, - 101, 101, 119, 117, 118, 1, 117, 118, 116, 118, - 3, 117, 118, 117, 118, 2, 117, 118, 5, 117, - 118, 1, 5, 117, 118, 5, 117, 118, 5, 116, - 118, 3, 5, 117, 118, 4, 117, 118, 5, 117, - 118, 2, 5, 117, 118, 36, 117, 118, 1, 36, - 117, 118, 33, 116, 118, 3, 36, 117, 118, 36, - 117, 118, 34, 36, 117, 118, 34, 36, 117, 118, - 34, 36, 117, 118, 34, 36, 117, 118, 34, 36, - 117, 118, 2, 36, 117, 118, 58, 117, 118, 1, - 58, 117, 118, 56, 116, 118, 3, 58, 117, 118, - - 58, 117, 118, 57, 58, 117, 118, 57, 58, 117, - 118, 57, 58, 117, 118, 2, 58, 117, 118, 59, - 60, 117, 118, 1, 59, 60, 117, 118, 63, 116, - 118, 3, 59, 60, 117, 118, 60, 117, 118, 2, - 59, 60, 117, 118, 8, 117, 118, 1, 8, 117, - 118, 9, 116, 118, 3, 8, 117, 118, 8, 117, - 118, 7, 8, 117, 118,16390, 2, 8, 117, 118, - 117, 118, 1, 117, 118, 3, 117, 118, 117, 118, - 2, 117, 118, 65, 117, 118, 8260, 117, 118,16452, - 16453, 117, 118, 71, 117, 118, 72, 117, 118, 70, - - 117, 118, 73, 117, 118, 113, 117, 118, 1, 113, - 117, 118, 101, 113, 117, 118, 100, 116, 118, 3, - 113, 117, 118, 104, 113, 117, 118, 97, 113, 117, - 118, 105, 113, 117, 118, 113, 117, 118, 103, 113, - 117, 118, 98, 113, 117, 118, 113, 117, 118, 2, - 113, 117, 118, 51, 117, 118, 1, 51, 117, 118, - 3, 51, 117, 118, 51, 117, 118, 2, 51, 117, - 118, 50, 51, 117, 118, 1, 50, 51, 117, 118, - 50, 51, 117, 118, 50, 116, 118, 3, 50, 51, - 117, 118, 49, 51, 117, 118, 50, 51, 117, 118, - - 2, 50, 51, 117, 118, 79, 81, 117, 118, 1, - 79, 81, 117, 118, 80, 116, 118, 3, 79, 81, - 117, 118, 81, 117, 118, 79, 81, 117, 118, 2, - 79, 81, 117, 118, 91, 92, 117, 118, 1, 91, - 92, 117, 118, 88, 116, 118, 3, 91, 92, 117, - 118, 91, 92, 117, 118, 2, 91, 92, 117, 118, - 85, 87, 117, 118, 1, 85, 87, 117, 118, 86, - 116, 118, 3, 85, 87, 117, 118, 87, 117, 118, - 85, 87, 117, 118, 2, 85, 87, 117, 118, 95, - 96, 117, 118, 1, 95, 96, 117, 118, 3, 95, - - 96, 117, 118, 95, 96, 117, 118, 2, 95, 96, - 117, 118, 41, 117, 118, 1, 41, 117, 118, 42, - 116, 118, 3, 41, 117, 118, 41, 117, 118, 41, - 117, 118, 41, 117, 118, 2, 41, 117, 118, 48, - 117, 118, 1, 48, 117, 118, 46, 116, 118, 3, - 48, 117, 118, 48, 117, 118, 44, 48, 117, 118, - 48, 117, 118, 2, 48, 117, 118, 47, 48, 117, - 118, 45, 48, 117, 118, 111, 117, 118, 1, 111, - 117, 118, 3, 111, 117, 118, 108, 111, 117, 118, - 111, 117, 118, 111, 117, 118, 2, 111, 117, 118, - - 112, 117, 118, 1, 112, 117, 118, 3, 112, 117, - 118, 110, 112, 117, 118, 112, 117, 118, 112, 117, - 118, 2, 112, 117, 118, 37, 117, 118, 35, 117, - 118, 1, 35, 117, 118, 3, 35, 117, 118, 35, - 117, 118, 2, 35, 117, 118, 15, 117, 118, 1, - 15, 117, 118, 13, 116, 118, 3, 15, 117, 118, - 12, 15, 117, 118, 10, 15, 117, 118, 11, 15, - 117, 118, 15, 117, 118, 14, 15, 117, 118, 2, - 15, 117, 118, 19, 117, 118, 1, 19, 117, 118, - 3, 19, 117, 118, 17, 19, 117, 118, 19, 117, - - 118, 19, 117, 118, 2, 19, 117, 118, 114, 115, - 5, 5, 4, 34, 34, 34, 34, 34, 34, 34, - 62, 114, 61, 115, 57, 57, 57, 57, 59, 8198, - 7,16390, 66, 114, 115, 64, 65, 8260, 8261, 67, - 8260,16452,16453, 72, 71, 72, 70, 73, 101, 102, - 74, 114, 75, 115, 98, 99, 50, 50, 49, 79, - 76, 78, 114, 77, 79, 115, 91, 89, 91, 114, - 90, 91, 115, 85, 82, 84, 114, 83, 85, 115, - 95, 93, 95, 114, 94, 95, 115, 38, 44, 43, - 45, 107, 114, 106, 115, 109, 37, 18, 114, 18, - - 115, 16, 34, 34, 34, 34, 27, 34, 34, 34, - 34, 57, 57, 57, 52, 57, 57, 102, 34, 34, - 34, 34, 34, 34, 34, 34, 57, 53, 57, 57, - 57, 73, 34, 28, 31, 29, 34, 34, 34, 34, - 34, 54, 55, 57, 57, 34, 32, 24, 23, 34, - 34, 30, 22, 26, 25, 34,16404,16404, 21, 8212, - 34, 40, 39, 8212, 8212, 34, 8212 - } ; - -static yyconst short int yy_accept[366] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 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, 4, 6, 9, 11, 14, - 16, 19, 22, 26, 29, 32, 36, 39, 42, 46, - 49, 53, 56, 60, 63, 67, 71, 75, 79, 83, - 87, 90, 94, 97, 101, 104, 108, 112, 116, 120, - 124, 129, 132, 137, 140, 145, 148, 152, 155, 159, - - 162, 167, 171, 173, 176, 179, 181, 184, 187, 192, - 194, 197, 200, 203, 206, 209, 213, 217, 220, 224, - 228, 232, 236, 239, 243, 247, 250, 254, 257, 261, - 265, 268, 272, 276, 281, 285, 288, 293, 297, 301, - 306, 310, 315, 318, 323, 326, 330, 335, 339, 344, - 347, 352, 356, 361, 365, 370, 373, 378, 381, 385, - 390, 394, 399, 404, 408, 413, 416, 420, 423, 427, - 430, 433, 436, 440, 443, 447, 450, 454, 457, 461, - 464, 468, 472, 476, 479, 483, 487, 491, 494, 497, - 501, 504, 508, 512, 516, 519, 522, 526, 529, 532, - - 536, 540, 543, 547, 550, 554, 557, 561, 565, 569, - 573, 576, 580, 584, 587, 591, 595, 599, 602, 605, - 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, - 619, 620, 621, 623, 625, 626, 627, 628, 629, 630, - 630, 631, 633, 633, 634, 635, 636, 636, 637, 638, - 639, 640, 641, 644, 644, 645, 646, 647, 648, 648, - 649, 650, 650, 651, 653, 655, 656, 657, 657, 658, - 659, 660, 661, 662, 664, 667, 668, 671, 674, 675, - 676, 678, 681, 682, 685, 688, 689, 689, 689, 690, - 691, 692, 694, 696, 697, 698, 700, 702, 703, 704, - - 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, - 715, 716, 717, 718, 718, 719, 719, 720, 721, 722, - 723, 724, 725, 726, 727, 728, 730, 731, 732, 733, - 733, 734, 736, 737, 738, 739, 740, 741, 742, 743, - 745, 746, 746, 747, 748, 749, 750, 751, 752, 753, - 753, 754, 755, 756, 758, 758, 759, 760, 762, 763, - 764, 765, 767, 768, 768 - } ; - -static yyconst int yy_ec[256] = - { 0, - 1, 1, 1, 1, 1, 2, 1, 1, 3, 4, - 1, 1, 5, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 3, 1, 6, 7, 1, 1, 1, 8, 9, - 10, 11, 1, 12, 1, 13, 14, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 1, 1, 16, - 1, 17, 1, 18, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 1, 20, 1, 1, 19, 1, 19, 19, 21, 22, - - 23, 24, 19, 19, 25, 19, 19, 26, 19, 27, - 19, 19, 19, 19, 28, 19, 29, 19, 19, 19, - 19, 19, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1 - } ; - -static yyconst int yy_meta[31] = - { 0, - 1, 1, 2, 3, 4, 5, 1, 1, 6, 1, - 7, 1, 8, 9, 10, 5, 1, 1, 11, 1, - 11, 11, 11, 11, 11, 11, 11, 11, 11, 1 - } ; - -static yyconst short int yy_base[406] = - { 0, - 0, 29, 58, 87, 117, 0, 147, 0, 176, 205, - 235, 0, 264, 293, 322, 0, 334, 0, 361, 0, - 390, 0, 419, 448, 477, 506, 535, 564, 593, 622, - 651, 680, 709, 738, 767, 796, 825, 854, 884, 0, - 905, 0, 933, 962, 991, 1020, 1032, 0, 1060, 1089, - 1118, 1147, 1176, 1205, 378, 1633, 1633, 1633, 1633, 1, - 1633, 1633, 1633, 0, 1633, 1633, 1633, 2, 1633, 1633, - 1633, 1633, 1633, 6, 0, 354, 0, 1, 349, 1633, - 1633, 1633, 1633, 1633, 7, 0, 9, 351, 1633, 0, - 0, 1633, 0, 8, 0, 1633, 1633, 1633, 1633, 18, - - 35, 1633, 31, 35, 36, 40, 39, 46, 61, 58, - 371, 369, 366, 355, 1633, 1633, 3, 1633, 1633, 1633, - 360, 1633, 36, 1633, 0, 4, 1633, 1633, 1633, 1633, - 55, 1633, 1633, 1633, 64, 1633, 1633, 1633, 62, 1633, - 0, 0, 1633, 0, 352, 63, 0, 0, 0, 1633, - 0, 64, 0, 0, 0, 1633, 0, 351, 68, 0, - 0, 0, 0, 69, 0, 1633, 1633, 1633, 1633, 70, - 19, 331, 1633, 1633, 1633, 1633, 1633, 82, 0, 338, - 1633, 1633, 0, 1633, 1633, 1633, 1633, 84, 0, 1633, - 1633, 1633, 1633, 1633, 86, 0, 1633, 0, 1633, 1633, - - 1633, 88, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, - 92, 1633, 1633, 1633, 1633, 1633, 1633, 93, 334, 1633, - 1633, 1633, 1633, 102, 1633, 0, 315, 83, 316, 176, - 316, 313, 1633, 1633, 0, 85, 312, 186, 0, 179, - 1633, 188, 188, 1633, 194, 195, 193, 1633, 211, 82, - 1633, 1633, 212, 214, 330, 329, 328, 327, 316, 315, - 109, 318, 319, 1633, 1633, 0, 1633, 317, 1633, 215, - 1633, 0, 1633, 1633, 0, 0, 0, 0, 0, 1633, - 1633, 0, 0, 0, 0, 1633, 316, 295, 0, 1633, - 0, 1633, 1633, 1633, 0, 1633, 1633, 1633, 293, 293, - - 293, 290, 1633, 291, 291, 286, 288, 285, 285, 281, - 1633, 282, 282, 290, 299, 276, 273, 220, 1221, 272, - 269, 269, 262, 266, 222, 0, 263, 262, 1633, 256, - 207, 1633, 1633, 1236, 223, 180, 177, 184, 1633, 0, - 224, 163, 112, 1633, 225, 1633, 264, 91, 84, 36, - 8, 268, 1633, 269, 271, 273, 1633, 0, 279, 1633, - 0, 0, 0, 1633, 1265, 1276, 1287, 1298, 1309, 1320, - 1331, 1342, 1353, 1364, 1375, 1386, 1397, 1408, 1419, 1430, - 1441, 1443, 1445, 1456, 1466, 1477, 1487, 1497, 1501, 1503, - 1514, 1525, 1536, 1547, 1558, 1560, 1562, 1573, 1575, 1586, - - 1597, 1607, 1617, 1619, 1621 - } ; - -static yyconst short int yy_def[406] = - { 0, - 365, 365, 365, 366, 364, 5, 364, 7, 367, 367, - 364, 11, 368, 368, 365, 15, 15, 17, 17, 19, - 364, 21, 369, 370, 365, 365, 365, 365, 371, 371, - 372, 372, 373, 373, 374, 374, 375, 375, 364, 39, - 39, 41, 376, 376, 377, 377, 17, 47, 378, 378, - 379, 379, 380, 380, 364, 364, 364, 364, 364, 364, - 364, 364, 364, 381, 364, 364, 364, 364, 364, 364, - 364, 364, 364, 364, 382, 382, 382, 382, 382, 364, - 364, 364, 364, 364, 364, 383, 383, 383, 364, 384, - 384, 364, 384, 364, 384, 364, 364, 364, 364, 364, - - 385, 364, 386, 386, 386, 386, 386, 387, 388, 364, - 364, 364, 364, 389, 364, 364, 364, 364, 364, 364, - 364, 364, 364, 364, 390, 364, 364, 364, 364, 364, - 364, 364, 364, 364, 391, 364, 364, 364, 364, 364, - 392, 392, 364, 392, 364, 392, 392, 393, 393, 364, - 393, 393, 393, 394, 394, 364, 394, 364, 394, 394, - 395, 395, 395, 395, 395, 364, 364, 364, 364, 364, - 364, 364, 364, 364, 364, 364, 364, 364, 396, 364, - 364, 364, 397, 364, 364, 364, 364, 364, 398, 364, - 364, 364, 364, 364, 364, 398, 364, 399, 364, 364, - - 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, - 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, - 364, 364, 364, 381, 364, 382, 382, 382, 382, 382, - 382, 382, 364, 364, 383, 383, 383, 383, 384, 364, - 364, 385, 386, 364, 386, 386, 364, 364, 387, 364, - 364, 364, 388, 364, 364, 364, 364, 364, 364, 389, - 364, 364, 364, 364, 364, 390, 364, 364, 364, 391, - 364, 392, 364, 364, 392, 393, 393, 393, 394, 364, - 364, 394, 395, 395, 395, 364, 364, 364, 396, 364, - 397, 364, 364, 364, 399, 364, 364, 364, 382, 382, - - 382, 382, 364, 382, 382, 382, 382, 383, 383, 383, - 364, 383, 383, 364, 364, 364, 382, 382, 400, 382, - 382, 382, 382, 382, 383, 383, 383, 383, 364, 364, - 382, 364, 364, 401, 382, 382, 382, 382, 364, 383, - 383, 364, 382, 364, 364, 364, 382, 382, 364, 364, - 364, 364, 364, 402, 364, 403, 364, 404, 364, 364, - 405, 404, 405, 0, 364, 364, 364, 364, 364, 364, - 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, - 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, - 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, - - 364, 364, 364, 364, 364 - } ; - -static yyconst short int yy_nxt[1664] = - { 0, - 364, 57, 224, 58, 59, 261, 225, 267, 268, 262, - 351, 221, 221, 60, 222, 222, 221, 233, 233, 222, - 234, 234, 286, 287, 230, 228, 229, 231, 221, 61, - 57, 222, 58, 59, 236, 237, 244, 240, 240, 240, - 244, 244, 60, 241, 244, 244, 264, 244, 247, 265, - 245, 244, 244, 246, 248, 244, 244, 355, 61, 57, - 254, 58, 59, 250, 251, 233, 270, 255, 234, 252, - 271, 60, 233, 274, 277, 234, 275, 278, 281, 284, - 221, 282, 285, 222, 250, 251, 349, 61, 63, 64, - 65, 66, 221, 67, 292, 222, 221, 293, 221, 222, - - 68, 222, 221, 296, 224, 222, 297, 300, 225, 308, - 301, 261, 309, 354, 351, 262, 69, 70, 71, 70, - 72, 73, 70, 70, 70, 70, 70, 70, 70, 70, - 74, 70, 70, 70, 70, 75, 70, 75, 76, 77, - 75, 78, 75, 75, 75, 79, 80, 81, 82, 81, - 83, 84, 81, 81, 81, 81, 81, 81, 81, 81, - 85, 81, 81, 81, 81, 86, 81, 86, 86, 87, - 86, 88, 86, 86, 86, 86, 89, 91, 303, 92, - 93, 240, 240, 240, 303, 350, 349, 241, 311, 94, - 240, 240, 240, 244, 311, 247, 241, 304, 348, 244, - - 244, 248, 305, 347, 244, 95, 91, 312, 92, 93, - 244, 244, 313, 247, 250, 251, 254, 270, 94, 248, - 252, 271, 332, 255, 339, 345, 311, 345, 332, 343, - 339, 346, 311, 346, 95, 96, 97, 96, 98, 99, - 96, 96, 96, 96, 96, 96, 96, 96, 100, 96, - 96, 96, 96, 101, 96, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 102, 104, 352, 58, 105, 56, - 352, 356, 353, 359, 357, 356, 353, 106, 357, 360, - 56, 359, 342, 226, 357, 341, 340, 360, 357, 338, - 337, 336, 335, 107, 104, 334, 58, 105, 56, 331, - - 330, 315, 329, 312, 328, 327, 106, 326, 325, 56, - 324, 323, 322, 321, 320, 319, 318, 317, 316, 286, - 267, 315, 107, 57, 263, 58, 59, 259, 314, 258, - 257, 256, 257, 310, 307, 60, 306, 302, 299, 298, - 108, 290, 108, 108, 108, 108, 108, 108, 108, 108, - 108, 61, 109, 288, 109, 109, 109, 109, 109, 109, - 109, 109, 109, 110, 280, 273, 263, 259, 258, 111, - 112, 257, 113, 256, 238, 232, 227, 364, 364, 114, - 364, 114, 114, 114, 114, 114, 114, 114, 114, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 115, 115, - - 115, 115, 115, 123, 115, 115, 115, 124, 125, 126, - 125, 125, 125, 125, 125, 125, 125, 125, 125, 127, - 129, 364, 58, 130, 364, 364, 364, 364, 364, 364, - 364, 364, 131, 364, 364, 364, 364, 364, 364, 364, - 364, 364, 364, 364, 364, 364, 364, 364, 132, 134, - 135, 136, 137, 364, 138, 364, 364, 364, 364, 364, - 364, 139, 364, 364, 364, 364, 364, 364, 364, 364, - 364, 364, 364, 364, 364, 364, 364, 140, 57, 364, - 58, 59, 364, 364, 364, 364, 364, 364, 364, 364, - 60, 364, 364, 364, 364, 364, 364, 364, 364, 364, - - 364, 364, 364, 364, 364, 364, 61, 57, 364, 58, - 59, 364, 364, 364, 364, 364, 364, 364, 364, 60, - 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, - 364, 364, 364, 364, 364, 61, 57, 364, 58, 59, - 364, 364, 364, 364, 364, 364, 364, 364, 60, 364, - 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, - 364, 364, 364, 364, 61, 57, 364, 58, 59, 364, - 364, 364, 364, 364, 364, 364, 364, 60, 364, 364, - 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, - 364, 364, 364, 61, 142, 364, 143, 144, 364, 364, - - 364, 364, 364, 145, 364, 364, 146, 364, 364, 364, - 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, - 364, 364, 147, 142, 364, 143, 144, 364, 364, 364, - 364, 364, 145, 364, 364, 146, 364, 364, 364, 364, - 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, - 364, 147, 149, 364, 150, 151, 364, 364, 364, 364, - 364, 364, 364, 364, 152, 364, 364, 364, 364, 364, - 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, - 153, 149, 364, 150, 151, 364, 364, 364, 364, 364, - 364, 364, 364, 152, 364, 364, 364, 364, 364, 364, - - 364, 364, 364, 364, 364, 364, 364, 364, 364, 153, - 155, 364, 156, 157, 364, 364, 364, 364, 364, 158, - 364, 364, 159, 364, 364, 364, 364, 364, 364, 364, - 364, 364, 364, 364, 364, 364, 364, 364, 160, 155, - 364, 156, 157, 364, 364, 364, 364, 364, 158, 364, - 364, 159, 364, 364, 364, 364, 364, 364, 364, 364, - 364, 364, 364, 364, 364, 364, 364, 160, 162, 364, - 150, 163, 364, 364, 364, 364, 364, 364, 364, 364, - 164, 364, 364, 364, 364, 364, 364, 364, 364, 364, - 364, 364, 364, 364, 364, 364, 165, 162, 364, 150, - - 163, 364, 364, 364, 364, 364, 364, 364, 364, 164, - 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, - 364, 364, 364, 364, 364, 165, 167, 364, 168, 169, - 364, 364, 364, 364, 364, 364, 364, 364, 170, 364, - 364, 364, 364, 364, 171, 364, 172, 364, 364, 364, - 364, 364, 364, 364, 173, 167, 364, 168, 169, 364, - 364, 364, 364, 364, 364, 364, 364, 170, 364, 364, - 364, 364, 364, 171, 364, 172, 364, 364, 364, 364, - 364, 364, 364, 173, 174, 175, 174, 176, 177, 174, - 174, 174, 174, 174, 174, 174, 174, 178, 174, 174, - - 174, 174, 179, 180, 179, 179, 179, 179, 179, 179, - 179, 179, 179, 181, 182, 364, 364, 364, 364, 364, - 364, 364, 364, 183, 364, 183, 183, 183, 183, 183, - 183, 183, 183, 183, 185, 364, 58, 186, 187, 364, - 364, 364, 364, 364, 364, 364, 188, 364, 364, 364, - 364, 364, 189, 364, 364, 364, 364, 364, 364, 364, - 364, 364, 190, 185, 364, 58, 186, 187, 364, 364, - 364, 364, 364, 364, 364, 188, 364, 364, 364, 364, - 364, 189, 364, 364, 364, 364, 364, 364, 364, 364, - 364, 190, 192, 364, 58, 193, 364, 364, 194, 364, - - 364, 364, 364, 364, 195, 364, 364, 364, 364, 364, - 196, 364, 364, 364, 364, 364, 364, 364, 364, 364, - 197, 192, 364, 58, 193, 364, 364, 194, 364, 364, - 364, 364, 364, 195, 364, 364, 364, 364, 364, 196, - 364, 364, 364, 364, 364, 364, 364, 364, 364, 197, - 198, 364, 198, 198, 198, 198, 198, 198, 198, 198, - 198, 200, 364, 72, 201, 364, 364, 364, 364, 364, - 364, 364, 364, 202, 364, 364, 364, 364, 364, 364, - 364, 364, 364, 364, 364, 364, 364, 364, 364, 203, - 200, 364, 72, 201, 364, 364, 364, 364, 364, 364, - - 364, 364, 202, 364, 364, 364, 364, 364, 364, 364, - 364, 364, 364, 364, 364, 364, 364, 364, 203, 205, - 364, 206, 207, 208, 364, 364, 209, 210, 364, 364, - 364, 211, 364, 364, 364, 212, 364, 364, 364, 364, - 364, 364, 364, 364, 364, 364, 364, 213, 205, 364, - 206, 207, 208, 364, 364, 209, 210, 364, 364, 364, - 211, 364, 364, 364, 212, 364, 364, 364, 364, 364, - 364, 364, 364, 364, 364, 364, 213, 215, 364, 58, - 216, 217, 364, 364, 364, 364, 364, 364, 364, 218, - 364, 364, 364, 364, 364, 219, 364, 364, 364, 364, - - 364, 364, 364, 364, 364, 220, 215, 364, 58, 216, - 217, 364, 364, 364, 364, 364, 364, 364, 218, 364, - 364, 364, 364, 364, 219, 364, 364, 364, 364, 364, - 364, 364, 364, 364, 220, 226, 364, 364, 364, 226, - 364, 226, 226, 226, 226, 226, 226, 226, 226, 226, - 226, 364, 364, 364, 226, 364, 226, 226, 226, 226, - 226, 226, 226, 226, 226, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 90, 90, 90, - 90, 90, 90, 90, 90, 90, 90, 90, 103, 103, - - 103, 103, 103, 103, 103, 103, 103, 103, 103, 128, - 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 141, 141, 141, 141, 141, 141, 141, 141, 141, - 141, 141, 148, 148, 148, 148, 148, 148, 148, 148, - 148, 148, 148, 154, 154, 154, 154, 154, 154, 154, - 154, 154, 154, 154, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 161, 161, 166, 166, 166, 166, 166, - 166, 166, 166, 166, 166, 166, 184, 184, 184, 184, - 184, 184, 184, 184, 184, 184, 184, 191, 191, 191, - - 191, 191, 191, 191, 191, 191, 191, 191, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, 199, 204, - 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, - 214, 214, 214, 214, 214, 214, 214, 214, 214, 214, - 214, 223, 223, 223, 223, 223, 223, 223, 223, 223, - 223, 223, 226, 226, 235, 235, 239, 239, 364, 239, - 239, 239, 239, 239, 364, 239, 239, 242, 242, 242, - 364, 242, 364, 364, 364, 242, 242, 243, 243, 364, - 243, 243, 243, 243, 243, 243, 243, 243, 249, 364, - 364, 364, 249, 364, 364, 364, 249, 249, 253, 253, - - 364, 364, 253, 364, 364, 364, 253, 253, 260, 364, - 260, 260, 266, 266, 269, 269, 269, 269, 269, 269, - 269, 269, 269, 269, 269, 272, 272, 364, 272, 272, - 272, 364, 272, 272, 272, 272, 276, 276, 364, 276, - 276, 276, 276, 276, 276, 276, 276, 279, 279, 364, - 279, 279, 279, 364, 279, 279, 279, 279, 283, 283, - 364, 283, 283, 283, 283, 283, 283, 283, 283, 289, - 289, 291, 291, 294, 294, 364, 294, 294, 294, 294, - 294, 294, 294, 294, 295, 295, 333, 333, 333, 333, - 333, 333, 333, 333, 333, 333, 333, 344, 344, 344, - - 344, 344, 344, 344, 344, 344, 344, 344, 358, 364, - 364, 358, 364, 364, 364, 364, 358, 358, 361, 364, - 364, 361, 364, 364, 364, 364, 364, 361, 362, 362, - 363, 363, 55, 364, 364, 364, 364, 364, 364, 364, - 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, - 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, - 364, 364, 364 - } ; - -static yyconst short int yy_chk[1664] = - { 0, - 0, 1, 64, 1, 1, 117, 64, 126, 126, 117, - 351, 60, 68, 1, 60, 68, 74, 85, 94, 74, - 85, 94, 171, 171, 78, 77, 77, 78, 100, 1, - 2, 100, 2, 2, 87, 87, 103, 101, 101, 101, - 104, 105, 2, 101, 107, 106, 123, 103, 108, 123, - 106, 104, 105, 106, 108, 107, 106, 350, 2, 3, - 110, 3, 3, 109, 109, 131, 135, 110, 131, 109, - 135, 3, 139, 146, 152, 139, 146, 152, 159, 164, - 170, 159, 164, 170, 250, 250, 349, 3, 4, 4, - 4, 4, 178, 4, 188, 178, 195, 188, 202, 195, - - 4, 202, 211, 218, 224, 211, 218, 228, 224, 236, - 228, 261, 236, 348, 343, 261, 4, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 9, 230, 9, - 9, 240, 240, 240, 230, 342, 338, 240, 238, 9, - 242, 242, 242, 243, 238, 247, 242, 230, 337, 245, - - 246, 247, 230, 336, 243, 9, 10, 238, 10, 10, - 245, 246, 238, 249, 253, 253, 254, 270, 10, 249, - 253, 270, 318, 254, 325, 335, 341, 345, 318, 331, - 325, 335, 341, 345, 10, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 13, 347, 13, 13, 13, - 352, 354, 347, 355, 354, 356, 352, 13, 356, 355, - 13, 359, 330, 354, 354, 328, 327, 359, 356, 324, - 323, 322, 321, 13, 14, 320, 14, 14, 14, 317, - - 316, 315, 314, 313, 312, 310, 14, 309, 308, 14, - 307, 306, 305, 304, 302, 301, 300, 299, 288, 287, - 268, 263, 14, 15, 262, 15, 15, 260, 259, 258, - 257, 256, 255, 237, 232, 15, 231, 229, 227, 219, - 15, 180, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 17, 172, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 19, 158, 145, 121, 114, 113, 19, - 19, 112, 19, 111, 88, 79, 76, 55, 0, 19, - 0, 19, 19, 19, 19, 19, 19, 19, 19, 19, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 23, 0, 23, 23, 0, 0, 0, 0, 0, 0, - 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 23, 24, - 24, 24, 24, 0, 24, 0, 0, 0, 0, 0, - 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 24, 25, 0, - 25, 25, 0, 0, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 25, 26, 0, 26, - 26, 0, 0, 0, 0, 0, 0, 0, 0, 26, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 26, 27, 0, 27, 27, - 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 27, 28, 0, 28, 28, 0, - 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 28, 29, 0, 29, 29, 0, 0, - - 0, 0, 0, 29, 0, 0, 29, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 29, 30, 0, 30, 30, 0, 0, 0, - 0, 0, 30, 0, 0, 30, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 30, 31, 0, 31, 31, 0, 0, 0, 0, - 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 32, 0, 32, 32, 0, 0, 0, 0, 0, - 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, - 33, 0, 33, 33, 0, 0, 0, 0, 0, 33, - 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, - 0, 34, 34, 0, 0, 0, 0, 0, 34, 0, - 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 34, 35, 0, - 35, 35, 0, 0, 0, 0, 0, 0, 0, 0, - 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 35, 36, 0, 36, - - 36, 0, 0, 0, 0, 0, 0, 0, 0, 36, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 36, 37, 0, 37, 37, - 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, - 0, 0, 0, 0, 37, 0, 37, 0, 0, 0, - 0, 0, 0, 0, 37, 38, 0, 38, 38, 0, - 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, - 0, 0, 0, 38, 0, 38, 0, 0, 0, 0, - 0, 0, 0, 38, 39, 39, 39, 39, 39, 39, - 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, - - 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, - 39, 39, 39, 39, 41, 0, 0, 0, 0, 0, - 0, 0, 0, 41, 0, 41, 41, 41, 41, 41, - 41, 41, 41, 41, 43, 0, 43, 43, 43, 0, - 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, - 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 43, 44, 0, 44, 44, 44, 0, 0, - 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, - 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 44, 45, 0, 45, 45, 0, 0, 45, 0, - - 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, - 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 45, 46, 0, 46, 46, 0, 0, 46, 0, 0, - 0, 0, 0, 46, 0, 0, 0, 0, 0, 46, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, - 47, 0, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 49, 0, 49, 49, 0, 0, 0, 0, 0, - 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, - 50, 0, 50, 50, 0, 0, 0, 0, 0, 0, - - 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 50, 51, - 0, 51, 51, 51, 0, 0, 51, 51, 0, 0, - 0, 51, 0, 0, 0, 51, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 51, 52, 0, - 52, 52, 52, 0, 0, 52, 52, 0, 0, 0, - 52, 0, 0, 0, 52, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 52, 53, 0, 53, - 53, 53, 0, 0, 0, 0, 0, 0, 0, 53, - 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 53, 54, 0, 54, 54, - 54, 0, 0, 0, 0, 0, 0, 0, 54, 0, - 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 54, 319, 0, 0, 0, 319, - 0, 319, 319, 319, 319, 319, 319, 319, 319, 319, - 334, 0, 0, 0, 334, 0, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 365, 365, 365, 365, 365, - 365, 365, 365, 365, 365, 365, 366, 366, 366, 366, - 366, 366, 366, 366, 366, 366, 366, 367, 367, 367, - 367, 367, 367, 367, 367, 367, 367, 367, 368, 368, - - 368, 368, 368, 368, 368, 368, 368, 368, 368, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 370, 370, 370, 370, 370, 370, 370, 370, 370, 370, - 370, 371, 371, 371, 371, 371, 371, 371, 371, 371, - 371, 371, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 374, 374, 374, 374, 374, 374, - 374, 374, 374, 374, 374, 375, 375, 375, 375, 375, - 375, 375, 375, 375, 375, 375, 376, 376, 376, 376, - 376, 376, 376, 376, 376, 376, 376, 377, 377, 377, - - 377, 377, 377, 377, 377, 377, 377, 377, 378, 378, - 378, 378, 378, 378, 378, 378, 378, 378, 378, 379, - 379, 379, 379, 379, 379, 379, 379, 379, 379, 379, - 380, 380, 380, 380, 380, 380, 380, 380, 380, 380, - 380, 381, 381, 381, 381, 381, 381, 381, 381, 381, - 381, 381, 382, 382, 383, 383, 384, 384, 0, 384, - 384, 384, 384, 384, 0, 384, 384, 385, 385, 385, - 0, 385, 0, 0, 0, 385, 385, 386, 386, 0, - 386, 386, 386, 386, 386, 386, 386, 386, 387, 0, - 0, 0, 387, 0, 0, 0, 387, 387, 388, 388, - - 0, 0, 388, 0, 0, 0, 388, 388, 389, 0, - 389, 389, 390, 390, 391, 391, 391, 391, 391, 391, - 391, 391, 391, 391, 391, 392, 392, 0, 392, 392, - 392, 0, 392, 392, 392, 392, 393, 393, 0, 393, - 393, 393, 393, 393, 393, 393, 393, 394, 394, 0, - 394, 394, 394, 0, 394, 394, 394, 394, 395, 395, - 0, 395, 395, 395, 395, 395, 395, 395, 395, 396, - 396, 397, 397, 398, 398, 0, 398, 398, 398, 398, - 398, 398, 398, 398, 399, 399, 400, 400, 400, 400, - 400, 400, 400, 400, 400, 400, 400, 401, 401, 401, - - 401, 401, 401, 401, 401, 401, 401, 401, 402, 0, - 0, 402, 0, 0, 0, 0, 402, 402, 403, 0, - 0, 403, 0, 0, 0, 0, 0, 403, 404, 404, - 405, 405, 364, 364, 364, 364, 364, 364, 364, 364, - 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, - 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, - 364, 364, 364 - } ; - -static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr; -static char *yy_full_match; -static int yy_lp; -static int yy_looking_for_trail_begin = 0; -static int yy_full_lp; -static int *yy_full_state; -#define YY_TRAILING_MASK 0x2000 -#define YY_TRAILING_HEAD_MASK 0x4000 -#define REJECT \ -{ \ -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ \ -yy_cp = yy_full_match; /* restore poss. backed-over text */ \ -yy_lp = yy_full_lp; /* restore orig. accepting pos. */ \ -yy_state_ptr = yy_full_state; /* restore orig. state */ \ -yy_current_state = *yy_state_ptr; /* restore curr. state */ \ -++yy_lp; \ -goto find_rule; \ -} -#define yymore() yymore_used_but_not_detected -#define YY_MORE_ADJ 0 -#define YY_RESTORE_YY_MORE_OFFSET -char *yytext; -#line 1 "pre.l" -#define INITIAL 0 -/****************************************************************************** - * - * $Id$ - * - * Copyright (C) 1997-2000 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - * All output generated with Doxygen is not covered by this license. - * - */ -#line 18 "pre.l" - -/* - * includes - */ - -#include -#include -#include -#include - -#include "qtbc.h" -#include -#include -#include -#include -#include -#include -#include - -#include "constexp.h" -#include "define.h" -#include "doxygen.h" -#include "message.h" -#include "util.h" -#include "defargs.h" -#include "debug.h" - -#if defined(_MSC_VER) || defined(__BORLANDC__) -#define popen _popen -#define pclose _pclose -#endif - -#define YY_NEVER_INTERACTIVE 1 - -#define DUMP_OUTPUT 1 // set this to one to see what the preprocessor - // produces. -#define SHOW_INCLUDES 0 // set this to one to list all parsed include files - -struct FileState -{ - int lineNr; - FILE *filePtr; - YY_BUFFER_STATE bufState; - QCString fileName; -}; - -/* ----------------------------------------------------------------- - * - * scanner's state - */ - -static int g_yyLineNr = 1; -static QCString g_yyFileName; -static FileDef *g_yyFileDef; -static int g_ifcount = 0; -static QStrList *g_pathList = 0; -static QStack g_includeStack; -static QDict *g_argDict; -static int g_defArgs = -1; -static QCString g_defName; -static QCString g_defText; -static QCString g_defLitText; -static QCString g_defArgsStr; -static bool g_defVarArgs; -static int g_level; -static int g_lastCContext; -static int g_lastCPPContext; -static QArray g_levelGuard; -static BufStr *g_outputBuf; -static int g_roundCount; -static bool g_quoteArg; -static DefineDict *g_fileDefineDict; -static DefineDict *g_expandedDict; -static int g_findDefArgContext; -static QCString g_lastGuardName; -static QCString g_incName; -static QCString g_guardExpr; - -static void setFileName(const char *name) -{ - bool ambig; - g_yyFileName=name; - g_yyFileDef=findFileDef(&inputNameDict,g_yyFileName,ambig); -} - -static void incrLevel() -{ - g_level++; - g_levelGuard.resize(g_level); - g_levelGuard[g_level-1]=FALSE; - //printf("%s line %d: incrLevel %d\n",g_yyFileName.data(),g_yyLineNr,g_level); -} - -static void decrLevel() -{ - //printf("%s line %d: decrLevel %d\n",g_yyFileName.data(),g_yyLineNr,g_level); - if (g_level > 0) - { - g_level--; - g_levelGuard.resize(g_level); - } - else - { - err("Error: More #endif's than #if's found.\n"); - } -} - -static bool otherCaseDone() -{ - return g_levelGuard[g_level-1]; -} - -static void setCaseDone(bool value) -{ - g_levelGuard[g_level-1]=value; -} - -static Define *isDefined(const char *name) -{ - if (name) - { - Define *def; - //if ((def=fileDefineCache->findDefine(g_yyFileName,name)) && !def->undef) - // return def; - if ((def=g_fileDefineDict->find(name)) && !def->undef) return def; - } - return 0; -} - -static FILE *findFile(const char *fileName) -{ - if (g_pathList==0) - { - return 0; - } - char *s=g_pathList->first(); - while (s) - { - QCString absName=(QCString)s+"/"+fileName; - QFileInfo fi(absName); - if (fi.exists()) - { - FILE *f; - if (!Config::inputFilter.isEmpty()) - { - QCString cmd = Config::inputFilter+" "+absName; - f=popen(cmd,"r"); - if (!f) warn("Warning: could not execute filter %s\n",cmd.data()); - } - else - { - f=fopen(absName,"r"); - if (!f) warn("Warning: could not open file %s for reading\n",absName.data()); - } - if (f) - { - setFileName(absName); - g_yyLineNr=1; - return f; - } - } - s=g_pathList->next(); - } - return 0; -} - - -static int getNextChar(const QCString &expr,QCString *rest,uint &pos); -static int getCurrentChar(const QCString &expr,QCString *rest,uint pos); -static void unputChar(const QCString &expr,QCString *rest,uint &pos,char c); -static void expandExpression(QCString &expr,QCString *rest,int pos); - -static QCString stringize(const QCString &s) -{ - QCString result; - uint i=0; - bool inString=FALSE; - bool inChar=FALSE; - char c,pc; - while (i`%s'\n",s.data(),result.data()); - return result; -} - -/*! Execute all ## operators in expr. - * If the macro name before or after the operator contains a no-rescan - * marker (@-) then this is removed (before the concatenated macro name - * may be expanded again. - */ -static void processConcatOperators(QCString &expr) -{ - QRegExp r("[ \\t\\n]*##[ \\t\\n]*"); - int l,n,i=0; - while ((n=r.match(expr,i,&l))!=-1) - { - if (n+l+1<(int)expr.length() && expr.at(n+l)=='@' && expr.at(n+l+1)=='-') - { - // remove no-rescan marker after ID - l+=2; - } - // remove the ## operator and the surrounding whitespace - expr=expr.left(n)+expr.right(expr.length()-n-l); - int k=n-1; - while (k>=0 && isId(expr.at(k))) k--; - if (k>0 && expr.at(k)=='-' && expr.at(k-1)=='@') - { - // remove no-rescan marker before ID - expr=expr.left(k-1)+expr.right(expr.length()-k-1); - n-=2; - } - i=n+l; - } -} - -/*! replaces the function macro \a def whose argument list starts at - * \a pos in expression \a expr. - * Notice that this routine may scan beyond the \a expr string if needed. - * The characters from the input file will be read. - * The replacement string will be returned in \a result and the - * length of the (unexpanded) argument list is stored in \a len. - */ -static bool replaceFunctionMacro(const QCString &expr,QCString *rest,int pos,int &len,const Define *def,QCString &result) -{ - //printf("replaceFunctionMacro(expr=%s,rest=%s,pos=%d,def=%s) level=%d\n",expr.data(),rest ? rest->data() : 0,pos,def->name.data(),g_level); - //bool replaced=FALSE; - uint j=pos; - len=0; - result.resize(0); - int cc; - while ((cc=getCurrentChar(expr,rest,j))!=EOF && cc==' ') - { - len++; - getNextChar(expr,rest,j); - } - if (cc!='(') - { - unputChar(expr,rest,j,' '); - return FALSE; - } - getNextChar(expr,rest,j); // eat the `(' character - - //while (j argTable; // list of arguments - argTable.setAutoDelete(TRUE); - QCString arg; - int argCount=0; - bool done=FALSE; - - // FASE 1: read the macro arguments - if (def->nargs==0) - { - while ((cc=getNextChar(expr,rest,j))!=EOF) - { - char c = (char)cc; - if (c==')') break; - } - } - else - { - while (!done && (argCountnargs || def->varArgs) && - ((cc=getNextChar(expr,rest,j))!=EOF) - ) - { - char c=(char)cc; - if (c=='(') // argument is a function => search for matching ) - { - int level=1; - arg+=c; - char term='\0'; - while ((cc=getNextChar(expr,rest,j))!=EOF) - { - char c=(char)cc; - if (c=='\'' || c=='\"') // skip ('s and )'s inside strings - { - if (term!='\0') - { - if (c==term && expr.at(j-2)!='\\') term='\0'; - } - else - { - term=c; - } - } - if (term=='\0' && c==')') - { - level--; - arg+=c; - if (level==0) break; - } - else if (term=='\0' && c=='(') - { - level++; - arg+=c; - } - else - arg+=c; - } - } - else if (c==')' || c==',') // last or next argument found - { - if (c==',' && argCount==def->nargs-1 && def->varArgs) - { - arg=arg.stripWhiteSpace(); - arg+=','; - } - else - { - QCString argKey; - argKey.sprintf("@%d",argCount++); // key name - arg=arg.stripWhiteSpace(); - // add argument to the lookup table - argTable.insert(argKey, new QCString(arg)); - arg.resize(0); - if (c==')') // end of the argument list - { - done=TRUE; - } - } - } - else if (c=='\"') // append literal strings - { - arg+=c; - char pc=c; - bool found=FALSE; - while (!found && (cc=getNextChar(expr,rest,j))!=EOF) - { - found = pc!='\\' && cc=='"'; - c=(char)cc; - pc=c; - arg+=c; - } - } - else if (c=='\'') // append literal characters - { - arg+=c; - char pc=c; - bool found=FALSE; - while (!found && (cc=getNextChar(expr,rest,j))!=EOF) - { - found = pc!='\\' && cc=='\''; - c=(char)cc; - pc=c; - arg+=c; - } - } - else // append other characters - { - arg+=c; - } - } - } - - // FASE 2: apply the macro function - if (argCount==def->nargs || - (argCount>def->nargs && def->varArgs)) // matching parameters lists - { - uint k=0; - // substitution of all formal arguments - QCString resExpr; - const QCString d=def->definition.stripWhiteSpace(); - bool inString=FALSE; - while (k copy it (is unescaped later) - { - k+=2; - resExpr+="@@"; // we unescape these later - } - else if (d.at(k+1)=='-') // no-rescan marker - { - k+=2; - resExpr+="@-"; - } - else // argument marker => read the argument number - { - QCString key="@"; - QCString *subst=0; - bool hash=FALSE; - int l=k-1; - // search for ## backward - if (l>=0 && d.at(l)=='"') l--; - while (l>=0 && d.at(l)==' ') l--; - if (l>0 && d.at(l)=='#' && d.at(l-1)=='#') hash=TRUE; - k++; - // scan the number - while (k='0' && d.at(k)<='9') key+=d.at(k++); - if (!hash) - { - // search for ## forward - l=k; - if (l<(int)d.length() && d.at(l)=='"') l++; - while (l<(int)d.length() && d.at(l)==' ') l++; - if (l<(int)d.length()-1 && d.at(l)=='#' && d.at(l+1)=='#') hash=TRUE; - } - //printf("request key %s result %s\n",key.data(),args[key]->data()); - if (key.length()>1 && (subst=argTable[key])) - { - QCString substArg=*subst; - // only if no ## operator is before or after the argument - // marker we do macro expansion. - if (!hash) expandExpression(substArg,0,0); - if (inString) - { - //printf("`%s'=stringize(`%s')\n",stringize(*subst).data(),subst->data()); - - // if the marker is inside a string (because a # was put - // before the macro name) we must escape " and \ characters - resExpr+=stringize(substArg); - } - else - { - resExpr+=substArg; - } - } - } - } - else // no marker, just copy - { - if (!inString && d.at(k)=='\"') - { - inString=TRUE; // entering a literal string - } - else if (inString && d.at(k)=='\"' && d.at(k-1)!='\\') - { - inString=FALSE; // leaving a literal string - } - resExpr+=d.at(k++); - } - } - len=j-pos; - result=resExpr; - //printf("result after substitution `%s' expr=`%s'\n", - // result.data(),expr.mid(pos,len).data()); - return TRUE; - } - else - { - return FALSE; - } -} - - -/*! returns the next identifier in string \a expr by starting at position \a p. - * The position of the identifier is returned (or -1 if nothing is found) - * and \a l is its length. Any quoted strings are skipping during the search. - */ -static int getNextId(const QCString &expr,int p,int *l) -{ - int n; - while (p<(int)expr.length()) - { - char c=expr.at(p++); - if (isalpha(c) || c=='_') // read id - { - n=p-1; - while (p<(int)expr.length() && isId(expr.at(p)) - ) p++; - *l=p-n; - return n; - } - else if (c=='"') // skip string - { - char pc=c; - if (p<(int)expr.length()) c=expr.at(p); - while (p<(int)expr.length() && (c!='"' || pc=='\\')) - { - pc=c; - c=expr.at(p); - p++; - } - } - } - return -1; -} - -/*! preforms recursive macro expansion on the string \a expr - * starting at position \a pos. - * May read additional characters from the input while re-scanning! - * If \a expandAll is \c TRUE then all macros in the expression are - * expanded, otherwise only the first is expanded. - */ -static void expandExpression(QCString &expr,QCString *rest,int pos) -{ - //printf("expandExpression(%s,%s)\n",expr.data(),rest ? rest->data() : 0); - QCString macroName; - QCString expMacro; - int i=pos,l,p,len; - while ((p=getNextId(expr,i,&l))!=-1) // search for an macro name - { - bool replaced=FALSE; - macroName=expr.mid(p,l); - //printf("macroName %s found\n",macroName.data()); - if (p<2 || !(expr.at(p-2)=='@' && expr.at(p-1)=='-')) // no-rescan marker? - { - if (g_expandedDict->find(macroName)==0) // expand macro - { - Define *def=isDefined(macroName); - //printf("name is not an expanded macro def=%s\n",def ? def->name.data() : 0); - if (def && def->nargs==-1) // simple macro - { - // substitute the definition of the macro - expMacro=def->definition.stripWhiteSpace(); - replaced=TRUE; - len=l; - //printf("simple macro expansion=`%s'->`%s'\n",macroName.data(),expMacro.data()); - } - else if (def && def->nargs>=0) // function macro - { - replaced=replaceFunctionMacro(expr,rest,p+l,len,def,expMacro); - len+=l; - } - - if (replaced) // expand the macro and rescan the expression - { - - //printf("replacing `%s'->`%s'\n",expr.mid(p,len).data(),expMacro.data()); - QCString resultExpr=expMacro; - QCString restExpr=expr.right(expr.length()-len-p); - processConcatOperators(resultExpr); - if (!def->nonRecursive) - { - g_expandedDict->insert(macroName,def); - expandExpression(resultExpr,&restExpr,0); - g_expandedDict->remove(macroName); - } - expr=expr.left(p)+resultExpr+restExpr; - i=p; - //printf("new expression: %s\n",expr.data()); - } - else // move to the next macro name - { - //printf("moving to the next macro old=%d new=%d\n",i,p+l); - i=p+l; - } - } - else // move to the next macro name - { - expr=expr.left(p)+"@-"+expr.right(expr.length()-p); - //printf("macro already expanded, moving to the next macro expr=%s\n",expr.data()); - i=p+l+2; - //i=p+l; - } - } - else // no re-scan marker found, skip the macro name - { - //printf("skipping marked macro\n"); - i=p+l; - } - } -} - -/*! replaces all occurrences of @@ in \a s by @ - * All identifiers found are replaced by 0L - * \par assumption: - * \a s only contains pairs of @@'s. - */ -QCString removeIdsAndMarkers(const char *s) -{ - //printf("removeIdsAndMarkers(%s)\n",s); - const char *p=s; - char c; - bool inNum=FALSE; - QCString result; - if (p) - { - while ((c=*p)) - { - if (c=='@') // replace @@ with @ - { - if (*(p+1)=='@') - { - result+=c; - } - p+=2; - } - else if (isdigit(c)) - { - result+=c; - p++; - inNum=TRUE; - } - else if ((isalpha(c) || c=='_') && !inNum) // replace identifier with 0L - { - result+="0L"; - p++; - while ((c=*p) && isId(c)) p++; - } - else - { - result+=c; - char lc=tolower(c); - if (lc!='l' && lc!='u') inNum=FALSE; - p++; - } - } - } - return result; -} - -/*! replaces all occurrences of @@ in \a s by @ - * \par assumption: - * \a s only contains pairs of @@'s - */ -QCString removeMarkers(const char *s) -{ - const char *p=s; - char c; - QCString result; - if (p) - { - while ((c=*p)) - { - if (c=='@') // replace @@ with @ - { - if (*(p+1)=='@') - { - result+=c; - } - p+=2; - } - else - { - result+=c; - p++; - } - } - } - return result; -} - -/*! compute the value of the expression in string \a expr. - * If needed the function may read additional characters from the input. - */ - -bool computeExpression(const QCString &expr) -{ - QCString e=expr; - expandExpression(e,0,0); - e = removeIdsAndMarkers(e); - if (e.isEmpty()) return FALSE; - return parseCppExpression(e); -} - -/*! expands the macro definition in \a name - * If needed the function may read additional characters from the input - */ - -QCString expandMacro(const QCString &name) -{ - QCString n=name; - expandExpression(n,0,0); - n=removeMarkers(n); - //printf("expandMacro `%s'->`%s'\n",name.data(),n.data()); - return n; -} - -Define *newDefine() -{ - Define *def=new Define; - def->name = g_defName; - def->definition = g_defText.stripWhiteSpace(); - def->nargs = g_defArgs; - def->fileName = g_yyFileName; - def->lineNr = g_yyLineNr; - def->varArgs = g_defVarArgs; - return def; -} - -void addDefine() -{ - //bool ambig; - //FileDef *fd=findFileDef(&inputNameDict,g_yyFileName,ambig); - MemberDef *md=new MemberDef("#define",g_defName,g_defArgsStr,0, - Public,Normal,FALSE,FALSE,MemberDef::Define,0,0); - if (!g_defArgsStr.isEmpty()) - { - ArgumentList *argList = new ArgumentList; - //printf("addDefine() g_defName=`%s' g_defArgsStr=`%s'\n",g_defName.data(),g_defArgsStr.data()); - stringToArgumentList(g_defArgsStr,argList); - md->setArgumentList(argList); - } - //printf("Setting initializer for `%s' to `%s'\n",g_defName.data(),g_defText.data()); - md->setInitializer(g_defLitText); - - md->setDefFile(g_yyFileName); - md->setDefLine(g_yyLineNr); - md->setFileDef(g_yyFileDef); - md->setDefinition("#define "+g_defName); - - MemberName *mn=functionNameDict[g_defName]; - if (mn==0) - { - mn = new MemberName(g_defName); - functionNameList.inSort(mn); - functionNameDict.insert(g_defName,mn); - } - mn->append(md); - if (g_yyFileDef) g_yyFileDef->insertMember(md); - - Define *d; - if ((d=defineDict[g_defName])==0) defineDict.insert(g_defName,newDefine()); -} - -static void outputChar(char c) -{ - if (g_includeStack.isEmpty()) g_outputBuf->addChar(c); -} - -static void outputArray(const char *a,int len) -{ - if (g_includeStack.isEmpty()) g_outputBuf->addArray(a,len); -} - -static void readIncludeFile(const QCString &inc) -{ - if (!Config::searchIncludeFlag) return; // do not read include files - uint i=0; - - // find the start of the include file name - while (i0 && inc.at(s-1)=='"'; - - // find the end of the include file name - while (is) // valid include file name found - { - // extract include path+name - QCString incFileName=inc.mid(s,i-s).stripWhiteSpace(); - - FILE *f; - QCString oldFileName = g_yyFileName.copy(); - FileDef *oldFileDef = g_yyFileDef; - if ((f=findFile(incFileName))) // see if the include file can be found - { -#if SHOW_INCLUDES - for (i=0;iaddIncludeDependency(g_yyFileDef,incFileName,localInclude); - } - // store the state of the old file - FileState *fs=new FileState; - fs->bufState=YY_CURRENT_BUFFER; - fs->lineNr=g_yyLineNr; - fs->fileName=oldFileName; - fs->filePtr=f; - // push the state on the stack - g_includeStack.push(fs); - // set the scanner to the include file - preYYin=f; - yy_switch_to_buffer(yy_create_buffer(preYYin, YY_BUF_SIZE)); - } - else - { - if (oldFileDef) - { - // add include dependency to the file in which the #include was found - oldFileDef->addIncludeDependency(0,incFileName,localInclude); - } -#if SHOW_INCLUDES - msg("#include %s: not found! skipping...\n",incFileName.data()); - //printf("Error: include file %s not found\n",yytext); -#endif - } - } -} - -/* ----------------------------------------------------------------- */ - -#define Start 1 - -#define Command 2 - -#define SkipCommand 3 - -#define SkipLine 4 - -#define CopyLine 5 - -#define Include 6 - -#define IncludeID 7 - -#define DefName 8 - -#define DefineArg 9 - -#define DefineText 10 - -#define SkipCPPBlock 11 - -#define Ifdef 12 - -#define Ifndef 13 - -#define SkipCComment 14 - -#define SkipCPPComment 15 - -#define RemoveCComment 16 - -#define RemoveCPPComment 17 - -#define Guard 18 - -#define DefinedExpr1 19 - -#define DefinedExpr2 20 - -#define SkipDoubleQuote 21 - -#define SkipSingleQuote 22 - -#define Ung_defName 23 - -#define IgnoreLine 24 - -#define FindDefineArgs 25 - -#define ReadString 26 - - -/* Macros after this point can all be overridden by user definitions in - * section 1. - */ - -#ifndef YY_SKIP_YYWRAP -#ifdef __cplusplus -extern "C" int yywrap YY_PROTO(( void )); -#else -extern int yywrap YY_PROTO(( void )); -#endif -#endif - -#ifndef YY_NO_UNPUT -static void yyunput YY_PROTO(( int c, char *buf_ptr )); -#endif - -#ifndef yytext_ptr -static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int )); -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen YY_PROTO(( yyconst char * )); -#endif - -#ifndef YY_NO_INPUT -#ifdef __cplusplus -static int yyinput YY_PROTO(( void )); -#else -static int input YY_PROTO(( void )); -#endif -#endif - -#if YY_STACK_USED -static int yy_start_stack_ptr = 0; -static int yy_start_stack_depth = 0; -static int *yy_start_stack = 0; -#ifndef YY_NO_PUSH_STATE -static void yy_push_state YY_PROTO(( int new_state )); -#endif -#ifndef YY_NO_POP_STATE -static void yy_pop_state YY_PROTO(( void )); -#endif -#ifndef YY_NO_TOP_STATE -static int yy_top_state YY_PROTO(( void )); -#endif - -#else -#define YY_NO_PUSH_STATE 1 -#define YY_NO_POP_STATE 1 -#define YY_NO_TOP_STATE 1 -#endif - -#ifdef YY_MALLOC_DECL -YY_MALLOC_DECL -#else -#if __STDC__ -#ifndef __cplusplus -#include -#endif -#else -/* Just try to get by without declaring the routines. This will fail - * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int) - * or sizeof(void*) != sizeof(int). - */ -#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 (void) fwrite( yytext, yyleng, 1, yyout ) -#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->yy_is_interactive ) \ - { \ - int c = '*', n; \ - for ( n = 0; n < max_size && \ - (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ - buf[n] = (char) c; \ - if ( c == '\n' ) \ - buf[n++] = (char) c; \ - if ( c == EOF && ferror( yyin ) ) \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - result = n; \ - } \ - else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \ - && ferror( yyin ) ) \ - YY_FATAL_ERROR( "input in flex scanner failed" ); -#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 - -/* Default declaration of generated scanner - a define so the user can - * easily add parameters. - */ -#ifndef YY_DECL -#define YY_DECL int yylex YY_PROTO(( void )) -#endif - -/* Code executed at the beginning of each rule, after yytext and yyleng - * have been set up. - */ -#ifndef YY_USER_ACTION -#define YY_USER_ACTION -#endif - -/* Code executed at the end of each rule. */ -#ifndef YY_BREAK -#define YY_BREAK break; -#endif - -#define YY_RULE_SETUP \ - if ( yyleng > 0 ) \ - yy_current_buffer->yy_at_bol = \ - (yytext[yyleng - 1] == '\n'); \ - YY_USER_ACTION - -YY_DECL - { - register yy_state_type yy_current_state; - register char *yy_cp, *yy_bp; - register int yy_act; - -#line 896 "pre.l" - - - - if ( yy_init ) - { - yy_init = 0; - -#ifdef YY_USER_INIT - YY_USER_INIT; -#endif - - if ( ! yy_start ) - yy_start = 1; /* first start state */ - - if ( ! yyin ) - yyin = stdin; - - if ( ! yyout ) - yyout = stdout; - - if ( ! yy_current_buffer ) - yy_current_buffer = - yy_create_buffer( yyin, YY_BUF_SIZE ); - - yy_load_buffer_state(); - } - - while ( 1 ) /* loops until end-of-file is reached */ - { - yy_cp = yy_c_buf_p; - - /* Support of yytext. */ - *yy_cp = yy_hold_char; - - /* yy_bp points to the position in yy_ch_buf of the start of - * the current run. - */ - yy_bp = yy_cp; - - yy_current_state = yy_start; - yy_current_state += YY_AT_BOL(); - yy_state_ptr = yy_state_buf; - *yy_state_ptr++ = yy_current_state; -yy_match: - do - { - register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 365 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - *yy_state_ptr++ = yy_current_state; - ++yy_cp; - } - while ( yy_base[yy_current_state] != 1633 ); - -yy_find_action: - yy_current_state = *--yy_state_ptr; - yy_lp = yy_accept[yy_current_state]; -find_rule: /* we branch to this label when backing up */ - for ( ; ; ) /* until we find what rule we matched */ - { - if ( yy_lp && yy_lp < yy_accept[yy_current_state + 1] ) - { - yy_act = yy_acclist[yy_lp]; - if ( yy_act & YY_TRAILING_HEAD_MASK || - yy_looking_for_trail_begin ) - { - if ( yy_act == yy_looking_for_trail_begin ) - { - yy_looking_for_trail_begin = 0; - yy_act &= ~YY_TRAILING_HEAD_MASK; - break; - } - } - else if ( yy_act & YY_TRAILING_MASK ) - { - yy_looking_for_trail_begin = yy_act & ~YY_TRAILING_MASK; - yy_looking_for_trail_begin |= YY_TRAILING_HEAD_MASK; - } - else - { - yy_full_match = yy_cp; - yy_full_state = yy_state_ptr; - yy_full_lp = yy_lp; - break; - } - ++yy_lp; - goto find_rule; - } - --yy_cp; - yy_current_state = *--yy_state_ptr; - yy_lp = yy_accept[yy_current_state]; - } - - YY_DO_BEFORE_ACTION; - - -do_action: /* This label is used only to access EOF actions. */ - - - switch ( yy_act ) - { /* beginning of action switch */ -case 1: -YY_RULE_SETUP -#line 898 "pre.l" - - YY_BREAK -case 2: -YY_RULE_SETUP -#line 899 "pre.l" - - YY_BREAK -case 3: -YY_RULE_SETUP -#line 900 "pre.l" - - YY_BREAK -/* -^{B}*([^ \t#\n\/][^\n]*)?"\n" { - //printf("%s line %d: %s",g_yyFileName.data(),g_yyLineNr,yytext); - if (g_includeStack.isEmpty()) - { - //preprocessedFile+=yytext; - //char *s=yytext,c; - //if (s) while ((c=*s++)) *dataPtr++=c; - g_outputBuf->addArray(yytext,yyleng); - } - g_yyLineNr++; - } - */ -case 4: -YY_RULE_SETUP -#line 914 "pre.l" -{ BEGIN(Command); } - YY_BREAK -case 5: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 915 "pre.l" -{ - outputArray(yytext,yyleng); - BEGIN(CopyLine); - } - YY_BREAK -/* -[^\n/]+ { - outputArray(yytext,yyleng); - } - */ -case 6: -YY_RULE_SETUP -#line 924 "pre.l" -{ - Define *def=0; - //printf("Search for define %s\n",yytext); - if (g_includeStack.isEmpty() && - Config::macroExpansionFlag && - /* (expandDefine=fileDefineCache->findDefine(g_yyFileName,yytext)) */ - (def=g_fileDefineDict->find(yytext)) && - (!Config::onlyPredefinedFlag || def->isPredefined) - ) - { - //printf("Found it!\n"); - g_roundCount=0; - g_defArgsStr=yytext; - if (def->nargs==-1) // no function macro - { - QCString result = expandMacro(g_defArgsStr); - //printf("result=`%s'\n",result.data()); - outputArray(result,result.length()); - } - else // zero or more arguments - { - g_findDefArgContext = CopyLine; - BEGIN(FindDefineArgs); - } - } - else - { - outputArray(yytext,yyleng); - } - } - YY_BREAK -case 7: -YY_RULE_SETUP -#line 954 "pre.l" -{ - Define *def=0; - //printf("Search for define %s\n",yytext); - if (g_includeStack.isEmpty() && - Config::macroExpansionFlag && - (def=g_fileDefineDict->find(yytext)) && - def->nargs==-1 && - (!Config::onlyPredefinedFlag || def->isPredefined) - ) - { - //printf("Found it!\n"); - QCString name=yytext; - QCString result=expandMacro(name); - //printf("result=`%s'\n",result.data()); - outputArray(result,result.length()); - } - else - { - outputArray(yytext,yyleng); - } - } - YY_BREAK -case 8: -YY_RULE_SETUP -#line 975 "pre.l" -{ - outputChar(*yytext); - } - YY_BREAK -case 9: -YY_RULE_SETUP -#line 978 "pre.l" -{ - outputChar('\n'); - BEGIN(Start); - g_yyLineNr++; - } - YY_BREAK -case 10: -YY_RULE_SETUP -#line 983 "pre.l" -{ - g_defArgsStr+='('; - g_roundCount++; - } - YY_BREAK -case 11: -YY_RULE_SETUP -#line 987 "pre.l" -{ - g_defArgsStr+=')'; - g_roundCount--; - if (g_roundCount==0) - { - //printf("g_defArgsStr=`%s'\n",g_defArgsStr.data()); - QCString result=expandMacro(g_defArgsStr); - if (g_findDefArgContext==CopyLine) - { - outputArray(result,result.length()); - BEGIN(g_findDefArgContext); - } - else // g_findDefArgContext==IncludeID - { - readIncludeFile(result); - BEGIN(Start); - } - } - } - YY_BREAK -/* -")"{B}*"(" { - g_defArgsStr+=yytext; - } - */ -case 12: -YY_RULE_SETUP -#line 1011 "pre.l" -{ - g_defArgsStr+=*yytext; - BEGIN(ReadString); - } - YY_BREAK -case 13: -YY_RULE_SETUP -#line 1015 "pre.l" -{ - g_yyLineNr++; - outputChar('\n'); - } - YY_BREAK -case 14: -YY_RULE_SETUP -#line 1019 "pre.l" -{ - g_defArgsStr+="@@"; - } - YY_BREAK -case 15: -YY_RULE_SETUP -#line 1022 "pre.l" -{ - g_defArgsStr+=*yytext; - } - YY_BREAK -case 16: -YY_RULE_SETUP -#line 1025 "pre.l" -{ - g_defArgsStr+=yytext; - } - YY_BREAK -case 17: -YY_RULE_SETUP -#line 1028 "pre.l" -{ - g_defArgsStr+=*yytext; - BEGIN(FindDefineArgs); - } - YY_BREAK -case 18: -YY_RULE_SETUP -#line 1032 "pre.l" -{ - g_defArgsStr+=yytext; - } - YY_BREAK -case 19: -YY_RULE_SETUP -#line 1035 "pre.l" -{ - g_defArgsStr+=*yytext; - } - YY_BREAK -case 20: -YY_RULE_SETUP -#line 1038 "pre.l" -{ - if (Config::macroExpansionFlag) - BEGIN(IncludeID); - } - YY_BREAK -case 21: -YY_RULE_SETUP -#line 1042 "pre.l" -{ - char c[2]; - c[0]=yytext[yyleng-1];c[1]='\0'; - g_incName=c; - BEGIN(Include); - } - YY_BREAK -case 22: -YY_RULE_SETUP -#line 1048 "pre.l" -{ - //printf("!!!DefName\n"); - BEGIN(DefName); - } - YY_BREAK -case 23: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp = yy_bp + 5; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 1052 "pre.l" -{ - incrLevel(); - g_guardExpr.resize(0); - BEGIN(DefinedExpr2); - } - YY_BREAK -case 24: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp = yy_bp + 5; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 1057 "pre.l" -{ - //printf("Pre.l: ifdef\n"); - incrLevel(); - g_guardExpr.resize(0); - BEGIN(DefinedExpr1); - } - YY_BREAK -case 25: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp = yy_bp + 6; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 1063 "pre.l" -{ - incrLevel(); - g_guardExpr="! "; - BEGIN(DefinedExpr2); - } - YY_BREAK -case 26: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp = yy_bp + 6; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 1068 "pre.l" -{ - incrLevel(); - g_guardExpr="! "; - BEGIN(DefinedExpr1); - } - YY_BREAK -case 27: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp = yy_bp + 2; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 1073 "pre.l" -{ - incrLevel(); - g_guardExpr.resize(0); - BEGIN(Guard); - } - YY_BREAK -case 28: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp = yy_bp + 4; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 1078 "pre.l" -{ - if (!otherCaseDone()) - { - g_guardExpr.resize(0); - BEGIN(Guard); - } - else - { - g_ifcount=0; - BEGIN(SkipCPPBlock); - } - } - YY_BREAK -case 29: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp = yy_bp + 4; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 1090 "pre.l" -{ - //printf("else g_levelGuard[%d]=%d\n",g_level-1,g_levelGuard[g_level-1]); - if (otherCaseDone()) - { - g_ifcount=0; - BEGIN(SkipCPPBlock); - } - else - { - setCaseDone(TRUE); - //g_levelGuard[g_level-1]=TRUE; - } - } - YY_BREAK -case 30: -YY_RULE_SETUP -#line 1103 "pre.l" -{ - BEGIN(Ung_defName); - } - YY_BREAK -case 31: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp = yy_bp + 4; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 1106 "pre.l" -{ - if (!otherCaseDone()) - { - g_guardExpr.resize(0); - BEGIN(Guard); - } - } - YY_BREAK -case 32: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp = yy_bp + 5; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 1113 "pre.l" -{ - //printf("Pre.l: #endif\n"); - decrLevel(); - } - YY_BREAK -case 33: -YY_RULE_SETUP -#line 1117 "pre.l" -{ - outputChar('\n'); - BEGIN(Start); - g_yyLineNr++; - } - YY_BREAK -case 34: -YY_RULE_SETUP -#line 1122 "pre.l" -{ // unknown directive - BEGIN(IgnoreLine); - } - YY_BREAK -case 35: -YY_RULE_SETUP -#line 1125 "pre.l" - - YY_BREAK -case 36: -YY_RULE_SETUP -#line 1126 "pre.l" - - YY_BREAK -case 37: -YY_RULE_SETUP -#line 1127 "pre.l" -{ - Define *def; - if ((def=isDefined(yytext))) - { - //printf("undefining %s\n",yytext); - def->undef=TRUE; - } - BEGIN(Start); - } - YY_BREAK -case 38: -YY_RULE_SETUP -#line 1136 "pre.l" -{ - outputChar('\n'); - g_guardExpr+=' '; - g_yyLineNr++; - } - YY_BREAK -case 39: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp = yy_bp + 7; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 1141 "pre.l" -{ - BEGIN(DefinedExpr2); - } - YY_BREAK -case 40: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp = yy_bp + 7; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 1144 "pre.l" -{ - BEGIN(DefinedExpr1); - } - YY_BREAK -case 41: -YY_RULE_SETUP -#line 1147 "pre.l" -{ g_guardExpr+=*yytext; } - YY_BREAK -case 42: -YY_RULE_SETUP -#line 1148 "pre.l" -{ - outputChar('\n'); - g_yyLineNr++; - //printf("Guard: `%s'\n", - // g_guardExpr.data()); - bool guard=computeExpression(g_guardExpr); - setCaseDone(guard); - //printf("if g_levelGuard[%d]=%d\n",g_level-1,g_levelGuard[g_level-1]); - if (guard) - { - BEGIN(Start); - } - else - { - g_ifcount=0; - BEGIN(SkipCPPBlock); - } - } - YY_BREAK -case 43: -YY_RULE_SETUP -#line 1166 "pre.l" -{ g_yyLineNr++; outputChar('\n'); } - YY_BREAK -case 44: -YY_RULE_SETUP -#line 1167 "pre.l" -{ - if (isDefined(yytext)) - g_guardExpr+=" 1L "; - else - g_guardExpr+=" 0L "; - g_lastGuardName=yytext; - BEGIN(Guard); - } - YY_BREAK -case 45: -YY_RULE_SETUP -#line 1175 "pre.l" -{ - if (isDefined(yytext)) - g_guardExpr+=" 1L "; - else - g_guardExpr+=" 0L "; - g_lastGuardName.resize(0); - } - YY_BREAK -case 46: -YY_RULE_SETUP -#line 1182 "pre.l" -{ // should not happen, handle anyway - g_ifcount=0; - BEGIN(SkipCPPBlock); - } - YY_BREAK -case 47: -YY_RULE_SETUP -#line 1186 "pre.l" -{ - BEGIN(Guard); - } - YY_BREAK -case 48: -YY_RULE_SETUP -#line 1189 "pre.l" - - YY_BREAK -case 49: -YY_RULE_SETUP -#line 1190 "pre.l" -{ BEGIN(SkipCommand); } - YY_BREAK -case 50: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 1191 "pre.l" -{ BEGIN(SkipLine); } - YY_BREAK -case 51: -YY_RULE_SETUP -#line 1192 "pre.l" - - YY_BREAK -case 52: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 1193 "pre.l" -{ - incrLevel(); - g_ifcount++; - //printf("#if... depth=%d\n",g_ifcount); - } - YY_BREAK -case 53: -YY_RULE_SETUP -#line 1198 "pre.l" -{ - //printf("Else! g_ifcount=%d otherCaseDone=%d\n",g_ifcount,otherCaseDone()); - if (g_ifcount==0 && !otherCaseDone()) - { - setCaseDone(TRUE); - //outputChar('\n'); - BEGIN(Start); - } - } - YY_BREAK -case 54: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp = yy_bp + 4; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 1207 "pre.l" -{ - if (g_ifcount==0) - { - if (!otherCaseDone()) - { - g_guardExpr.resize(0); - g_lastGuardName.resize(0); - BEGIN(Guard); - } - else - { - BEGIN(SkipCPPBlock); - } - } - } - YY_BREAK -case 55: -YY_RULE_SETUP -#line 1222 "pre.l" -{ - decrLevel(); - if (--g_ifcount<0) - { - //outputChar('\n'); - BEGIN(Start); - } - } - YY_BREAK -case 56: -YY_RULE_SETUP -#line 1230 "pre.l" -{ - outputChar('\n'); - g_yyLineNr++; - BEGIN(SkipCPPBlock); - } - YY_BREAK -case 57: -YY_RULE_SETUP -#line 1235 "pre.l" -{ // unknown directive - BEGIN(SkipLine); - } - YY_BREAK -case 58: -YY_RULE_SETUP -#line 1238 "pre.l" - - YY_BREAK -case 59: -YY_RULE_SETUP -#line 1239 "pre.l" - - YY_BREAK -case 60: -YY_RULE_SETUP -#line 1240 "pre.l" - - YY_BREAK -case 61: -YY_RULE_SETUP -#line 1241 "pre.l" -{ - g_lastCPPContext=YY_START; - BEGIN(RemoveCPPComment); - } - YY_BREAK -case 62: -YY_RULE_SETUP -#line 1245 "pre.l" -{ - g_lastCContext=YY_START; - BEGIN(RemoveCComment); - } - YY_BREAK -case 63: -YY_RULE_SETUP -#line 1249 "pre.l" -{ - outputChar('\n'); - g_yyLineNr++; - BEGIN(SkipCPPBlock); - } - YY_BREAK -case 64: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 1254 "pre.l" -{ - g_roundCount=0; - g_defArgsStr=yytext; - g_findDefArgContext = IncludeID; - BEGIN(FindDefineArgs); - } - YY_BREAK -case 65: -YY_RULE_SETUP -#line 1260 "pre.l" -{ - readIncludeFile(expandMacro(yytext)); - BEGIN(Start); - } - YY_BREAK -case 66: -YY_RULE_SETUP -#line 1264 "pre.l" -{ - g_incName+=yytext; - //int l=incName.length(); - //QCString incFileName=incName.left(l-1); - //if (fileDefineCache->fileCached(incFileName)) - //{ - // printf("file already cached!\n"); - // fileDefineCache->merge(incFileName,g_yyFileName); - //} - //else if ((f=findFile(incFileName))) - readIncludeFile(g_incName); - - BEGIN(Start); - } - YY_BREAK -case 67: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 1278 "pre.l" -{ - //printf("Define() `%s'\n",yytext); - g_argDict = new QDict(31); - g_argDict->setAutoDelete(TRUE); - g_defArgs = 0; - g_defArgsStr.resize(0); - g_defText.resize(0); - g_defLitText.resize(0); - g_defName = yytext; - g_defVarArgs = FALSE; - BEGIN(DefineArg); - } - YY_BREAK -case 68: -YY_RULE_SETUP -#line 1290 "pre.l" -{ - //printf("Define `%s'\n",yytext); - g_argDict = 0; - g_defArgs = -1; - g_defArgsStr.resize(0); - g_defText.resize(0); - g_defLitText.resize(0); - g_defName = yytext; - g_defVarArgs = FALSE; - QCString tmp=(QCString)"#define "+g_defName+g_defArgsStr; - outputArray(tmp.data(),tmp.length()); - g_quoteArg=FALSE; - BEGIN(DefineText); - } - YY_BREAK -case 69: -YY_RULE_SETUP -#line 1304 "pre.l" -{ - g_argDict = 0; - g_defArgs = -1; - g_defName = yytext; - g_defArgsStr.resize(0); - g_defText.resize(0); - g_defLitText.resize(0); - g_defVarArgs = FALSE; - if ( g_defName!=g_lastGuardName ) - { // define may appear in the output - QCString tmp=(QCString)"#define "+g_defName+g_defArgsStr; - outputArray(tmp.data(),tmp.length()); - g_quoteArg=FALSE; - BEGIN(DefineText); - } - else // define is a guard => hide - { - //printf("Found a guard %s\n",yytext); - Define *def=0; - //if (g_includeStack.isEmpty()) - //{ - // addDefine(); - //} - if (/*!Config::onlyPredefinedFlag &&*/ (def=g_fileDefineDict->find(g_defName))==0) - { - g_fileDefineDict->insert(g_defName,newDefine()); - } - else if (def)// name already exists - { - if (def->undef) // undefined name - { - def->undef = FALSE; - def->name = g_defName; - def->definition = g_defText.stripWhiteSpace(); - def->nargs = g_defArgs; - def->fileName = g_yyFileName.copy(); - def->lineNr = g_yyLineNr; - } - else - { - //printf("Error: define %s is defined more than once!\n",g_defName.data()); - } - } - //outputChar('\n'); - g_lastGuardName.resize(0); - BEGIN(Start); - } - } - YY_BREAK -case 70: -YY_RULE_SETUP -#line 1352 "pre.l" -{ g_defArgsStr+=yytext; } - YY_BREAK -case 71: -YY_RULE_SETUP -#line 1353 "pre.l" -{ g_defArgsStr+=yytext; } - YY_BREAK -case 72: -YY_RULE_SETUP -#line 1354 "pre.l" -{ - g_defArgsStr+=yytext; - QCString tmp=(QCString)"#define "+g_defName+g_defArgsStr; - outputArray(tmp.data(),tmp.length()); - g_quoteArg=FALSE; - BEGIN(DefineText); - } - YY_BREAK -case 73: -YY_RULE_SETUP -#line 1361 "pre.l" -{ - //printf("Define addArg(%s)\n",yytext); - QCString argName=yytext; - g_defVarArgs = yytext[yyleng-1]=='.'; - if (g_defVarArgs) // strip ellipsis - argName=argName.left(argName.length()-3); - g_defArgsStr+=yytext; - g_argDict->insert(argName,new int(g_defArgs)); - g_defArgs++; - } - YY_BREAK -case 74: -YY_RULE_SETUP -#line 1371 "pre.l" -{ - outputChar('/');outputChar('*'); - g_defText+=' '; - g_defLitText+=' '; - g_lastCContext=YY_START; - BEGIN(SkipCComment); - } - YY_BREAK -case 75: -YY_RULE_SETUP -#line 1378 "pre.l" -{ - outputChar('/');outputChar('/'); - g_lastCPPContext=YY_START; - g_defLitText+=' '; - BEGIN(SkipCPPComment); - } - YY_BREAK -case 76: -YY_RULE_SETUP -#line 1384 "pre.l" -{ - outputChar('*');outputChar('/'); - BEGIN(g_lastCContext); - } - YY_BREAK -case 77: -YY_RULE_SETUP -#line 1388 "pre.l" -{ - outputChar('/');outputChar('/'); - } - YY_BREAK -case 78: -YY_RULE_SETUP -#line 1391 "pre.l" -{ - outputChar('/');outputChar('*'); - } - YY_BREAK -case 79: -YY_RULE_SETUP -#line 1394 "pre.l" -{ - outputArray(yytext,yyleng); - } - YY_BREAK -case 80: -YY_RULE_SETUP -#line 1397 "pre.l" -{ - g_yyLineNr++; - outputChar('\n'); - } - YY_BREAK -case 81: -YY_RULE_SETUP -#line 1401 "pre.l" -{ - outputChar(*yytext); - } - YY_BREAK -case 82: -YY_RULE_SETUP -#line 1404 "pre.l" -{ BEGIN(g_lastCContext); } - YY_BREAK -case 83: -YY_RULE_SETUP -#line 1405 "pre.l" - - YY_BREAK -case 84: -YY_RULE_SETUP -#line 1406 "pre.l" - - YY_BREAK -case 85: -YY_RULE_SETUP -#line 1407 "pre.l" - - YY_BREAK -case 86: -YY_RULE_SETUP -#line 1408 "pre.l" -{ g_yyLineNr++; outputChar('\n'); } - YY_BREAK -case 87: -YY_RULE_SETUP -#line 1409 "pre.l" - - YY_BREAK -case 88: -YY_RULE_SETUP -#line 1410 "pre.l" -{ - unput(*yytext); - BEGIN(g_lastCPPContext); - } - YY_BREAK -case 89: -YY_RULE_SETUP -#line 1414 "pre.l" -{ - outputChar('/');outputChar('*'); - } - YY_BREAK -case 90: -YY_RULE_SETUP -#line 1417 "pre.l" -{ - outputChar('/');outputChar('/'); - } - YY_BREAK -case 91: -YY_RULE_SETUP -#line 1420 "pre.l" -{ - outputArray(yytext,yyleng); - } - YY_BREAK -case 92: -YY_RULE_SETUP -#line 1423 "pre.l" -{ - outputChar(*yytext); - } - YY_BREAK -case 93: -YY_RULE_SETUP -#line 1426 "pre.l" - - YY_BREAK -case 94: -YY_RULE_SETUP -#line 1427 "pre.l" - - YY_BREAK -case 95: -YY_RULE_SETUP -#line 1428 "pre.l" - - YY_BREAK -case 96: -YY_RULE_SETUP -#line 1429 "pre.l" - - YY_BREAK -case 97: -YY_RULE_SETUP -#line 1430 "pre.l" -{ - g_quoteArg=TRUE; - g_defLitText+=yytext; - } - YY_BREAK -case 98: -YY_RULE_SETUP -#line 1434 "pre.l" -{ - g_defLitText+=yytext; - if (g_quoteArg) - { - g_defText+="\""; - } - if (g_defArgs>0) - { - int *n; - if ((n=(*g_argDict)[yytext])) - { - if (!g_quoteArg) g_defText+=' '; - g_defText+='@'; - QCString numStr; - numStr.setNum(*n); - g_defText+=numStr; - if (!g_quoteArg) g_defText+=' '; - } - else - { - g_defText+=yytext; - } - } - else - { - g_defText+=yytext; - } - if (g_quoteArg) - { - g_defText+="\""; - } - g_quoteArg=FALSE; - } - YY_BREAK -case 99: -YY_RULE_SETUP -#line 1467 "pre.l" -{ - g_defLitText+=yytext; - outputChar('\n'); - g_defText += ' '; g_yyLineNr++; - } - YY_BREAK -case 100: -YY_RULE_SETUP -#line 1472 "pre.l" -{ - g_defLitText+=yytext; - outputChar('\n'); - Define *def=0; - //printf("Define name=`%s' text=`%s'\n",g_defName.data(),g_defText.data()); - if (g_includeStack.isEmpty()) - { - addDefine(); - } - if (/*!Config::onlyPredefinedFlag &&*/ (def=g_fileDefineDict->find(g_defName))==0) - { - g_fileDefineDict->insert(g_defName,newDefine()); - } - else if (def)// name already exists - { - //printf("define found\n"); - if (def->undef) // undefined name - { - def->undef = FALSE; - def->name = g_defName; - def->definition = g_defText.stripWhiteSpace(); - def->nargs = g_defArgs; - def->fileName = g_yyFileName.copy(); - def->lineNr = g_yyLineNr; - } - else - { - //printf("Error: define %s is defined more than once!\n",g_defName.data()); - } - } - delete g_argDict; g_argDict=0; - g_yyLineNr++; - g_lastGuardName.resize(0); - BEGIN(Start); - } - YY_BREAK -case 101: -YY_RULE_SETUP -#line 1507 "pre.l" -{ g_defText += ' '; g_defLitText+=yytext; } - YY_BREAK -case 102: -YY_RULE_SETUP -#line 1508 "pre.l" -{ g_defText += "##"; g_defLitText+=yytext; } - YY_BREAK -case 103: -YY_RULE_SETUP -#line 1509 "pre.l" -{ g_defText += "@@"; g_defLitText+=yytext; } - YY_BREAK -case 104: -YY_RULE_SETUP -#line 1510 "pre.l" -{ g_defText += *yytext; - g_defLitText+=yytext; - BEGIN(SkipDoubleQuote); - } - YY_BREAK -case 105: -YY_RULE_SETUP -#line 1514 "pre.l" -{ g_defText += *yytext; - g_defLitText+=yytext; - BEGIN(SkipSingleQuote); - } - YY_BREAK -case 106: -YY_RULE_SETUP -#line 1518 "pre.l" -{ g_defText += yytext; g_defLitText+=yytext; } - YY_BREAK -case 107: -YY_RULE_SETUP -#line 1519 "pre.l" -{ g_defText += yytext; g_defLitText+=yytext; } - YY_BREAK -case 108: -YY_RULE_SETUP -#line 1520 "pre.l" -{ - g_defText += *yytext; g_defLitText+=yytext; - BEGIN(DefineText); - } - YY_BREAK -case 109: -YY_RULE_SETUP -#line 1524 "pre.l" -{ - g_defText += yytext; g_defLitText+=yytext; - } - YY_BREAK -case 110: -YY_RULE_SETUP -#line 1527 "pre.l" -{ - g_defText += *yytext; g_defLitText+=yytext; - BEGIN(DefineText); - } - YY_BREAK -case 111: -YY_RULE_SETUP -#line 1531 "pre.l" -{ g_defText += *yytext; g_defLitText+=yytext; } - YY_BREAK -case 112: -YY_RULE_SETUP -#line 1532 "pre.l" -{ g_defText += *yytext; g_defLitText+=yytext; } - YY_BREAK -case 113: -YY_RULE_SETUP -#line 1533 "pre.l" -{ g_defText += *yytext; g_defLitText+=yytext; } - YY_BREAK -case YY_STATE_EOF(INITIAL): -case YY_STATE_EOF(Start): -case YY_STATE_EOF(Command): -case YY_STATE_EOF(SkipCommand): -case YY_STATE_EOF(SkipLine): -case YY_STATE_EOF(CopyLine): -case YY_STATE_EOF(Include): -case YY_STATE_EOF(IncludeID): -case YY_STATE_EOF(DefName): -case YY_STATE_EOF(DefineArg): -case YY_STATE_EOF(DefineText): -case YY_STATE_EOF(SkipCPPBlock): -case YY_STATE_EOF(Ifdef): -case YY_STATE_EOF(Ifndef): -case YY_STATE_EOF(SkipCComment): -case YY_STATE_EOF(SkipCPPComment): -case YY_STATE_EOF(RemoveCComment): -case YY_STATE_EOF(RemoveCPPComment): -case YY_STATE_EOF(Guard): -case YY_STATE_EOF(DefinedExpr1): -case YY_STATE_EOF(DefinedExpr2): -case YY_STATE_EOF(SkipDoubleQuote): -case YY_STATE_EOF(SkipSingleQuote): -case YY_STATE_EOF(Ung_defName): -case YY_STATE_EOF(IgnoreLine): -case YY_STATE_EOF(FindDefineArgs): -case YY_STATE_EOF(ReadString): -#line 1534 "pre.l" -{ - //printf("End of include file\n"); - //printf("Include stack depth=%d\n",g_includeStack.count()); - if (g_includeStack.isEmpty()) - { - //printf("Terminating scanner!\n"); - yyterminate(); - } - else - { - FileState *fs=g_includeStack.pop(); - //fileDefineCache->merge(g_yyFileName,fs->fileName); - if (Config::inputFilter.isEmpty()) - fclose(fs->filePtr); - else - pclose(fs->filePtr); - YY_BUFFER_STATE oldBuf = YY_CURRENT_BUFFER; - yy_switch_to_buffer( fs->bufState ); - yy_delete_buffer( oldBuf ); - g_yyLineNr=fs->lineNr; - setFileName(fs->fileName.copy()); - //printf("######## FileName %s\n",g_yyFileName.data()); - delete fs; fs=0; - } - } - YY_BREAK -case 114: -YY_RULE_SETUP -#line 1559 "pre.l" -{ - outputChar('/');outputChar('*'); - g_lastCContext=YY_START; - BEGIN(SkipCComment); - } - YY_BREAK -case 115: -YY_RULE_SETUP -#line 1564 "pre.l" -{ - outputChar('/');outputChar('/'); - g_lastCPPContext=YY_START; - BEGIN(SkipCPPComment); - } - YY_BREAK -case 116: -YY_RULE_SETUP -#line 1569 "pre.l" -{ - outputChar('\n'); - g_yyLineNr++; - } - YY_BREAK -case 117: -YY_RULE_SETUP -#line 1573 "pre.l" -{ - outputChar(*yytext); - } - YY_BREAK -case 118: -YY_RULE_SETUP -#line 1577 "pre.l" -ECHO; - YY_BREAK - - 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->yy_buffer_status == YY_BUFFER_NEW ) - { - /* We're scanning a new file or input source. It's - * possible that this happened because the user - * just pointed yyin at a new source and called - * yylex(). If so, then we have to assure - * consistency between yy_current_buffer and our - * globals. Here is the right place to do so, because - * this is the first action (other than possibly a - * back-up) that will match for the new input source. - */ - yy_n_chars = yy_current_buffer->yy_n_chars; - yy_current_buffer->yy_input_file = yyin; - yy_current_buffer->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->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 ( yywrap() ) - { - /* Note: because we've taken care in - * yy_get_next_buffer() to have set up - * yytext, we can now set up - * yy_c_buf_p so that if some total - * hoser (like flex itself) wants to - * call the scanner after we return the - * YY_NULL, it'll still work - another - * YY_NULL will get returned. - */ - yy_c_buf_p = yytext_ptr + YY_MORE_ADJ; - - yy_act = YY_STATE_EOF(YY_START); - goto do_action; - } - - else - { - if ( ! yy_did_buffer_switch_on_eof ) - YY_NEW_FILE; - } - break; - } - - case EOB_ACT_CONTINUE_SCAN: - yy_c_buf_p = - yytext_ptr + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state(); - - yy_cp = yy_c_buf_p; - yy_bp = yytext_ptr + YY_MORE_ADJ; - goto yy_match; - - case EOB_ACT_LAST_MATCH: - yy_c_buf_p = - &yy_current_buffer->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 yylex */ - - -/* yy_get_next_buffer - try to read in a new buffer - * - * Returns a code representing an action: - * EOB_ACT_LAST_MATCH - - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position - * EOB_ACT_END_OF_FILE - end of file - */ - -static int yy_get_next_buffer() - { - register char *dest = yy_current_buffer->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->yy_ch_buf[yy_n_chars + 1] ) - YY_FATAL_ERROR( - "fatal flex scanner internal error--end of buffer missed" ); - - if ( yy_current_buffer->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->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->yy_n_chars = yy_n_chars = 0; - - else - { - int num_to_read = - yy_current_buffer->yy_buf_size - number_to_move - 1; - - while ( num_to_read <= 0 ) - { /* Not enough room in the buffer - grow it. */ -#ifdef YY_USES_REJECT - YY_FATAL_ERROR( -"input buffer overflow, can't enlarge buffer because scanner uses REJECT" ); -#else - - /* 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. */ - yy_flex_realloc( (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->yy_buf_size - - number_to_move - 1; -#endif - } - - if ( num_to_read > YY_READ_BUF_SIZE ) - num_to_read = YY_READ_BUF_SIZE; - - /* Read in more data. */ - YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]), - yy_n_chars, num_to_read ); - - yy_current_buffer->yy_n_chars = yy_n_chars; - } - - if ( yy_n_chars == 0 ) - { - if ( number_to_move == YY_MORE_ADJ ) - { - ret_val = EOB_ACT_END_OF_FILE; - yyrestart( yyin ); - } - - else - { - ret_val = EOB_ACT_LAST_MATCH; - yy_current_buffer->yy_buffer_status = - YY_BUFFER_EOF_PENDING; - } - } - - else - ret_val = EOB_ACT_CONTINUE_SCAN; - - yy_n_chars += number_to_move; - yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR; - yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; - - yytext_ptr = &yy_current_buffer->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() - { - register yy_state_type yy_current_state; - register char *yy_cp; - - yy_current_state = yy_start; - yy_current_state += YY_AT_BOL(); - yy_state_ptr = yy_state_buf; - *yy_state_ptr++ = yy_current_state; - - for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp ) - { - register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 30); - 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 >= 365 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - *yy_state_ptr++ = yy_current_state; - } - - return yy_current_state; - } - - -/* yy_try_NUL_trans - try to make a transition on the NUL character - * - * synopsis - * next_state = yy_try_NUL_trans( current_state ); - */ - -#ifdef YY_USE_PROTOS -static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state ) -#else -static yy_state_type yy_try_NUL_trans( yy_current_state ) -yy_state_type yy_current_state; -#endif - { - register int yy_is_jam; - - register YY_CHAR yy_c = 30; - 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 >= 365 ) - 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 == 364); - if ( ! yy_is_jam ) - *yy_state_ptr++ = yy_current_state; - - return yy_is_jam ? 0 : yy_current_state; - } - - -#ifndef YY_NO_UNPUT -#ifdef YY_USE_PROTOS -static void yyunput( int c, register char *yy_bp ) -#else -static void yyunput( c, yy_bp ) -int c; -register char *yy_bp; -#endif - { - register char *yy_cp = yy_c_buf_p; - - /* undo effects of setting up yytext */ - *yy_cp = yy_hold_char; - - if ( yy_cp < yy_current_buffer->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->yy_ch_buf[ - yy_current_buffer->yy_buf_size + 2]; - register char *source = - &yy_current_buffer->yy_ch_buf[number_to_move]; - - while ( source > yy_current_buffer->yy_ch_buf ) - *--dest = *--source; - - yy_cp += (int) (dest - source); - yy_bp += (int) (dest - source); - yy_current_buffer->yy_n_chars = - yy_n_chars = yy_current_buffer->yy_buf_size; - - if ( yy_cp < yy_current_buffer->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; - } -#endif /* ifndef YY_NO_UNPUT */ - - -#ifdef __cplusplus -static int yyinput() -#else -static int input() -#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->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. */ - yyrestart( yyin ); - - /* fall through */ - - case EOB_ACT_END_OF_FILE: - { - if ( yywrap() ) - 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 yytext */ - yy_hold_char = *++yy_c_buf_p; - - yy_current_buffer->yy_at_bol = (c == '\n'); - - return c; - } - - -#ifdef YY_USE_PROTOS -void yyrestart( FILE *input_file ) -#else -void yyrestart( input_file ) -FILE *input_file; -#endif - { - if ( ! yy_current_buffer ) - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); - - yy_init_buffer( yy_current_buffer, input_file ); - yy_load_buffer_state(); - } - - -#ifdef YY_USE_PROTOS -void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer ) -#else -void yy_switch_to_buffer( new_buffer ) -YY_BUFFER_STATE new_buffer; -#endif - { - 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->yy_buf_pos = yy_c_buf_p; - yy_current_buffer->yy_n_chars = yy_n_chars; - } - - yy_current_buffer = new_buffer; - yy_load_buffer_state(); - - /* We don't actually know whether we did this switch during - * EOF (yywrap()) processing, but the only time this flag - * is looked at is after yywrap() is called, so it's safe - * to go ahead and always set it. - */ - yy_did_buffer_switch_on_eof = 1; - } - - -#ifdef YY_USE_PROTOS -void yy_load_buffer_state( void ) -#else -void yy_load_buffer_state() -#endif - { - yy_n_chars = yy_current_buffer->yy_n_chars; - yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos; - yyin = yy_current_buffer->yy_input_file; - yy_hold_char = *yy_c_buf_p; - } - - -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_create_buffer( FILE *file, int size ) -#else -YY_BUFFER_STATE yy_create_buffer( file, size ) -FILE *file; -int size; -#endif - { - YY_BUFFER_STATE b; - - b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_buf_size = size; - - /* yy_ch_buf has to be 2 characters longer than the size given because - * we need to put in 2 end-of-buffer characters. - */ - b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 ); - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_is_our_buffer = 1; - - yy_init_buffer( b, file ); - - return b; - } - - -#ifdef YY_USE_PROTOS -void yy_delete_buffer( YY_BUFFER_STATE b ) -#else -void yy_delete_buffer( b ) -YY_BUFFER_STATE b; -#endif - { - if ( ! b ) - return; - - if ( b == yy_current_buffer ) - yy_current_buffer = (YY_BUFFER_STATE) 0; - - if ( b->yy_is_our_buffer ) - yy_flex_free( (void *) b->yy_ch_buf ); - - yy_flex_free( (void *) b ); - } - - -#ifndef YY_ALWAYS_INTERACTIVE -#ifndef YY_NEVER_INTERACTIVE -extern int isatty YY_PROTO(( int )); -#endif -#endif - -#ifdef YY_USE_PROTOS -void yy_init_buffer( YY_BUFFER_STATE b, FILE *file ) -#else -void yy_init_buffer( b, file ) -YY_BUFFER_STATE b; -FILE *file; -#endif - - - { - yy_flush_buffer( b ); - - b->yy_input_file = file; - b->yy_fill_buffer = 1; - -#if YY_ALWAYS_INTERACTIVE - b->yy_is_interactive = 1; -#else -#if YY_NEVER_INTERACTIVE - b->yy_is_interactive = 0; -#else - b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; -#endif -#endif - } - - -#ifdef YY_USE_PROTOS -void yy_flush_buffer( YY_BUFFER_STATE b ) -#else -void yy_flush_buffer( b ) -YY_BUFFER_STATE b; -#endif - - { - if ( ! b ) - return; - - b->yy_n_chars = 0; - - /* We always need two end-of-buffer characters. The first causes - * a transition to the end-of-buffer state. The second causes - * a jam in that state. - */ - b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; - b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; - - b->yy_buf_pos = &b->yy_ch_buf[0]; - - b->yy_at_bol = 1; - b->yy_buffer_status = YY_BUFFER_NEW; - - if ( b == yy_current_buffer ) - yy_load_buffer_state(); - } - - -#ifndef YY_NO_SCAN_BUFFER -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size ) -#else -YY_BUFFER_STATE yy_scan_buffer( base, size ) -char *base; -yy_size_t size; -#endif - { - 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) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_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; - - yy_switch_to_buffer( b ); - - return b; - } -#endif - - -#ifndef YY_NO_SCAN_STRING -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str ) -#else -YY_BUFFER_STATE yy_scan_string( yy_str ) -yyconst char *yy_str; -#endif - { - int len; - for ( len = 0; yy_str[len]; ++len ) - ; - - return yy_scan_bytes( yy_str, len ); - } -#endif - - -#ifndef YY_NO_SCAN_BYTES -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len ) -#else -YY_BUFFER_STATE yy_scan_bytes( bytes, len ) -yyconst char *bytes; -int len; -#endif - { - YY_BUFFER_STATE b; - char *buf; - yy_size_t n; - int i; - - /* Get memory for full buffer, including space for trailing EOB's. */ - n = len + 2; - buf = (char *) yy_flex_alloc( n ); - if ( ! buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); - - for ( i = 0; i < len; ++i ) - buf[i] = bytes[i]; - - buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR; - - b = yy_scan_buffer( buf, n ); - if ( ! b ) - YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); - - /* It's okay to grow etc. this buffer, and we should throw it - * away when we're done. - */ - b->yy_is_our_buffer = 1; - - return b; - } -#endif - - -#ifndef YY_NO_PUSH_STATE -#ifdef YY_USE_PROTOS -static void yy_push_state( int new_state ) -#else -static void yy_push_state( new_state ) -int new_state; -#endif - { - if ( yy_start_stack_ptr >= yy_start_stack_depth ) - { - yy_size_t new_size; - - yy_start_stack_depth += YY_START_STACK_INCR; - new_size = yy_start_stack_depth * sizeof( int ); - - if ( ! yy_start_stack ) - yy_start_stack = (int *) yy_flex_alloc( new_size ); - - else - yy_start_stack = (int *) yy_flex_realloc( - (void *) yy_start_stack, new_size ); - - if ( ! yy_start_stack ) - YY_FATAL_ERROR( - "out of memory expanding start-condition stack" ); - } - - yy_start_stack[yy_start_stack_ptr++] = YY_START; - - BEGIN(new_state); - } -#endif - - -#ifndef YY_NO_POP_STATE -static void yy_pop_state() - { - if ( --yy_start_stack_ptr < 0 ) - YY_FATAL_ERROR( "start-condition stack underflow" ); - - BEGIN(yy_start_stack[yy_start_stack_ptr]); - } -#endif - - -#ifndef YY_NO_TOP_STATE -static int yy_top_state() - { - return yy_start_stack[yy_start_stack_ptr - 1]; - } -#endif - -#ifndef YY_EXIT_FAILURE -#define YY_EXIT_FAILURE 2 -#endif - -#ifdef YY_USE_PROTOS -static void yy_fatal_error( yyconst char msg[] ) -#else -static void yy_fatal_error( msg ) -char msg[]; -#endif - { - (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 yytext. */ \ - yytext[yyleng] = yy_hold_char; \ - yy_c_buf_p = yytext + n; \ - yy_hold_char = *yy_c_buf_p; \ - *yy_c_buf_p = '\0'; \ - yyleng = n; \ - } \ - while ( 0 ) - - -/* Internal utility routines. */ - -#ifndef yytext_ptr -#ifdef YY_USE_PROTOS -static void yy_flex_strncpy( char *s1, yyconst char *s2, int n ) -#else -static void yy_flex_strncpy( s1, s2, n ) -char *s1; -yyconst char *s2; -int n; -#endif - { - register int i; - for ( i = 0; i < n; ++i ) - s1[i] = s2[i]; - } -#endif - -#ifdef YY_NEED_STRLEN -#ifdef YY_USE_PROTOS -static int yy_flex_strlen( yyconst char *s ) -#else -static int yy_flex_strlen( s ) -yyconst char *s; -#endif - { - register int n; - for ( n = 0; s[n]; ++n ) - ; - - return n; - } -#endif - - -#ifdef YY_USE_PROTOS -static void *yy_flex_alloc( yy_size_t size ) -#else -static void *yy_flex_alloc( size ) -yy_size_t size; -#endif - { - return (void *) malloc( size ); - } - -#ifdef YY_USE_PROTOS -static void *yy_flex_realloc( void *ptr, yy_size_t size ) -#else -static void *yy_flex_realloc( ptr, size ) -void *ptr; -yy_size_t size; -#endif - { - /* 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 ); - } - -#ifdef YY_USE_PROTOS -static void yy_flex_free( void *ptr ) -#else -static void yy_flex_free( ptr ) -void *ptr; -#endif - { - free( ptr ); - } - -#if YY_MAIN -int main() - { - yylex(); - return 0; - } -#endif -#line 1577 "pre.l" - - -/*@ ---------------------------------------------------------------------------- - */ - -static int getNextChar(const QCString &expr,QCString *rest,uint &pos) -{ - //printf("getNextChar(%s,%s,%d)\n",expr.data(),rest ? rest->data() : 0,pos); - if (posisEmpty()) - { - int cc=rest->at(0); - *rest=rest->right(rest->length()-1); - //printf("%c=rest\n",cc); - return cc; - } - else - { - int cc=yyinput(); - //printf("%c=yyinput()\n",cc); - return cc; - } -} - -static int getCurrentChar(const QCString &expr,QCString *rest,uint pos) -{ - //printf("getCurrentChar(%s,%s,%d)\n",expr.data(),rest ? rest->data() : 0,pos); - if (posisEmpty()) - { - int cc=rest->at(0); - //printf("%c=rest\n",cc); - return cc; - } - else - { - int cc=yyinput();unput(cc); - //printf("%c=yyinput()\n",cc); - return cc; - } -} - -static void unputChar(const QCString &expr,QCString *rest,uint &pos,char c) -{ - //printf("unputChar(%s,%s,%d,%c)\n",expr.data(),rest ? rest->data() : 0,pos,c); - if (posprepend(cs); - } - else - { - unput(c); - } - //printf("result: unputChar(%s,%s,%d,%c)\n",expr.data(),rest ? rest->data() : 0,pos,c); -} - -void addSearchDir(const char *dir) -{ - QFileInfo fi(dir); - if (fi.isDir()) g_pathList->append(fi.absFilePath()); -} - -void initPreprocessor() -{ - g_pathList = new QStrList; - addSearchDir("."); - //defineNameList.setAutoDelete(TRUE); - //defineNameList.clear(); - defineDict.clear(); - //fileDefineCache = new DefineCache(1009); - g_expandedDict = new DefineDict(17); - g_fileDefineDict = new DefineDict(1009); -} - -void cleanupPreprocessor() -{ - //delete fileDefineCache; - delete g_fileDefineDict; g_fileDefineDict=0; - delete g_expandedDict; g_expandedDict=0; - delete g_pathList; g_pathList=0; -} - - -void preprocessFile(const char *fileName,BufStr &output) -{ -//#if DUMP_OUTPUT - uint orgOffset=output.curPos(); -//#endif - - g_outputBuf=&output; - g_includeStack.setAutoDelete(TRUE); - g_includeStack.clear(); - g_fileDefineDict->setAutoDelete(TRUE); - g_fileDefineDict->clear(); - g_expandedDict->setAutoDelete(FALSE); - g_expandedDict->clear(); - - // add predefined macros - char *defStr = Config::predefined.first(); - while (defStr) - { - QCString ds = defStr; - int i_equals=ds.find('='); - int i_obrace=ds.find('('); - int i_cbrace=ds.find(')'); - bool nonRecursive = i_equals>0 && ds.at(i_equals-1)==':'; - - if (i_obrace==0) continue; // no define name - - if (i_obrace argDict(17); - argDict.setAutoDelete(TRUE); - int i=i_obrace+1,p,l,count=0; - // gather the formal arguments in a dictionary - while (ii) definition+=tmp.mid(i,p-i); - int *argIndex; - if ((argIndex=argDict[tmp.mid(p,l)])!=0) - { - QCString marker; - marker.sprintf(" @%d ",*argIndex); - definition+=marker; - } - else - { - definition+=tmp.mid(p,l); - } - i=p+l; - } - if (i<(int)tmp.length()) definition+=tmp.mid(i,tmp.length()-i); - - // add define definition to the dictionary of defines for this file - Define *def = new Define; - def->name = ds.left(i_obrace); - def->definition = definition; - def->nargs = count; - def->isPredefined = TRUE; - def->nonRecursive = nonRecursive; - g_fileDefineDict->insert(def->name,def); - - //printf("#define `%s' `%s' #nargs=%d\n", - // def->name.data(),def->definition.data(),def->nargs); - } - else if ((i_obrace==-1 || i_obrace>i_equals) && - (i_cbrace==-1 || i_cbrace>i_equals) && - !ds.isEmpty() && (int)ds.length()>i_equals - ) // predefined non-function macro definition - { - Define *def = new Define; - if (i_equals==-1) // simple define without argument - { - def->name = ds; - def->definition = "1"; // substitute occurrences by 1 (true) - } - else // simple define with argument - { - int ine=i_equals - (nonRecursive ? 1 : 0); - def->name = ds.left(ine); - def->definition = ds.right(ds.length()-i_equals-1); - } - def->nargs = -1; - def->isPredefined = TRUE; - def->nonRecursive = nonRecursive; - g_fileDefineDict->insert(def->name,def); - - //printf("#define `%s' `%s' #nargs=%d\n", - // def->name.data(),def->definition.data(),def->nargs); - } - - defStr=Config::predefined.next(); - } - - if (Config::inputFilter.isEmpty()) - { - preYYin = fopen(fileName,"r"); - if (!preYYin) - { - err("Error: could not open file %s\n",fileName); - return; - } - } - else - { - QCString cmd = Config::inputFilter+" "+fileName; - preYYin = popen(cmd,"r"); - if (!preYYin) - { - err("Error: could not execute filter %s\n",cmd.data()); - return; - } - } - g_yyLineNr = 1; - g_level = 0; - g_ifcount = 0; - setFileName(fileName); - BEGIN( Start ); - - g_lastGuardName.resize(0); - g_guardExpr.resize(0); - - preYYlex(); - if (Config::inputFilter.isEmpty()) - fclose(preYYin); - else - pclose(preYYin); - -//#if DUMP_OUTPUT - if (Debug::isFlagSet(Debug::Preprocessor)) - { - char *orgPos=output.data()+orgOffset; - char *newPos=output.data()+output.curPos(); - printf("Preprocessor output (size: %d bytes):\n",newPos-orgPos); - int line=1; - printf("---------\n00001 "); - while (orgPosaddIncludeDependency(0,incFileName,localInclude); + oldFileDef->addIncludeDependency(fd,incFileName,localInclude); } #if SHOW_INCLUDES msg("#include %s: not found! skipping...\n",incFileName.data()); diff --git a/src/scanner.cpp b/src/scanner.cpp deleted file mode 100644 index 25e3147..0000000 --- a/src/scanner.cpp +++ /dev/null @@ -1,18687 +0,0 @@ -#define yy_create_buffer scanYY_create_buffer -#define yy_delete_buffer scanYY_delete_buffer -#define yy_scan_buffer scanYY_scan_buffer -#define yy_scan_string scanYY_scan_string -#define yy_scan_bytes scanYY_scan_bytes -#define yy_flex_debug scanYY_flex_debug -#define yy_init_buffer scanYY_init_buffer -#define yy_flush_buffer scanYY_flush_buffer -#define yy_load_buffer_state scanYY_load_buffer_state -#define yy_switch_to_buffer scanYY_switch_to_buffer -#define yyin scanYYin -#define yyleng scanYYleng -#define yylex scanYYlex -#define yyout scanYYout -#define yyrestart scanYYrestart -#define yytext scanYYtext - -/* A lexical scanner generated by flex */ - -/* Scanner skeleton version: - * $Header$ - */ - -#define FLEX_SCANNER -#define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 5 - -#include - - -/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */ -#ifdef c_plusplus -#ifndef __cplusplus -#define __cplusplus -#endif -#endif - - -#ifdef __cplusplus - -#include -#include - -/* Use prototypes in function declarations. */ -#define YY_USE_PROTOS - -/* The "const" storage-class-modifier is valid. */ -#define YY_USE_CONST - -#else /* ! __cplusplus */ - -#if __STDC__ - -#define YY_USE_PROTOS -#define YY_USE_CONST - -#endif /* __STDC__ */ -#endif /* ! __cplusplus */ - -#ifdef __TURBOC__ - #pragma warn -rch - #pragma warn -use -#include -#include -#define YY_USE_CONST -#define YY_USE_PROTOS -#endif - -#ifdef YY_USE_CONST -#define yyconst const -#else -#define yyconst -#endif - - -#ifdef YY_USE_PROTOS -#define YY_PROTO(proto) proto -#else -#define YY_PROTO(proto) () -#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 yyrestart( yyin ) - -#define YY_END_OF_BUFFER_CHAR 0 - -/* Size of default input buffer. */ -#define YY_BUF_SIZE 16384 - -typedef struct yy_buffer_state *YY_BUFFER_STATE; - -extern int yyleng; -extern FILE *yyin, *yyout; - -#define EOB_ACT_CONTINUE_SCAN 0 -#define EOB_ACT_END_OF_FILE 1 -#define EOB_ACT_LAST_MATCH 2 - -/* The funky do-while in the following #define is used to turn the definition - * int a single C statement (which needs a semi-colon terminator). This - * avoids problems with code like: - * - * if ( condition_holds ) - * yyless( 5 ); - * else - * do_something_else(); - * - * Prior to using the do-while the compiler would get upset at the - * "else" because it interpreted the "if" statement as being all - * done when it reached the ';' after the yyless() call. - */ - -/* Return all but the first 'n' matched characters back to the input stream. */ - -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - *yy_cp = yy_hold_char; \ - YY_RESTORE_YY_MORE_OFFSET \ - yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \ - YY_DO_BEFORE_ACTION; /* set up yytext again */ \ - } \ - while ( 0 ) - -#define unput(c) yyunput( c, yytext_ptr ) - -/* The following is because we cannot portably get our hands on size_t - * (without autoconf's help, which isn't available because we want - * flex-generated scanners to compile on their own). - */ -typedef unsigned int yy_size_t; - - -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; - - /* Whether to try to fill the input buffer when we reach the - * end of it. - */ - int yy_fill_buffer; - - int yy_buffer_status; -#define YY_BUFFER_NEW 0 -#define YY_BUFFER_NORMAL 1 - /* When an EOF's been seen but there's still some text to process - * then we mark the buffer as YY_EOF_PENDING, to indicate that we - * shouldn't try reading from the input source any more. We might - * still have a bunch of tokens to match, though, because of - * possible backing-up. - * - * When we actually see the EOF, we change the status to "new" - * (via yyrestart()), so that the user can continue scanning by - * just pointing yyin at a new input file. - */ -#define YY_BUFFER_EOF_PENDING 2 - }; - -static YY_BUFFER_STATE yy_current_buffer = 0; - -/* 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". - */ -#define YY_CURRENT_BUFFER yy_current_buffer - - -/* yy_hold_char holds the character lost when yytext is formed. */ -static char yy_hold_char; - -static int yy_n_chars; /* number of characters read into yy_ch_buf */ - - -int yyleng; - -/* Points to current character in buffer. */ -static char *yy_c_buf_p = (char *) 0; -static int yy_init = 1; /* whether we need to initialize */ -static int yy_start = 0; /* start state number */ - -/* Flag which is used to allow yywrap()'s to do buffer switches - * instead of setting up a fresh yyin. A bit of a hack ... - */ -static int yy_did_buffer_switch_on_eof; - -void yyrestart YY_PROTO(( FILE *input_file )); - -void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer )); -void yy_load_buffer_state YY_PROTO(( void )); -YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size )); -void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b )); -void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file )); -void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b )); -#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer ) - -YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size )); -YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str )); -YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len )); - -static void *yy_flex_alloc YY_PROTO(( yy_size_t )); -static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t )); -static void yy_flex_free YY_PROTO(( void * )); - -#define yy_new_buffer yy_create_buffer - -#define yy_set_interactive(is_interactive) \ - { \ - if ( ! yy_current_buffer ) \ - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ - yy_current_buffer->yy_is_interactive = is_interactive; \ - } - -#define yy_set_bol(at_bol) \ - { \ - if ( ! yy_current_buffer ) \ - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ - yy_current_buffer->yy_at_bol = at_bol; \ - } - -#define YY_AT_BOL() (yy_current_buffer->yy_at_bol) - - -#define YY_USES_REJECT - -#define yywrap() 1 -#define YY_SKIP_YYWRAP -typedef unsigned char YY_CHAR; -FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; -typedef int yy_state_type; -extern char *yytext; -#define yytext_ptr yytext - -static yy_state_type yy_get_previous_state YY_PROTO(( void )); -static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state )); -static int yy_get_next_buffer YY_PROTO(( void )); -static void yy_fatal_error YY_PROTO(( yyconst char msg[] )); - -/* Done after the current pattern has been matched and before the - * corresponding action - sets up yytext. - */ -#define YY_DO_BEFORE_ACTION \ - yytext_ptr = yy_bp; \ - yyleng = (int) (yy_cp - yy_bp); \ - yy_hold_char = *yy_cp; \ - *yy_cp = '\0'; \ - yy_c_buf_p = yy_cp; - -#define YY_NUM_RULES 653 -#define YY_END_OF_BUFFER 654 -static yyconst short int yy_acclist[3831] = - { 0, - 337, 337,16973,16974,16975, 519, 519, 546, 546, 209, - 209, 193, 193, 377, 377, 377, 377, 654, 648, 653, - 648, 653, 647, 653, 2, 648, 653, 648, 653, 280, - 648, 653, 279, 648, 653, 279, 648, 653, 2, 279, - 648, 653, 278, 279, 648, 653, 279, 648, 653, 284, - 648, 653, 284, 648, 653, 284, 648, 653, 281, 647, - 653, 2, 284, 648, 653, 283, 284, 648, 653, 284, - 648, 653, 284, 648, 653, 648, 653, 647, 653, 2, - 648, 653, 648, 653, 441, 648, 653, 446, 648, 653, - 451, 648, 653, 648, 653, 648, 653, 450, 648, 653, - - 448, 648, 653, 449, 648, 653, 459, 648, 653, 447, - 648, 653, 445, 648, 653, 445, 648, 653, 2, 445, - 648, 653, 445, 648, 653, 444, 445, 648, 653, 443, - 445, 648, 653, 648, 653, 647, 653, 2, 648, 653, - 469, 648, 653, 648, 653, 460, 648, 653, 458, 648, - 653, 470, 648, 653, 457, 648, 653, 457, 648, 653, - 456, 457, 648, 653, 456, 647, 653, 2, 456, 457, - 648, 653, 457, 648, 653, 457, 648, 653, 457, 648, - 653, 230, 648, 653, 648, 653, 222, 648, 653, 231, - 648, 653, 231, 648, 653, 221, 648, 653, 239, 648, - - 653, 239, 647, 653, 2, 239, 648, 653, 272, 648, - 653, 285, 648, 653, 373, 648, 653, 320, 648, 653, - 648, 653, 320, 648, 653, 320, 648, 653, 329, 648, - 653, 289, 648, 653, 271, 648, 653, 321, 648, 653, - 271, 648, 653, 271, 648, 653, 271, 648, 653, 271, - 648, 653, 271, 648, 653, 271, 648, 653, 271, 648, - 653, 271, 648, 653, 271, 648, 653, 271, 648, 653, - 482, 648, 653, 648, 653, 648, 653, 647, 653, 2, - 648, 653, 648, 653, 271, 648, 653, 648, 653, 648, - 653, 647, 653, 2, 648, 653, 336, 648, 653, 648, - - 653, 335, 648, 653, 334, 648, 653, 648, 653, 417, - 648, 653, 416, 648, 653, 418, 648, 653, 418, 648, - 653, 410, 648, 653, 410, 648, 653, 409, 410, 648, - 653, 409, 647, 653, 2, 409, 410, 648, 653, 402, - 410, 648, 653, 403, 410, 648, 653, 408, 410, 648, - 653, 410, 648, 653, 415, 648, 653, 415, 648, 653, - 2, 415, 648, 653, 413, 415, 648, 653, 414, 415, - 648, 653, 415, 648, 653, 409, 410, 648, 653, 409, - 647, 653, 2, 409, 410, 648, 653, 410, 648, 653, - 404, 410, 648, 653, 410, 648, 653, 410, 648, 653, - - 410, 648, 653, 410, 648, 653, 410, 648, 653, 255, - 648, 653, 255, 648, 653, 255, 647, 653, 2, 255, - 648, 653, 257, 648, 653, 255, 648, 653, 255, 648, - 653, 324, 648, 653, 324, 648, 653, 2, 324, 648, - 653, 324, 648, 653, 323, 324, 648, 653, 322, 324, - 648, 653, 337, 354, 648, 653, 337, 354, 648, 653, - 337, 353, 354, 648, 653, 353, 647, 653, 2, 353, - 354, 648, 653, 354, 648, 653, 354, 648, 653, 354, - 648, 653, 345, 354, 648, 653, 346, 354, 648, 653, - 261, 648, 653, 648, 653, 648, 653, 647, 653, 2, - - 648, 653, 648, 653, 262, 648, 653, 648, 653, 648, - 653, 513, 647, 653, 2, 648, 653, 648, 653, 512, - 648, 653, 648, 653, 430, 435, 648, 653, 430, 435, - 648, 653, 429, 647, 653, 2, 430, 435, 648, 653, - 427, 435, 648, 653, 435, 648, 653, 435, 648, 653, - 435, 648, 653, 420, 435, 648, 653, 421, 435, 648, - 653, 430, 435, 648, 653, 428, 430, 435, 648, 653, - 431, 647, 653, 435, 648, 653, 435, 648, 653, 423, - 648, 653, 440, 648, 653, 440, 648, 653, 439, 647, - 653, 2, 440, 648, 653, 437, 440, 648, 653, 440, - - 648, 653, 440, 648, 653, 440, 648, 653, 435, 648, - 653, 2, 435, 648, 653, 419, 435, 648, 653, 274, - 648, 653, 274, 648, 653, 276, 647, 653, 2, 274, - 648, 653, 274, 648, 653, 274, 648, 653, 646, 648, - 653, 646, 648, 653, 646, 648, 653, 2, 646, 648, - 653, 648, 653, 646, 648, 653, 648, 653, 648, 653, - 645, 647, 653, 2, 648, 653, 648, 653, 225, 648, - 653, 226, 648, 653, 223, 648, 653, 224, 648, 653, - 556, 558, 648, 653, 556, 558, 648, 653, 558, 648, - 653, 557, 647, 653, 2, 556, 558, 648, 653, 558, - - 648, 653, 558, 648, 653, 556, 558, 648, 653, 556, - 558, 648, 653, 558, 648, 653, 558, 648, 653, 554, - 558, 648, 653, 558, 648, 653, 333, 648, 653, 333, - 648, 653, 332, 333, 648, 653, 332, 647, 653, 2, - 332, 333, 648, 653, 333, 648, 653, 331, 333, 648, - 653, 330, 333, 648, 653, 465, 648, 653, 466, 648, - 653, 467, 648, 653, 468, 648, 653, 328, 648, 653, - 328, 648, 653, 2, 328, 648, 653, 327, 648, 653, - 328, 648, 653, 325, 648, 653, 326, 648, 653, 347, - 648, 653, 474, 476, 648, 653, 474, 476, 648, 653, - - 471, 474, 476, 648, 653, 471, 647, 653, 2, 471, - 474, 476, 648, 653, 476, 648, 653, 474, 476, 648, - 653, 614, 648, 653, 614, 648, 653, 614, 648, 653, - 616, 647, 653, 2, 614, 648, 653, 614, 648, 653, - 614, 648, 653, 612, 614, 648, 653, 614, 648, 653, - 614, 648, 653, 614, 648, 653, 614, 648, 653, 614, - 648, 653, 614, 648, 653, 487, 648, 653, 487, 648, - 653, 487, 648, 653, 488, 647, 653, 2, 487, 648, - 653, 487, 648, 653, 487, 648, 653, 487, 648, 653, - 487, 648, 653, 485, 487, 648, 653, 487, 648, 653, - - 487, 648, 653, 484, 488, 647, 653, 2, 487, 648, - 653, 487, 648, 653, 487, 648, 653, 565, 648, 653, - 565, 648, 653, 564, 565, 648, 653, 563, 647, 653, - 2, 565, 648, 653, 565, 648, 653, 565, 648, 653, - 564, 565, 648, 653, 565, 648, 653, 565, 648, 653, - 565, 648, 653, 564, 565, 648, 653, 565, 648, 653, - 565, 648, 653, 615, 648, 653, 615, 648, 653, 615, - 648, 653, 618, 647, 653, 2, 615, 648, 653, 615, - 648, 653, 615, 648, 653, 615, 648, 653, 615, 648, - 653, 615, 648, 653, 619, 647, 653, 2, 615, 648, - - 653, 615, 648, 653, 648, 653, 516, 647, 653, 2, - 648, 653, 648, 653, 648, 653, 515, 648, 653, 648, - 653, 648, 653, 522, 647, 653, 2, 648, 653, 648, - 653, 521, 648, 653, 521, 648, 653, 648, 653, 524, - 647, 653, 2, 648, 653, 648, 653, 523, 648, 653, - 523, 648, 653, 648, 653, 610, 648, 653, 610, 648, - 653, 597, 647, 653, 2, 610, 648, 653, 599, 610, - 648, 653, 610, 648, 653, 610, 648, 653, 610, 648, - 653, 648, 653, 647, 653, 2, 648, 653, 602, 648, - 653, 648, 653, 601, 648, 653, 648, 653, 610, 648, - - 653, 611, 647, 653, 610, 648, 653, 610, 648, 653, - 610, 648, 653, 610, 648, 653, 603, 610, 648, 653, - 609, 648, 653, 609, 648, 653, 2, 609, 648, 653, - 608, 609, 648, 653, 609, 648, 653, 594, 648, 653, - 511, 648, 653, 592, 648, 653, 592, 648, 653, 592, - 648, 653, 587, 647, 653, 2, 592, 648, 653, 592, - 648, 653, 592, 648, 653, 592, 648, 653, 592, 648, - 653, 592, 648, 653, 592, 648, 653,16973,16974,16975, - 586, 587, 647, 653, 2, 592, 648, 653, 592, 648, - 653,16973,16974,16975, 592, 648, 653, 592, 648, 653, - - 592, 648, 653, 496, 648, 653, 496, 648, 653, 496, - 648, 653, 494, 647, 653, 2, 496, 648, 653, 496, - 648, 653, 496, 648, 653, 596, 648, 653, 596, 648, - 653, 2, 596, 648, 653, 595, 596, 648, 653, 596, - 648, 653, 596, 648, 653, 518, 647, 653, 517, 648, - 653, 519, 648, 653, 519, 648, 653, 520, 647, 653, - 2, 519, 648, 653, 519, 648, 653, 581, 647, 653, - 580, 648, 653, 648, 653, 648, 653, 537, 647, 653, - 2, 648, 653, 648, 653, 636, 648, 653, 636, 648, - 653, 635, 647, 653, 2, 636, 648, 653, 636, 648, - - 653, 636, 648, 653, 636, 648, 653, 636, 648, 653, - 636, 648, 653, 636, 648, 653, 626, 648, 653, 626, - 648, 653, 625, 647, 653, 2, 626, 648, 653, 626, - 648, 653, 626, 648, 653, 626, 648, 653, 626, 648, - 653, 626, 648, 653, 626, 648, 653,17011, 622, 648, - 653, 622, 648, 653, 621, 647, 653, 2, 622, 648, - 653, 622, 648, 653, 622, 648, 653, 564, 565, 648, - 653, 565, 648, 653, 565, 648, 653, 565, 648, 653, - 565, 648, 653, 564, 565, 648, 653, 565, 648, 653, - 577, 648, 653, 577, 648, 653, 576, 647, 653, 2, - - 577, 648, 653, 577, 648, 653, 648, 653, 528, 647, - 653, 648, 653, 527, 648, 653, 527, 648, 653, 648, - 653, 648, 653, 529, 647, 653, 2, 648, 653, 648, - 653, 526, 647, 653, 648, 653, 525, 648, 653, 525, - 648, 653, 565, 648, 653, 565, 648, 653, 648, 653, - 509, 648, 653, 509, 648, 653, 531, 647, 653, 530, - 648, 653, 357, 648, 653, 357, 648, 653, 357, 648, - 653, 647, 653, 2, 357, 648, 653, 357, 648, 653, - 357, 648, 653, 356, 357, 648, 653, 357, 648, 653, - 361, 648, 653, 362, 648, 653, 363, 410, 648, 653, - - 364, 410, 648, 653, 367, 648, 653, 367, 648, 653, - 2, 367, 648, 653, 367, 648, 653, 367, 648, 653, - 372, 648, 653, 372, 648, 653, 371, 372, 648, 653, - 371, 647, 653, 2, 371, 372, 648, 653, 368, 372, - 648, 653, 369, 372, 648, 653, 370, 372, 648, 653, - 372, 648, 653, 648, 653, 647, 653, 2, 648, 653, - 648, 653, 349, 648, 653, 349, 648, 653, 350, 648, - 653, 348, 648, 653, 351, 648, 653, 352, 648, 653, - 546, 550, 648, 653, 546, 550, 648, 653, 550, 648, - 653, 549, 647, 653, 2, 546, 550, 648, 653, 550, - - 648, 653, 550, 648, 653, 550, 648, 653, 220, 648, - 653, 220, 648, 653, 2, 220, 648, 653, 220, 648, - 653, 220, 648, 653, 219, 220, 648, 653, 217, 220, - 648, 653, 218, 647, 653, 2, 220, 648, 653, 220, - 648, 653, 220, 648, 653, 220, 648, 653, 220, 648, - 653, 220, 648, 653, 220, 648, 653, 219, 220, 648, - 653, 220, 648, 653, 220, 648, 653, 220, 648, 653, - 92, 219, 220, 648, 653, 220, 648, 653, 92, 219, - 220, 648, 653, 92, 219, 220, 648, 653, 92, 219, - 220, 648, 653, 220, 648, 653, 217, 220, 648, 653, - - 220, 648, 653, 220, 648, 653, 220, 648, 653, 648, - 653, 67, 648, 653, 648, 653, 647, 653, 2, 648, - 653, 648, 653, 68, 648, 653, 648, 653, 22, 648, - 653, 22, 648, 653, 2, 22, 648, 653, 22, 648, - 653, 22, 648, 653, 22, 648, 653, 22, 648, 653, - 22, 648, 653, 213, 647, 653, 220, 648, 653, 198, - 219, 220, 648, 653, 200, 219, 220, 648, 653, 202, - 219, 220, 648, 653, 209, 210, 648, 653, 209, 210, - 648, 653, 209, 210, 648, 653, 208, 647, 653, 2, - 209, 210, 648, 653, 210, 648, 653, 210, 648, 653, - - 209, 210, 648, 653, 210, 648, 653, 41, 648, 653, - 41, 648, 653, 648, 653, 42, 648, 653, 42, 648, - 653, 43, 647, 653, 2, 42, 648, 653, 42, 648, - 653, 42, 648, 653, 40, 648, 653, 648, 653, 204, - 648, 653, 204, 648, 653, 648, 653, 205, 648, 653, - 205, 648, 653, 195, 648, 653, 648, 653, 648, 653, - 189, 648, 653, 189, 648, 653, 191, 648, 653, 191, - 648, 653, 192, 648, 653, 193, 648, 653, 193, 648, - 653, 193, 647, 653, 2, 193, 648, 653, 193, 648, - 653, 194, 648, 653, 585, 647, 653, 584, 648, 653, - - 114, 648, 653, 114, 648, 653, 114, 648, 653, 112, - 648, 653, 112, 648, 653, 112, 648, 653, 113, 648, - 653, 113, 648, 653, 113, 648, 653, 115, 648, 653, - 115, 648, 653, 115, 648, 653, 120, 648, 653, 120, - 648, 653, 119, 647, 653, 2, 120, 648, 653, 120, - 648, 653, 120, 648, 653, 648, 653, 648, 653, 51, - 648, 653, 51, 647, 653, 2, 51, 648, 653, 648, - 653, 648, 653, 647, 653, 2, 648, 653, 648, 653, - 73, 648, 653,16458, 648, 653, 36, 648, 653, 36, - 648, 653, 34, 35, 647, 653, 2, 36, 648, 653, - - 36, 648, 653, 36, 648, 653, 36, 648, 653, 648, - 653, 31, 648, 653, 31, 648, 653, 48, 648, 653, - 48, 648, 653, 2, 48, 648, 653, 48, 648, 653, - 648, 653, 648, 653, 2, 648, 653, 648, 653, 75, - 648, 653, 77, 648, 653, 648, 653, 648, 653, 78, - 647, 653, 2, 648, 653, 648, 653, 88, 647, 653, - 87, 648, 653, 87, 648, 653, 87, 648, 653, 648, - 653, 82, 648, 653, 82, 648, 653, 82, 648, 653, - 82, 648, 653, 648, 653, 83, 648, 653, 83, 648, - 653, 84, 647, 653, 648, 653, 648, 653, 560, 648, - - 653, 648, 653, 648, 653, 561, 647, 653, 2, 648, - 653, 562, 648, 653, 648, 653, 270, 648, 653, 270, - 648, 653, 2, 270, 648, 653, 270, 648, 653, 266, - 270, 648, 653, 267, 270, 648, 653, 375, 401, 648, - 653, 375, 401, 648, 653, 400, 647, 653, 2, 375, - 401, 648, 653, 396, 401, 648, 653, 401, 648, 653, - 375, 401, 648, 653, 401, 648, 653, 376, 401, 648, - 653, 376, 401, 648, 653, 2, 376, 401, 648, 653, - 378, 401, 648, 653, 401, 648, 653, 391, 401, 648, - 653, 392, 401, 648, 653, 401, 648, 653, 401, 648, - - 653, 2, 401, 648, 653, 393, 401, 648, 653, 394, - 401, 648, 653, 383, 388, 648, 653, 383, 388, 648, - 653, 387, 647, 653, 2, 383, 388, 648, 653, 388, - 648, 653, 383, 388, 648, 653, 386, 648, 653, 386, - 648, 653, 385, 647, 653, 2, 386, 648, 653, 386, - 648, 653, 374, 401, 648, 653, 374, 401, 648, 653, - 377, 401, 648, 653, 377, 400, 647, 653, 2, 377, - 401, 648, 653, 379, 401, 648, 653, 380, 401, 648, - 653, 401, 648, 653, 389, 401, 648, 653, 390, 401, - 648, 653, 464, 648, 653, 464, 648, 653, 463, 464, - - 648, 653, 463, 647, 653, 2, 463, 464, 648, 653, - 464, 648, 653, 461, 464, 648, 653, 462, 464, 648, - 653, 6, 648, 653, 6, 648, 653, 2, 6, 648, - 653, 6, 648, 653, 6, 648, 653, 573, 648, 653, - 573, 648, 653, 2, 573, 648, 653, 573, 648, 653, - 573, 648, 653, 573, 648, 653, 573, 648, 653, 573, - 648, 653, 573, 648, 653, 559, 648, 653, 298, 648, - 653, 298, 648, 653, 298, 648, 653, 297, 647, 653, - 2, 298, 648, 653, 293, 298, 648, 653, 298, 648, - 653, 290, 298, 648, 653, 292, 298, 648, 653, 298, - - 648, 653, 292, 298, 648, 653, 291, 298, 648, 653, - 303, 648, 653, 303, 648, 653, 302, 647, 653, 2, - 303, 648, 653, 300, 303, 648, 653, 303, 648, 653, - 303, 648, 653, 303, 648, 653, 311, 648, 653, 311, - 648, 653, 307, 647, 653, 2, 311, 648, 653, 304, - 648, 653, 648, 653, 305, 648, 653, 306, 648, 653, - 311, 648, 653, 318, 648, 653, 318, 648, 653, 319, - 647, 653, 2, 318, 648, 653, 312, 648, 653, 648, - 653, 318, 648, 653, 313, 648, 653, 314, 648, 653, - 1, 650, 652, 277, 280, 650, 652, 282, 451, 446, - - 442, 451, 446, 447, 458, 470, 458, 470, 239, 239, - 272, 285, 355, 650, 652, 271, 264, 271, 271, 271, - 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, - 271, 271, 271, 271, 271, 265, 271, 650, 652, 334, - 409, 408, 408, 409, 407, 256, 337, 337, 1, 337, - 337, 353, 353, 339, 340, 650, 338, 652, 262, 262, - 512, 512, 430, 430, 1, 430, 433, 650, 434, 652, - 430, 428, 430, 433, 650, 434, 652, 432, 438, 438, - 650, 438, 652, 436, 276, 276, 275, 646, 646, 1, - 646, 646, 651, 649, 650, 646, 649, 652, 645, 1, - - 645, 650, 652, 556, 556, 1, 556, 574, 555, 652, - 556, 554, 554, 553, 555, 652, 332, 328, 328, 1, - 328, 328, 650, 328, 652, 347, 474, 474, 1, 474, - 471, 474, 471, 475, 472, 650, 473, 474, 652, 639, - 644, 650, 567, 652, 612, 613, 642, 642, 643, 642, - 642, 566, 567, 652, 640, 489, 484, 486, 642, 486, - 642, 643, 484, 486, 642, 486, 642, 486, 642, 486, - 642, 564, 564, 564, 613, 566, 567, 652, 638, 515, - 514, 515, 522, 521, 521, 652, 524, 523, 523, 523, - 652, 600, 601, 601, 606, 593, 594, 511,16973,16974, - - 16975, 586,16973,16974,16975, 642, 643,16973,16974,16975, - 586, 642, 642, 642,16973,16974,16975, 642, 652,16973, - 16974,16975, 494, 495, 517, 519, 519, 1, 519, 519, - 650, 519, 652, 580, 537, 1, 537, 650, 652, 637, - 633, 650, 633, 652, 613, 634, 634, 628, 629, 623, - 650, 623, 652,17011, 624, 624, 620, 650, 620, 652, - 564, 564, 527, 527, 652, 529, 1, 529, 650, 652, - 525, 525, 652, 509, 509, 652, 530, 530, 356, 356, - 359, 358, 360, 365, 366, 371, 370, 370, 348, 348, - 546, 546, 1, 546, 548, 650, 548, 652, 547, 548, - - 652, 219, 217, 216, 215, 216, 216, 92, 197, 212, - 650, 211, 652, 219, 177, 196, 105, 92, 219, 92, - 219, 196, 105, 92, 219, 92, 219, 92, 219, 217, - 3, 211, 652, 67, 67, 68, 68, 21, 21, 650, - 21, 652, 211, 652, 198, 219, 198, 200, 219, 200, - 202, 219, 202, 209, 209, 1, 209, 209, 209, 207, - 650, 206, 652, 209, 41, 41, 652, 40, 204, 204, - 652, 205, 205, 652, 189, 189, 652, 191, 191, 652, - 193, 193, 1, 193, 193, 650, 193, 652, 584, 114, - 114, 1, 114, 114, 650, 114, 652, 112, 112, 1, - - 112, 112, 650, 112, 652, 113, 113, 1, 113, 113, - 650, 113, 652, 115, 115, 1, 115, 115, 650, 115, - 652, 51, 51, 1, 51, 51, 650, 652, 73,16458, - 73,16458, 34, 1, 34, 35, 35, 650, 35, 652, - 31, 31, 652, 48, 48, 1, 48, 48, 650, 48, - 652, 76, 1, 76, 650, 652, 77, 78, 1, 78, - 650, 652, 87, 87, 87, 82, 82, 82, 82, 652, - 83, 83, 652, 560, 561, 1, 561, 652, 268, 375, - 375, 1, 375, 375, 650, 375, 652, 395, 376, 376, - 1, 376, 383, 383, 1, 383, 384, 383, 652, 386, - - 386, 1, 386, 386, 650, 386, 652, 374, 374, 1, - 374, 377, 650, 652, 463, 652, 559, 301, 301, 650, - 301, 652, 299, 311, 311, 1, 311, 311, 650, 311, - 652, 318, 318, 1, 318, 318, 650, 318, 652, 446, - 446, 229, 229, 355, 477, 479, 271, 263, 271, 271, - 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, - 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, - 271, 477, 479, 407, 254, 344, 344, 340, 341, 338, - 262, 262, 512, 512, 426, 426, 432, 275, 556, 553, - 1, 475, 569, 570, 491, 566, 643, 641, 490, 643, - - 566, 515, 515, 521, 523, 601, 601, 606,16973,16974, - 16975, 643,16973,16974,16975,16973,16974,16975,16973,16974, - 16975, 8782, 8819, 624, 624, 624, 527, 525, 509, 530, - 530, 530, 356, 356, 348, 215, 215, 216, 92, 92, - 97, 97, 96, 92, 178, 174, 180, 101, 102, 103, - 100, 104, 92, 92, 219, 92, 219, 92, 219, 68, - 68, 199, 201, 203, 209, 204, 205, 73,16458, 8266, - 73,16458, 31, 87, 87, 82, 83, 269, 399, 399, - 381, 5, 571, 572, 296, 296, 310, 310, 317, 317, - 288, 443, 228, 227, 228, 478, 480, 480, 271, 271, - - 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, - 271, 271, 271, 271, 271, 271, 271, 271, 288, 478, - 288, 480, 343, 342, 343, 425, 424, 425, 556, 568, - 491, 490, 617, 588, 8782, 530, 530, 214, 16, 92, - 92, 4, 176, 179, 175, 181, 173, 171, 167, 169, - 164, 182, 184, 186, 166, 160, 156, 154, 152, 162, - 158, 71, 62, 91, 92, 71, 92, 219, 92, 219, - 209, 80, 87, 87, 398, 397, 398, 381, 295, 294, - 295, 309, 308, 309, 316, 315, 316, 443, 443, 227, - 287, 286, 271, 253, 271, 271, 271, 271, 271, 271, - - 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, - 271, 271, 271, 405, 342, 424, 422, 556, 544, 492, - 497, 507, 505, 604, 530, 530, 92, 172, 168, 170, - 165, 183, 185, 187, 161, 157, 155, 153, 163, 159, - 141, 145, 146, 148, 150, 143, 49, 53, 89, 50, - 54, 92, 66, 89, 95, 95, 95, 95, 92, 219, - 209, 190, 188, 81, 87, 397, 382, 294, 308, 315, - 443, 453, 253, 250, 271, 271, 271, 271, 271, 271, - 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, - 252, 259, 271, 405, 411, 552, 556, 582, 500, 543, - - 497, 507, 505, 501, 604, 607, 517, 632, 9, 7, - 8, 92, 142, 147, 149, 151, 144, 137, 139, 133, - 135, 132, 89, 89, 58, 110, 39, 55, 108, 92, - 66, 66, 66, 95, 97, 95, 92, 95, 92, 95, - 95, 92, 219, 99, 209, 190, 190, 188, 188, 116, - 455, 452, 250, 252, 273, 271, 241, 244, 243, 271, - 247, 271, 271, 271, 236, 271, 271, 240, 251, 271, - 271, 271, 271, 412, 556, 542, 500, 502, 501, 483, - 490, 8783, 8782, 575, 12, 14, 92, 138, 140, 134, - 136, 129, 130, 127, 79, 63, 65, 111, 92, 66, - - 97, 66, 47, 38, 95, 92, 95, 95, 92, 95, - 92, 95, 92, 95, 92, 219, 209, 117, 85, 241, - 244, 243, 247, 236, 240, 251, 271, 271, 271, 238, - 271, 271, 236, 271, 232, 271, 271, 242, 406, 551, - 556, 551, 538, 508, 535, 510, 502, 490, 605, 8781, - 8782, 578, 10, 11, 13, 92, 131, 128, 125, 123, - 60, 72, 61, 64, 92, 29, 28, 72, 92, 95, - 92, 95, 95, 92, 95, 92, 219, 209, 44, 86, - 85, 454, 238, 232, 242, 271, 271, 271, 238, 271, - 271, 271, 232, 8450, 264,16642, 245, 406, 498, 508, - - 579, 631, 506, 493, 510, 583, 630, 605, 532, 533, - 92, 126, 124, 90, 45, 106, 57, 52, 92, 90, - 90, 45, 45, 92, 95, 95, 92, 219, 92, 219, - 98, 209, 98, 86, 85, 245, 249, 481, 248, 246, - 271, 237, 271, 271, 8450, 263, 260, 498, 504, 503, - 506, 499, 493, 540, 598, 15, 92, 121, 46, 70, - 17, 37, 109, 32, 92, 17, 17, 32, 32, 92, - 95, 92, 95, 92, 92, 94, 96, 118, 86, 249, - 248, 246, 237, 481, 481, 271, 237, 271, 271, 539, - 541, 541, 536, 504, 503, 499, 92, 122, 56, 19, - - 69, 92, 19, 19, 92, 95, 92, 95, 94, 92, - 92, 91, 94, 92, 94, 92, 92, 271, 271, 233, - 534, 92, 59, 92, 92, 23, 92, 95, 92, 95, - 93, 92, 233, 235, 271, 233, 545, 107, 30, 92, - 95, 92, 95, 92, 92, 18, 33, 235, 235, 271, - 95, 95, 92, 95, 95, 95, 92, 95, 95, 92, - 95, 92, 92, 20, 234, 24, 92, 95, 95, 92, - 95, 92, 92, 234, 234, 25, 27, 92, 95, 95, - 92, 95, 92, 95, 92, 95, 92, 95, 92, 92, - 95, 92, 95, 92, 95, 92, 92, 92, 95, 92, - - 95, 92, 92, 92, 95, 92, 95, 92, 26, 92, - 95, 92, 95, 92, 92, 95, 92, 95, 92, 95, - 92, 95, 92, 95, 92, 95, 92, 95, 92, 95 - } ; - -static yyconst short int yy_accept[4127] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 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, 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, 6, 6, - 6, 6, 6, 6, 6, 7, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 9, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 11, 12, 12, 12, 12, 12, 12, 12, 12, - - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 13, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 15, 16, 17, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 19, 21, 23, 25, 28, - - 30, 33, 36, 39, 43, 47, 50, 53, 56, 59, - 62, 66, 70, 73, 76, 78, 80, 83, 85, 88, - 91, 94, 96, 98, 101, 104, 107, 110, 113, 116, - 119, 123, 126, 130, 134, 136, 138, 141, 144, 146, - 149, 152, 155, 158, 161, 165, 168, 173, 176, 179, - 182, 185, 187, 190, 193, 196, 199, 202, 205, 209, - 212, 215, 218, 221, 223, 226, 229, 232, 235, 238, - 241, 244, 247, 250, 253, 256, 259, 262, 265, 268, - 271, 274, 276, 278, 280, 283, 285, 288, 290, 292, - 294, 297, 300, 302, 305, 308, 310, 313, 316, 319, - - 322, 325, 328, 332, 335, 340, 344, 348, 352, 355, - 358, 361, 365, 369, 373, 376, 380, 383, 388, 391, - 395, 398, 401, 404, 407, 410, 413, 416, 419, 423, - 426, 429, 432, 435, 438, 442, 445, 449, 453, 457, - 461, 466, 469, 474, 477, 480, 483, 487, 491, 494, - 496, 498, 500, 503, 505, 508, 510, 512, 515, 518, - 520, 523, 525, 529, 533, 536, 541, 545, 548, 551, - 554, 558, 562, 566, 571, 574, 577, 580, 583, 586, - 589, 592, 596, 600, 603, 606, 609, 612, 616, 620, - 623, 626, 629, 633, 636, 639, 642, 645, 648, 652, - - 654, 657, 659, 661, 664, 667, 669, 672, 675, 678, - 681, 685, 689, 692, 695, 700, 703, 706, 710, 714, - 717, 720, 724, 727, 730, 733, 737, 740, 745, 748, - 752, 756, 759, 762, 765, 768, 771, 774, 778, 781, - 784, 787, 790, 793, 797, 801, 806, 809, 815, 818, - 822, 825, 828, 831, 834, 838, 841, 844, 848, 851, - 854, 857, 860, 863, 866, 869, 872, 875, 878, 882, - 885, 888, 891, 894, 898, 901, 904, 908, 912, 915, - 918, 921, 924, 928, 931, 935, 938, 941, 945, 948, - 951, 954, 958, 961, 964, 967, 970, 973, 976, 980, - - 983, 986, 989, 992, 995, 998, 1002, 1005, 1007, 1010, - 1013, 1015, 1017, 1020, 1022, 1024, 1027, 1030, 1032, 1035, - 1038, 1040, 1043, 1046, 1048, 1051, 1054, 1056, 1059, 1062, - 1065, 1069, 1073, 1076, 1079, 1082, 1084, 1086, 1089, 1092, - 1094, 1097, 1099, 1102, 1105, 1108, 1111, 1114, 1117, 1121, - 1124, 1127, 1131, 1135, 1138, 1141, 1144, 1147, 1150, 1153, - 1156, 1160, 1163, 1166, 1169, 1172, 1175, 1181, 1185, 1189, - 1195, 1198, 1201, 1204, 1207, 1210, 1213, 1216, 1220, 1223, - 1226, 1229, 1232, 1236, 1240, 1243, 1246, 1249, 1252, 1255, - 1258, 1261, 1265, 1268, 1271, 1274, 1276, 1278, 1281, 1284, - - 1286, 1289, 1292, 1295, 1299, 1302, 1305, 1308, 1311, 1314, - 1317, 1320, 1323, 1326, 1330, 1333, 1336, 1339, 1342, 1345, - 1349, 1352, 1355, 1358, 1362, 1365, 1368, 1372, 1375, 1378, - 1381, 1384, 1388, 1391, 1394, 1397, 1400, 1404, 1407, 1409, - 1412, 1414, 1417, 1420, 1422, 1424, 1427, 1430, 1432, 1435, - 1437, 1440, 1443, 1446, 1449, 1451, 1454, 1457, 1460, 1463, - 1466, 1469, 1472, 1474, 1478, 1481, 1484, 1488, 1491, 1494, - 1497, 1501, 1505, 1508, 1511, 1515, 1518, 1521, 1524, 1527, - 1531, 1534, 1539, 1543, 1547, 1551, 1554, 1556, 1558, 1561, - 1563, 1566, 1569, 1572, 1575, 1578, 1581, 1585, 1589, 1592, - - 1595, 1600, 1603, 1606, 1609, 1612, 1615, 1619, 1622, 1625, - 1629, 1633, 1636, 1640, 1643, 1646, 1649, 1652, 1655, 1658, - 1662, 1665, 1668, 1671, 1676, 1679, 1684, 1689, 1694, 1697, - 1701, 1704, 1707, 1710, 1712, 1715, 1717, 1719, 1722, 1724, - 1727, 1729, 1732, 1735, 1739, 1742, 1745, 1748, 1751, 1754, - 1757, 1760, 1765, 1770, 1775, 1779, 1783, 1787, 1790, 1795, - 1798, 1801, 1805, 1808, 1811, 1814, 1816, 1819, 1822, 1825, - 1829, 1832, 1835, 1838, 1840, 1843, 1846, 1848, 1851, 1854, - 1857, 1859, 1861, 1864, 1867, 1870, 1873, 1876, 1879, 1882, - 1885, 1889, 1892, 1895, 1898, 1901, 1904, 1907, 1910, 1913, - - 1916, 1919, 1922, 1925, 1928, 1931, 1934, 1937, 1940, 1943, - 1946, 1950, 1953, 1956, 1958, 1960, 1963, 1966, 1970, 1972, - 1974, 1976, 1979, 1981, 1985, 1987, 1990, 1993, 1997, 2001, - 2004, 2007, 2010, 2012, 2015, 2018, 2021, 2024, 2028, 2031, - 2033, 2035, 2038, 2040, 2043, 2046, 2048, 2050, 2053, 2056, - 2058, 2061, 2064, 2067, 2070, 2072, 2075, 2078, 2081, 2084, - 2086, 2089, 2092, 2095, 2097, 2099, 2102, 2104, 2106, 2109, - 2112, 2115, 2117, 2120, 2123, 2127, 2130, 2134, 2138, 2142, - 2146, 2149, 2154, 2158, 2161, 2165, 2168, 2172, 2176, 2181, - 2185, 2188, 2192, 2196, 2199, 2202, 2206, 2210, 2214, 2218, - - 2222, 2225, 2230, 2233, 2237, 2240, 2243, 2246, 2250, 2253, - 2257, 2261, 2265, 2269, 2274, 2278, 2282, 2285, 2289, 2293, - 2296, 2299, 2303, 2306, 2311, 2314, 2318, 2322, 2325, 2328, - 2332, 2335, 2338, 2341, 2344, 2348, 2351, 2354, 2357, 2360, - 2363, 2366, 2369, 2372, 2375, 2378, 2381, 2385, 2389, 2392, - 2396, 2400, 2403, 2407, 2411, 2414, 2417, 2420, 2424, 2428, - 2431, 2434, 2437, 2440, 2443, 2446, 2450, 2453, 2455, 2458, - 2461, 2464, 2467, 2470, 2473, 2477, 2480, 2482, 2485, 2488, - 2491, 2491, 2492, 2493, 2494, 2495, 2496, 2496, 2496, 2497, - 2498, 2499, 2499, 2499, 2499, 2499, 2500, 2500, 2500, 2501, - - 2502, 2503, 2503, 2504, 2504, 2505, 2505, 2505, 2505, 2505, - 2506, 2507, 2507, 2507, 2508, 2508, 2509, 2509, 2509, 2509, - 2509, 2509, 2509, 2509, 2509, 2509, 2510, 2511, 2512, 2512, - 2512, 2512, 2512, 2512, 2512, 2512, 2512, 2512, 2512, 2512, - 2512, 2512, 2513, 2514, 2514, 2515, 2516, 2516, 2516, 2517, - 2518, 2519, 2520, 2521, 2522, 2523, 2524, 2525, 2526, 2527, - 2528, 2529, 2530, 2531, 2532, 2533, 2534, 2534, 2535, 2535, - 2535, 2535, 2535, 2536, 2537, 2537, 2538, 2539, 2540, 2541, - 2542, 2543, 2544, 2545, 2545, 2545, 2545, 2545, 2545, 2545, - 2546, 2546, 2546, 2546, 2546, 2546, 2546, 2547, 2548, 2549, - - 2551, 2553, 2554, 2554, 2555, 2555, 2555, 2557, 2559, 2559, - 2559, 2559, 2559, 2560, 2560, 2561, 2561, 2561, 2561, 2562, - 2562, 2563, 2564, 2565, 2567, 2567, 2567, 2569, 2571, 2571, - 2571, 2572, 2574, 2576, 2578, 2579, 2579, 2580, 2582, 2584, - 2585, 2586, 2587, 2587, 2588, 2588, 2589, 2590, 2592, 2593, - 2593, 2594, 2596, 2599, 2599, 2600, 2600, 2601, 2602, 2603, - 2604, 2605, 2606, 2608, 2608, 2608, 2609, 2611, 2611, 2612, - 2612, 2612, 2613, 2614, 2617, 2618, 2619, 2620, 2622, 2624, - 2626, 2627, 2628, 2628, 2629, 2631, 2631, 2633, 2634, 2634, - 2635, 2637, 2640, 2640, 2640, 2641, 2643, 2645, 2646, 2646, - - 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647, - 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647, 2647, - 2648, 2650, 2651, 2652, 2655, 2655, 2655, 2656, 2657, 2657, - 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, 2657, - 2657, 2658, 2658, 2658, 2660, 2663, 2666, 2668, 2670, 2672, - 2673, 2674, 2674, 2674, 2674, 2674, 2674, 2674, 2674, 2674, - 2674, 2674, 2675, 2675, 2675, 2675, 2675, 2675, 2675, 2676, - 2676, 2676, 2676, 2679, 2679, 2679, 2680, 2680, 2681, 2682, - 2682, 2683, 2683, 2684, 2684, 2685, 2687, 2687, 2688, 2688, - 2689, 2690, 2692, 2692, 2692, 2693, 2693, 2693, 2693, 2693, - - 2694, 2694, 2695, 2695, 2695, 2695, 2695, 2695, 2696, 2696, - 2696, 2696, 2697, 2698, 2699, 2699, 2699, 2702, 2703, 2703, - 2706, 2706, 2706, 2711, 2713, 2714, 2718, 2719, 2723, 2723, - 2723, 2723, 2723, 2723, 2723, 2723, 2723, 2723, 2723, 2723, - 2724, 2724, 2725, 2725, 2726, 2727, 2728, 2730, 2732, 2734, - 2735, 2735, 2736, 2736, 2737, 2738, 2739, 2740, 2741, 2743, - 2745, 2746, 2746, 2746, 2746, 2746, 2747, 2748, 2749, 2750, - 2752, 2754, 2754, 2755, 2756, 2757, 2759, 2761, 2762, 2762, - 2762, 2762, 2763, 2763, 2763, 2764, 2766, 2766, 2767, 2767, - 2768, 2769, 2770, 2771, 2771, 2772, 2774, 2774, 2775, 2777, - - 2777, 2778, 2778, 2779, 2779, 2779, 2779, 2780, 2780, 2781, - 2781, 2782, 2783, 2784, 2784, 2785, 2786, 2787, 2788, 2789, - 2789, 2789, 2790, 2791, 2791, 2792, 2793, 2795, 2797, 2799, - 2799, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, 2802, - 2803, 2804, 2805, 2805, 2805, 2807, 2808, 2809, 2809, 2809, - 2810, 2810, 2810, 2810, 2810, 2810, 2812, 2814, 2815, 2815, - 2815, 2815, 2816, 2816, 2816, 2816, 2816, 2816, 2816, 2816, - 2816, 2816, 2816, 2816, 2816, 2816, 2816, 2816, 2817, 2817, - 2817, 2817, 2817, 2817, 2817, 2817, 2817, 2818, 2818, 2818, - 2818, 2818, 2818, 2818, 2818, 2818, 2818, 2820, 2820, 2822, - - 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, 2823, - 2824, 2824, 2824, 2824, 2824, 2824, 2824, 2824, 2826, 2828, - 2830, 2831, 2831, 2831, 2831, 2831, 2832, 2834, 2834, 2835, - 2836, 2836, 2836, 2836, 2837, 2837, 2838, 2839, 2841, 2843, - 2843, 2843, 2845, 2845, 2845, 2847, 2848, 2848, 2848, 2850, - 2851, 2851, 2851, 2853, 2854, 2855, 2856, 2858, 2859, 2859, - 2860, 2860, 2862, 2864, 2864, 2865, 2865, 2866, 2868, 2868, - 2869, 2869, 2870, 2872, 2872, 2873, 2875, 2875, 2875, 2876, - 2878, 2879, 2881, 2882, 2883, 2885, 2887, 2889, 2890, 2891, - 2892, 2894, 2896, 2898, 2899, 2900, 2902, 2904, 2906, 2907, - - 2908, 2910, 2912, 2914, 2915, 2916, 2918, 2920, 2922, 2922, - 2922, 2922, 2922, 2923, 2924, 2924, 2925, 2926, 2927, 2928, - 2929, 2929, 2929, 2929, 2929, 2931, 2931, 2933, 2933, 2934, - 2934, 2935, 2936, 2937, 2939, 2941, 2941, 2941, 2942, 2944, - 2945, 2946, 2948, 2950, 2952, 2952, 2953, 2953, 2954, 2955, - 2956, 2957, 2958, 2958, 2959, 2959, 2960, 2961, 2962, 2963, - 2964, 2965, 2966, 2966, 2967, 2968, 2969, 2971, 2971, 2972, - 2974, 2974, 2974, 2975, 2975, 2976, 2976, 2977, 2978, 2979, - 2979, 2980, 2980, 2981, 2982, 2984, 2986, 2988, 2989, 2990, - 2991, 2993, 2993, 2993, 2994, 2995, 2997, 2998, 3000, 3001, - - 3002, 3004, 3006, 3008, 3009, 3010, 3012, 3013, 3013, 3013, - 3014, 3015, 3016, 3016, 3016, 3016, 3016, 3017, 3017, 3018, - 3018, 3018, 3019, 3021, 3023, 3024, 3025, 3026, 3028, 3028, - 3028, 3030, 3032, 3033, 3034, 3036, 3036, 3036, 3038, 3040, - 3040, 3040, 3040, 3040, 3041, 3041, 3041, 3042, 3042, 3042, - 3042, 3042, 3042, 3042, 3042, 3043, 3043, 3044, 3044, 3044, - 3044, 3044, 3044, 3044, 3044, 3044, 3044, 3044, 3044, 3044, - 3044, 3044, 3044, 3044, 3044, 3044, 3044, 3044, 3045, 3045, - 3045, 3045, 3046, 3046, 3046, 3047, 3047, 3047, 3048, 3048, - 3049, 3050, 3051, 3052, 3053, 3054, 3055, 3056, 3057, 3058, - - 3059, 3060, 3061, 3062, 3063, 3064, 3065, 3066, 3067, 3068, - 3069, 3069, 3070, 3070, 3071, 3071, 3071, 3072, 3073, 3073, - 3074, 3074, 3075, 3075, 3075, 3075, 3075, 3075, 3076, 3077, - 3077, 3078, 3078, 3079, 3080, 3080, 3081, 3081, 3081, 3082, - 3082, 3083, 3083, 3084, 3084, 3085, 3086, 3086, 3087, 3087, - 3087, 3087, 3087, 3088, 3089, 3089, 3090, 3090, 3090, 3091, - 3091, 3092, 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, - 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, - 3093, 3094, 3095, 3095, 3096, 3096, 3096, 3096, 3096, 3096, - 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3097, - - 3098, 3098, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, - 3099, 3099, 3099, 3099, 3100, 3100, 3100, 3100, 3100, 3101, - 3101, 3101, 3101, 3101, 3101, 3101, 3102, 3102, 3103, 3103, - 3104, 3105, 3106, 3106, 3106, 3107, 3107, 3108, 3109, 3109, - 3109, 3109, 3109, 3112, 3116, 3119, 3122, 3122, 3122, 3122, - 3122, 3122, 3122, 3122, 3122, 3122, 3122, 3123, 3123, 3123, - 3123, 3123, 3123, 3123, 3123, 3123, 3124, 3125, 3126, 3127, - 3127, 3127, 3127, 3127, 3127, 3128, 3129, 3130, 3131, 3132, - 3133, 3133, 3134, 3134, 3135, 3135, 3136, 3136, 3136, 3136, - 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3137, 3139, 3139, - - 3139, 3140, 3140, 3141, 3141, 3142, 3142, 3143, 3143, 3144, - 3145, 3145, 3145, 3145, 3145, 3145, 3145, 3145, 3145, 3145, - 3145, 3145, 3145, 3145, 3145, 3145, 3145, 3145, 3145, 3146, - 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, 3146, - 3146, 3146, 3146, 3146, 3146, 3146, 3147, 3147, 3147, 3147, - 3147, 3147, 3147, 3147, 3148, 3148, 3148, 3148, 3148, 3148, - 3148, 3148, 3148, 3148, 3148, 3149, 3149, 3149, 3149, 3149, - 3150, 3150, 3151, 3151, 3151, 3151, 3151, 3152, 3152, 3152, - 3152, 3152, 3152, 3153, 3153, 3153, 3153, 3153, 3153, 3153, - 3153, 3153, 3153, 3153, 3153, 3153, 3153, 3153, 3154, 3154, - - 3154, 3154, 3154, 3154, 3154, 3154, 3154, 3154, 3154, 3154, - 3154, 3154, 3154, 3154, 3154, 3154, 3154, 3154, 3154, 3154, - 3154, 3154, 3154, 3154, 3154, 3154, 3154, 3154, 3154, 3154, - 3154, 3154, 3156, 3158, 3160, 3160, 3160, 3160, 3160, 3161, - 3161, 3162, 3162, 3162, 3163, 3164, 3165, 3165, 3166, 3166, - 3166, 3167, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3170, - 3170, 3171, 3171, 3173, 3173, 3174, 3175, 3176, 3177, 3178, - 3178, 3178, 3179, 3180, 3180, 3181, 3181, 3181, 3181, 3182, - 3182, 3183, 3184, 3184, 3185, 3186, 3186, 3187, 3187, 3188, - 3188, 3189, 3189, 3190, 3190, 3191, 3191, 3192, 3192, 3192, - - 3193, 3193, 3193, 3193, 3193, 3193, 3193, 3194, 3196, 3196, - 3196, 3196, 3196, 3196, 3196, 3196, 3196, 3196, 3196, 3196, - 3196, 3196, 3196, 3196, 3196, 3196, 3196, 3196, 3196, 3196, - 3196, 3196, 3197, 3198, 3199, 3200, 3201, 3202, 3203, 3204, - 3205, 3206, 3207, 3208, 3209, 3210, 3211, 3212, 3213, 3214, - 3215, 3216, 3217, 3218, 3219, 3221, 3223, 3223, 3223, 3223, - 3223, 3224, 3226, 3226, 3226, 3227, 3229, 3229, 3229, 3229, - 3229, 3230, 3230, 3230, 3230, 3230, 3230, 3231, 3231, 3231, - 3231, 3231, 3231, 3231, 3231, 3231, 3231, 3231, 3231, 3232, - 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232, - - 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232, 3232, - 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3235, 3235, 3235, 3235, 3235, 3235, - 3235, 3235, 3235, 3236, 3236, 3236, 3236, 3236, 3236, 3236, - 3236, 3236, 3236, 3236, 3236, 3236, 3237, 3238, 3238, 3238, - 3238, 3238, 3238, 3238, 3238, 3238, 3238, 3238, 3238, 3239, - 3239, 3240, 3241, 3242, 3243, 3243, 3244, 3244, 3245, 3245, - 3245, 3245, 3245, 3245, 3245, 3245, 3245, 3245, 3245, 3245, - 3245, 3245, 3245, 3246, 3246, 3246, 3246, 3246, 3247, 3247, - 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, 3247, - - 3247, 3247, 3247, 3248, 3248, 3248, 3248, 3249, 3249, 3249, - 3250, 3250, 3251, 3251, 3252, 3252, 3252, 3253, 3253, 3254, - 3254, 3255, 3255, 3255, 3256, 3256, 3256, 3256, 3256, 3256, - 3257, 3257, 3257, 3257, 3258, 3258, 3258, 3258, 3258, 3258, - 3258, 3258, 3258, 3258, 3259, 3259, 3260, 3260, 3261, 3261, - 3262, 3262, 3262, 3262, 3262, 3262, 3262, 3262, 3262, 3262, - 3262, 3262, 3262, 3262, 3262, 3262, 3262, 3262, 3262, 3262, - 3262, 3262, 3262, 3263, 3263, 3263, 3264, 3264, 3264, 3264, - 3264, 3264, 3264, 3265, 3266, 3266, 3266, 3266, 3266, 3266, - 3266, 3266, 3266, 3266, 3266, 3266, 3266, 3266, 3266, 3266, - - 3266, 3266, 3266, 3266, 3266, 3266, 3266, 3266, 3266, 3266, - 3266, 3266, 3266, 3267, 3267, 3267, 3267, 3267, 3267, 3267, - 3267, 3267, 3267, 3267, 3269, 3271, 3271, 3271, 3271, 3272, - 3272, 3272, 3272, 3272, 3272, 3272, 3272, 3272, 3274, 3275, - 3275, 3275, 3276, 3278, 3278, 3278, 3279, 3280, 3282, 3282, - 3283, 3285, 3285, 3286, 3288, 3288, 3288, 3288, 3289, 3289, - 3290, 3290, 3290, 3290, 3290, 3291, 3291, 3292, 3293, 3293, - 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, - 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3294, - 3295, 3296, 3297, 3298, 3299, 3300, 3301, 3302, 3303, 3304, - - 3305, 3306, 3307, 3308, 3309, 3310, 3311, 3312, 3313, 3314, - 3315, 3315, 3315, 3315, 3316, 3316, 3316, 3317, 3317, 3318, - 3318, 3319, 3319, 3319, 3319, 3320, 3320, 3320, 3320, 3320, - 3320, 3320, 3320, 3321, 3321, 3321, 3322, 3322, 3323, 3323, - 3323, 3323, 3323, 3323, 3323, 3323, 3324, 3324, 3324, 3324, - 3324, 3324, 3324, 3324, 3324, 3324, 3324, 3324, 3324, 3324, - 3324, 3324, 3324, 3324, 3324, 3324, 3324, 3325, 3325, 3325, - 3325, 3325, 3325, 3325, 3325, 3325, 3325, 3325, 3325, 3325, - 3325, 3325, 3325, 3325, 3325, 3325, 3325, 3325, 3325, 3325, - 3325, 3325, 3325, 3326, 3327, 3327, 3327, 3327, 3327, 3327, - - 3327, 3327, 3327, 3327, 3327, 3328, 3328, 3328, 3328, 3328, - 3328, 3328, 3328, 3328, 3329, 3329, 3329, 3330, 3330, 3331, - 3331, 3332, 3332, 3332, 3333, 3333, 3334, 3334, 3335, 3335, - 3335, 3335, 3335, 3336, 3336, 3336, 3337, 3337, 3337, 3337, - 3337, 3337, 3337, 3337, 3337, 3337, 3338, 3338, 3339, 3339, - 3340, 3340, 3341, 3341, 3341, 3341, 3341, 3341, 3341, 3341, - 3341, 3341, 3342, 3342, 3342, 3342, 3342, 3342, 3342, 3342, - 3342, 3342, 3342, 3342, 3342, 3342, 3342, 3342, 3342, 3342, - 3343, 3343, 3343, 3343, 3343, 3343, 3343, 3343, 3343, 3344, - 3344, 3344, 3344, 3345, 3345, 3346, 3346, 3346, 3346, 3346, - - 3346, 3346, 3346, 3346, 3346, 3346, 3347, 3347, 3347, 3348, - 3348, 3349, 3349, 3350, 3350, 3350, 3350, 3350, 3350, 3350, - 3350, 3350, 3350, 3350, 3350, 3350, 3350, 3350, 3351, 3351, - 3351, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, - 3352, 3352, 3352, 3352, 3353, 3353, 3353, 3353, 3353, 3353, - 3354, 3354, 3355, 3355, 3355, 3355, 3355, 3355, 3355, 3355, - 3355, 3355, 3355, 3355, 3355, 3355, 3355, 3355, 3355, 3355, - 3355, 3355, 3355, 3355, 3355, 3355, 3355, 3355, 3355, 3355, - 3355, 3355, 3355, 3355, 3355, 3355, 3356, 3357, 3358, 3359, - 3361, 3361, 3361, 3361, 3362, 3362, 3362, 3362, 3363, 3363, - - 3364, 3364, 3364, 3364, 3364, 3366, 3366, 3366, 3367, 3367, - 3368, 3369, 3369, 3370, 3370, 3371, 3371, 3371, 3372, 3372, - 3372, 3373, 3373, 3373, 3374, 3374, 3374, 3374, 3374, 3374, - 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, 3374, - 3374, 3374, 3374, 3375, 3376, 3377, 3378, 3379, 3380, 3381, - 3382, 3383, 3384, 3385, 3386, 3387, 3388, 3389, 3390, 3391, - 3392, 3393, 3394, 3395, 3395, 3395, 3396, 3396, 3396, 3396, - 3397, 3398, 3398, 3398, 3398, 3398, 3398, 3398, 3398, 3398, - 3399, 3400, 3401, 3401, 3401, 3402, 3402, 3403, 3403, 3403, - 3403, 3403, 3403, 3403, 3403, 3404, 3404, 3404, 3404, 3405, - - 3405, 3405, 3405, 3405, 3405, 3405, 3405, 3405, 3405, 3405, - 3405, 3405, 3406, 3406, 3407, 3407, 3407, 3407, 3407, 3407, - 3407, 3407, 3407, 3407, 3407, 3407, 3408, 3409, 3409, 3409, - 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3409, 3410, - 3410, 3411, 3412, 3412, 3413, 3413, 3413, 3413, 3413, 3413, - 3413, 3414, 3414, 3414, 3414, 3414, 3414, 3414, 3414, 3414, - 3414, 3414, 3414, 3414, 3414, 3414, 3414, 3414, 3414, 3414, - 3414, 3414, 3415, 3415, 3415, 3415, 3416, 3416, 3417, 3417, - 3417, 3417, 3417, 3417, 3417, 3417, 3417, 3417, 3417, 3418, - 3418, 3419, 3419, 3419, 3420, 3420, 3420, 3420, 3421, 3421, - - 3422, 3422, 3422, 3422, 3422, 3423, 3423, 3423, 3423, 3423, - 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, 3423, - 3423, 3424, 3425, 3425, 3426, 3426, 3426, 3426, 3426, 3426, - 3426, 3426, 3426, 3426, 3426, 3426, 3427, 3428, 3428, 3429, - 3429, 3429, 3429, 3429, 3429, 3429, 3430, 3430, 3430, 3430, - 3430, 3430, 3430, 3430, 3431, 3431, 3431, 3431, 3431, 3432, - 3433, 3434, 3434, 3434, 3434, 3434, 3434, 3434, 3434, 3434, - 3434, 3434, 3434, 3434, 3434, 3434, 3434, 3434, 3434, 3434, - 3434, 3434, 3434, 3434, 3434, 3434, 3434, 3434, 3434, 3434, - 3434, 3434, 3434, 3434, 3436, 3437, 3439, 3441, 3442, 3444, - - 3444, 3444, 3444, 3445, 3446, 3446, 3446, 3447, 3448, 3449, - 3450, 3451, 3451, 3451, 3451, 3451, 3451, 3451, 3452, 3452, - 3453, 3454, 3454, 3454, 3454, 3454, 3454, 3454, 3454, 3454, - 3454, 3454, 3454, 3454, 3454, 3454, 3454, 3455, 3455, 3456, - 3457, 3458, 3459, 3460, 3461, 3462, 3463, 3464, 3465, 3465, - 3466, 3467, 3468, 3469, 3470, 3471, 3472, 3473, 3474, 3474, - 3475, 3475, 3475, 3475, 3475, 3476, 3476, 3476, 3477, 3477, - 3477, 3477, 3478, 3478, 3478, 3478, 3478, 3478, 3478, 3478, - 3478, 3478, 3478, 3478, 3478, 3479, 3479, 3480, 3480, 3481, - 3481, 3481, 3482, 3482, 3482, 3482, 3482, 3482, 3482, 3483, - - 3483, 3483, 3483, 3483, 3484, 3484, 3484, 3485, 3485, 3485, - 3485, 3485, 3485, 3485, 3486, 3486, 3486, 3486, 3487, 3488, - 3488, 3489, 3489, 3489, 3490, 3490, 3490, 3490, 3491, 3491, - 3492, 3492, 3492, 3492, 3492, 3492, 3492, 3492, 3492, 3492, - 3492, 3492, 3492, 3492, 3492, 3492, 3492, 3492, 3492, 3492, - 3492, 3492, 3492, 3493, 3493, 3493, 3493, 3493, 3494, 3494, - 3494, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, - 3495, 3496, 3496, 3496, 3496, 3496, 3497, 3497, 3497, 3497, - 3497, 3497, 3497, 3498, 3498, 3499, 3499, 3499, 3499, 3499, - 3500, 3500, 3500, 3500, 3500, 3502, 3503, 3503, 3503, 3503, - - 3503, 3503, 3503, 3503, 3504, 3504, 3504, 3504, 3504, 3504, - 3504, 3504, 3504, 3504, 3505, 3505, 3505, 3505, 3505, 3505, - 3505, 3505, 3505, 3505, 3505, 3506, 3508, 3509, 3511, 3513, - 3515, 3517, 3517, 3517, 3517, 3517, 3518, 3518, 3518, 3518, - 3519, 3519, 3519, 3519, 3519, 3520, 3520, 3520, 3521, 3522, - 3523, 3523, 3524, 3524, 3524, 3524, 3524, 3525, 3525, 3525, - 3526, 3527, 3527, 3527, 3527, 3528, 3528, 3529, 3530, 3530, - 3531, 3532, 3533, 3534, 3535, 3535, 3536, 3537, 3537, 3538, - 3539, 3540, 3540, 3542, 3543, 3543, 3543, 3544, 3544, 3544, - 3545, 3545, 3545, 3545, 3545, 3545, 3546, 3546, 3546, 3547, - - 3548, 3548, 3548, 3548, 3549, 3549, 3549, 3549, 3550, 3550, - 3550, 3551, 3551, 3552, 3552, 3552, 3552, 3553, 3553, 3554, - 3555, 3556, 3556, 3557, 3557, 3557, 3557, 3557, 3557, 3557, - 3557, 3557, 3557, 3557, 3557, 3558, 3558, 3558, 3559, 3559, - 3560, 3560, 3560, 3560, 3560, 3560, 3560, 3561, 3561, 3561, - 3561, 3561, 3562, 3562, 3562, 3562, 3562, 3562, 3562, 3562, - 3562, 3562, 3562, 3563, 3564, 3565, 3565, 3565, 3565, 3565, - 3565, 3565, 3566, 3566, 3566, 3566, 3567, 3567, 3567, 3567, - 3567, 3567, 3567, 3568, 3568, 3568, 3568, 3568, 3568, 3568, - 3568, 3569, 3569, 3569, 3569, 3569, 3569, 3569, 3571, 3573, - - 3574, 3576, 3578, 3578, 3578, 3579, 3579, 3580, 3580, 3580, - 3580, 3581, 3581, 3582, 3583, 3583, 3583, 3583, 3583, 3584, - 3584, 3584, 3584, 3584, 3585, 3585, 3585, 3586, 3587, 3587, - 3588, 3589, 3590, 3591, 3592, 3593, 3594, 3594, 3597, 3597, - 3597, 3598, 3599, 3599, 3599, 3599, 3600, 3600, 3601, 3601, - 3602, 3602, 3603, 3604, 3604, 3605, 3606, 3606, 3606, 3607, - 3608, 3608, 3608, 3609, 3609, 3609, 3609, 3610, 3611, 3611, - 3611, 3611, 3612, 3612, 3613, 3613, 3613, 3613, 3613, 3614, - 3614, 3614, 3614, 3614, 3614, 3614, 3614, 3614, 3614, 3614, - 3614, 3615, 3616, 3616, 3616, 3617, 3617, 3617, 3617, 3617, - - 3617, 3617, 3617, 3618, 3619, 3620, 3620, 3620, 3620, 3620, - 3620, 3621, 3622, 3623, 3624, 3624, 3624, 3624, 3624, 3624, - 3624, 3624, 3624, 3624, 3624, 3624, 3626, 3627, 3627, 3627, - 3627, 3627, 3627, 3629, 3629, 3629, 3631, 3631, 3631, 3631, - 3633, 3634, 3634, 3634, 3634, 3635, 3636, 3636, 3636, 3636, - 3636, 3636, 3636, 3637, 3638, 3639, 3639, 3640, 3641, 3642, - 3642, 3643, 3644, 3645, 3647, 3647, 3648, 3648, 3648, 3649, - 3649, 3650, 3651, 3652, 3653, 3654, 3655, 3655, 3656, 3656, - 3656, 3656, 3657, 3658, 3658, 3658, 3658, 3658, 3658, 3658, - 3659, 3660, 3661, 3661, 3661, 3661, 3662, 3663, 3663, 3663, - - 3663, 3664, 3665, 3665, 3666, 3666, 3666, 3666, 3666, 3666, - 3666, 3667, 3668, 3668, 3668, 3668, 3669, 3670, 3670, 3672, - 3674, 3674, 3675, 3675, 3677, 3677, 3677, 3678, 3678, 3678, - 3679, 3679, 3680, 3681, 3682, 3683, 3683, 3683, 3684, 3684, - 3684, 3685, 3686, 3686, 3687, 3688, 3689, 3690, 3691, 3692, - 3693, 3694, 3695, 3696, 3697, 3697, 3697, 3698, 3698, 3699, - 3699, 3699, 3699, 3699, 3700, 3700, 3701, 3702, 3702, 3702, - 3703, 3703, 3703, 3703, 3703, 3703, 3703, 3703, 3704, 3705, - 3705, 3705, 3707, 3709, 3709, 3710, 3711, 3711, 3712, 3714, - 3714, 3716, 3717, 3718, 3718, 3718, 3718, 3718, 3718, 3718, - - 3719, 3720, 3720, 3721, 3722, 3722, 3723, 3723, 3723, 3724, - 3724, 3724, 3725, 3726, 3726, 3726, 3726, 3726, 3726, 3727, - 3727, 3729, 3731, 3731, 3731, 3732, 3733, 3733, 3733, 3733, - 3733, 3733, 3733, 3734, 3734, 3735, 3736, 3737, 3738, 3739, - 3740, 3740, 3740, 3740, 3740, 3742, 3744, 3745, 3746, 3747, - 3747, 3748, 3748, 3749, 3749, 3750, 3751, 3751, 3751, 3751, - 3751, 3752, 3753, 3755, 3756, 3757, 3759, 3760, 3762, 3763, - 3764, 3765, 3765, 3765, 3766, 3766, 3766, 3767, 3767, 3769, - 3770, 3772, 3773, 3774, 3774, 3775, 3776, 3776, 3777, 3778, - 3780, 3781, 3783, 3785, 3787, 3789, 3790, 3791, 3791, 3792, - - 3794, 3796, 3797, 3798, 3798, 3800, 3802, 3803, 3804, 3804, - 3806, 3808, 3809, 3810, 3812, 3814, 3815, 3817, 3819, 3821, - 3823, 3825, 3827, 3829, 3831, 3831 - } ; - -static yyconst int yy_ec[256] = - { 0, - 1, 1, 1, 1, 1, 2, 1, 1, 3, 4, - 1, 1, 5, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 25, 25, 25, 26, 27, 27, 28, 29, 30, - 31, 32, 1, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 43, 44, 45, 46, 47, 48, - 43, 49, 50, 51, 52, 53, 43, 54, 55, 43, - 56, 57, 58, 59, 43, 1, 60, 61, 62, 63, - - 64, 65, 66, 67, 68, 43, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 59, 86, 87, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1 - } ; - -static yyconst int yy_meta[88] = - { 0, - 1, 1, 2, 3, 4, 2, 5, 6, 7, 1, - 5, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 18, 18, 18, 18, 18, 19, 1, 20, - 5, 21, 22, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 24, 25, 26, 5, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 27, 28, 29 - } ; - -static yyconst long int yy_base[4902] = - { 0, - 0, 4, 25, 0, 111, 115, 119, 139, 129, 133, - 196, 0, 283, 0, 147, 151, 370, 0, 456, 461, - 466, 484, 569, 0, 656, 0, 743, 0, 159, 504, - 829, 835, 513, 540, 518, 545, 919, 1003, 857, 863, - 849, 870, 877, 898, 908, 913, 1088, 0, 1175, 0, - 931, 965, 1261, 1268, 951, 955, 1275, 1282, 989, 1290, - 998, 1009, 165, 169, 1023, 1043, 1031, 1052, 1295, 1300, - 1056, 1305, 1339, 1346, 1385, 1395, 1390, 1400, 1424, 1429, - 1444, 1449, 1507, 0, 1456, 1476, 1594, 1681, 1614, 1701, - 1768, 1855, 1788, 1875, 1310, 1361, 1942, 0, 2029, 2116, - - 2203, 2290, 1652, 1656, 2377, 0, 2073, 2160, 1462, 1469, - 1483, 1627, 2464, 0, 2551, 0, 2050, 2138, 1739, 1801, - 1731, 1814, 2638, 0, 1634, 1641, 2725, 0, 1810, 1888, - 2221, 2225, 2308, 2811, 2312, 2816, 2873, 2960, 1895, 1899, - 3047, 3134, 1913, 1917, 3221, 3308, 2044, 2065, 2250, 439, - 3395, 3482, 2087, 2091, 3569, 0, 3656, 0, 2165, 2338, - 2352, 2820, 2838, 2843, 2893, 2919, 3743, 0, 2246, 2980, - 3009, 3067, 3830, 3917, 4004, 172, 4091, 4178, 4265, 0, - 3094, 3152, 3184, 3268, 4352, 0, 4439, 0, 4526, 0, - 3241, 3328, 2134, 2330, 4613, 4699, 3355, 3413, 4785, 4872, - - 4959, 5046, 5133, 5220, 2850, 2914, 4646, 4733, 5307, 5394, - 5481, 5567, 3001, 3081, 5653, 0, 3022, 3087, 3174, 3254, - 3261, 3341, 3348, 3368, 3417, 3497, 3427, 3437, 5740, 0, - 3503, 3850, 5827, 5914, 2934, 3170, 3194, 3281, 3455, 3518, - 3523, 3541, 6001, 0, 3530, 3863, 6088, 0, 6175, 6262, - 6349, 6436, 3872, 3876, 6523, 0, 3890, 3950, 3956, 3960, - 3965, 4109, 4149, 4628, 4123, 4210, 4225, 4652, 3978, 4113, - 4138, 4196, 4237, 4738, 4817, 4904, 4805, 4892, 4200, 4672, - 4974, 4980, 5006, 5066, 6610, 0, 5169, 5256, 5017, 5093, - 4762, 4846, 5108, 5195,16022,33836,15947,33836,33836, 1, - - 15922,33836,15933,33836,33836, 2,33836,15927, 1353, 2179, - 4634,33836, 3, 6, 3125, 2281, 2333,15900,33836, 3178, - 9, 559, 472,33836,33836,33836,33836, 0,33836,15925, - 33836, 166,33836, 4169, 842, 1324, 1758,33836,15898,33836, - 4658, 10,33836,15923,33836,33836,33836, 168, 116,15856, - 33836,15866,33836, 4718, 4757,33836, 6695, 4691, 4744, 829, - 102,15906, 4934, 460,15893, 4999,33836,33836, 5087,33836, - 5262, 5296, 5342, 5209, 5351, 5355, 5436, 5441, 5470, 5516, - 33836, 891, 4859, 5037, 5080,15892, 5346, 1081, 5155, 5164, - 5175, 5242, 469,33836, 0, 478,33836,33836,33836, 5283, - - 33836,15917, 1833, 2095, 2938,33836,33836, 1330, 505,33836, - 15916,33836,33836,33836, 508, 5524, 5529, 5558, 532,33836, - 4994,15844,15856,15848,15841,33836,15911,33836,33836, 2184, - 820,15880,33836,15909,33836, 839,33836,33836, 0, 5863, - 1490, 1745, 1843,15902,15852, 922,33836,33836,33836,15848, - 5415, 5432, 5503,15879, 5548, 2857, 5589, 5607, 5846,15878, - 5874, 2942, 0, 6222,33836, 0,33836,15848, 925,33836, - 33836, 5451, 955, 0,33836, 933, 124,33836,33836,15898, - 33836,33836,33836,15878, 961, 0,15896,33836,33836,33836, - 15895,15891, 153, 971, 496, 0, 536, 870, 0,15874, - - 980,15890, 144,33836,15889, 1059,33836,33836,33836,33836, - 0, 5885, 1037,33836, 0,15871, 999,15870,15826,15825, - 1066, 1002, 1046,33836,15886, 2946, 2991, 3029, 1272,33836, - 33836,33836,33836,33836,33836, 0, 1433, 0,33836, 1285, - 33836,33836, 0,15871, 1408, 3155, 3033, 3198, 1292, 1301, - 33836,15884, 2100,33836,33836,15864, 1352, 0, 111, 6743, - 809, 5934, 2249, 1362,33836,15882, 3061,33836,33836,15862, - 3116, 1392, 463, 6791, 875, 6194,33836, 3287, 5624, 1398, - 33836,15880, 5935,33836,33836,15860, 1402, 1307, 964, 5898, - 6265, 6281, 3362, 1426,33836,15878, 6189, 5889, 5976, 1447, - - 1858, 1651, 6282, 1485,33836,33836, 1612, 6208, 6213, 6253, - 15858,15850, 6307, 3291, 3461,33836, 3552, 0, 0, 1643, - 3560,33836, 3895, 0,15841, 1812, 943,33836,15870,33836, - 33836, 1712,15850, 1653,15796, 6295, 6368, 6381,33836,15841, - 6385, 3899, 3879,33836, 2170,15795,15800,15793,33836,33836, - 15862,33836,33836, 1711,15849, 0,33836,15860, 1807,33836, - 33836,15833, 1738, 1007, 866, 426, 6396,33836, 3984, 6455, - 1873, 6422, 6645,33836,15848, 3004,33836,33836,15828, 1886, - 33836,15840,33836,33836,15820, 1889,33836,15820, 0, 510, - 33836, 0, 1912,33836, 0,15835, 1074,33836,15834, 2047, - - 33836,15835,33836,33836,15815, 1914, 2211, 1210, 1921, 2081, - 33836,15833,33836,33836,15813, 4160, 2089,15765, 2257, 2140, - 33836,15830,33836,33836, 2177,15763, 6708, 2253, 1589, 6674, - 6720, 6714, 2309,33836,15828,33836,33836, 2310,15808,33836, - 0, 0, 2347,15824, 1482,33836,15823, 2835,33836, 0, - 0, 2812, 933, 1584, 0, 0, 2849,33836, 6822,33836, - 15824, 6784, 6829, 6833, 2851,15797, 6870, 4256,33836, 6874, - 33836,33836,33836,15822,33836, 6878, 2894,33836,15821, 4938, - 5893, 5980,33836,33836, 4852, 2896, 6415, 6501, 6890, 6905, - 6234, 6389,33836,15766,33836,33836, 0, 6883,33836,33836, - - 0, 2983,15757, 3066,33836,15818,33836, 6930, 3091, 0, - 4942, 4946, 5121,15732,15804, 0,15793, 4812, 3093, 6903, - 1737, 7007, 7079, 7152, 7231, 7304,15734, 1190,15724, 6922, - 4152, 6963, 3191,15802, 0, 6909, 6929, 6942,15781, 6946, - 5201,33836,15806,33836,15793,15785, 3197,15741,15740,33836, - 3260, 7385, 7466, 7547, 0, 5851, 7059, 7091, 7095, 3283, - 15782,15738,15737, 0, 3284,15736,33836,15797,33836,33836, - 3359,15734, 0, 0, 0, 3361, 0, 0, 3363,33836, - 90, 1696, 0, 3370, 0, 3371,33836, 0, 886, 0, - 0, 3428,33836,33836, 0, 0, 5291, 3431, 0, 5384, - - 3440, 0, 5644, 3452, 0, 6420, 3456,33836,15795,33836, - 33836, 3488, 3046, 5512, 6475, 5553,33836, 5858, 7013, 6950, - 7019, 7033,15768, 7099, 5984,15791, 4712,33836,15790, 848, - 3875,15729, 0, 0, 3500, 0, 1674, 0, 3521, 1432, - 3093, 1495, 4911,33836, 0,15788, 1830,33836,15781, 3947, - 33836, 0, 1675, 2030, 0, 0, 6707, 7097, 0, 0, - 0, 3531,33836,15720,15715, 0,15778, 2358,33836,15777, - 15759, 3975,33836,15777,33836, 3532,33836, 7117, 0, 6729, - 33836, 0,33836,33836, 3848, 0, 0, 7179, 0,33836, - 15720,33836,33836, 3854,15774,33836,33836,33836, 0, 3940, - - 33836, 0,15754, 3892, 0, 1838,33836, 0, 3893, 0, - 7193, 5990, 6244, 6505,33836, 6837, 3977,33836,33836,33836, - 15761, 7027, 7129, 7159, 4140,33836,33836,33836,15760,33836, - 15736, 4228,33836,15752,33836, 4232,15688, 5520, 5600, 4606, - 15687, 0,33836,15749, 7199, 7207, 7212,33836,15693,33836, - 7226, 4631, 7231,33836,33836,15747,33836,33836,33836,15727, - 4637, 0, 0, 7242,33836, 0,33836,15690,33836,33836, - 4659, 0, 7258,33836, 0,33836,15689, 4667,33836,33836, - 15743,33836,33836,33836,33836,15730, 7264, 4752, 1354, 958, - 33836,15739, 7221, 7269,15714, 1717, 7276, 7311, 7330,33836, - - 1805, 7185, 7342, 4908, 0, 7346,15713, 7350, 7361, 7365, - 1892, 7374, 7380, 7384,15712, 1933, 4766,15678,15662,15724, - 7396, 7421, 4900, 7426, 4993, 7632, 7433, 2863,15708,15665, - 421, 496,15661,15673, 2005, 1597,15649,15659,15658, 5026, - 15661, 2227, 7446, 7451, 1377, 5456, 7460, 7465, 7486,15692, - 7500, 7504, 7514, 7566, 7581, 7585, 7594, 7614, 7622, 7626, - 7658, 7665, 7669, 7710, 7716, 7720, 7496, 7534, 7545,15695, - 7673, 7724, 7752,33836, 7758, 7762, 1834, 5950, 0, 7767, - 7771, 7783, 7794, 7798,15649,15661,15653,15646, 7802, 7806, - 15646,15649,15640,15645, 7811, 7824,33836, 0, 7829, 0, - - 7840, 7848,15706,33836,15700, 7835, 7859, 0,15641, 7863, - 15683, 7872, 7876, 7880, 0, 7884,15682, 7889, 7893, 7902, - 0, 0, 7914, 0,15696, 7906, 2066, 5097, 7920, 5007, - 2341, 0,33836,33836,15703, 985,33836,33836,33836,33836, - 15702,15701, 1333,15700, 1451, 0, 5240, 0, 4129,15678, - 33836,33836, 0,15694,33836, 2070,15693,15694,15691,15690, - 0, 7934, 0, 4210,15672,33836,33836, 2104,15620,15618, - 4917, 5014,15673, 5327, 7939, 0, 7282, 0, 0, 0, - 0,15672, 5090, 5635,15660, 6412, 7948, 7943,15659,15586, - 5136,15573, 6283, 7940,33836,33836,33836, 0, 2101, 5368, - - 2255,15512, 2124,15451, 2175, 3461, 2837, 1311,15442,15421, - 15370,15364, 2752,15332,15342, 2217, 7964, 7816,15388,33836, - 3417, 7959, 2951, 5328, 6955, 2925,33836,33836, 5553, 4047, - 2965, 2786, 3002, 3177,15348,15343, 5313, 2923,15346, 8019, - 33836, 7978, 7990,33836, 8023,33836, 7983, 8027, 3472, 7050, - 6187, 3796, 3924,15332,15332, 3019,15331,15336,15334,15336, - 15327, 8033, 8041, 7111,15325, 5933, 8064,15376,15331,15323, - 8042,15373,33836, 8068,15365,33836, 8074, 8078,33836, 8083, - 15362, 8088,33836,15383, 0, 0, 8106,33836,15382,15357, - 33836,15356,15378, 5462, 6328,15321, 8110,15356, 8114, 8118, - - 8122, 0, 8098, 5269,15310,15309, 6467, 3850,15309,15304, - 15309,33836,15364, 0, 3121,15312, 8129,33836, 8148, 8152, - 15355, 8116, 8199,33836, 8160, 8207, 8161, 8211,15296, 4657, - 3446,15292, 1404,15313,15308, 5806,15307,15310, 6740,33836, - 15348,33836,15301,15347, 0, 2107, 0, 0, 0, 0, - 15362,33836, 3019,15361,15362,15359,15358,33836,33836,33836, - 33836,15285,15288, 6712,15343,33836,15342,33836,33836,33836, - 33836, 6746,15341, 8242, 8246,33836,33836, 6752, 2885,15291, - 866, 6994, 3210,15346, 0, 0,15349,33836, 3433,15348, - 15339,15335,15334,15328, 0, 0,15327, 0, 0, 8254, - - 8266,15306, 8273, 8280,15305, 8299, 8306, 8310, 0, 8314, - 33836,33836,33836, 8318,33836,33836, 8332, 8336, 8348, 8352, - 8357,15274,15273,15270, 0, 8372, 0,33836,33836,15255, - 33836, 7467, 6163,15248, 3208,15265,15251,15244,15238, 0, - 8376, 8384, 8391, 8395, 8403, 8407, 8409, 0, 0, 0, - 15301, 7455, 8421, 8423, 0,33836,15300, 8438, 8462,15300, - 8516,33836, 8418, 6745, 8460, 4183, 4661, 8483, 8469, 4785, - 5219, 4822, 8497, 8096, 8548, 4856, 5047,33836, 8597, 8457, - 8539, 5311, 8610,15240, 2300, 8442,33836, 5356,15252, 5840, - 15248,15242,15249,15252,15224,15295, 8684, 2900, 8763,15289, - - 8615, 8634, 8626, 7625, 8644, 4933, 5016, 5570, 8732,15288, - 7573, 3920, 7995, 3149, 484, 4096, 2980,15233,15228,15241, - 8724, 8411, 5116,15283, 5958, 5150, 8639,15295,15294, 0, - 8662,15272, 8716, 8728, 8601, 0,33836,33836,33836,15227, - 15226,33836,15283, 3313, 8844, 8739,15282, 3321, 8925, 8821, - 15281, 3341, 9006, 8902, 0, 8518, 0, 8760, 8805,15230, - 15229,33836,33836, 5136,15220,15219, 0, 0,15218, 0, - 15281, 0, 0,15280, 0, 0, 5179, 5258, 0, 0, - 0, 0, 0, 2827, 0, 0, 0, 0, 0, 8810, - 0, 0, 0, 0, 8819, 0, 0, 0, 0, 8841, - - 0, 0, 0, 0, 8864, 0, 0, 0,15219,15217, - 15213, 8770, 8801,33836, 8879, 8883, 8888,15282, 8892, 8901, - 8921,15255, 8959, 8963, 8969, 8973, 5455,15278,33836, 6373, - 15277,15278,15275,15274,15272,15203,15266, 0, 0, 0, - 3557, 0, 0, 0, 4820,33836, 5541, 5899,15271, 6301, - 6320, 0,15258,33836, 4165,15256,15257,15253,15252, 0, - 5282, 3312,15247, 0, 7648, 0, 7736,15246, 0, 0, - 15115,15107, 0,15165,33836, 6777,15158,15159,15156, 8995, - 33836,15131, 0, 8946, 0, 0, 0,33836, 0, 9027, - 0,15145, 8982, 0, 6797, 0,33836, 0, 0, 4218, - - 0, 0, 0, 0, 9053, 0, 9046, 9066, 5346, 3110, - 3248, 9072, 1788,15147, 7005,15135, 6959,15097, 0,15141, - 9060,33836,33836,33836,33836, 0, 9086, 0,15140, 9082, - 0, 0, 0, 9107, 0,15139, 9099, 0, 0, 4240, - 3448,15121, 9113, 9123, 9127, 9131, 9139, 9143,15122, 9151, - 15069,15070,15077,15068,33836,15132,15131, 9150, 4652, 4792, - 4674, 5181,15083,15063, 4774,15067, 4956,15077,15068, 6330, - 15077,15067, 5135,15058,15063,15054,15064, 9161, 9175, 9179, - 15100,33836, 0, 6494,33836,15111, 9183, 9191, 9209,33836, - 9219, 9223, 9228, 9233, 9237, 9270, 9275, 9279, 9283, 9312, - - 9316, 9320, 9324, 9329, 9357, 9361, 9365, 9369, 9373, 9378, - 9407, 9411, 9415, 9419, 9427, 9447, 9454,15096,15095,15094, - 5571, 9458,15046,15045,15048,15060, 9462,33836,33836,15106, - 15105, 9456, 9467,33836, 9482, 0,15053, 9486, 9490, 9494, - 0, 9500, 9504, 9516, 0,33836,15103,15102, 9511,15098, - 4764, 5601,15108,15107, 4905,15042,15041, 7242,15087, 6977, - 15086, 6985,15031, 4607, 6343, 6182,15040,15037, 6164,15023, - 6462,15019,15019,14947,14928,14935,14861,14857, 6227,14849, - 33836,33836,14838, 5464,14833, 5566,14834,14825,14829,14835, - 14832,14827,14823,14819,14820,14825,14816,14814, 7442, 7356, - - 5841, 6340, 7520,14811,14810,14819,14820,14807, 4665,14824, - 6143, 5054, 5018,33836,14819,14809,14805,14804, 9535,14807, - 14815,14811, 4715, 6275,14798,33836, 9539, 9544, 9552,14844, - 33836,14841,14796, 9556, 9560, 9565, 0, 6363,14792,14795, - 14805, 7076, 9573, 9577, 9587, 9595,14786,14795,14795,14782, - 14785,14796,14796, 6397,14757,14745,33836,14757,14738,14729, - 14728,14718,14724,14710, 9612,33836,33836, 9618,14765, 5077, - 14685,14680,14679, 6451,33836,33836,33836, 9632, 9642, 9650, - 9676, 9680, 9636, 0,14681,14682,14650,14650,14636,14627, - 14629,14586,14622,14576,14568,14569, 9684, 9690, 8669, 6726, - - 9688,14588, 9708,14593, 7882, 8179, 9720, 9722, 0, 9787, - 14586, 7408, 9715, 8589, 9715, 6682, 6871, 7557, 7652, 6931, - 5290, 7006, 8585, 9580, 9782, 7049, 7242, 7815,33836, 7344, - 7960, 7388, 7478, 7966, 7485, 8137, 8188, 8327, 6415, 8619, - 8638, 8668, 7657, 8736, 8979,33836, 7667, 7705, 8987, 6751, - 7769, 9057, 9107,33836, 7896, 8071, 7061, 8457, 8109, 9203, - 9214, 9263, 9520, 7189, 9720,14525,14525,14518,14498, 9764, - 14507, 9768,14494,14469,14463,14459, 9778,14449,14436,14426, - 14429, 7669, 9786,14409,14388,14373,14366,14378, 6683, 9794, - 5439,14373,14357,14333,14334,14261,14309,33836, 9858, 5870, - - 7053, 5189, 5470, 5362, 1832, 4826, 6879, 6174, 7491, 4915, - 7257, 5004, 4792, 5862, 5505, 3167, 6750, 8287, 6384, 6181, - 6356, 4126, 5220, 9785, 9817, 7719, 3394, 6919, 6436, 6951, - 7106, 9937,10016, 6930, 9822, 9824, 8031, 9843, 9861, 9851, - 0,14252,14233,14278,14272,14271, 7327,14220,14207,14206, - 33836,33836, 8133, 8144,14187,14169,14158, 9888, 9892, 9896, - 33836, 7604, 6792,14165,33836, 8184, 8201,33836,33836,14160, - 14141,33836,33836,14205,14193, 9899, 6696, 6376,14164,14160, - 33836,33836, 7598,33836,33836,14136,14063, 9913,33836, 1, - 7, 9954,33836, 181, 460, 9959,33836, 9900, 861, 9904, - - 9937, 9944, 849, 957, 1217, 1245,33836,33836, 9973, 1377, - 1439, 1544, 1731, 1818, 1993, 2087, 2128, 2156, 2170, 2251, - 2284, 2758, 2843, 3009, 3225, 3263, 3284, 3372, 3401, 3482, - 9985,33836,33836, 6884, 9999,10004,10017,10047,10051,10056, - 10064,10092,10096,10101,10105,10109,10138,10142,10146,10150, - 10154,10183,10188,10197,33836,33836, 3812, 3848, 3891, 3900, - 33836,33836, 9993, 4056,33836,33836,10206, 7122, 4122, 8217, - 4170, 4566, 4556, 4588, 9601, 4663,33836, 4823, 4926, 5006, - 5122, 5124, 5209, 8260, 5346, 5378, 5479, 5550, 7164, 5557, - 5555, 5782, 5782, 5796, 5811, 5829, 5888, 5905, 5900, 6225, - - 6253, 6259, 6307, 6417, 6437, 6452, 6714, 6764, 6767, 6800, - 7142, 6790, 7296, 6818, 6830, 6837,33836, 6841, 6859, 6851, - 6878, 6889, 9695,33836, 6968, 6976, 7086, 7110, 7155, 7157, - 7177, 7190, 7199, 7315, 7202, 7206, 7215, 7218, 7236, 7255, - 8217, 7254, 7264, 7321, 7435,10060,10218, 7325, 7331, 7347, - 7368, 7363, 7383, 7409, 7391, 7406, 7453, 7955, 7549, 7529, - 33836,10268,10347,33836, 9754,33836, 9755,33836, 8243, 8299, - 8309, 9829, 8320, 9968,10201,10203, 7590,10231,10233,10246, - 8368,10247,33836,10254, 8382,10265,10266,33836, 8460, 8475, - 7604,10265, 8537,10267,10277,10278,10298, 7683, 7503,10299, - - 7818,10300,33836, 7987, 8619,10305,33836,10309,10311,33836, - 10313,33836,10315,33836, 8618,10317,33836,10321,33836,10330, - 33836, 8660,10345,33836, 7511,10351,10357, 8051,10373,33836, - 8767, 8155,10375,33836, 7535,10379,10381, 8787, 8826,10385, - 10387, 8868,10389,33836,10391,33836,10393,33836,10395,33836, - 10397, 7506, 7541,10008, 7556,10113, 7579, 7583, 7591, 7612, - 7779, 7638, 7638, 7671, 7671, 7678, 7691, 7726, 7904, 8047, - 7713,10427, 7726, 7716, 7877,33836, 7758, 7766, 7782, 7803, - 8343, 7837,33836,10496, 7990, 8116, 8161,10432, 8324,10437, - 8117, 7900, 8036, 8075, 8199, 8021, 8253, 8779, 8167, 8078, - - 8168, 8405, 8255, 7913, 8456, 8449, 8433, 8453, 8698, 9242, - 8396,10450, 8309, 8457, 8492, 8739, 8496, 7987, 8536, 8542, - 8858, 8608,10438,10575,10654, 7844, 7843, 8932, 7928, 8097, - 8119,10445,10456, 8179, 8179, 8206, 8268, 0, 8483, 8316, - 8317,33836,33836,10455, 8355,33836,33836,33836,10460,33836, - 33836,10475,33836,33836,10513,10503,10537,10541,10486, 0, - 8337, 8377, 8402, 8410,33836, 8514,33836,33836, 8456,10545, - 8460, 8494, 8516, 8551, 8557, 8573, 8575, 8596, 8613, 8611, - 8621, 8616, 8633, 8652, 8630, 8635, 8653,10551,10557,10576, - 10606,10611,10615,10621,10625,10661,10691,10696,10700,10704, - - 10712,10733,10740,10745,10749,10780,10784,10793,10797,10568, - 8670,10572, 8680,33836, 8736, 8683,33836, 8748,33836,10412, - 8696, 8705, 8715,10461,33836, 8717, 8733, 8730, 8756, 8765, - 8757, 0, 8858, 8763, 8782, 8939, 8779, 9027, 8772, 8798, - 8825, 8836, 8832, 8838, 8850, 9041, 8844, 8850, 8867, 8867, - 8862, 8883, 8874, 8886, 8878, 8916, 8910, 8917, 8916, 8934, - 8924, 8942, 8946, 8939, 8940, 8946, 9156, 9196, 8958, 8996, - 10526, 8959, 8974, 8979, 8971, 8989, 8981, 9003, 9009, 9005, - 9031, 9014, 9028, 9029, 9028, 9037, 9027, 9076, 9060, 9082, - 9088, 9146,10825,10838, 9094, 9082, 9106, 9090, 9128, 9169, - - 9125, 9175, 9176, 9142,10810, 9186,10527, 9212,10654, 9216, - 9199, 9226,10666,33836,10761,10775,33836,10788,33836,10853, - 33836, 9355,10864,33836,10866,33836,10868,33836, 9365, 9220, - 10870,10872,33836, 9253,10874,33836, 9222,10876,10880, 9404, - 9428,10884,10885, 9481,10886,33836,10904,33836,10908,33836, - 10916,33836,10917,10918, 9223,10922, 9489,10923, 9225,10924, - 10928,33836, 9227,10929, 9228,10935, 9236,10936,10940, 9240, - 10941, 9259,10956, 9261,10960,10968, 9269,10972,10973,33836, - 9263, 9274,10974,10978, 9544, 9276,10979,10980,33836, 9675, - 9674,10984,33836,10988,33836, 9700, 9280,10990, 9304,10992, - - 9305,10996, 9311,11011,11012,33836, 9273, 9276,33836, 9278, - 33836,10753,11026,11030, 9289, 9287, 9283, 9312, 9312, 9315, - 9334, 9325, 9329, 9333, 9345,11034,11042, 9509, 9363,11046, - 33836,11050, 9360, 9369, 9364, 9384, 9378,11054, 9373, 9385, - 9534, 9415, 9443,11116, 9555, 9577, 9585, 9588,11058,11203, - 9651,11062,11066, 9672, 9565, 9589, 9729, 9756, 9575, 9809, - 9687, 9806, 9814, 9849, 9797, 9783, 9853, 9832,11070,11088, - 9685,11092,11096, 9891, 9816, 9848, 9868, 9913,10006,11100, - 10008,10051,10360,10062,10144, 0,11098,11101,11282,11361, - 9435, 9456,11077, 9444, 9456, 9462,11143,11148,11158,11173, - - 11162, 9461, 9476, 9549, 0, 9541,11082,33836, 9649,33836, - 33836, 9678,33836, 9686,33836, 9716,11192, 0, 9687, 9716, - 33836, 9769,11187,11196, 9773, 9800, 9839, 9855, 9862, 9870, - 9878, 9875, 9893, 9904, 9898, 9930, 9915, 9967, 9986,11221, - 9988, 9994,11225,11243,11235,11239,11289,11317,11321,11330, - 11337,11326,11368,11402,11406,11410,11416,11421,11450,11454, - 11459,11463,11271,11467,11471,33836,10002,10018,11154,33836, - 10017,10020,10009,10055,11248, 0,10033,10062,10056,33836, - 10193,33836,10061,10060,10245,10068,10253,10101,10086,10202, - 10107,10097,10101,10106,10255,10117,10105,10121,10332,10117, - - 10121,10403,10127,10257,10142,10145,10165,10175,10194,10192, - 10193,10466,10632,33836,10205,10231,11278,10266,10256,10261, - 10270,10272,10276,10277,10280,33836,33836,10286,10327,10301, - 10313,10340,10401,10332,10346,10383,10350,10352,33836,10354, - 33836,33836,10395,11474,11254,10464,11347,10394,11360,11396, - 33836,10413,11397,10414,11500,10431,11502,11504,10442,11508, - 10443,11509,10462,11510,11514,10464,11516,10565,10471,11520, - 11521,33836,10578,10598,11522,33836,11541,33836,10742,10479, - 11552,10480,11553,10502,11554,10520,11559,11560,33836,11561, - 33836,10515,11565,33836,10534,11566,11571,33836,11572,33836, - - 10536,11573,11577,11584,33836,10819,10556,11593,11604,10828, - 10561,11605,10573,11609,11611,10581,11615,10560,10561,10564, - 11623,11627,11645,33836,10580,10575,10587,10580,10576,10584, - 10655,10596,10616,10624,10639,11649,33836,11653,33836,11657, - 10649,10642,10650,10653,10654,11661,10661,11665,11669,10653, - 10661,10662,10675,11734,10752,10740,10749,10819, 0,11821, - 11908,10791,10873,10784,10879,10889,10881,10825,11654,10945, - 10893,10885,11108,10895,10925,11021,10950,11679,10944,11683, - 11107,11687,10999,11007,10756,10969,11064,11691,11709,11067, - 11244,11099,11246,11689,11707,11987,12066,12145,12224,10700, - - 10714,11698,33836,10754,10759,10782,11715,33836,11728,33836, - 11766,10865,11774,10925,11735,11744,11778,33836,10939,33836, - 11782,10939,11803,11808,11812,10949,11839,10961,10961,10948, - 11853,11004,11843,11857,11050,11046,11861,11056,33836,11869, - 11897,11865,11928,11940,11944,11956,11948,11994,12023,11884, - 12027,12031,12035,12042,12073,12101,12111,12105,11880,33836, - 11086,11113,11150,11787,11119,11120,11122,33836,11116,11143, - 11294,11356,11143,11164,11186,11188,11182,11198,11208,11204, - 11358,11212,11218,11235,11444,11220,11489,11219,11616,11228, - 11253,11237,11256,11271,11260,11284,11270,11284,11976,11292, - - 11289,11294,11316,11314,11321,11329,33836,11326,11345,11345, - 11399,11372,11406,33836,11408,11412,11370,33836,12133,11793, - 33836,11455,11984,33836,11411,11985,12063,33836,12116,33836, - 11473,11420,12118,12171,11554,11429,12173,11458,12178,12179, - 11486,12180,11497,12184,12185,11498,12186,11505,12190,11507, - 12191,12192,33836,11511,12196,11566,12198,33836,12223,12228, - 33836,11481,11543,12122,11490,11489,11506,11512,11514,11518, - 11632,11525,11535,11540,11529,33836,11531,12140,12258,12262, - 11534,11551,33836,12266,12270,11556,11572,11568,11576,12327, - 11680,11719,11624,12274,12414,12501,11706,12279,11685,11820, - - 11688,11704,11729,12264,11747,12297,11915,11955,11818,11943, - 11717,11963,11884,33836,12301,12309,12319,11949,12030,12353, - 11937,12022,12040,12032,12580,12659,12310,12738,11581,12817, - 12896,11576,11642,11731,12328,11701,11718,11714,11720,12360, - 11734,12065,12368,12376,12430,11792,11803,12372,12401,12405, - 11829,12434,11830,12458,11832,12462,12471,11828,12477,12488, - 12492,12520,11907,12537,12542,11937,12546,12562,12550,12590, - 12618,12626,12558,12630,12634,12638,12647,12666,12694,12701, - 12578,11913, 0,33836,11921,11910,12061,11969,11970,12146, - 11980,12233,11994,11992,12009,12234,12019,12019,12250,12289, - - 12042,12045,12050,33836,12290,12060,12366,12334,12054,12061, - 33836,12066,33836,12134,12339,12083,33836,12103,33836,33836, - 33836,12114,12712,12168,12613,12687,12174,12709,12175,12717, - 12176,12745,12411,12747,33836,12764,12770,33836,12772,33836, - 12181,12777,12415,12182,12778,12779,33836,12183,12783,12137, - 0,33836,12143,12155, 0, 0,12154,12152,12705,12172, - 12182,12188,33836,33836,33836,12253,12234,12237,12239,12787, - 12802,12975,12307,12306,12348,33836,12363,12361,13062,13149, - 12312,12341,33836,12459,12508,12813,12467,12553,12468,12516, - 12290,12565,12591,12398,12589,12843,12848,13228,13307,12288, - - 13386,13473,12245,12238,13560, 0,33836,12264,12273,12852, - 12861,12445, 0,33836,12377,12396,12414,12886,12817,12419, - 12455,12447,12897,12824,12890,12856,12903,12927,12657,12931, - 12936,12940,12945,12982,12976,13010,13016,12512,12497,12497, - 13020,13024,13030,12506,12609,12614,12524,12711,12550,12791, - 12583,33836,12795,12585,12797,12829, 0,12585,12863,33836, - 12962,12867,12968,12597,12591,12687,33836,12987,12622,12623, - 12673,13108,13005,33836,12674,12681,13052,13054,33836,12693, - 13082,12695,13093,13094,12700,13095,13035,12729,12678,12675, - 33836,33836,12684, 0,13099,13103,12690,12686, 0,13107, - - 0,12695,33836,33836,13639,13168,13194,13198,13206,13218, - 13224,13118,13259,13163,13272,13278,13283,13726,13290,13302, - 13344,13351,13355,13813,13362,13892,13971,12773,14058,12883, - 14145,14232,14319,14406,14493, 0,12701,12740,12740, 0, - 33836,13137,12736,13039, 0, 0,13263,13296,13308,12751, - 13314,12778,13333,13393,13373,12840,13425,13429,13579,13592, - 13433,13598,13607,33836,12789,13380, 0,13046,13184, 0, - 13186,13190,13210,13237,13366,33836,13386,33836,12808,12808, - 12829,33836,13616,12867,13384,13414,12880,13419,13437,33836, - 33836,33836,12922,12864,12865,33836,33836,13628, 0,12934, - - 13444,33836,12884,14572,12985,12957,13156,13195,12971,12987, - 12936,13252,13671,14659,13011,12938,13566,13197,14738,14817, - 12945,14904,13100,12948,13101,14991,15078,12900,12906,13459, - 12941, 0,13646,13667,13675,12978,13689,13682,12991,13012, - 13694,33836,13115,13758,13703,13764,13746,33836, 0,13367, - 33836,13439,13464,13465,13602,13053,13781,13769,33836,13105, - 13833,13710,13080,33836,13715,33836,33836,13141,13121,15165, - 13221,13305,13844,13226,13325,13323,13855,13174,13834,13873, - 13354,15244,15323,13210,33836, 0,13438, 0,33836,13216, - 33836,13218,13697,13150,13169,13188,13194,13250,13877,13918, - - 13923,13927,13882,13618, 0,13327,13319,13860,33836,13719, - 13793,13338,13348,13384,13740,13934,13820,13404,33836,13938, - 13628,13551,15410,13348,33836,13838, 0,13319, 0,13956, - 13348,13961,13891,13972,14002,14177,13965,33836,14006,33836, - 13733,13616,13769,13761,15497,13396,13380,13777,33836, 0, - 33836,14010,14014,13400,14018,14022,13870,13682,14028,13925, - 15584,15671,13464,15758,15845,13477,13512,13536,13542,13875, - 33836,14050,14163,14167,13916,14037,33836,14182,15931,16018, - 13714,13553,13894,14193,14205,14209,13836,33836,33836, 0, - 16105, 0,13640,13860,13909,13595,13973,13962,13609,14136, - - 13676,13632,13960,14142,13699,13969,13704, 0,14252,13716, - 14165,13717,33836,13724,14149,13853,13813,14150,13825,14175, - 13834, 0,13874,13942,33836,16191,16220,16249,16278,16307, - 16336,16365,16394,16423,16452,16481,16510,16539,16568,16597, - 16626,16655,16684,16713,16742,16771,16800,16829,16858,16887, - 16916,16945,16974,17003,17032,17061,17090,17119,17148,17177, - 17206,17235,17264,17293,17322,17351,17380,17409,17438,17467, - 17496,17525,17554,17583,17612,17641,17670,17699,17728,17757, - 17786,17815,17844,17873,17902,17931,17960,17989,18018,18047, - 18076,18105,18134,18163,18192,18221,18250,18279,18308,18337, - - 18366,18395,18424,18453,18482,18511,18540,18569,18598,18627, - 18656,18685,14206,18713,14264,14199,18735,18761,18784,14039, - 18812,14271,18834,14274,14261,18857,18886,18915,18944,18972, - 14278,18994,14300,19017,19046,19075,19104,19133,19162,19191, - 19220,19249,19278,19307,19336,14275,19365,19394,19423,14277, - 19452,19481,19509,19533,14421,19556,19573,19598,19615,19639, - 14425,14289,14287,14290,19662,19691,14291,19720,19749,19778, - 19807,19836,19853,19878,19907,19936,19953,19978,19995,20019, - 20041,14428,20063,14422,20086,20115,14293,14006,14432,20132, - 20145,20158,20177,20206,20221,20243,14450,20262,20287,20312, - - 20341,20370,20393,20413,20436,20453,20478,20495,20508,20525, - 20554,20583,14438,20612,20641,20670,20699,20728,20757,20786, - 20815,20844,20873,20901,14455,20924,20953,20982,20999,21024, - 21053,21082,21111,14445,21140,21169,14451,21198,21221,21244, - 21261,21286,21303,14452,21328,21357,21386,21415,21444,21473, - 21502,21531,21560,21589,21618,21647,21676,21705,21734,21763, - 14453,21792,21821,21850,21879,21908,21937,21966,21995,14462, - 22023,22051,14513,22073,14459,22095,22121,22144,22172,22194, - 22222,14516,22244,22266,22294,14525,22316,14461,22339,22368, - 22397,22426,22455,22483,22511,14530,14463,22533,22561,14538, - - 14465,22584,22613,22642,22671,22700,22729,22758,22787,22816, - 22845,22874,22903,14512,22932,22961,22990,23019,14520,23048, - 23077,23105,23129,23157,14542,14536,23180,23197,23222,23239, - 23263,23291,14560,14537,14548,14549,14552,23314,23343,14551, - 23372,23401,23430,23459,23488,23517,14599,23546,23563,23588, - 23617,23646,23663,23688,23705,23729,23751,23773,23801,14600, - 14559,23823,14589,14592,23846,23875,14567,23898,13940,13958, - 14591,23915,23928,23941,23954,14609,23967,23980,24008,24025, - 24054,24069,24091,24119,14617,14608,24138,24163,24188,24213, - 24238,24263,24288,24313,24338,24367,24396,24419,24439,24462, - - 24479,24504,24521,24534,24551,24580,24609,14610,24638,24667, - 24696,24725,24754,24783,24812,24841,24870,24899,24928,24956, - 24984,14632,14628,25007,25036,25065,25082,25107,25136,25165, - 25194,14619,25223,25252,14629,25281,25304,25327,25344,25369, - 25386,14620,25411,25440,25469,25498,25527,25556,25585,25614, - 25643,25672,25701,25730,25759,14631,25788,25817,25846,25875, - 25904,25933,25962,25990,26018,14679,26040,26062,14682,26090, - 26113,26142,26170,26198,14691,26220,26242,26270,14696,26292, - 26315,26343,26371,14704,14635,26393,26421,14707,14678,26444, - 26473,26502,26530,26558,14718,14705,26580,26608,14730,14706, - - 26631,26660,26688,26710,26732,26760,14733,14708,14725,26777, - 14026,26794,26807,14752,26826,26855,26884,26913,26941,26952, - 26969,26988,27016,27044,14770,14731,27063,27088,27113,27142, - 27170,27198,14774,14767,14764,27220,27248,14796,14799,27270, - 27292,27315,27344,27372,27394,14161,27411,27440,27469,27498, - 27527,27556,27585,27614,27643,27672,27701,27730,27759,27788, - 27817,27846,27875,27904,27933,27962,27991,28020,28049,28072, - 28089,28108,28131,28160,14768,28188,28216,14804,14771,28238, - 28260,28283,28312,28341,28370,28398,28415,28444,28473,28502, - 28531,28560,28589,28618,28647,28676,28705,28734,28763,28792, - - 28821,28850,28879,28908,28937,28966,28995,29024,29053,29082, - 29111,29140,29169,29198,29227,29256,29285,29314,29343,29372, - 29401,29430,29459,29488,29517,29540,29557,29582,29605,29628, - 29651,29674,29697,29726,14794,29754,14795,29782,29805,29834, - 29863,29892,29915,29944,29973,30002,30031,30060,30089,30118, - 30147,30176,30205,30234,30263,30292,30321,30350,30379,30408, - 30437,30466,30495,30524,30553,30582,30611,30640,30669,30698, - 30727,30756,30779,30796,30821,30850,30879,30902,30925,30948, - 30971,31000,31029,31057,31080,31109,31132,31161,31190,31219, - 31248,31277,31306,31335,31364,31393,31422,31451,31480,31509, - - 31538,31567,31596,31625,31648,31665,31690,31713,31736,31759, - 31782,31805,31834,31863,14812,31891,31914,31943,31966,31995, - 32024,32053,32082,32111,32140,32169,32198,32227,32256,32285, - 14024,32314,32343,32366,32383,32402,32425,32448,32477,32506, - 14830,14248,14797,32534,32557,32586,32609,32638,32667,32696, - 32725,32754,32783,14844,32812,14040,32841,32864,32892,32905, - 32924,32947,32976,33004,33027,33056,33085,33114,14488,14806, - 14831,33142,33165,33194,33223,33246,33275,33304,33333,14848, - 33362,14852,33385,33402,33415,33434,33457,33485,33507,33530, - 14834,33558,33581,33610,33638,33661,33690,33719,33748,33777, - - 33806 - } ; - -static yyconst short int yy_def[4902] = - { 0, - 4126, 4126, 4125, 3, 4127, 4127, 4128, 4128, 4126, 4126, - 4125, 11, 4125, 13, 4129, 4129, 4125, 17, 4130, 4130, - 4126, 4126, 4125, 23, 4125, 25, 4125, 27, 4126, 4126, - 4126, 4126, 4131, 4131, 4132, 4132, 4131, 4131, 4133, 4133, - 4134, 4134, 4135, 4135, 4126, 4126, 4125, 47, 4125, 49, - 4136, 4136, 4136, 4136, 4126, 4126, 4137, 4137, 4138, 4138, - 4139, 4139, 4126, 4126, 4140, 4140, 4141, 4141, 4126, 4126, - 4126, 4126, 4142, 4142, 4143, 4143, 4126, 4126, 4126, 4126, - 4144, 4144, 4125, 83, 4145, 4145, 4146, 4146, 4147, 4147, - 4148, 4148, 4149, 4149, 4149, 4149, 4125, 97, 4150, 4150, - - 4151, 4151, 4152, 4152, 4125, 105, 4152, 4152, 4126, 4126, - 4153, 4153, 4125, 113, 4125, 115, 4154, 4154, 4155, 4155, - 4156, 4156, 4125, 123, 4157, 4157, 4125, 127, 4158, 4158, - 4159, 4159, 4160, 4160, 4161, 4161, 4162, 4162, 4163, 4163, - 4164, 4164, 4165, 4165, 4166, 4166, 4126, 4126, 138, 138, - 4167, 4167, 4126, 4126, 4125, 155, 4125, 157, 4126, 4126, - 4168, 4168, 4169, 4169, 4170, 4170, 4125, 167, 4126, 4126, - 4171, 4171, 4172, 4172, 4125, 175, 4173, 4173, 4125, 179, - 4174, 4174, 4174, 4174, 4125, 185, 4125, 187, 4125, 189, - 4175, 4175, 4126, 4126, 4176, 4176, 4177, 4177, 4178, 4178, - - 4179, 4179, 4180, 4180, 4126, 4126, 4126, 4126, 4181, 4181, - 4182, 4182, 4183, 4183, 4125, 215, 4184, 4184, 4185, 4185, - 4186, 4186, 4187, 4187, 4188, 4188, 4189, 4189, 4125, 229, - 4190, 4190, 4191, 4191, 4192, 4192, 4126, 4126, 4193, 4193, - 4126, 4126, 4125, 243, 4194, 4194, 4125, 247, 4195, 4195, - 4196, 4196, 4126, 4126, 4125, 255, 4197, 4197, 4126, 4126, - 4198, 4198, 4199, 4199, 4200, 4200, 4201, 4201, 4202, 4202, - 4203, 4203, 4204, 4204, 4201, 4201, 4205, 4205, 4206, 4206, - 4207, 4207, 4207, 4207, 4125, 285, 4208, 4208, 4209, 4209, - 4210, 4210, 4211, 4211, 4125, 4125, 4212, 4125, 4125, 4125, - - 4213, 4125, 4212, 4125, 4125, 4125, 4125, 4212, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4214, - 4125, 4215, 4125, 4125, 4125, 4125, 4125, 4216, 4125, 4212, - 4125, 4125, 4125, 4125, 4217, 4217, 4217, 4125, 4125, 4125, - 4218, 4125, 4125, 4212, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4219, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4220, 4125, 4125, 4125, 4125, 4125, 4125, 4221, 4125, - 4221, 4221, 4221, 4221, 4221, 4221, 4221, 4221, 4221, 4221, - 4125, 4222, 4125, 4125, 4125, 4125, 4223, 4224, 4125, 4125, - 4125, 4125, 4125, 4125, 4225, 4125, 4125, 4125, 4125, 4125, - - 4125, 4212, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4212, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4212, 4125, 4125, 4125, - 4125, 4125, 4125, 4212, 4125, 4125, 4125, 4125, 4226, 4227, - 4226, 4125, 4125, 4228, 4229, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4230, 4231, 4125, 4125, 4125, 4125, - 4232, 4233, 4234, 4235, 4125, 4234, 4125, 4236, 4125, 4125, - 4125, 4125, 4234, 4234, 4125, 4125, 4125, 4125, 4125, 4212, - 4125, 4125, 4125, 4125, 4125, 4237, 4212, 4125, 4125, 4125, - 4212, 4125, 4125, 4125, 4125, 4238, 4239, 4238, 4238, 4125, - - 4238, 4240, 4241, 4125, 4240, 4240, 4125, 4125, 4125, 4125, - 4242, 4243, 4125, 4125, 4242, 4125, 4125, 4242, 4242, 4125, - 4125, 4125, 4125, 4125, 4212, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4244, 4245, 4244, 4125, 4244, - 4125, 4125, 4246, 4247, 4248, 4247, 4125, 4247, 4249, 4247, - 4125, 4212, 4125, 4125, 4125, 4125, 4125, 4250, 4125, 4125, - 560, 4125, 4251, 4125, 4125, 4212, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 574, 4125, 4125, 4125, 4252, 4125, - 4125, 4212, 4253, 4125, 4125, 4125, 4125, 4253, 4125, 4125, - 4125, 4253, 4251, 4125, 4125, 4212, 4125, 4125, 4125, 4125, - - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4254, 4255, 4125, 4125, 4125, 4256, 4257, 4257, - 4125, 4125, 4125, 4258, 4259, 4259, 4259, 4125, 4212, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4260, 4261, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4212, 4125, 4125, 4125, 4262, 4263, 4125, 4212, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4251, - 4125, 4125, 4125, 4125, 4212, 4125, 4125, 4125, 4125, 4125, - 4125, 4212, 4125, 4125, 4125, 4125, 4125, 4264, 4265, 4266, - 4125, 4265, 4265, 4125, 4267, 4268, 4269, 4125, 4268, 4268, - - 4125, 4212, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4270, - 4125, 4212, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4271, - 4125, 4212, 4125, 4125, 4125, 4125, 4253, 4125, 4125, 4125, - 4125, 4253, 4125, 4125, 4212, 4125, 4125, 4125, 4125, 4125, - 4272, 4273, 4273, 4274, 4275, 4125, 4274, 4274, 4125, 4276, - 4277, 4277, 4125, 4125, 4278, 4279, 4279, 4125, 4280, 4125, - 4212, 4125, 4125, 4125, 4125, 4125, 4281, 4282, 4125, 4125, - 4125, 4125, 4125, 4212, 4125, 4125, 4125, 4125, 4212, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4283, 4283, 4283, 4283, - 4125, 4125, 4125, 4284, 4125, 4125, 4285, 4286, 4125, 4125, - - 4285, 4125, 4125, 4125, 4125, 4212, 4125, 4125, 4125, 4287, - 4125, 4125, 4125, 4288, 4125, 4289, 4290, 4291, 4290, 4292, - 4290, 4125, 4125, 4293, 4290, 4293, 826, 826, 4288, 4125, - 4125, 4291, 4290, 4294, 4295, 4125, 4125, 4125, 4125, 4296, - 4297, 4125, 4212, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4298, 4299, 4300, 4301, 4302, 4301, 4125, 4301, 4125, - 4125, 4301, 4125, 4303, 4303, 4125, 4125, 4212, 4125, 4125, - 4125, 4125, 4304, 4305, 4306, 4306, 4307, 4308, 4308, 4125, - 4125, 4125, 4309, 4309, 4310, 4310, 4125, 4311, 4312, 4311, - 4311, 4311, 4125, 4125, 4313, 4314, 4315, 4314, 4316, 4317, - - 4316, 4318, 4319, 4318, 4320, 4321, 4320, 4125, 4212, 4125, - 4125, 4125, 4125, 4322, 4323, 4322, 4125, 4322, 4322, 4125, - 4125, 4125, 4125, 4324, 4325, 4326, 4327, 4125, 4326, 4326, - 4326, 4125, 4328, 4329, 4329, 4330, 4331, 4330, 4330, 4332, - 4333, 4332, 4332, 4125, 4334, 4335, 4336, 4125, 4335, 4335, - 4125, 4337, 4337, 4337, 4338, 4339, 4340, 4340, 4341, 4342, - 4343, 4343, 4125, 4125, 4125, 4344, 4345, 4346, 4125, 4345, - 4125, 4345, 4125, 4347, 4125, 4125, 4125, 4125, 4348, 4349, - 4125, 4348, 4125, 4125, 4348, 4350, 4351, 4352, 4351, 4125, - 4353, 4125, 4125, 4125, 4347, 4125, 4125, 4125, 4354, 4355, - - 4125, 4354, 4125, 4354, 4356, 4357, 4125, 4356, 4356, 4358, - 4359, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4347, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4347, 4125, - 4125, 4125, 4125, 4347, 4125, 4125, 4125, 4125, 4360, 4125, - 4125, 4361, 4125, 4347, 4125, 4125, 4125, 4125, 4362, 4125, - 4125, 4125, 4125, 4125, 4125, 4347, 4125, 4125, 4125, 4125, - 4125, 4363, 4364, 4365, 4125, 4364, 4125, 4366, 4125, 4125, - 4364, 4367, 4368, 4125, 4367, 4125, 4369, 4367, 4125, 4125, - 4347, 4125, 4125, 4125, 4125, 4370, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4371, 4125, 4372, 4125, - - 4125, 4373, 4374, 4125, 4375, 4125, 4125, 4376, 4376, 4377, - 4125, 4376, 4125, 4377, 4125, 4125, 4125, 4125, 4125, 4125, - 4378, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4379, 4125, 4125, 4380, 4125, 4381, 4125, - 4381, 4381, 4381, 4381, 4381, 4381, 4381, 4381, 4381, 4381, - 4381, 4381, 4381, 4381, 4381, 4381, 4382, 4383, 4125, 4125, - 4384, 4125, 4385, 4125, 4386, 4387, 4125, 4125, 4388, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4389, 4390, 4389, - - 4389, 4125, 4391, 4125, 4125, 4392, 4125, 4393, 4125, 4125, - 4125, 4394, 4395, 4396, 4397, 4125, 4125, 4398, 4399, 4400, - 4401, 4402, 4403, 4402, 4125, 4404, 4125, 4125, 4125, 4125, - 4402, 4402, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4405, 4406, 4405, 4405, 4125, - 4125, 4125, 4405, 4407, 4125, 4408, 4407, 4409, 4407, 4407, - 4410, 4411, 4410, 4125, 4125, 4125, 4125, 4125, 4410, 4125, - 4125, 4125, 4125, 4125, 4125, 4412, 4413, 4412, 4412, 4412, - 4414, 4415, 4416, 4417, 4415, 4418, 4415, 4125, 4416, 4416, - 4416, 4415, 4125, 4125, 4125, 4125, 4125, 4419, 4125, 4125, - - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4420, 4125, 4125, - 4125, 4420, 4125, 4125, 4125, 1294, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4421, 4125, 4125, 4125, 4125, 4421, 4125, 4422, - 4422, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4422, 4420, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4423, 4424, 4125, 4425, - 4426, 4125, 4125, 4427, 4428, 4428, 4125, 4125, 4429, 4430, - 4125, 4430, 4429, 4125, 4125, 4125, 4125, 4125, 4431, 4432, - - 4433, 4434, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4435, 4436, 4125, 4125, 4125, 4125, 4125, 4420, - 4125, 4125, 4125, 4125, 4125, 4420, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4437, 4438, 4439, 4438, 4438, 4438, 4440, - 4441, 4125, 4442, 4441, 4443, 4441, 4441, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4444, 4125, 4444, 4125, 4125, 4125, - 4125, 4125, 4445, 4125, 4446, 4125, 4125, 4447, 4125, 4125, - 4125, 4447, 4125, 4448, 4449, 4449, 4450, 4125, 4451, 4450, - 4443, 4450, 4450, 4452, 4453, 4453, 4454, 4455, 4455, 4125, - - 4456, 4125, 4457, 4125, 4125, 4458, 4459, 4460, 4461, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4462, - 4462, 4463, 4463, 4464, 4465, 4466, 4465, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4467, - 4125, 4125, 4125, 4125, 4125, 4125, 4468, 4469, 4470, 4471, - 4472, 4473, 4474, 4475, 4476, 4125, 4472, 4477, 4478, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4469, 4479, 4480, 4472, 4480, 4472, - - 4472, 4472, 4472, 4472, 4472, 4472, 4472, 4472, 4472, 4472, - 4472, 4472, 4472, 4472, 4472, 4472, 4472, 1599, 1599, 1599, - 4125, 4125, 4125, 4125, 4125, 4125, 4472, 4481, 4481, 4482, - 4125, 4125, 4483, 4484, 4485, 4486, 4125, 4125, 4125, 4125, - 4125, 4125, 4487, 4487, 4488, 4489, 4490, 4490, 4491, 4492, - 4493, 4493, 4494, 4495, 4496, 4497, 4496, 4496, 4125, 4496, - 4125, 4125, 4125, 4125, 4496, 4125, 4498, 4498, 4125, 4499, - 4500, 4501, 4501, 4502, 4503, 4503, 4125, 4125, 4504, 4504, - 4505, 4505, 4506, 4507, 4506, 4506, 4506, 4508, 4509, 4510, - 4509, 4509, 4509, 4511, 4512, 4511, 4511, 4511, 4513, 4514, - - 4513, 4513, 4513, 4515, 4516, 4515, 4515, 4515, 4125, 4125, - 4125, 4517, 4517, 4125, 4518, 4517, 4518, 4519, 4517, 4517, - 4125, 4125, 4520, 4125, 4521, 4522, 4523, 4524, 4125, 4525, - 4524, 4519, 4524, 4524, 4524, 4125, 4526, 4527, 4527, 4528, - 4529, 4528, 4528, 4528, 4530, 4125, 4531, 4530, 4519, 4530, - 4530, 4532, 4533, 4125, 4534, 4533, 4519, 4533, 4533, 4535, - 4535, 4535, 4536, 4537, 4538, 4539, 4538, 4540, 4541, 4541, - 4125, 4125, 4542, 4543, 4125, 4544, 4543, 4519, 4543, 4125, - 4125, 4125, 4545, 4546, 4545, 4545, 4545, 4125, 4547, 4548, - 4547, 4125, 4549, 4550, 4551, 4550, 4125, 4550, 4552, 4553, - - 4552, 4552, 4552, 4554, 4555, 4554, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4556, 4125, - 4557, 4125, 4125, 4125, 4125, 4558, 4559, 4558, 4125, 4560, - 4558, 4558, 4561, 4562, 4561, 4125, 4563, 4561, 4561, 4125, - 4125, 4125, 4564, 4565, 4566, 4125, 4567, 4568, 4125, 4569, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4570, - 4125, 4125, 4571, 4125, 4125, 4572, 4573, 4574, 4575, 4125, - 4574, 4574, 4574, 4574, 4574, 4574, 4574, 4574, 4574, 4574, - - 4574, 4574, 4574, 4574, 4574, 4574, 4574, 4574, 4574, 4574, - 4125, 4576, 4577, 4578, 4579, 4125, 4580, 4125, 4571, 4125, - 4572, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4581, 4125, 4582, 4583, 4584, - 4585, 4586, 4587, 4588, 4589, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4590, 4125, 4125, 4125, 4591, - 4592, 4591, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4593, 4594, 4595, 4596, - 4125, 4125, 4125, 4597, 4598, 4599, 4600, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4601, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4602, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4603, 4604, 4604, - 4605, 4606, 4607, 4608, 4609, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - - 4610, 4125, 4610, 4611, 4612, 4612, 4613, 4613, 4614, 4615, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4616, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4617, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4618, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4619, 4125, 4620, 4621, - - 4621, 4621, 4621, 4621, 4621, 4621, 4621, 4621, 4621, 4621, - 4621, 4621, 4621, 4621, 4621, 4621, 4621, 4621, 4621, 4621, - 4621, 4621, 4621, 4621, 4621, 4621, 4621, 4621, 4621, 4621, - 4621, 4622, 4622, 2233, 4125, 4125, 4621, 4623, 4624, 4625, - 4626, 4125, 4125, 4627, 4628, 4629, 4125, 4630, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4631, 4632, 4633, - 4125, 4125, 4634, 4125, 4125, 4635, 4635, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4636, 4125, 4637, - - 4638, 4639, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4640, 4125, 4125, 4125, 4641, 4641, 4641, 4641, 4641, 4641, - 4641, 4641, 4641, 4641, 4641, 4641, 4641, 4641, 4641, 4641, - 4641, 4641, 4641, 4641, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4642, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4643, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4644, 4645, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4646, - 4125, 4647, 4647, 4125, 4648, 4125, 4649, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4650, 4125, 4125, 4125, 4125, 4651, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4652, 4652, - - 4125, 4653, 4125, 4125, 4125, 4654, 4125, 4125, 4655, 4125, - 4656, 4125, 4657, 4125, 4125, 4658, 4125, 4659, 4125, 4660, - 4125, 4125, 4661, 4125, 4662, 4662, 4125, 4125, 4663, 4125, - 4125, 4125, 4664, 4125, 4665, 4665, 4125, 4125, 4125, 4125, - 4125, 4125, 4666, 4125, 4667, 4125, 4668, 4125, 4669, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4670, 4671, 4671, 4671, 4671, 4671, 4671, - 4671, 4671, 4671, 4671, 4671, 4671, 4671, 4671, 4671, 4671, - - 4671, 4671, 4671, 4671, 4671, 4671, 4671, 4671, 4671, 4671, - 4671, 4671, 4671, 4671, 4671, 4671, 4671, 4671, 4671, 4671, - 4671, 4671, 4672, 4673, 4673, 4125, 4125, 4125, 4674, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4675, 4675, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4676, 4125, 4677, 4678, 4679, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4680, 4681, 4125, - 4681, 4681, 4681, 4681, 4681, 4681, 4681, 4681, 4681, 4681, - - 4681, 4681, 4681, 4681, 4681, 4681, 4681, 4681, 4681, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4682, 4125, 4125, 4683, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4684, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4685, - 4685, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4686, 4686, 4125, 4125, 4125, 4125, 4125, 4125, - - 4125, 4125, 4125, 4125, 4687, 4688, 4688, 4689, 4689, 4125, - 4125, 4125, 4690, 4125, 4125, 4691, 4125, 4692, 4125, 4693, - 4125, 4125, 4694, 4125, 4695, 4125, 4696, 4125, 4125, 4697, - 4697, 4698, 4125, 4125, 4699, 4125, 4700, 4700, 4125, 4125, - 4125, 4125, 4125, 4125, 4701, 4125, 4702, 4125, 4703, 4125, - 4704, 4125, 4125, 4125, 4705, 4705, 4125, 4125, 4706, 4706, - 4707, 4125, 4708, 4708, 4709, 4709, 4710, 4710, 4125, 4711, - 4711, 4712, 4712, 4713, 4713, 4125, 4714, 4714, 4715, 4125, - 4125, 4716, 4716, 4125, 4125, 4717, 4717, 4718, 4125, 4125, - 4125, 4719, 4125, 4720, 4125, 4125, 4721, 4721, 4722, 4722, - - 4723, 4723, 4724, 4724, 4725, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4726, 4727, 4727, 4727, 4727, 4727, 4728, - 4727, 4727, 4727, 4727, 4727, 4727, 4727, 4727, 4727, 4727, - 4727, 4727, 4727, 4727, 4727, 4727, 4727, 4727, 4727, 4727, - 4727, 4727, 4727, 4727, 4727, 4727, 4727, 4727, 4727, 4727, - 4727, 4727, 4727, 4727, 4727, 4729, 4730, 4731, 4732, 4733, - 4125, 4125, 4125, 4734, 4125, 4125, 4125, 4125, 4125, 4125, - - 4125, 4125, 4125, 4125, 4735, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4736, 4737, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4738, 4738, 4738, 4738, 4738, 4738, 4738, - 4738, 4738, 4738, 4738, 4738, 4738, 4738, 4738, 4738, 4125, - 4125, 4738, 4125, 4125, 4125, 4125, 4125, 4125, 4739, 4125, - 4740, 4125, 4125, 4741, 4741, 4742, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4743, 4125, 4125, 4125, 4744, 4744, 4745, - 4125, 4746, 4746, 4747, 4747, 4748, 4748, 4125, 4749, 4749, - 4750, 4750, 4751, 4751, 4125, 4752, 4752, 4125, 4753, 4753, - 4754, 4125, 4125, 4125, 4755, 4125, 4756, 4125, 4125, 4757, - 4757, 4758, 4758, 4759, 4759, 4760, 4760, 4761, 4125, 4762, - 4125, 4125, 4763, 4125, 4764, 4764, 4765, 4125, 4766, 4125, - - 4767, 4767, 4125, 4768, 4125, 4125, 4769, 4769, 4125, 4125, - 4770, 4770, 4771, 4771, 4125, 4772, 4772, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4773, 4774, 4774, 4774, 4774, 4775, 4776, - 4777, 4774, 4774, 4774, 4774, 4774, 4774, 4774, 4125, 4774, - 4774, 4774, 4774, 4774, 4774, 4774, 4774, 4774, 4774, 4774, - 4774, 4774, 4774, 4774, 4774, 4774, 4774, 4774, 4774, 4774, - 4774, 4774, 4774, 4778, 4778, 4779, 4779, 4780, 4781, 4125, - - 4125, 4782, 4125, 4783, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4784, - 4125, 4125, 4125, 4784, 4125, 4784, 4784, 4784, 4125, 4125, - 4784, 4784, 4125, 4125, 4784, 4784, 4784, 4784, 4125, 4125, - 4125, 4125, 4785, 4785, 4786, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4787, 4788, - 4125, 4125, 4789, 4125, 4790, 4790, 4791, 4125, 4792, 4125, - 4125, 4793, 4793, 4125, 4125, 4794, 4794, 4795, 4795, 4125, - 4796, 4796, 4797, 4797, 4125, 4798, 4798, 4799, 4799, 4800, - 4800, 4801, 4125, 4802, 4802, 4125, 4803, 4125, 4125, 4804, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4805, - 4806, 4806, 4806, 4806, 4807, 4807, 4806, 4806, 4806, 4806, - - 4806, 4806, 4806, 4125, 4806, 4806, 4806, 4806, 4806, 4806, - 4806, 4806, 4806, 4125, 4806, 4806, 4806, 4806, 4806, 4806, - 4806, 4806, 4806, 4806, 4808, 4809, 4810, 4809, 3528, 4811, - 4812, 4125, 4125, 4813, 4813, 4814, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4815, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4816, 4125, 4816, 4816, 4125, 4125, - 4816, 4816, 4125, 4816, 4125, 4125, 4816, 4125, 4816, 4125, - 4125, 4125, 4817, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4818, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4819, 4820, 4820, 4125, 4821, 4821, 4822, 4822, - 4823, 4823, 4125, 4824, 4125, 4125, 4825, 4125, 4826, 4125, - 4827, 4827, 4125, 4828, 4828, 4829, 4125, 4830, 4830, 4125, - 4831, 4125, 4125, 4125, 4832, 4833, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4834, 4835, 4835, 4835, 4125, 4835, 4835, 4835, 4835, - 4835, 4835, 4125, 4835, 4835, 4835, 4835, 4835, 4835, 4835, - 4835, 4835, 4835, 4835, 4835, 4835, 4835, 4836, 4837, 4838, - - 4837, 4125, 4125, 4125, 4839, 4840, 4125, 4125, 4125, 4125, - 4841, 4842, 4843, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4844, 4125, 4844, - 4844, 4125, 4844, 4844, 4844, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4845, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4846, 4125, 4125, 4125, 4125, - 4125, 4847, 4848, 4125, 4125, 4849, 4849, 4850, 4125, 4851, - 4851, 4852, 4852, 4125, 4853, 4853, 4125, 4854, 4125, 4125, - 4125, 4125, 4125, 4855, 4125, 4125, 4125, 4125, 4856, 4125, - - 4857, 4125, 4125, 4125, 4858, 4859, 4859, 4859, 4859, 4859, - 4859, 4860, 4859, 4860, 4859, 4859, 4859, 4859, 4859, 4859, - 4859, 4859, 4859, 4859, 4859, 4861, 4862, 4863, 4125, 4864, - 4865, 4866, 4125, 4865, 4867, 3833, 3829, 4125, 4125, 4868, - 4125, 4125, 4125, 4869, 4870, 4871, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4872, 4125, - 4125, 4872, 4872, 4125, 4125, 4125, 4873, 4874, 4125, 4875, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4876, 4877, 4877, 4125, 4878, 4878, 4879, 4125, - 4125, 4125, 4880, 4125, 4125, 4125, 4125, 4125, 4881, 4882, - - 4125, 4125, 4125, 4883, 4884, 4884, 4884, 4884, 4884, 4884, - 4884, 4885, 4884, 4884, 4884, 4884, 4885, 4884, 4886, 4887, - 4888, 4125, 4889, 4125, 4889, 4125, 4890, 4125, 4125, 4125, - 4125, 4891, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4892, 4125, 4892, 4892, 4125, 4874, 4874, - 4125, 4125, 4125, 4125, 4125, 4125, 4876, 4893, 4125, 4879, - 4879, 4125, 4125, 4125, 4125, 4125, 4125, 4882, 4125, 4125, - 4884, 4884, 4884, 4884, 4884, 4884, 4884, 4884, 4885, 4884, - 4884, 4886, 4887, 4888, 4125, 3922, 4894, 3922, 4125, 4895, - 4125, 3970, 3970, 4125, 4125, 4125, 4125, 4125, 4125, 4892, - - 4892, 4125, 4125, 4125, 4896, 3922, 4893, 4893, 4125, 4125, - 4125, 3970, 3970, 4884, 4884, 4884, 4884, 4884, 4125, 4884, - 3982, 3983, 4125, 4895, 4125, 3970, 4897, 4125, 4898, 4125, - 4125, 4125, 4125, 4125, 4125, 4892, 4125, 4125, 4125, 4125, - 4884, 4884, 4884, 4884, 4125, 3983, 3922, 3970, 4125, 4899, - 4125, 4125, 4125, 4125, 4125, 4892, 4884, 4884, 4884, 4884, - 4125, 4900, 4045, 4900, 4901, 4045, 4061, 3983, 3922, 3970, - 4125, 4125, 4125, 4125, 4884, 4884, 4125, 4884, 4125, 4125, - 3983, 3922, 3970, 4125, 4125, 4125, 4884, 4125, 4125, 4079, - 4901, 4079, 4045, 4045, 3983, 3922, 3970, 4884, 4061, 4045, - - 4079, 3922, 3970, 4884, 4079, 4045, 3922, 3970, 4884, 4079, - 4045, 3922, 4125, 4079, 4045, 3922, 4079, 4045, 4079, 4045, - 4079, 4045, 4079, 4079, 0, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - - 4125 - } ; - -static yyconst short int yy_nxt[33924] = - { 0, - 4125, 297, 4125, 298, 299, 297, 4125, 298, 299, 1091, - 1092, 1101, 1116, 2650, 1101, 1116, 1083, 1083, 1089, 2650, - 300, 1084, 1084, 1090, 300, 296, 297, 296, 298, 299, - 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 300, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, - 296, 296, 296, 296, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, 301, 301, - - 301, 301, 301, 301, 301, 301, 301, 301, 301, 296, - 296, 296, 303, 1142, 298, 304, 303, 1142, 298, 304, - 308, 309, 310, 311, 309, 305, 312, 1235, 1236, 305, - 297, 306, 298, 299, 297, 306, 298, 299, 1677, 313, - 308, 309, 310, 311, 309, 1257, 312, 1258, 330, 300, - 298, 331, 330, 300, 298, 331, 1242, 1243, 1299, 313, - 297, 389, 390, 391, 389, 1677, 297, 332, 298, 299, - 297, 332, 298, 299, 830, 314, 333, 830, 334, 396, - 333, 1083, 334, 1083, 1299, 300, 1084, 831, 1084, 300, - 832, 1117, 833, 2653, 1118, 314, 296, 297, 315, 316, - - 317, 315, 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 300, 296, 296, 296, - 296, 296, 296, 318, 319, 296, 296, 296, 296, 320, - 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 320, 296, 296, 296, 296, 320, 320, 320, 320, 320, - 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 321, 296, 322, 296, 297, 323, 298, 299, 323, 296, - 296, 296, 296, 296, 324, 296, 325, 296, 324, 296, - - 296, 296, 296, 300, 296, 296, 296, 296, 296, 296, - 326, 324, 327, 324, 296, 296, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 325, 296, - 296, 296, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 321, 296, 296, - 296, 297, 335, 336, 337, 335, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 338, 296, 296, - 300, 296, 296, 296, 296, 296, 296, 339, 319, 340, - - 296, 296, 296, 341, 341, 341, 341, 341, 341, 341, - 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, - 341, 341, 341, 341, 341, 296, 296, 296, 296, 341, - 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, - 341, 341, 341, 341, 341, 341, 341, 341, 341, 341, - 341, 341, 341, 341, 342, 296, 296, 344, 345, 346, - 347, 345, 344, 345, 346, 347, 345, 297, 581, 298, - 299, 753, 2653, 351, 1104, 1145, 348, 1104, 352, 353, - 1146, 348, 1416, 354, 1177, 297, 300, 298, 299, 1178, - 1356, 351, 1864, 1089, 355, 754, 352, 353, 1090, 1244, - - 1245, 354, 1865, 1552, 300, 297, 389, 390, 391, 389, - 1299, 1447, 355, 1081, 402, 403, 404, 405, 403, 411, - 1083, 298, 412, 1083, 396, 1084, 406, 407, 1084, 349, - 408, 413, 414, 409, 349, 350, 1299, 1248, 415, 1081, - 350, 402, 403, 404, 405, 403, 411, 1145, 298, 412, - 356, 1081, 1146, 406, 407, 2229, 1096, 408, 413, 414, - 409, 1102, 1102, 1102, 1102, 415, 1866, 1867, 356, 296, - 297, 357, 358, 359, 357, 296, 296, 360, 296, 296, - 361, 296, 362, 296, 361, 296, 363, 296, 296, 364, - 296, 296, 296, 296, 296, 296, 365, 366, 367, 368, - - 296, 296, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, - 369, 369, 369, 369, 370, 296, 296, 296, 369, 369, - 371, 369, 372, 369, 369, 369, 373, 369, 369, 374, - 375, 369, 376, 369, 369, 377, 378, 379, 380, 369, - 369, 369, 369, 381, 296, 382, 296, 297, 383, 384, - 385, 383, 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 300, 296, 296, 296, - 296, 296, 296, 386, 296, 296, 296, 296, 296, 387, - 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, - - 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, - 387, 296, 296, 296, 296, 387, 387, 387, 387, 387, - 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, - 387, 387, 387, 387, 387, 387, 387, 387, 387, 387, - 296, 296, 388, 296, 297, 389, 390, 391, 389, 296, - 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, - 392, 296, 296, 393, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 394, 296, 296, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 296, 296, - - 296, 296, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 296, 296, 296, - 297, 1140, 298, 299, 1140, 1145, 297, 397, 298, 299, - 1146, 4125, 398, 397, 1108, 1109, 1109, 1108, 398, 300, - 434, 1729, 298, 435, 1083, 300, 399, 400, 427, 1084, - 428, 429, 399, 400, 427, 1300, 428, 429, 1733, 436, - 430, 434, 1249, 298, 435, 1249, 430, 431, 440, 441, - 442, 443, 441, 431, 444, 1250, 432, 1685, 2656, 445, - 436, 1141, 432, 1167, 1167, 1167, 1167, 446, 1416, 440, - - 441, 442, 443, 441, 437, 444, 438, 4125, 2661, 297, - 445, 298, 299, 399, 297, 1081, 298, 299, 446, 399, - 402, 416, 417, 418, 416, 437, 1111, 438, 300, 2072, - 1356, 1329, 464, 300, 465, 466, 449, 1207, 467, 419, - 1227, 449, 1208, 468, 2073, 1228, 420, 420, 1233, 421, - 1393, 469, 297, 1234, 298, 299, 297, 1231, 298, 299, - 1231, 447, 448, 1232, 1842, 1416, 464, 473, 465, 466, - 473, 300, 467, 474, 4125, 300, 1238, 468, 1842, 450, - 422, 1239, 447, 448, 450, 469, 1083, 470, 1235, 1236, - 487, 1084, 465, 488, 423, 1252, 424, 1356, 425, 491, - - 1253, 492, 493, 420, 402, 416, 417, 418, 416, 476, - 491, 1299, 492, 493, 1083, 471, 472, 1273, 494, 1267, - 2662, 470, 1266, 419, 497, 498, 298, 499, 498, 494, - 420, 420, 503, 421, 504, 505, 478, 1299, 500, 1264, - 478, 1415, 1264, 501, 497, 498, 298, 499, 498, 471, - 472, 506, 1265, 503, 495, 504, 505, 297, 500, 298, - 299, 1083, 1255, 501, 422, 495, 1274, 1415, 1271, 509, - 510, 1271, 506, 489, 1259, 1454, 300, 1455, 423, 1260, - 424, 1272, 425, 1175, 1175, 1175, 1175, 420, 296, 297, - 451, 452, 453, 451, 296, 296, 296, 296, 296, 296, - - 296, 296, 296, 296, 296, 296, 296, 296, 300, 296, - 296, 296, 296, 296, 296, 454, 296, 296, 296, 296, - 296, 455, 455, 455, 455, 455, 455, 455, 455, 455, - 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, - 455, 455, 455, 296, 296, 296, 296, 455, 455, 455, - 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, - 455, 455, 455, 455, 455, 455, 455, 455, 455, 455, - 455, 455, 296, 296, 456, 296, 297, 457, 458, 459, - 457, 296, 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 300, 296, 296, 296, 296, - - 296, 296, 460, 296, 296, 296, 296, 296, 461, 461, - 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, - 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, - 296, 296, 296, 296, 461, 461, 461, 461, 461, 461, - 461, 461, 461, 461, 461, 461, 461, 461, 461, 461, - 461, 461, 461, 461, 461, 461, 461, 461, 461, 296, - 296, 462, 464, 1620, 475, 466, 1461, 1599, 470, 464, - 1462, 475, 466, 470, 1356, 470, 480, 1463, 481, 482, - 470, 476, 483, 480, 2663, 481, 482, 1083, 476, 483, - 484, 487, 1084, 465, 488, 485, 297, 484, 298, 299, - - 1279, 297, 485, 298, 299, 1280, 297, 1283, 298, 299, - 476, 596, 1290, 605, 606, 300, 1291, 477, 509, 510, - 300, 1292, 4125, 2664, 477, 300, 1109, 1109, 1109, 1109, - 607, 486, 1182, 1182, 1182, 1182, 1242, 1243, 486, 4125, - 512, 513, 514, 515, 513, 470, 470, 512, 521, 514, - 515, 521, 470, 470, 516, 1087, 1087, 1087, 1087, 517, - 1842, 522, 596, 4125, 605, 606, 523, 1296, 518, 1842, - 1987, 519, 1297, 1088, 489, 518, 1988, 1296, 519, 507, - 508, 607, 1324, 1882, 507, 508, 525, 526, 527, 528, - 526, 297, 1883, 298, 299, 520, 525, 526, 527, 528, - - 526, 297, 520, 298, 299, 529, 2667, 1083, 4125, 1285, - 300, 1081, 1297, 1083, 530, 529, 531, 1296, 1324, 532, - 300, 533, 1297, 1286, 530, 297, 531, 298, 299, 532, - 297, 533, 298, 299, 1278, 1746, 1081, 534, 535, 1746, - 1081, 1296, 534, 535, 300, 537, 1324, 298, 538, 300, - 537, 539, 298, 538, 1244, 1245, 539, 545, 546, 547, - 548, 546, 1296, 297, 540, 644, 299, 1297, 2668, 540, - 297, 549, 644, 299, 2053, 2054, 550, 545, 546, 547, - 548, 546, 300, 1490, 651, 1491, 298, 652, 1081, 300, - 1081, 549, 1201, 1202, 1202, 1201, 550, 653, 1746, 541, - - 1296, 542, 1746, 654, 541, 1373, 542, 296, 297, 296, - 298, 299, 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 300, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, - 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, - 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, - 543, 543, 296, 296, 296, 296, 543, 543, 543, 543, - 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, - 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, - 543, 296, 296, 296, 551, 552, 553, 554, 555, 553, - - 551, 551, 551, 551, 551, 551, 551, 551, 551, 556, - 551, 551, 551, 551, 557, 566, 567, 568, 569, 567, - 2669, 551, 551, 559, 551, 551, 560, 1296, 651, 570, - 298, 652, 1084, 571, 572, 690, 1299, 691, 692, 1479, - 1416, 653, 690, 573, 691, 692, 574, 654, 1356, 551, - 561, 551, 551, 629, 693, 630, 631, 629, 1083, 630, - 631, 693, 1299, 1386, 1872, 632, 1479, 633, 1083, 632, - 575, 633, 634, 1084, 1873, 1742, 634, 1081, 551, 551, - 551, 551, 552, 562, 554, 555, 562, 551, 551, 551, - 551, 551, 551, 551, 551, 551, 563, 551, 551, 551, - - 551, 564, 566, 576, 577, 578, 576, 1369, 551, 551, - 559, 551, 551, 560, 1394, 1356, 579, 1394, 1370, 1101, - 571, 580, 1101, 1310, 635, 1761, 1083, 1395, 635, 1678, - 573, 1084, 682, 574, 298, 683, 551, 561, 551, 551, - 675, 676, 677, 678, 676, 684, 685, 1202, 1202, 1202, - 1202, 686, 1761, 1083, 679, 1678, 1552, 575, 1084, 680, - 1109, 1109, 1109, 1109, 1559, 551, 551, 551, 581, 582, - 583, 584, 585, 583, 581, 581, 581, 581, 581, 581, - 581, 581, 581, 586, 581, 581, 581, 581, 587, 596, - 597, 598, 599, 597, 2280, 581, 581, 589, 581, 581, - - 590, 2670, 675, 676, 677, 678, 676, 1101, 600, 1264, - 1101, 697, 1264, 698, 699, 682, 679, 298, 683, 2281, - 601, 680, 1265, 581, 591, 581, 581, 1083, 684, 685, - 700, 1756, 1392, 1757, 686, 1180, 1180, 1180, 1180, 1801, - 1918, 1081, 4125, 1391, 602, 1202, 1202, 1202, 1202, 1919, - 1181, 1552, 581, 581, 581, 581, 582, 592, 584, 585, - 592, 581, 581, 581, 581, 581, 581, 581, 581, 581, - 593, 581, 581, 581, 581, 594, 596, 603, 598, 599, - 603, 2671, 581, 581, 589, 581, 581, 590, 1083, 697, - 1369, 698, 699, 1428, 1116, 604, 735, 1116, 736, 737, - - 735, 1083, 736, 737, 1083, 2591, 1084, 601, 700, 1084, - 581, 591, 581, 581, 745, 738, 746, 747, 745, 738, - 746, 747, 1356, 1464, 739, 1370, 1464, 1448, 739, 1459, - 1310, 602, 1449, 748, 1460, 1116, 1465, 748, 1116, 581, - 581, 581, 296, 297, 608, 609, 610, 608, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 611, 296, 296, - 296, 296, 300, 296, 296, 296, 296, 296, 296, 612, - 296, 296, 296, 296, 296, 613, 613, 613, 613, 613, - 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, - 613, 613, 613, 613, 613, 613, 613, 296, 296, 296, - - 296, 613, 613, 613, 613, 613, 613, 613, 613, 613, - 613, 613, 613, 613, 613, 613, 613, 613, 613, 613, - 613, 613, 613, 613, 613, 613, 296, 296, 614, 296, - 297, 615, 616, 617, 615, 296, 618, 296, 296, 296, - 296, 296, 296, 296, 296, 297, 296, 298, 299, 620, - 1452, 658, 659, 660, 661, 659, 2672, 296, 296, 296, - 296, 296, 1456, 1762, 300, 662, 297, 1457, 298, 299, - 663, 1257, 1882, 1258, 629, 643, 644, 631, 643, 664, - 1870, 1883, 665, 1871, 296, 300, 296, 296, 297, 1762, - 298, 299, 297, 634, 298, 299, 1467, 1180, 1180, 1180, - - 1180, 1458, 1293, 645, 1470, 1293, 666, 300, 1447, 1471, - 1081, 300, 1181, 296, 296, 296, 296, 297, 615, 616, - 617, 615, 296, 618, 296, 296, 296, 296, 296, 296, - 296, 296, 1294, 296, 646, 297, 620, 298, 299, 658, - 667, 668, 669, 667, 296, 296, 296, 296, 296, 1969, - 647, 1955, 648, 670, 300, 1475, 1294, 649, 671, 2673, - 1468, 629, 643, 644, 631, 643, 297, 664, 298, 299, - 672, 296, 1407, 296, 296, 1407, 1969, 1955, 769, 770, - 634, 1087, 1087, 1087, 1087, 300, 1195, 1195, 1195, 1195, - 645, 1408, 1476, 1976, 673, 2674, 1977, 1477, 1196, 1088, - - 296, 296, 296, 296, 297, 621, 622, 623, 621, 296, - 624, 296, 296, 296, 296, 296, 296, 296, 296, 2675, - 296, 646, 702, 626, 703, 704, 702, 709, 703, 704, - 709, 296, 627, 296, 296, 296, 705, 647, 1142, 648, - 710, 706, 1142, 1461, 649, 706, 1979, 297, 2676, 298, - 299, 1321, 727, 707, 1321, 727, 1980, 707, 296, 1472, - 296, 296, 1472, 795, 1322, 586, 300, 1323, 1083, 1295, - 728, 1462, 1473, 1297, 796, 1356, 1997, 708, 1463, 581, - 1998, 708, 753, 1094, 1094, 1094, 1094, 296, 296, 296, - 296, 297, 621, 622, 623, 621, 296, 624, 296, 296, - - 296, 296, 296, 296, 296, 296, 754, 296, 1095, 712, - 626, 713, 714, 722, 2677, 723, 724, 1973, 296, 627, - 296, 296, 296, 715, 1083, 1083, 1974, 716, 717, 1324, - 1084, 297, 725, 298, 299, 1094, 1094, 1094, 1094, 297, - 718, 298, 299, 1231, 726, 296, 1231, 296, 296, 1232, - 300, 769, 770, 402, 403, 404, 405, 403, 300, 1777, - 1095, 1778, 1083, 2678, 718, 771, 772, 1486, 726, 408, - 2181, 2182, 409, 1081, 296, 296, 296, 296, 297, 636, - 637, 638, 636, 296, 296, 296, 296, 296, 296, 296, - 296, 639, 296, 296, 296, 296, 296, 300, 296, 296, - - 296, 296, 296, 296, 640, 296, 296, 296, 296, 296, - 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, - 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, - 641, 641, 296, 296, 296, 296, 641, 641, 641, 641, - 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, - 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, - 641, 296, 296, 642, 296, 297, 296, 298, 299, 296, - 296, 296, 296, 296, 296, 296, 296, 296, 296, 611, - 296, 296, 296, 296, 300, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 655, 655, 655, - - 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, - 655, 655, 655, 655, 655, 655, 655, 655, 655, 296, - 296, 296, 296, 655, 655, 655, 655, 655, 655, 655, - 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, - 655, 655, 655, 655, 655, 655, 655, 655, 296, 296, - 296, 296, 297, 296, 298, 299, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 611, 296, 296, 296, - 296, 300, 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 656, 656, 656, 656, 656, 656, - 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, - - 656, 656, 656, 656, 656, 656, 296, 296, 296, 296, - 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, - 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, - 656, 656, 656, 656, 656, 296, 296, 296, 296, 297, - 296, 687, 299, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 611, 296, 296, 296, 296, 300, 296, - 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, - 296, 688, 688, 688, 688, 688, 688, 688, 688, 688, - 688, 688, 688, 688, 688, 688, 688, 688, 688, 688, - 688, 688, 688, 296, 296, 296, 296, 688, 688, 688, - - 688, 688, 688, 688, 688, 688, 688, 688, 688, 688, - 688, 688, 688, 688, 688, 688, 688, 688, 688, 688, - 688, 688, 296, 296, 296, 296, 297, 296, 694, 299, - 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, - 611, 296, 296, 296, 296, 300, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, 695, 695, - 695, 695, 695, 695, 695, 695, 695, 695, 695, 695, - 695, 695, 695, 695, 695, 695, 695, 695, 695, 695, - 296, 296, 296, 296, 695, 695, 695, 695, 695, 695, - 695, 695, 695, 695, 695, 695, 695, 695, 695, 695, - - 695, 695, 695, 695, 695, 695, 695, 695, 695, 296, - 296, 296, 712, 719, 713, 714, 719, 722, 1993, 723, - 724, 402, 403, 404, 405, 403, 720, 1083, 1685, 1994, - 716, 717, 1496, 771, 772, 2679, 725, 408, 1488, 774, - 409, 298, 775, 718, 774, 2008, 298, 775, 726, 1978, - 1492, 297, 776, 298, 299, 1493, 1081, 776, 777, 1214, - 1214, 1214, 1214, 777, 1083, 1140, 1083, 718, 1140, 1499, - 300, 1084, 726, 581, 582, 727, 584, 585, 727, 581, - 581, 581, 581, 581, 581, 581, 581, 581, 586, 581, - 581, 581, 581, 728, 779, 780, 781, 782, 780, 1985, - - 581, 581, 729, 581, 581, 730, 783, 784, 1986, 1083, - 785, 1083, 2680, 786, 1084, 297, 1084, 298, 299, 1552, - 779, 780, 781, 782, 780, 1141, 2070, 2199, 581, 731, - 581, 581, 783, 784, 300, 937, 785, 298, 938, 786, - 1180, 1180, 1180, 1180, 1220, 1220, 1220, 1220, 1275, 1275, - 1275, 1275, 2070, 2002, 939, 1181, 2002, 581, 581, 581, - 581, 582, 732, 584, 585, 732, 581, 581, 581, 581, - 581, 581, 581, 581, 581, 593, 581, 581, 581, 581, - 733, 297, 1997, 298, 299, 4125, 2017, 581, 581, 729, - 581, 581, 730, 1275, 1275, 1275, 1275, 795, 1528, 1552, - - 300, 2004, 889, 1529, 890, 891, 1439, 1440, 796, 1439, - 798, 799, 800, 801, 799, 581, 731, 581, 581, 1441, - 1454, 892, 1455, 897, 296, 298, 299, 296, 1981, 802, - 893, 1275, 1275, 1275, 1275, 1288, 1288, 1288, 1288, 2231, - 2006, 803, 898, 2007, 581, 581, 581, 296, 297, 296, - 740, 299, 296, 296, 741, 296, 296, 296, 296, 296, - 296, 296, 611, 1325, 296, 803, 1325, 743, 798, 799, - 800, 801, 799, 1979, 1982, 296, 296, 296, 296, 296, - 2681, 1528, 889, 2009, 890, 891, 1531, 804, 897, 296, - 298, 299, 296, 1326, 1748, 843, 1749, 298, 844, 803, - - 1749, 892, 296, 845, 296, 296, 1083, 898, 1556, 846, - 893, 1084, 1552, 1557, 847, 1709, 2279, 1326, 1328, 1328, - 1328, 1328, 1710, 803, 1711, 2279, 848, 1093, 1094, 1094, - 1093, 296, 296, 296, 296, 297, 296, 740, 299, 296, - 296, 741, 296, 296, 296, 296, 296, 296, 296, 611, - 848, 296, 1095, 843, 743, 298, 844, 1287, 1288, 1287, - 1287, 845, 296, 296, 296, 296, 296, 846, 1552, 2042, - 1283, 937, 847, 298, 938, 900, 296, 298, 299, 296, - 1098, 1098, 1098, 1098, 848, 843, 1552, 298, 844, 296, - 939, 296, 296, 845, 901, 297, 2042, 298, 299, 846, - - 1287, 1288, 1287, 1287, 847, 1095, 1556, 1100, 848, 1096, - 1552, 1627, 1638, 1283, 300, 2228, 849, 1639, 296, 296, - 296, 296, 297, 296, 749, 299, 296, 296, 750, 296, - 296, 296, 296, 296, 296, 296, 611, 2603, 296, 1985, - 849, 752, 856, 857, 858, 859, 857, 2010, 2011, 296, - 296, 296, 296, 296, 2279, 900, 296, 298, 299, 296, - 2074, 860, 903, 296, 298, 299, 296, 2088, 2279, 843, - 861, 298, 844, 862, 901, 1556, 296, 845, 296, 296, - 1642, 904, 297, 846, 298, 299, 2092, 2074, 847, 1342, - 1341, 1342, 1342, 1380, 1380, 1380, 1380, 863, 1662, 1083, - - 849, 300, 2682, 1663, 1668, 296, 296, 296, 296, 297, - 296, 749, 299, 296, 296, 750, 296, 296, 296, 296, - 296, 296, 296, 611, 849, 296, 1644, 2244, 752, 856, - 857, 858, 859, 857, 1648, 2245, 296, 296, 296, 296, - 296, 2683, 903, 296, 298, 299, 296, 2684, 860, 906, - 296, 298, 299, 296, 1652, 2246, 868, 861, 869, 870, - 862, 904, 2267, 296, 1321, 296, 296, 1321, 907, 906, - 296, 298, 299, 296, 1083, 871, 1083, 1322, 1083, 1084, - 1323, 1673, 1266, 1676, 863, 1083, 1083, 872, 907, 2267, - 1680, 1682, 296, 296, 296, 296, 297, 296, 298, 299, - - 296, 296, 755, 296, 296, 296, 296, 296, 296, 296, - 611, 872, 296, 1552, 868, 757, 869, 870, 909, 2000, - 910, 911, 2000, 296, 296, 296, 296, 296, 915, 916, - 917, 918, 916, 871, 1490, 2001, 1491, 912, 915, 916, - 917, 918, 916, 1686, 2685, 872, 1692, 919, 1687, 913, - 296, 1693, 296, 296, 1842, 1697, 941, 919, 298, 942, - 1698, 2618, 296, 1382, 1383, 1382, 1382, 1702, 1842, 872, - 1981, 1707, 1703, 913, 2002, 943, 1708, 2002, 2686, 296, - 296, 296, 296, 297, 296, 298, 299, 296, 296, 755, - 296, 296, 296, 296, 296, 296, 296, 611, 909, 296, - - 910, 911, 757, 1083, 927, 2050, 928, 929, 1084, 2051, - 296, 296, 296, 296, 296, 1083, 1982, 912, 930, 941, - 1739, 298, 942, 931, 297, 296, 298, 299, 1983, 913, - 944, 947, 1984, 948, 949, 932, 1743, 296, 943, 296, - 296, 1744, 297, 300, 298, 299, 1083, 1083, 944, 2687, - 950, 1770, 1084, 913, 1382, 1383, 1382, 1382, 1742, 932, - 1081, 300, 1387, 1388, 1387, 1387, 296, 296, 296, 296, - 297, 296, 758, 299, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 611, 296, 296, 296, 296, 300, - 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, - - 296, 296, 759, 759, 759, 759, 759, 759, 759, 759, - 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, - 759, 759, 759, 759, 296, 296, 296, 296, 759, 759, - 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, - 759, 759, 759, 759, 759, 759, 759, 759, 759, 759, - 759, 759, 759, 296, 296, 296, 760, 761, 762, 763, - 764, 762, 760, 760, 760, 760, 760, 760, 760, 760, - 760, 760, 760, 760, 760, 760, 765, 760, 760, 760, - 760, 760, 760, 766, 760, 760, 760, 760, 760, 767, - 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, - - 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, - 767, 760, 760, 760, 760, 767, 767, 767, 767, 767, - 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, - 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, - 760, 760, 768, 296, 297, 787, 788, 789, 787, 296, - 296, 296, 296, 296, 790, 296, 296, 296, 790, 296, - 791, 296, 296, 364, 296, 296, 296, 296, 296, 296, - 296, 792, 296, 793, 296, 296, 794, 794, 794, 794, - 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, - 794, 794, 794, 794, 794, 794, 794, 794, 296, 296, - - 296, 296, 794, 794, 794, 794, 794, 794, 794, 794, - 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, - 794, 794, 794, 794, 794, 794, 794, 296, 296, 296, - 805, 806, 805, 298, 807, 805, 805, 805, 805, 805, - 805, 808, 805, 805, 805, 805, 805, 805, 805, 805, - 809, 927, 2038, 928, 929, 2038, 1302, 805, 805, 805, - 805, 805, 805, 1786, 947, 930, 948, 949, 1787, 1083, - 931, 1312, 1359, 297, 1084, 963, 299, 297, 1729, 963, - 299, 1403, 932, 950, 1403, 805, 805, 805, 805, 2710, - 1734, 968, 300, 969, 970, 1735, 300, 1387, 1388, 1387, - - 1387, 1401, 1401, 1401, 1401, 971, 932, 1083, 1802, 1404, - 972, 2711, 1798, 1803, 805, 805, 805, 805, 806, 805, - 298, 807, 805, 805, 805, 805, 805, 805, 808, 805, - 805, 805, 805, 805, 805, 805, 805, 809, 964, 1552, - 1405, 1796, 964, 1081, 805, 805, 805, 805, 805, 805, - 1754, 968, 965, 969, 970, 1081, 965, 297, 1406, 298, - 299, 297, 1758, 298, 299, 971, 974, 1759, 298, 975, - 972, 2712, 805, 805, 805, 805, 300, 2713, 1775, 1000, - 300, 1001, 1002, 2224, 1302, 976, 1419, 1418, 1419, 1419, - 1083, 2020, 1810, 1003, 977, 1779, 978, 1811, 1004, 1312, - - 1359, 805, 805, 805, 805, 806, 811, 812, 813, 811, - 805, 805, 814, 815, 816, 808, 805, 805, 805, 805, - 817, 805, 818, 818, 819, 820, 820, 820, 820, 820, - 820, 821, 805, 822, 805, 805, 823, 824, 824, 824, - 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, - 824, 824, 824, 824, 824, 824, 824, 824, 824, 805, - 825, 805, 805, 824, 824, 824, 824, 824, 826, 824, - 827, 824, 824, 824, 824, 824, 828, 824, 824, 824, - 824, 824, 824, 824, 824, 824, 824, 824, 805, 805, - 829, 296, 297, 296, 298, 299, 296, 296, 834, 296, - - 296, 296, 296, 296, 296, 296, 296, 296, 296, 1973, - 974, 300, 298, 975, 1000, 1552, 1001, 1002, 1974, 296, - 296, 296, 296, 296, 988, 2005, 981, 989, 1003, 976, - 990, 1249, 2716, 1004, 1249, 991, 992, 993, 977, 1006, - 978, 1007, 1008, 994, 1250, 1552, 296, 296, 296, 296, - 980, 2719, 981, 982, 1625, 1083, 983, 1625, 1009, 2230, - 1084, 984, 1469, 1469, 1469, 1469, 1756, 1622, 1757, 985, - 1623, 1106, 1106, 1106, 1106, 296, 296, 296, 296, 297, - 296, 298, 299, 296, 296, 834, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 1107, 1006, 300, 1007, - - 1008, 1029, 2611, 298, 1030, 986, 296, 296, 296, 296, - 296, 988, 1264, 981, 989, 1264, 1009, 990, 1031, 1801, - 1032, 1081, 991, 992, 993, 1265, 995, 2138, 981, 996, - 994, 2721, 990, 296, 296, 296, 296, 991, 1011, 1012, - 1013, 1014, 1012, 1083, 990, 994, 1842, 1083, 1084, 991, - 1015, 1016, 1084, 2138, 997, 1842, 998, 1017, 1508, 1508, - 1508, 1508, 296, 296, 296, 296, 297, 836, 837, 838, - 836, 296, 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 300, 296, 296, 296, 296, - 296, 296, 839, 296, 296, 296, 296, 296, 840, 840, - - 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, - 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, - 296, 296, 296, 296, 840, 840, 840, 840, 840, 840, - 840, 840, 840, 840, 840, 840, 840, 840, 840, 840, - 840, 840, 840, 840, 840, 840, 840, 840, 840, 296, - 296, 841, 805, 806, 805, 850, 807, 805, 805, 805, - 805, 805, 805, 805, 805, 805, 805, 805, 805, 805, - 805, 805, 851, 810, 810, 810, 810, 810, 810, 805, - 805, 805, 805, 805, 805, 852, 852, 852, 852, 852, - 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, - - 852, 852, 852, 852, 852, 852, 852, 805, 805, 805, - 805, 852, 852, 852, 852, 852, 852, 852, 852, 852, - 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, - 852, 852, 852, 852, 852, 852, 805, 805, 805, 805, - 806, 805, 850, 807, 805, 805, 805, 805, 805, 805, - 805, 805, 805, 805, 805, 805, 805, 805, 805, 851, - 810, 810, 810, 810, 810, 810, 805, 805, 805, 805, - 805, 805, 853, 853, 853, 853, 853, 853, 853, 853, - 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, - 853, 853, 853, 853, 805, 805, 805, 805, 853, 853, - - 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, - 853, 853, 853, 853, 853, 853, 853, 853, 853, 853, - 853, 853, 853, 805, 805, 805, 805, 806, 805, 850, - 807, 805, 805, 805, 805, 805, 805, 805, 805, 805, - 805, 805, 805, 805, 805, 805, 851, 810, 810, 810, - 810, 810, 810, 805, 805, 805, 805, 805, 805, 854, - 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, - 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, - 854, 805, 805, 805, 805, 854, 854, 854, 854, 854, - 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, - - 854, 854, 854, 854, 854, 854, 854, 854, 854, 854, - 805, 805, 805, 296, 297, 296, 298, 299, 296, 296, - 296, 1083, 296, 296, 296, 296, 1817, 2722, 296, 980, - 296, 981, 982, 865, 2386, 983, 1087, 1087, 1087, 1087, - 984, 296, 296, 296, 296, 866, 1089, 297, 985, 298, - 299, 1090, 1823, 995, 1088, 981, 996, 1824, 2310, 990, - 1113, 1113, 1113, 1113, 991, 2723, 300, 2310, 296, 866, - 296, 296, 994, 1029, 1831, 298, 1030, 880, 2373, 1832, - 2311, 997, 1838, 998, 986, 1115, 881, 1839, 1980, 2311, - 1031, 882, 1032, 1127, 1127, 1127, 1127, 296, 296, 296, - - 297, 296, 298, 299, 296, 296, 296, 2139, 296, 296, - 296, 296, 881, 1731, 296, 1732, 296, 882, 1129, 865, - 1122, 1122, 1122, 1122, 2387, 2726, 2407, 296, 296, 296, - 296, 866, 2048, 2139, 297, 2049, 298, 299, 1123, 1011, - 1012, 1013, 1014, 1012, 1081, 990, 1127, 1127, 1127, 1127, - 991, 1015, 1016, 300, 296, 866, 296, 296, 1017, 1124, - 1124, 1124, 1124, 1064, 880, 1065, 1066, 1840, 1081, 1067, - 2369, 1129, 1841, 881, 1068, 1069, 1070, 1125, 882, 2369, - 2391, 2416, 1071, 296, 296, 296, 297, 296, 298, 299, - 296, 296, 296, 296, 296, 296, 296, 296, 2310, 881, - - 296, 296, 296, 296, 882, 300, 1021, 1022, 1023, 1024, - 1022, 1552, 2310, 296, 296, 296, 296, 296, 995, 1012, - 1013, 1014, 1012, 1746, 990, 1025, 2149, 1746, 1551, 991, - 1015, 1554, 1551, 1851, 1026, 2314, 1027, 994, 1852, 1551, - 296, 296, 296, 296, 1555, 1552, 1018, 1064, 1019, 1065, - 1066, 2315, 2149, 1067, 1519, 1519, 1519, 1519, 1068, 1069, - 1070, 1169, 1169, 1169, 1169, 2152, 1071, 2600, 1551, 296, - 296, 296, 296, 297, 296, 298, 299, 296, 296, 296, - 296, 296, 296, 296, 296, 2592, 1170, 296, 296, 296, - 296, 2152, 300, 1021, 1022, 1023, 1024, 1022, 2727, 2163, - - 296, 296, 296, 296, 296, 995, 1012, 1013, 1014, 1012, - 1104, 990, 1025, 1104, 1746, 1859, 991, 1015, 1746, 1271, - 1860, 1026, 1271, 1027, 994, 2163, 1750, 296, 296, 296, - 296, 1751, 1272, 1018, 1552, 1019, 1122, 1122, 1122, 1122, - 1517, 1517, 1517, 1517, 1541, 1542, 1543, 1541, 1544, 1545, - 1543, 1544, 1552, 2370, 1123, 1518, 296, 296, 296, 296, - 297, 296, 298, 299, 296, 296, 874, 296, 296, 296, - 296, 296, 296, 296, 296, 1034, 296, 298, 1035, 876, - 2370, 1034, 1038, 298, 1035, 1038, 2597, 296, 296, 296, - 296, 296, 1096, 2728, 1036, 1039, 1189, 1189, 1189, 1189, - - 1040, 1124, 1124, 1124, 1124, 2213, 1037, 1034, 1861, 298, - 1035, 2214, 1037, 1862, 296, 1190, 296, 296, 1056, 1125, - 1057, 1058, 1951, 1552, 1059, 2317, 1036, 1952, 1140, 1273, - 1037, 1140, 1060, 2318, 1266, 1552, 1037, 1061, 1041, 1169, - 1169, 1169, 1169, 296, 296, 296, 296, 297, 296, 298, - 299, 296, 296, 874, 296, 296, 296, 296, 296, 296, - 296, 296, 1041, 296, 1170, 2599, 876, 1034, 1038, 298, - 1035, 1038, 2729, 1062, 296, 296, 296, 296, 296, 2215, - 2164, 1039, 1169, 1169, 1169, 1169, 1040, 2398, 1141, 1148, - 1148, 1148, 1148, 2216, 1056, 2411, 1057, 1058, 1041, 1884, - - 1059, 296, 1884, 296, 296, 1283, 2164, 1170, 1060, 1073, - 1290, 1074, 1075, 1061, 1129, 1076, 1150, 1950, 1626, 2397, - 1077, 1626, 1041, 1543, 1546, 1543, 1543, 2441, 1078, 2410, - 296, 296, 296, 296, 297, 296, 298, 299, 296, 296, - 877, 296, 296, 296, 296, 296, 296, 296, 296, 1062, - 296, 1283, 1626, 879, 2441, 1626, 1290, 1087, 1087, 1087, - 1087, 296, 296, 296, 296, 296, 1087, 1087, 1087, 1087, - 1044, 1045, 1046, 1047, 1045, 1088, 1048, 1087, 1087, 1087, - 1087, 1049, 1050, 2247, 1088, 2730, 1051, 2311, 296, 1052, - 296, 296, 1079, 1080, 2325, 1088, 1073, 1053, 1074, 1075, - - 2731, 2311, 1076, 1635, 1635, 1635, 1635, 1077, 1552, 2247, - 2326, 1148, 1148, 1148, 1148, 1078, 2253, 296, 296, 296, - 296, 297, 296, 298, 299, 296, 296, 877, 296, 296, - 296, 296, 296, 296, 296, 296, 1129, 296, 1150, 1552, - 879, 1248, 2253, 1081, 1122, 1122, 1122, 1122, 296, 296, - 296, 296, 296, 1054, 2588, 1081, 2150, 1044, 1045, 1046, - 1047, 1045, 1123, 1048, 1148, 1148, 1148, 1148, 1049, 1050, - 2151, 1407, 2732, 1051, 1407, 296, 1052, 296, 296, 1079, - 1080, 1156, 2150, 2612, 1053, 1124, 1124, 1124, 1124, 1129, - 1408, 1150, 1691, 1081, 1081, 1081, 1081, 2151, 1148, 1148, - - 1148, 1148, 2254, 1125, 296, 296, 296, 296, 297, 296, - 298, 299, 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 1129, 296, 1150, 2266, 884, 2254, 1958, - 2003, 1151, 1958, 2003, 296, 296, 296, 296, 880, 296, - 1054, 2485, 1959, 1318, 1148, 1148, 1148, 1148, 1172, 1172, - 1172, 1172, 2266, 1148, 1148, 1148, 1148, 1148, 1148, 1148, - 1148, 2277, 296, 296, 296, 296, 2278, 1152, 2485, 1129, - 2174, 1150, 2014, 1170, 2175, 1174, 2015, 1153, 1129, 2016, - 1150, 1552, 1129, 2176, 1150, 1696, 1081, 1081, 1081, 1081, - 1994, 296, 296, 296, 296, 297, 296, 298, 299, 296, - - 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, - 1157, 296, 1154, 1155, 884, 2186, 2735, 1210, 1210, 1210, - 1210, 296, 296, 296, 296, 880, 296, 2590, 2187, 1970, - 1158, 2188, 1971, 1159, 1210, 1210, 1210, 1210, 1148, 1148, - 1148, 1148, 1211, 1148, 1148, 1148, 1148, 1972, 2736, 296, - 296, 296, 296, 1229, 1229, 1229, 1229, 2262, 1884, 1211, - 2262, 1884, 1885, 1129, 1394, 1150, 2389, 1394, 1129, 2389, - 1150, 1230, 1148, 1148, 1148, 1148, 1886, 1395, 296, 296, - 296, 296, 297, 296, 298, 299, 296, 296, 296, 1552, - 296, 296, 296, 296, 296, 296, 296, 1129, 296, 1150, - - 2577, 886, 2190, 1160, 1162, 1210, 1210, 1210, 1210, 296, - 296, 296, 887, 1161, 1713, 1714, 1713, 1713, 1148, 1148, - 1148, 1148, 1815, 1163, 1552, 1815, 1183, 1183, 1183, 1183, - 1211, 1183, 1183, 1183, 1183, 1318, 296, 296, 296, 296, - 1816, 1164, 1748, 1129, 1749, 1150, 1165, 2589, 1749, 2737, - 1210, 1210, 1210, 1210, 1184, 1713, 1714, 1713, 1713, 1184, - 1183, 1183, 1183, 1183, 2602, 296, 296, 296, 297, 296, - 298, 299, 296, 296, 296, 1211, 296, 296, 296, 296, - 296, 296, 296, 1166, 296, 1185, 2334, 886, 1184, 1552, - 1185, 1216, 1216, 1216, 1216, 296, 296, 296, 887, 1186, - - 2356, 1187, 1321, 1188, 1186, 1321, 1187, 2369, 1188, 1216, - 1216, 1216, 1216, 2738, 1970, 1322, 1217, 1971, 1323, 1185, - 2739, 2369, 296, 296, 296, 296, 1345, 1346, 1347, 1345, - 2740, 2391, 1972, 1186, 1217, 1187, 1285, 1188, 1081, 1348, - 2217, 2218, 1349, 2392, 1327, 1701, 1081, 1081, 1081, 1081, - 1286, 296, 296, 296, 297, 296, 894, 299, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 300, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, - - 895, 895, 895, 895, 895, 895, 895, 895, 296, 296, - 296, 296, 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, - 895, 895, 895, 895, 895, 895, 895, 296, 296, 296, - 296, 297, 920, 921, 922, 920, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, - 300, 296, 296, 296, 296, 296, 296, 923, 296, 296, - 296, 296, 296, 924, 924, 924, 924, 924, 924, 924, - 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, - 924, 924, 924, 924, 924, 296, 296, 296, 296, 924, - - 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, - 924, 924, 924, 924, 924, 924, 924, 924, 924, 924, - 924, 924, 924, 924, 296, 296, 925, 296, 297, 296, - 298, 299, 296, 296, 933, 296, 296, 296, 296, 296, - 296, 296, 296, 2002, 296, 2741, 2002, 935, 1216, 1216, - 1216, 1216, 1657, 2742, 1081, 296, 296, 296, 296, 296, - 1713, 1714, 1713, 1713, 1200, 2057, 1081, 1081, 2743, 2058, - 1081, 1081, 2059, 1217, 2744, 1081, 1216, 1216, 1216, 1216, - 1081, 1552, 296, 1081, 296, 296, 1263, 1081, 1081, 1552, - 1081, 1366, 1367, 1367, 1366, 1517, 1517, 1517, 1517, 2190, - - 1081, 1217, 1746, 2191, 2745, 1081, 1746, 1081, 2192, 1368, - 1518, 296, 296, 296, 296, 297, 296, 298, 299, 296, - 296, 933, 296, 296, 296, 296, 296, 296, 296, 296, - 1300, 296, 2585, 2601, 935, 1366, 1317, 1350, 1366, 1317, - 1350, 1081, 296, 296, 296, 296, 296, 1081, 1081, 1318, - 1265, 2746, 1884, 1368, 1319, 1884, 1920, 1301, 1302, 1354, - 1625, 1355, 1356, 1625, 2747, 1357, 1294, 1352, 1358, 296, - 1921, 296, 296, 1312, 1359, 2748, 1623, 1360, 1366, 1367, - 1367, 1366, 1517, 1517, 1517, 1517, 1726, 1726, 1726, 1726, - 1294, 1353, 1807, 1807, 1807, 1807, 1368, 1518, 296, 296, - - 296, 296, 297, 296, 298, 299, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, - 296, 300, 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 945, 945, 945, 945, 945, 945, - 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, - 945, 945, 945, 945, 945, 945, 296, 296, 296, 296, - 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, - 945, 945, 945, 945, 945, 945, 945, 945, 945, 945, - 945, 945, 945, 945, 945, 296, 296, 296, 296, 297, - 296, 951, 299, 296, 296, 296, 296, 296, 296, 296, - - 296, 296, 296, 296, 296, 296, 952, 952, 300, 952, - 952, 952, 952, 952, 952, 296, 296, 296, 296, 296, - 296, 952, 952, 952, 952, 952, 952, 952, 953, 952, - 952, 954, 952, 952, 952, 952, 952, 952, 952, 952, - 952, 952, 952, 296, 296, 296, 296, 952, 952, 952, - 952, 952, 952, 952, 953, 952, 952, 954, 952, 952, - 952, 952, 952, 952, 952, 952, 952, 952, 952, 952, - 952, 952, 296, 296, 296, 296, 297, 296, 951, 299, - 296, 296, 955, 956, 296, 296, 296, 296, 296, 296, - 296, 1364, 296, 1552, 1364, 958, 1340, 1341, 1342, 1340, - - 1552, 2375, 4125, 296, 296, 296, 296, 956, 2391, 1343, - 1374, 1374, 1374, 1374, 1319, 1374, 1374, 1374, 1374, 4125, - 2409, 1365, 2088, 1224, 2089, 1081, 1326, 2375, 2090, 1081, - 296, 959, 296, 296, 1081, 1375, 1122, 1122, 1122, 1122, - 1375, 2092, 1081, 4125, 1985, 1365, 1807, 1807, 1807, 1807, - 1326, 2594, 2609, 2374, 1123, 1374, 1374, 1374, 1374, 296, - 296, 956, 296, 297, 296, 951, 299, 296, 296, 955, - 956, 296, 296, 296, 296, 296, 296, 296, 1081, 296, - 1375, 2417, 958, 1362, 1371, 1293, 1362, 1371, 1293, 2385, - 296, 296, 296, 296, 956, 2417, 1363, 1397, 1397, 1397, - - 1397, 1319, 1372, 2749, 1746, 2386, 1081, 1081, 1746, 1374, - 1374, 1374, 1374, 1352, 1365, 1294, 2750, 296, 959, 296, - 296, 1300, 1398, 1746, 1301, 1302, 1354, 1746, 1355, 1356, - 1394, 2751, 1361, 1394, 1375, 1358, 1379, 1353, 1365, 1294, - 1312, 1359, 2002, 1395, 1360, 2002, 296, 296, 956, 296, - 297, 296, 951, 299, 296, 296, 960, 296, 296, 296, - 296, 296, 296, 296, 296, 2038, 296, 2752, 2038, 962, - 1397, 1397, 1397, 1397, 1731, 1552, 1732, 296, 296, 296, - 296, 296, 2645, 1397, 1397, 1397, 1397, 1397, 1397, 1397, - 1397, 1124, 1124, 1124, 1124, 1398, 2645, 2321, 1417, 1418, - - 1419, 1417, 2322, 1552, 296, 1081, 296, 296, 1398, 1125, - 1983, 1420, 1398, 1961, 1984, 1081, 1421, 1520, 1520, 1520, - 1520, 1706, 1081, 1081, 1081, 1081, 1521, 1286, 1422, 1081, - 1521, 2610, 1962, 296, 296, 296, 296, 297, 296, 951, - 299, 296, 296, 960, 296, 296, 296, 296, 296, 296, - 296, 296, 1422, 296, 1416, 1552, 962, 1423, 1424, 1425, - 1423, 2608, 2431, 2515, 296, 296, 296, 296, 296, 1407, - 1426, 2377, 1407, 1323, 2432, 1266, 1716, 1717, 1718, 1717, - 1717, 1429, 1430, 2753, 1431, 1432, 1356, 1427, 1408, 1433, - 2515, 296, 2445, 296, 296, 1434, 1884, 1435, 1436, 1884, - - 2754, 1437, 1438, 1520, 1520, 1520, 1520, 1807, 1807, 1807, - 1807, 1427, 1521, 2620, 1950, 2014, 1521, 2377, 2445, 2377, - 296, 296, 296, 296, 297, 296, 298, 299, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 300, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 966, 966, 966, 966, - 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, - 966, 966, 966, 966, 966, 966, 966, 966, 296, 296, - 296, 296, 966, 966, 966, 966, 966, 966, 966, 966, - 966, 966, 966, 966, 966, 966, 966, 966, 966, 966, - - 966, 966, 966, 966, 966, 966, 966, 296, 296, 296, - 296, 297, 296, 298, 299, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, - 300, 296, 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 1042, 1042, 1042, 1042, 1042, 1042, 1042, - 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, - 1042, 1042, 1042, 1042, 1042, 296, 296, 296, 296, 1042, - 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, - 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, - 1042, 1042, 1042, 1042, 296, 296, 296, 1126, 1127, 1127, - - 1126, 1416, 2645, 1128, 1429, 1430, 1329, 1431, 1432, 1356, - 1478, 2645, 1433, 1478, 1464, 1764, 1482, 1464, 1434, 1482, - 1435, 1436, 1129, 1265, 1437, 1438, 2476, 1465, 2459, 1363, - 1785, 2459, 1081, 1301, 1319, 1354, 1081, 1355, 1356, 1764, - 4125, 1081, 1439, 1440, 1358, 1439, 4125, 2573, 1472, 1480, - 1481, 1472, 2476, 1360, 1478, 1441, 1130, 1478, 1131, 2574, - 2575, 1473, 1132, 1766, 4125, 1133, 1134, 1265, 1135, 1552, - 4125, 1136, 1137, 1138, 1139, 1300, 1329, 2755, 1777, 1301, - 1778, 1354, 2132, 1355, 1356, 1081, 1504, 1504, 1504, 1504, - 1358, 2133, 1081, 1764, 2262, 1480, 1481, 2262, 1796, 1360, - - 1081, 2531, 1301, 1302, 1303, 1304, 1305, 1306, 2132, 2604, - 1307, 1505, 1081, 1308, 1309, 1310, 1311, 2133, 1312, 1313, - 1314, 1315, 1316, 1329, 1500, 1500, 1500, 1500, 2531, 2756, - 2757, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1504, 1808, - 1808, 1808, 1808, 1501, 1501, 1501, 1501, 1501, 1501, 1502, - 1330, 1331, 1303, 1332, 1333, 1306, 1505, 1809, 1334, 2758, - 1505, 1308, 1309, 1310, 1335, 2761, 1336, 1337, 1314, 1315, - 1338, 1339, 1504, 1504, 1504, 1504, 1510, 1510, 1510, 1510, - 1514, 1514, 1514, 1514, 1527, 1081, 1081, 1511, 1081, 2763, - 1882, 1515, 1520, 1520, 1520, 1520, 2416, 1505, 1552, 1883, - - 2764, 1521, 1512, 1081, 2765, 1521, 1516, 1520, 1520, 1520, - 1520, 1631, 1631, 1631, 1631, 1081, 1521, 2477, 2766, 1551, - 1521, 1553, 1554, 1551, 1621, 1542, 1543, 1621, 2767, 1513, - 1551, 1631, 1631, 1631, 1631, 1555, 1632, 1622, 1552, 1081, - 1623, 2593, 1624, 2477, 1631, 1631, 1631, 1631, 1631, 1631, - 1631, 1631, 1721, 1721, 1721, 1721, 1632, 1325, 2768, 1551, - 1325, 2003, 1516, 1532, 2003, 1626, 2769, 1533, 1626, 1632, - 1552, 1533, 2484, 1632, 1318, 1534, 1532, 1722, 1961, 1551, - 1081, 1533, 1554, 1551, 1535, 1536, 1961, 1326, 1081, 1532, - 1551, 1537, 1286, 1533, 2619, 1555, 1482, 1533, 2484, 1482, - - 1286, 1534, 1532, 1599, 1538, 2625, 1539, 1815, 1533, 1363, - 1815, 1326, 1535, 1560, 1319, 1713, 1714, 1713, 1713, 1551, - 1318, 1721, 1721, 1721, 1721, 1816, 2621, 1561, 1719, 1812, - 1812, 1812, 1812, 1720, 2772, 1721, 1721, 1721, 1721, 2773, - 1562, 1563, 1564, 1565, 1566, 1567, 1722, 1568, 1569, 2486, - 1570, 1571, 1350, 1572, 1573, 1350, 1574, 1575, 1576, 1577, - 1722, 1658, 1659, 1658, 1658, 1265, 1562, 1563, 1564, 1565, - 1566, 1567, 1552, 1568, 1569, 2486, 1570, 1571, 2423, 1572, - 1573, 2423, 1352, 1574, 1575, 1576, 1577, 1578, 1578, 1578, - 1578, 1660, 2497, 1659, 1659, 1659, 1659, 1658, 1659, 1658, - - 1658, 1724, 1721, 1721, 1724, 1764, 1353, 2424, 1578, 2539, - 1578, 1578, 1083, 1364, 2586, 1661, 1364, 1767, 2497, 1780, - 1780, 1780, 1780, 1661, 2587, 1552, 1722, 1660, 1882, 1764, - 1781, 1812, 1812, 1812, 1812, 1578, 2539, 1883, 1579, 1580, - 1581, 1582, 1583, 1365, 1782, 1584, 1585, 1661, 1586, 2057, - 1587, 1661, 1588, 1766, 1589, 1590, 1591, 1592, 1593, 1594, - 1595, 1812, 1812, 1812, 1812, 1596, 2389, 1365, 1551, 2389, - 1553, 1554, 1551, 1597, 1597, 1597, 1597, 1597, 1597, 1598, - 1791, 2622, 1081, 1764, 1555, 2774, 1081, 1102, 1102, 1102, - 1102, 1081, 1081, 1081, 1806, 1081, 1081, 1081, 1081, 1081, - - 1081, 1087, 1087, 1087, 1087, 1081, 1081, 1081, 1551, 1087, - 1087, 1087, 1087, 1081, 1087, 1087, 1087, 1087, 2775, 1088, - 2759, 2760, 2776, 1093, 1094, 1094, 1093, 1088, 1122, 1122, - 1122, 1122, 1088, 1124, 1124, 1124, 1124, 2551, 1548, 1578, - 1578, 1578, 1578, 1828, 1958, 1081, 1123, 1958, 1095, 1081, - 1552, 1125, 2777, 2778, 1081, 1081, 1081, 1959, 2779, 1835, - 1578, 1081, 1578, 1578, 2551, 1081, 1087, 1087, 1087, 1087, - 1081, 1094, 1094, 1094, 1094, 2498, 1552, 2782, 1843, 1843, - 1843, 1843, 2783, 1278, 1088, 1081, 2784, 1600, 2785, 1081, - 1601, 1602, 1603, 1604, 1605, 1606, 1095, 1607, 1608, 2786, - - 1609, 2498, 1610, 1095, 1611, 1096, 1612, 1613, 1614, 1615, - 1616, 1617, 1595, 1098, 1098, 1098, 1098, 1596, 2787, 2598, - 1551, 2789, 1553, 1554, 1551, 1597, 1597, 1597, 1597, 1597, - 1597, 1598, 1098, 1098, 1098, 1098, 1555, 1081, 1095, 1081, - 1100, 2790, 1081, 1081, 1846, 1846, 1846, 1846, 1106, 1106, - 1106, 1106, 1108, 1109, 1109, 1108, 2752, 1095, 2000, 1100, - 1551, 2000, 1845, 1109, 1109, 1109, 1109, 1113, 1113, 1113, - 1113, 1100, 2762, 1107, 2001, 2628, 1109, 1109, 1109, 1109, - 2501, 1618, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, - 1548, 1643, 1115, 2780, 2781, 1643, 1643, 2791, 1644, 1643, - - 1643, 1849, 2628, 1643, 2795, 1643, 2501, 1115, 1857, 2796, - 2465, 1115, 1646, 2465, 1646, 1643, 1646, 1858, 1858, 1858, - 1858, 1858, 2797, 1122, 1122, 1122, 1122, 2798, 1124, 1124, - 1124, 1124, 2799, 2504, 1111, 1127, 1127, 1127, 1127, 2466, - 1643, 1123, 1643, 1643, 2003, 4125, 1125, 2003, 1878, 1878, - 1878, 1878, 2800, 1879, 1879, 1879, 1879, 1318, 4125, 2504, - 1129, 1143, 1887, 1887, 1887, 1887, 2801, 1148, 1148, 1148, - 1148, 1643, 1647, 2802, 2106, 1551, 1647, 1647, 1881, 1648, - 1647, 1647, 1551, 2803, 1647, 2792, 1647, 1129, 1148, 1148, - 1148, 1148, 1129, 1650, 1150, 1650, 1647, 1650, 1167, 1167, - - 1167, 1167, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, - 1552, 1551, 2792, 1129, 2505, 1150, 1148, 1148, 1148, 1148, - 2804, 1647, 2003, 1647, 1647, 2003, 2088, 1129, 2089, 1150, - 2508, 1129, 2090, 1150, 2129, 1318, 1911, 1911, 1911, 1911, - 2505, 1129, 2146, 1150, 2091, 2092, 1889, 1169, 1169, 1169, - 1169, 2459, 1647, 1651, 2459, 2595, 2508, 1651, 1651, 1891, - 1652, 1651, 1651, 1150, 2596, 1651, 2154, 1651, 1148, 1148, - 1148, 1148, 1170, 2907, 1654, 1893, 1654, 1651, 1654, 2478, - 2479, 2480, 1892, 1148, 1148, 1148, 1148, 1148, 1148, 1148, - 1148, 1894, 1552, 1129, 2481, 1150, 1148, 1148, 1148, 1148, - - 2003, 2805, 1651, 2003, 1651, 1651, 2262, 2908, 1129, 2262, - 1150, 2261, 1129, 1318, 1150, 1548, 1148, 1148, 1148, 1148, - 2481, 1129, 2910, 1150, 1148, 1148, 1148, 1148, 1148, 1148, - 1148, 1148, 2221, 1651, 1126, 1127, 1127, 1126, 2822, 1895, - 1128, 1129, 2913, 1150, 1552, 2222, 2914, 1898, 2223, 1129, - 1896, 1150, 2841, 1129, 2482, 1150, 1764, 2482, 1897, 1129, - 1148, 1148, 1148, 1148, 1899, 2822, 2915, 1148, 1148, 1148, - 1148, 1148, 1148, 1148, 1148, 1913, 1913, 1913, 1913, 2841, - 1764, 1900, 1902, 2483, 2208, 1129, 1901, 1150, 2209, 2916, - 2522, 1903, 1129, 1130, 1150, 1131, 1129, 2210, 1150, 1132, - - 1170, 2919, 1133, 1134, 1766, 1135, 2527, 2920, 1136, 1137, - 1138, 1139, 1148, 1148, 1148, 1148, 2522, 1904, 1148, 1148, - 1148, 1148, 1148, 1148, 1148, 1148, 1172, 1172, 1172, 1172, - 2565, 2853, 2527, 1905, 1764, 1906, 2921, 1129, 1552, 1150, - 2922, 2923, 1907, 1129, 1764, 1150, 2566, 1129, 2567, 1150, - 2924, 1170, 2528, 1174, 1172, 1172, 1172, 1172, 2853, 1915, - 1175, 1175, 1175, 1175, 1916, 1916, 1916, 1916, 1764, 1180, - 1180, 1180, 1180, 1182, 1182, 1182, 1182, 1908, 2528, 1170, - 2617, 1174, 2225, 1909, 1181, 1182, 1182, 1182, 1182, 2925, - 2930, 1174, 1766, 2933, 2934, 1910, 1183, 1183, 1183, 1183, - - 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1922, 1922, - 1922, 1922, 2532, 1195, 1195, 1195, 1195, 2500, 1321, 1190, - 2500, 1321, 1764, 1190, 1184, 1196, 1927, 1927, 1927, 1927, - 1200, 1322, 1081, 1081, 1323, 2937, 1081, 1928, 2532, 2938, - 2917, 1081, 1201, 1202, 1202, 1201, 2129, 1931, 2918, 1081, - 1202, 1202, 1202, 1202, 2939, 1185, 1932, 1932, 1932, 1932, - 1932, 1933, 1934, 1935, 1933, 1210, 1210, 1210, 1210, 1186, - 2940, 1187, 2854, 1188, 1938, 1938, 1938, 1938, 1210, 1210, - 1210, 1210, 1214, 1214, 1214, 1214, 1216, 1216, 1216, 1216, - 1211, 1942, 1942, 1942, 1942, 1216, 1216, 1216, 1216, 1211, - - 2854, 2106, 1551, 1211, 1220, 1220, 1220, 1220, 2943, 1551, - 2991, 1217, 2992, 1081, 1081, 1224, 1217, 1081, 1948, 1552, - 1217, 1081, 1229, 1229, 1229, 1229, 1081, 1949, 1949, 1949, - 1949, 1949, 1552, 2537, 1081, 1263, 1081, 1081, 1551, 1081, - 1230, 1275, 1275, 1275, 1275, 1288, 1288, 1288, 1288, 1081, - 1287, 1288, 1287, 1287, 1081, 2935, 2936, 2458, 1940, 2537, - 2458, 1321, 2502, 1283, 1321, 2502, 1317, 2926, 2506, 1317, - 1081, 2506, 2927, 2100, 1322, 1944, 2951, 1323, 2964, 1318, - 1342, 1341, 1342, 1342, 1319, 1342, 1341, 1342, 1342, 2994, - 1081, 2503, 1345, 1346, 1347, 1345, 1294, 2507, 1081, 1081, - - 1302, 1963, 1304, 1964, 1965, 1348, 1552, 1966, 1349, 1552, - 1967, 1309, 1310, 1311, 1552, 1312, 1313, 1314, 1315, 1968, - 1294, 1340, 1341, 1342, 1340, 2019, 1341, 1342, 2019, 1345, - 1346, 1347, 1345, 1626, 1343, 1362, 1626, 2857, 1362, 1319, - 1552, 2001, 1348, 1321, 1371, 1349, 1321, 1371, 1363, 2928, - 1552, 1326, 2928, 1319, 2225, 1552, 1322, 2945, 2226, 1323, - 2980, 1266, 1372, 2227, 2857, 1352, 1366, 1367, 1367, 1366, - 1374, 1374, 1374, 1374, 1365, 1326, 2027, 2027, 2027, 2027, - 1374, 1374, 1374, 1374, 1368, 1380, 1380, 1380, 1380, 1353, - 1382, 1383, 1382, 1382, 1552, 1375, 2955, 1552, 1365, 2952, - - 1403, 1375, 2881, 1403, 2538, 1375, 2929, 1379, 1387, 1388, - 1387, 1387, 1397, 1397, 1397, 1397, 2034, 2034, 2034, 2034, - 1397, 1397, 1397, 1397, 1401, 1401, 1401, 1401, 1404, 2881, - 2538, 1417, 1418, 1419, 1417, 1552, 1552, 1398, 2953, 2509, - 2156, 1398, 2509, 2542, 1420, 1398, 2157, 2158, 2960, 1421, - 1419, 1418, 1419, 1419, 1423, 1424, 1425, 1423, 2995, 1405, - 2029, 1422, 1419, 1418, 1419, 1419, 2156, 1426, 2510, 2542, - 1323, 2632, 1266, 2157, 2158, 1429, 1430, 1406, 1431, 1432, - 1552, 2633, 2946, 1433, 1427, 1422, 1552, 1552, 2996, 1434, - 2511, 1435, 1436, 2511, 2950, 1437, 1438, 2632, 2106, 1551, - - 2036, 2044, 1418, 1419, 2044, 2885, 1551, 2633, 1427, 1423, - 1424, 1425, 1423, 2045, 1418, 1419, 2045, 2001, 1552, 2512, - 1429, 1430, 1426, 1431, 1432, 1323, 2046, 2638, 1433, 2961, - 2959, 1422, 2885, 2947, 1434, 1551, 1435, 1436, 2639, 1427, - 1437, 1438, 3001, 1422, 2065, 2066, 2065, 2065, 2068, 2066, - 2068, 2068, 3002, 2638, 2720, 1422, 1500, 1500, 1500, 1500, - 2788, 2069, 2733, 1427, 2639, 2733, 2954, 1422, 1500, 1500, - 1500, 1500, 1552, 3003, 1552, 1500, 1500, 1500, 1500, 2810, - 2720, 1502, 1504, 1504, 1504, 1504, 2788, 1501, 1501, 1501, - 1501, 1501, 1501, 1502, 2079, 2079, 2079, 2079, 2079, 2079, - - 1502, 2081, 2081, 2081, 2081, 2810, 1552, 1505, 1504, 1504, - 1504, 1504, 1508, 1508, 1508, 1508, 1510, 1510, 1510, 1510, - 1514, 1514, 1514, 1514, 2963, 2734, 1505, 1511, 1552, 2513, - 2956, 1515, 2513, 1505, 1517, 1517, 1517, 1517, 1519, 1519, - 1519, 1519, 1512, 1552, 2811, 2812, 1516, 3004, 2605, 1518, - 1519, 1519, 1519, 1519, 1520, 1520, 1520, 1520, 2514, 1520, - 1520, 1520, 1520, 1521, 2606, 2815, 2607, 1521, 1521, 1513, - 2811, 2812, 1521, 1527, 1081, 1081, 2974, 1081, 1541, 1542, - 1543, 1541, 3006, 3007, 3010, 2083, 1544, 1545, 1543, 1544, - 2948, 2815, 1081, 1543, 1546, 1543, 1543, 1544, 1545, 1543, - - 1544, 2829, 1516, 2941, 1081, 2097, 2098, 1543, 2097, 1543, - 1546, 1543, 1543, 1625, 3019, 1552, 1625, 1595, 2099, 2942, - 2128, 2100, 1596, 2128, 1552, 2834, 1622, 2829, 1081, 1623, - 2101, 2101, 2101, 2101, 2101, 2101, 2102, 1551, 3020, 2105, - 1554, 1551, 2108, 1551, 2183, 2183, 2183, 2183, 1551, 2129, - 1551, 2834, 1552, 1555, 1551, 1555, 1553, 1554, 1551, 2170, - 2170, 2170, 2170, 3021, 2130, 1551, 2131, 2962, 1552, 3022, - 1555, 2145, 1552, 2972, 2145, 1552, 1552, 1551, 1551, 1551, - 1551, 1552, 1551, 1551, 1551, 1551, 1551, 1551, 1551, 1551, - 2130, 2540, 2967, 2131, 1551, 1548, 2134, 2839, 2135, 2153, - - 2146, 2184, 2153, 2136, 2541, 2140, 2141, 2142, 2840, 2185, - 2137, 1552, 2966, 2147, 2148, 1552, 2968, 2540, 1551, 1657, - 2143, 1081, 2134, 2839, 2135, 2965, 2665, 2975, 2154, 2136, - 2541, 2144, 3023, 3025, 2840, 2171, 3005, 2137, 1081, 2147, - 2148, 2172, 2172, 2172, 2172, 2155, 2143, 1081, 1548, 2112, - 2113, 2114, 2115, 2116, 2117, 1552, 2118, 2119, 2144, 2120, - 2121, 1552, 2122, 2123, 3005, 2124, 2125, 2126, 2127, 3026, - 2976, 2844, 2155, 2979, 1081, 2112, 2113, 2114, 2115, 2116, - 2117, 2159, 2118, 2119, 2160, 2120, 2121, 2487, 2122, 2123, - 2487, 3027, 2124, 2125, 2126, 2127, 2161, 2844, 2162, 2165, - - 2165, 2165, 2165, 1635, 1635, 1635, 1635, 2159, 2981, 2982, - 2160, 2173, 2177, 2177, 2177, 2177, 2488, 2165, 2165, 2165, - 2165, 2516, 3028, 2161, 2516, 2162, 2470, 1552, 2172, 2172, - 2172, 2172, 3029, 2489, 1552, 2471, 2170, 2170, 2170, 2170, - 2518, 2236, 3030, 2518, 2236, 1552, 2177, 2177, 2177, 2177, - 2517, 3031, 2470, 1552, 1622, 3032, 2858, 2237, 1552, 2166, - 2489, 2471, 2869, 1552, 1631, 1631, 1631, 1631, 2167, 2519, - 2520, 2458, 2168, 2520, 2458, 2169, 3033, 2200, 3034, 2985, - 3035, 2178, 2858, 3036, 2099, 2205, 2201, 2100, 2869, 1632, - 2202, 2179, 1595, 2203, 3037, 2206, 2876, 1596, 2207, 2521, - - 1551, 3040, 1553, 1554, 1551, 1597, 1597, 1597, 1597, 1597, - 1597, 1598, 2204, 3041, 3038, 2211, 1555, 1552, 2238, 2238, - 2238, 2238, 2876, 3039, 3042, 2212, 1621, 1542, 1543, 1621, - 1631, 1631, 1631, 1631, 2183, 2183, 2183, 2183, 2523, 1622, - 1551, 2523, 1623, 1632, 1624, 1643, 3064, 3067, 2714, 1643, - 1643, 1552, 1644, 1643, 1643, 1632, 3068, 1643, 1552, 1643, - 2717, 2969, 1658, 1659, 1658, 1658, 2970, 2524, 3071, 1643, - 1548, 1595, 1713, 1714, 1713, 1713, 1596, 3072, 3073, 1551, - 3076, 1553, 1554, 1551, 1597, 1597, 1597, 1597, 1597, 1597, - 1598, 2219, 1660, 3077, 1643, 1555, 1643, 1643, 1552, 2220, - - 2884, 3078, 2240, 1713, 1714, 1713, 1713, 1659, 1659, 1659, - 1659, 1691, 1081, 1081, 1081, 1081, 1661, 2977, 2978, 1551, - 1696, 1081, 1081, 1081, 1081, 1643, 2884, 1647, 3079, 3080, - 2890, 1647, 1647, 3081, 1648, 1647, 1647, 1661, 3083, 1647, - 2957, 1647, 1701, 1081, 1081, 1081, 1081, 3084, 2958, 1548, - 1643, 1647, 3086, 3088, 1643, 1643, 2890, 1644, 1643, 1643, - 2733, 1661, 1643, 2733, 1643, 1706, 1081, 1081, 1081, 1081, - 3089, 1646, 2891, 1646, 1643, 1646, 1647, 1552, 1647, 1647, - 1716, 1717, 1718, 1717, 1717, 1713, 1714, 1713, 1713, 1716, - 1717, 1718, 1717, 1717, 1713, 1714, 1713, 1713, 2891, 1643, - - 3090, 1643, 1643, 1713, 1714, 1713, 1713, 1647, 1651, 3091, - 3092, 2896, 1651, 1651, 3093, 1652, 1651, 1651, 2983, 3094, - 1651, 3096, 1651, 1721, 1721, 1721, 1721, 3080, 3097, 3098, - 1643, 1647, 1651, 3099, 2984, 1647, 1647, 2896, 1648, 1647, - 1647, 3085, 3100, 1647, 3085, 1647, 3101, 1785, 1722, 1081, - 3102, 3103, 1650, 1081, 1650, 1647, 1650, 1651, 1081, 1651, - 1651, 2258, 2258, 2258, 2258, 1724, 1721, 1721, 1724, 2993, - 2261, 1724, 1721, 1721, 1724, 1726, 1726, 1726, 1726, 2014, - 1647, 2526, 1647, 1647, 2526, 3104, 1722, 2014, 1651, 2529, - 1722, 3105, 2529, 3106, 2275, 2993, 1722, 1780, 1780, 1780, - - 1780, 3102, 1081, 2276, 2276, 2276, 2276, 2276, 1781, 3107, - 2146, 1647, 1651, 3108, 3109, 3110, 1651, 1651, 2530, 1652, - 1651, 1651, 1782, 3111, 1651, 3115, 1651, 2424, 1791, 3087, - 1081, 3116, 3087, 1654, 1081, 1654, 1651, 1654, 3117, 1081, - 1081, 1081, 3118, 3095, 3119, 2260, 3095, 1081, 1807, 1807, - 1807, 1807, 2057, 3120, 1806, 1081, 1081, 1081, 1081, 2533, - 1081, 1651, 2533, 1651, 1651, 1081, 1081, 1081, 1808, 1808, - 1808, 1808, 2287, 1081, 1812, 1812, 1812, 1812, 3121, 2057, - 3122, 2288, 2288, 2288, 2288, 2288, 1809, 1828, 2534, 1081, - 3123, 3117, 1651, 1081, 2291, 3124, 3125, 3126, 1081, 1081, - - 1081, 3127, 3128, 2292, 2292, 2292, 2292, 2292, 1835, 2536, - 1081, 2295, 2536, 3129, 1081, 1843, 1843, 1843, 1843, 1081, - 2296, 2296, 2296, 2296, 2296, 1098, 1098, 1098, 1098, 1102, - 1102, 1102, 1102, 1846, 1846, 1846, 1846, 3130, 2154, 3129, - 1095, 1846, 1846, 1846, 1846, 2298, 2298, 2298, 2298, 3131, - 1095, 3132, 1100, 2302, 2302, 2302, 2302, 3134, 3112, 3135, - 1100, 3112, 2308, 1878, 1878, 1878, 1878, 3136, 1100, 3137, - 2299, 2309, 2309, 2309, 2309, 2309, 1143, 1879, 1879, 1879, - 1879, 1879, 1879, 1879, 1879, 1887, 1887, 1887, 1887, 3133, - 3138, 1081, 1081, 1148, 1148, 1148, 1148, 3139, 3113, 1845, - - 3140, 3113, 1881, 3141, 3142, 2543, 1881, 3143, 2543, 3114, - 1129, 1167, 1167, 1167, 1167, 3133, 2545, 2466, 1129, 2545, - 1150, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 2301, - 1148, 1148, 1148, 1148, 2544, 1148, 1148, 1148, 1148, 1148, - 1148, 1148, 1148, 2468, 2928, 2546, 1129, 2928, 1150, 3146, - 1129, 2483, 1150, 2488, 2503, 1129, 2507, 1150, 2510, 2512, - 1129, 1552, 1150, 3147, 1129, 2547, 1150, 2514, 2547, 1889, - 3145, 2517, 1148, 1148, 1148, 1148, 3146, 1148, 1148, 1148, - 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 3147, - 2519, 2337, 2521, 2336, 2548, 2335, 2338, 1129, 3145, 1150, - - 2524, 2971, 1129, 3168, 1150, 2530, 1129, 2534, 1150, 2339, - 1129, 2544, 1150, 3203, 1148, 1148, 1148, 1148, 1148, 1148, - 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, - 3168, 1148, 1148, 1148, 1148, 2546, 2548, 2340, 2341, 1129, - 3203, 1150, 2550, 1129, 3218, 1150, 2343, 1129, 3219, 1150, - 3220, 1129, 3225, 1150, 3226, 3227, 1129, 2342, 1150, 1148, - 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, - 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 3228, - 1148, 1148, 1148, 1148, 1129, 3229, 1150, 3230, 1129, 2346, - 1150, 2344, 1129, 2345, 1150, 2347, 1129, 3231, 1150, 3158, - - 1129, 3165, 1150, 3232, 3233, 1129, 2348, 1150, 3234, 1911, - 1911, 1911, 1911, 1911, 1911, 1911, 1911, 1913, 1913, 1913, - 1913, 1172, 1172, 1172, 1172, 3158, 3235, 3165, 2351, 1175, - 1175, 1175, 1175, 3238, 2350, 2349, 1150, 3241, 3242, 3243, - 1150, 2352, 1170, 3244, 2353, 3245, 1170, 3173, 1174, 1916, - 1916, 1916, 1916, 3248, 3249, 2354, 1916, 1916, 1916, 1916, - 1922, 1922, 1922, 1922, 1927, 1927, 1927, 1927, 2362, 1933, - 1934, 1935, 1933, 3173, 3174, 1928, 1174, 2363, 2363, 2363, - 2363, 2363, 3252, 1174, 1935, 1934, 1935, 1935, 1938, 1938, - 1938, 1938, 1210, 1210, 1210, 1210, 1214, 1214, 1214, 1214, - - 3174, 1915, 1942, 1942, 1942, 1942, 1216, 1216, 1216, 1216, - 3253, 2928, 3300, 1211, 2928, 3301, 3304, 1211, 1220, 1220, - 1220, 1220, 2549, 2366, 3179, 2549, 3192, 1217, 3305, 3306, - 3312, 1217, 2367, 2367, 2367, 2367, 2367, 2019, 1341, 1342, - 2019, 2027, 2027, 2027, 2027, 3313, 1374, 1374, 1374, 1374, - 3179, 2550, 3192, 2001, 1380, 1380, 1380, 1380, 2034, 2034, - 2034, 2034, 1397, 1397, 1397, 1397, 1375, 1401, 1401, 1401, - 1401, 1375, 1940, 1379, 1552, 2045, 1418, 1419, 2045, 2044, - 1418, 1419, 2044, 1398, 1552, 3206, 1944, 1398, 2046, 2045, - 1418, 1419, 2045, 3250, 1552, 2001, 1552, 1423, 1424, 1425, - - 1423, 3251, 2046, 2724, 1552, 1422, 2724, 1552, 1552, 1422, - 1426, 3206, 3314, 1323, 2065, 2066, 2065, 2065, 3315, 1422, - 2065, 2066, 2065, 2065, 2490, 2029, 3255, 1427, 3264, 1422, - 2491, 2492, 2725, 1422, 2446, 2446, 2446, 2446, 1508, 1508, - 1508, 1508, 2036, 1422, 1500, 1500, 1500, 1500, 3268, 3256, - 2490, 1427, 1500, 1500, 1500, 1500, 3265, 2491, 2492, 1502, - 3258, 3008, 3257, 2079, 2079, 2079, 2079, 2079, 2079, 1502, - 1552, 2079, 2079, 2079, 2079, 2079, 2079, 1502, 2081, 2081, - 2081, 2081, 1504, 1504, 1504, 1504, 2097, 2098, 1543, 2097, - 3011, 1552, 2097, 2098, 1543, 2097, 1595, 2771, 3013, 2099, - - 2771, 1596, 2100, 1505, 1552, 2099, 1552, 1505, 2100, 2101, - 2101, 2101, 2101, 2101, 2101, 2102, 1595, 2467, 3209, 3210, - 2467, 1596, 2165, 2165, 2165, 2165, 2424, 3262, 3015, 2101, - 2101, 2101, 2101, 2101, 2101, 2102, 2105, 3215, 2105, 2108, - 1551, 2108, 1551, 3263, 3209, 3210, 2468, 1551, 1552, 1551, - 3318, 2472, 1555, 2473, 1555, 3278, 2807, 2809, 2474, 2807, - 2809, 2469, 2083, 3215, 3270, 2475, 2170, 2170, 2170, 2170, - 2172, 2172, 2172, 2172, 1548, 1552, 1551, 2472, 1551, 2473, - 2177, 2177, 2177, 2177, 2474, 2466, 2468, 2469, 2183, 2183, - 2183, 2183, 2475, 3319, 1548, 1595, 2576, 2576, 2576, 2576, - - 1596, 3266, 1552, 1551, 1552, 1551, 1552, 1551, 2462, 2462, - 2462, 2462, 2462, 2462, 1598, 2493, 1552, 3269, 2494, 2576, - 2576, 2576, 2576, 3267, 2236, 1552, 2236, 2236, 1552, 2236, - 2495, 2813, 2496, 1552, 2813, 1552, 1552, 1622, 3320, 1622, - 1623, 2493, 1623, 1551, 2494, 2238, 2238, 2238, 2238, 2613, - 3322, 1552, 2614, 1635, 1635, 1635, 1635, 2495, 3275, 2496, - 2814, 2615, 2616, 1631, 1631, 1631, 1631, 1552, 1552, 3271, - 1632, 3323, 1552, 1548, 1551, 3274, 1551, 1552, 1551, 1551, - 1551, 1551, 1551, 1551, 1551, 1551, 3272, 1552, 1632, 3282, - 2258, 2258, 2258, 2258, 1724, 1721, 1721, 1724, 1726, 1726, - - 1726, 1726, 2298, 2298, 2298, 2298, 2657, 2657, 2657, 2657, - 1552, 2643, 3273, 3277, 1551, 1722, 3324, 3283, 3325, 1722, - 2644, 2644, 2644, 2644, 2644, 2648, 3326, 2299, 3276, 2240, - 2584, 2299, 1552, 3327, 2649, 2649, 2649, 2649, 2649, 2659, - 2659, 2659, 2659, 3284, 1548, 1595, 2302, 2302, 2302, 2302, - 1596, 3328, 3329, 1551, 3330, 1553, 1554, 1551, 1597, 1597, - 1597, 1597, 1597, 1597, 2623, 3331, 2651, 3332, 3281, 1555, - 2816, 2654, 3285, 2816, 2260, 2652, 2652, 2652, 2652, 2652, - 2655, 2655, 2655, 2655, 2655, 2665, 2301, 2688, 2688, 2688, - 2688, 3333, 3334, 1551, 2666, 2666, 2666, 2666, 2666, 2817, - - 1143, 1148, 1148, 1148, 1148, 2714, 2690, 2690, 2690, 2690, - 2909, 2909, 2909, 2909, 2715, 2715, 2715, 2715, 2715, 1148, - 1148, 1148, 1148, 1548, 1595, 1552, 1129, 1552, 1150, 1596, - 3335, 1129, 1551, 1150, 1553, 1554, 1551, 1597, 1597, 1597, - 1597, 1597, 1597, 1598, 1129, 3336, 1150, 3338, 1555, 1148, - 1148, 1148, 1148, 1148, 1148, 1148, 1148, 3339, 1148, 1148, - 1148, 1148, 2446, 2446, 2446, 2446, 1148, 1148, 1148, 1148, - 1552, 3361, 1551, 3286, 1129, 2689, 1150, 3362, 1129, 3365, - 1150, 1552, 3366, 1129, 3367, 1150, 2725, 1502, 3288, 2624, - 2691, 1129, 3369, 1150, 1148, 1148, 1148, 1148, 1148, 1148, - - 1148, 1148, 1548, 1148, 1148, 1148, 1148, 1148, 1148, 1148, - 1148, 1148, 1148, 1148, 1148, 2911, 2911, 2911, 2911, 1129, - 3289, 1150, 2692, 1129, 3370, 1150, 2693, 2694, 1129, 3292, - 1150, 3371, 1129, 3373, 1150, 3374, 1129, 3375, 1150, 2695, - 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, - 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, - 2698, 2696, 3376, 1552, 3377, 1129, 3380, 1150, 2699, 1129, - 3381, 1150, 2697, 1129, 3382, 1150, 2700, 1129, 3383, 1150, - 3384, 1129, 3385, 1150, 3386, 1148, 1148, 1148, 1148, 2912, - 1148, 1148, 1148, 1148, 3388, 3372, 2014, 2701, 3372, 1148, - - 1148, 1148, 1148, 2818, 3390, 2820, 2818, 2703, 2820, 2702, - 1129, 3293, 1150, 3392, 2014, 1129, 2705, 1150, 2717, 2704, - 1500, 1500, 1500, 1500, 1129, 2706, 1150, 2718, 2718, 2718, - 2718, 2718, 2819, 2823, 2821, 2825, 2823, 3393, 2825, 2793, - 2793, 2793, 2793, 2793, 2793, 1502, 3394, 3085, 2827, 2831, - 3085, 2827, 2831, 2708, 2707, 3087, 2832, 3095, 3087, 2832, - 3095, 3395, 2824, 3396, 2826, 3397, 3378, 2835, 2838, 2845, - 2835, 2838, 2845, 3379, 3398, 2709, 1595, 2828, 2483, 2847, - 2849, 1596, 2847, 2849, 1551, 2833, 1551, 1552, 1551, 2462, - 2462, 2462, 2462, 2462, 2462, 1598, 2836, 2488, 2846, 2842, - - 2851, 2500, 2856, 2851, 2500, 2856, 2057, 2860, 2848, 2850, - 2860, 2861, 2843, 2864, 2861, 2866, 2864, 2868, 2866, 2871, - 2868, 3378, 2871, 2873, 1551, 2842, 2873, 3400, 3391, 2852, - 2129, 2503, 2875, 3401, 3387, 2875, 2507, 3387, 2843, 3402, - 2862, 3403, 2510, 3404, 2512, 2057, 2514, 2878, 2517, 3405, - 2878, 3406, 2519, 2526, 1548, 1595, 2526, 3379, 3407, 2879, - 1596, 2521, 2879, 1551, 3408, 1551, 1552, 1551, 2462, 2462, - 2462, 2462, 2462, 2462, 1598, 2883, 2524, 2887, 2883, 1552, - 2887, 2536, 2146, 2888, 2536, 3409, 2888, 2892, 2880, 2894, - 2892, 2898, 2894, 2900, 2898, 2902, 2900, 2904, 2902, 2905, - - 2904, 3410, 2905, 1551, 2530, 3389, 2534, 3412, 3389, 3413, - 2154, 3414, 2889, 3415, 3069, 3416, 2893, 3069, 2895, 3290, - 2544, 3417, 2546, 3418, 2548, 2814, 2550, 3291, 2906, 2931, - 2931, 2931, 2931, 1548, 2909, 2909, 2909, 2909, 3411, 2911, - 2911, 2911, 2911, 3070, 2817, 2819, 2986, 2997, 2997, 2997, - 2997, 1552, 2931, 2931, 2931, 2931, 1552, 2988, 2999, 2999, - 2999, 2999, 2821, 3075, 3411, 2989, 3075, 3008, 3112, 1552, - 2986, 3112, 3011, 2824, 2826, 2998, 3009, 3009, 3009, 3009, - 3009, 3012, 3012, 3012, 3012, 3012, 3000, 3013, 2659, 2659, - 2659, 2659, 2725, 2828, 1551, 2833, 3014, 3014, 3014, 3014, - - 3014, 3422, 2836, 2932, 1595, 3017, 3017, 3017, 3017, 1596, - 2846, 2848, 1551, 2949, 1551, 1552, 1551, 2462, 2462, 2462, - 2462, 2462, 2462, 1598, 2986, 3015, 2973, 3422, 2771, 2807, - 2299, 2771, 2807, 2850, 3016, 3016, 3016, 3016, 3016, 2657, - 2657, 2657, 2657, 2657, 2657, 2657, 2657, 3024, 3024, 3024, - 3024, 2852, 1551, 2688, 2688, 2688, 2688, 2424, 2466, 3043, - 3043, 3043, 3043, 3445, 2299, 2862, 1143, 2880, 2299, 2944, - 3063, 3063, 3063, 3063, 3065, 3065, 3065, 3065, 2690, 2690, - 2690, 2690, 1548, 1595, 1129, 3066, 1150, 2889, 1596, 2301, - 3445, 1551, 2893, 1553, 1554, 1551, 1597, 1597, 1597, 1597, - - 1597, 1597, 2623, 1129, 2895, 1150, 3431, 1555, 1148, 1148, - 1148, 1148, 2906, 1148, 1148, 1148, 1148, 1148, 1148, 1148, - 1148, 3434, 3462, 1148, 1148, 1148, 1148, 1148, 1148, 1148, - 1148, 1551, 3431, 1129, 3113, 1150, 3463, 3113, 1129, 3464, - 1150, 3465, 1129, 3435, 1150, 3114, 3466, 3434, 1129, 3467, - 1150, 3468, 1129, 3469, 1150, 3470, 2809, 3471, 3472, 2809, - 3471, 1548, 1595, 1148, 1148, 1148, 1148, 1596, 3149, 3435, - 1551, 3149, 1553, 1554, 1551, 1597, 1597, 1597, 1597, 1597, - 1597, 1598, 3045, 3044, 3047, 2468, 1555, 3473, 1129, 3048, - 1150, 3474, 3046, 1148, 1148, 1148, 1148, 2814, 1148, 1148, - - 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, - 1551, 3475, 3477, 2990, 1148, 1148, 1148, 1148, 1129, 3478, - 1150, 3479, 3480, 1129, 3049, 1150, 3481, 1129, 3482, 1150, - 3486, 1129, 3487, 1150, 3488, 1148, 1148, 1148, 1148, 1129, - 1548, 1150, 1148, 1148, 1148, 1148, 3489, 1148, 1148, 1148, - 1148, 1148, 1148, 1148, 1148, 2911, 2911, 2911, 2911, 1552, - 1129, 3052, 1150, 3150, 3050, 3053, 3150, 1129, 1552, 1150, - 3532, 1552, 1129, 3051, 1150, 1552, 1129, 3153, 1150, 3440, - 3153, 3054, 1148, 1148, 1148, 1148, 3060, 3060, 3060, 3060, - 3155, 3533, 3151, 3155, 3055, 3061, 3061, 3061, 3061, 1148, - - 1148, 1148, 1148, 1552, 3057, 3440, 2817, 1129, 3493, 1150, - 1552, 1129, 3058, 1150, 3491, 3492, 3536, 3056, 1595, 2819, - 1129, 3537, 1150, 1596, 1129, 3517, 1150, 1500, 1500, 1500, - 1500, 2101, 2101, 2101, 2101, 2101, 2101, 2102, 1552, 3059, - 1500, 1500, 1500, 1500, 1552, 3499, 2793, 2793, 2793, 2793, - 2793, 2793, 1502, 3538, 3456, 3157, 3062, 3497, 3157, 2793, - 2793, 2793, 2793, 2793, 2793, 1502, 3160, 3459, 3162, 3160, - 3164, 3162, 2831, 3164, 3167, 2831, 3170, 3167, 2838, 3170, - 3456, 2838, 3171, 3144, 2821, 3171, 3175, 3177, 3181, 3175, - 3177, 3181, 1552, 3459, 3494, 2824, 1548, 2826, 1552, 2828, - - 1552, 2483, 3503, 2833, 1552, 2836, 3183, 2488, 1552, 3183, - 3185, 3172, 1552, 3185, 1552, 3176, 3178, 2846, 3187, 3188, - 3190, 3187, 3188, 3190, 2856, 3193, 2860, 2856, 3193, 2860, - 3196, 2864, 3539, 3196, 2864, 2848, 3498, 2866, 2868, 2850, - 2866, 2868, 3197, 2871, 1552, 3197, 2871, 2852, 3189, 3191, - 3500, 3501, 3502, 2503, 3194, 2507, 3507, 3508, 2873, 2862, - 2510, 2873, 2875, 1552, 1552, 2875, 2512, 2514, 3506, 1552, - 3199, 3198, 2517, 3199, 2878, 3202, 2883, 2878, 3202, 2883, - 3204, 2887, 3208, 3204, 2887, 3208, 3212, 2519, 1552, 3212, - 3214, 2521, 2898, 3214, 2900, 2898, 3509, 2900, 2902, 3200, - - 3541, 2902, 3546, 2524, 2880, 2530, 3547, 3512, 3551, 3205, - 2534, 2889, 3505, 2904, 3217, 2893, 2904, 3217, 1552, 2895, - 3553, 2544, 3511, 2546, 3554, 3555, 1552, 2548, 3221, 3222, - 3223, 3221, 3224, 3224, 3224, 3224, 3236, 3236, 3236, 3236, - 1552, 3518, 2550, 2906, 3237, 3237, 3237, 3237, 3239, 3239, - 3239, 3239, 2931, 2931, 2931, 2931, 3246, 3246, 3246, 3246, - 2911, 2911, 2911, 2911, 3221, 3222, 3223, 3221, 3224, 3224, - 3224, 3224, 3236, 3236, 3236, 3236, 3515, 1552, 3516, 3302, - 3559, 1552, 3302, 1552, 3316, 1552, 1552, 3316, 3510, 1552, - 3237, 3237, 3237, 3237, 3239, 3239, 3239, 3239, 2931, 2931, - - 2931, 2931, 3246, 3246, 3246, 3246, 2986, 1552, 3303, 2986, - 3471, 1552, 3317, 3471, 3562, 1552, 3563, 2988, 1552, 1552, - 3295, 2987, 3240, 3247, 1595, 3564, 1552, 1552, 2987, 1596, - 2986, 3519, 1551, 2986, 1551, 1552, 1551, 2462, 2462, 2462, - 2462, 2462, 2462, 1598, 3521, 2997, 2997, 2997, 2997, 3581, - 3307, 3307, 3307, 3307, 1551, 3308, 3364, 1551, 3279, 3364, - 2999, 2999, 2999, 2999, 3311, 3311, 3311, 3311, 3280, 3287, - 3513, 3523, 1551, 2998, 3582, 3309, 3309, 3309, 3309, 3254, - 3310, 3070, 3583, 3584, 2986, 3070, 3378, 2986, 3000, 3321, - 3321, 3321, 3321, 3585, 3017, 3017, 3017, 3017, 3024, 3024, - - 3024, 3024, 1548, 3259, 3259, 3259, 3586, 3259, 3259, 3259, - 3259, 3259, 3259, 3259, 3259, 3259, 3259, 3259, 3259, 2299, - 3259, 3588, 3261, 3337, 3337, 3337, 3337, 3043, 3043, 3043, - 3043, 3259, 3259, 3259, 3259, 3259, 3589, 3341, 3341, 3341, - 3341, 3342, 3342, 3342, 3342, 1148, 1148, 1148, 1148, 3590, - 3075, 3591, 1129, 3075, 1150, 3592, 3420, 3593, 3259, 3420, - 3259, 3259, 1129, 1552, 1150, 1552, 1129, 3594, 1150, 3595, - 1129, 3597, 1150, 3063, 3063, 3063, 3063, 3598, 2301, 2725, - 3399, 3399, 3399, 3399, 1984, 3421, 3601, 3259, 3259, 3259, - 2986, 3343, 3343, 3343, 3343, 3602, 3587, 3599, 2987, 3587, - - 2987, 2988, 2987, 2987, 2987, 2987, 2987, 2987, 2987, 2987, - 3340, 3599, 3603, 3604, 2986, 3522, 1129, 3524, 1150, 1148, - 1148, 1148, 1148, 3345, 3345, 3345, 3345, 2014, 1148, 1148, - 1148, 1148, 1148, 1148, 1148, 1148, 2014, 3605, 1551, 1148, - 1148, 1148, 1148, 3606, 1129, 3607, 1150, 3608, 1129, 3423, - 1150, 3609, 3423, 1129, 3297, 1150, 3610, 1129, 3372, 1150, - 3596, 3372, 3149, 3596, 1129, 3149, 1150, 3611, 3298, 1595, - 3349, 3349, 3349, 3349, 1596, 3612, 3344, 1551, 3424, 1553, - 1554, 1551, 1597, 1597, 1597, 1597, 1597, 1597, 1598, 3346, - 3613, 2814, 2057, 1555, 2057, 3350, 3614, 1150, 3426, 3153, - - 3347, 3426, 3153, 3348, 1148, 1148, 1148, 1148, 3353, 3353, - 3353, 3353, 3354, 3354, 3354, 3354, 3615, 1551, 1148, 1148, - 1148, 1148, 3616, 1148, 1148, 1148, 1148, 3151, 2817, 1129, - 3617, 1150, 3618, 1129, 3619, 1150, 3620, 1129, 3299, 1150, - 3621, 3622, 3151, 1129, 3351, 1150, 3600, 1548, 1129, 3600, - 1150, 3172, 1148, 1148, 1148, 1148, 3060, 3060, 3060, 3060, - 3176, 3061, 3061, 3061, 3061, 1148, 1148, 1148, 1148, 3359, - 3359, 3359, 3359, 3065, 3065, 3065, 3065, 1129, 3352, 1150, - 3360, 1129, 1595, 1150, 3066, 3356, 1129, 1596, 1150, 3178, - 1129, 3387, 1150, 3355, 3387, 2101, 2101, 2101, 2101, 2101, - - 2101, 2102, 3155, 3626, 3157, 3155, 3427, 3157, 3633, 3427, - 3160, 3162, 3164, 3160, 3162, 3164, 3429, 3189, 3167, 3429, - 3357, 3167, 3170, 3433, 3437, 3170, 3433, 3437, 3191, 3194, - 3626, 2819, 3358, 2821, 3633, 3428, 3198, 3419, 3200, 2824, - 2826, 2828, 3205, 3439, 3650, 3430, 3439, 2833, 3651, 3653, - 3654, 2836, 3172, 3176, 3181, 3183, 3185, 3181, 3183, 3185, - 1548, 3187, 3442, 3444, 3187, 3442, 3444, 3447, 3196, 3655, - 3447, 3196, 3178, 3449, 3451, 3202, 3449, 3451, 3202, 3452, - 3656, 3657, 3452, 2846, 2848, 2850, 3455, 3658, 3659, 3455, - 2852, 3189, 3191, 3636, 3660, 3208, 3194, 2862, 3208, 3661, - - 3662, 3663, 3198, 3200, 2880, 3666, 3457, 3212, 3453, 3457, - 3212, 3214, 3643, 3460, 3214, 3205, 3460, 3217, 3389, 3636, - 3217, 3389, 3667, 3668, 2889, 3221, 3222, 3223, 3221, 3223, - 3222, 3223, 3223, 3669, 3471, 3458, 2893, 3471, 3643, 3670, - 2895, 3671, 3461, 1552, 3698, 3703, 2906, 3223, 3222, 3223, - 3223, 3236, 3236, 3236, 3236, 3476, 3476, 3476, 3476, 3239, - 3239, 3239, 3239, 3246, 3246, 3246, 3246, 3483, 3483, 3483, - 3483, 3485, 3485, 3485, 3485, 3504, 3504, 3504, 3504, 3504, - 3504, 3476, 3476, 3476, 3476, 3239, 3239, 3239, 3239, 3514, - 3514, 3514, 3514, 3483, 3483, 3483, 3483, 2986, 1552, 1552, - - 3535, 3674, 1552, 3535, 1552, 3704, 1552, 1552, 3295, 2987, - 1552, 3485, 3485, 3485, 3485, 2986, 2987, 3307, 3307, 3307, - 3307, 2986, 3308, 1552, 3651, 1552, 3295, 2987, 1552, 3303, - 3309, 3309, 3309, 3309, 2987, 3310, 1552, 3542, 1552, 2986, - 3542, 3484, 1595, 3673, 3677, 1551, 3316, 1596, 1552, 3316, - 1551, 3679, 1551, 1552, 1551, 2462, 2462, 2462, 2462, 2462, - 2462, 1598, 3303, 1551, 3705, 3543, 1552, 3520, 3311, 3311, - 3311, 3311, 3680, 3675, 3317, 2986, 3540, 3540, 3540, 3540, - 3544, 3706, 3707, 3544, 3321, 3321, 3321, 3321, 3689, 3364, - 1551, 3708, 3364, 2986, 3709, 3625, 3681, 3545, 3625, 3545, - - 3545, 3545, 3545, 3545, 3545, 3548, 3548, 3548, 3548, 3490, - 3549, 3549, 3549, 3549, 3550, 3550, 3550, 3550, 3070, 3682, - 1548, 3259, 3259, 3259, 3421, 3259, 3259, 3259, 3259, 3259, - 3259, 3259, 3259, 3259, 3259, 3259, 3259, 1552, 3259, 1552, - 3261, 3552, 3552, 3552, 3552, 3560, 3560, 3560, 3560, 3259, - 3259, 3259, 3259, 3259, 3714, 3556, 3556, 3556, 3556, 3561, - 3561, 3561, 3561, 3337, 3337, 3337, 3337, 3342, 3342, 3342, - 3342, 1148, 1148, 1148, 1148, 3715, 3259, 3687, 3259, 3259, - 3557, 3678, 3359, 3359, 3359, 3359, 3573, 3573, 3573, 3573, - 3716, 3717, 1129, 3360, 1150, 3721, 1129, 3722, 1150, 3341, - - 3341, 3341, 3341, 1552, 3566, 3259, 3259, 3259, 3259, 3259, - 3259, 1147, 3259, 3259, 3259, 3259, 3259, 3259, 3259, 3259, - 3259, 3259, 3259, 3259, 1129, 3259, 1150, 3496, 3260, 3558, - 3343, 3343, 3343, 3343, 1552, 3260, 3259, 3259, 3259, 3259, - 3259, 3565, 1148, 1148, 1148, 1148, 3345, 3345, 3345, 3345, - 3569, 3569, 3569, 3569, 3691, 1129, 1552, 1150, 1148, 1148, - 1148, 1148, 1552, 3259, 3260, 3259, 3259, 1129, 1552, 1150, - 3726, 1129, 3729, 1150, 1552, 3570, 3743, 1150, 3399, 3399, - 3399, 3399, 1552, 1129, 3685, 1150, 3628, 3426, 3744, 3628, - 3426, 3745, 3259, 3259, 3259, 3525, 1148, 1148, 1148, 1148, - - 1596, 3567, 3688, 2987, 3694, 2987, 2988, 2987, 3526, 3526, - 3526, 3526, 3526, 3526, 3527, 3424, 3151, 3568, 3686, 2986, - 3692, 1129, 3690, 1150, 3571, 3349, 3349, 3349, 3349, 1148, - 1148, 1148, 1148, 3575, 3575, 3575, 3575, 3353, 3353, 3353, - 3353, 1552, 3746, 1551, 3354, 3354, 3354, 3354, 3747, 1552, - 3350, 1552, 1150, 3749, 1129, 3751, 1150, 3572, 3576, 1552, - 1150, 3752, 1129, 3587, 1150, 3630, 3587, 3542, 3630, 1129, - 3542, 1150, 3753, 3298, 3525, 1148, 1148, 1148, 1148, 1596, - 3754, 3755, 2987, 3695, 2987, 2988, 2987, 3526, 3526, 3526, - 3526, 3526, 3526, 3527, 3428, 3543, 3574, 3697, 2986, 3558, - - 1129, 3693, 1150, 3578, 3578, 3578, 3578, 3580, 3580, 3580, - 3580, 3696, 3757, 1148, 1148, 1148, 1148, 3758, 3632, 2014, - 3433, 3632, 1551, 3433, 3652, 3652, 3652, 3652, 1129, 3760, - 1150, 3764, 1129, 3765, 1150, 2057, 3577, 3767, 1129, 3529, - 1150, 1595, 3664, 3664, 3664, 3664, 1596, 3430, 3748, 3172, - 3769, 3748, 3298, 2986, 2101, 2101, 2101, 2101, 2101, 2101, - 2102, 2986, 3770, 2986, 2986, 2986, 2986, 2986, 2986, 2986, - 2986, 2986, 2986, 3634, 3579, 3437, 3634, 2986, 3437, 3771, - 3439, 3637, 3442, 3439, 3637, 3442, 3444, 3639, 3447, 3444, - 3639, 3447, 3449, 3451, 3642, 3449, 3451, 3642, 3455, 3421, - - 3645, 3455, 3635, 3645, 3176, 3424, 3428, 3430, 3623, 3178, - 3638, 3189, 3453, 3458, 3461, 3191, 3640, 3194, 3787, 1548, - 3789, 3198, 3200, 3453, 3790, 3646, 3793, 3205, 3646, 3458, - 3649, 2986, 1595, 3649, 3794, 3750, 3596, 1596, 3750, 3596, - 1551, 3796, 1553, 1554, 1551, 1597, 1597, 1597, 1597, 1597, - 1597, 1598, 3756, 3797, 3647, 3756, 1555, 3798, 3799, 3461, - 3664, 3664, 3664, 3664, 3665, 3665, 3665, 3665, 3483, 3483, - 3483, 3483, 3485, 3485, 3485, 3485, 3652, 3652, 3652, 3652, - 1551, 3676, 3676, 3676, 3676, 3504, 3504, 3504, 3504, 3504, - 3504, 3600, 3759, 1552, 3600, 3759, 3531, 3800, 1552, 3683, - - 3683, 3683, 3683, 3664, 3664, 3664, 3664, 3801, 3802, 1552, - 1548, 3664, 3664, 3664, 3664, 3827, 1552, 3838, 2986, 3839, - 1552, 3665, 3665, 3665, 3665, 1552, 1552, 3842, 1552, 2988, - 3535, 1552, 3843, 3535, 3478, 1595, 3763, 2989, 1552, 3763, - 1596, 3768, 2986, 1551, 3768, 1551, 1552, 1551, 2462, 2462, - 2462, 2462, 2462, 2462, 1598, 3483, 3483, 3483, 3483, 3303, - 1552, 3684, 3540, 3540, 3540, 3540, 1551, 1552, 3761, 3807, - 3710, 3761, 1552, 3710, 3548, 3548, 3548, 3548, 3544, 3762, - 1552, 3544, 1552, 1551, 3815, 3515, 3672, 3711, 3806, 3711, - 3711, 3711, 3711, 3711, 3711, 3545, 2986, 3545, 3545, 3545, - - 3545, 3545, 3545, 3549, 3549, 3549, 3549, 3550, 3550, 3550, - 3550, 3808, 3816, 1548, 3259, 3259, 3259, 1552, 3259, 3259, - 3259, 3259, 3259, 3259, 3259, 3259, 3259, 3259, 3259, 3259, - 3810, 3259, 3712, 3496, 3260, 3712, 3552, 3552, 3552, 3552, - 3809, 3260, 3259, 3259, 3259, 3259, 3259, 3712, 3847, 3545, - 3712, 3545, 3545, 3545, 3545, 3545, 3545, 3775, 3784, 3848, - 3718, 3718, 3718, 3718, 3556, 3556, 3556, 3556, 3824, 3259, - 3260, 3259, 3259, 3573, 3573, 3573, 3573, 3849, 1552, 3723, - 3723, 3723, 3723, 3775, 3784, 3719, 1552, 1552, 3850, 3557, - 3560, 3560, 3560, 3560, 3561, 3561, 3561, 3561, 3259, 3259, - - 3259, 3259, 3259, 3259, 3724, 3259, 3259, 3259, 3259, 3259, - 3259, 3259, 3259, 3259, 3259, 3259, 3259, 3851, 3259, 3852, - 3496, 3260, 3725, 3725, 3725, 3725, 3817, 1552, 3260, 3259, - 3259, 3259, 3259, 3259, 3720, 1552, 3819, 3821, 3558, 3727, - 3727, 3727, 3727, 3864, 1148, 1148, 1148, 1148, 1148, 1148, - 1148, 1148, 3569, 3569, 3569, 3569, 3259, 3260, 3259, 3259, - 3573, 3573, 3573, 3573, 1148, 1148, 1148, 1148, 1864, 1129, - 3799, 1150, 1552, 1129, 3865, 1150, 3867, 3570, 3822, 1150, - 3742, 3742, 3742, 3742, 1552, 3259, 3259, 3259, 2986, 1129, - 3818, 1150, 3732, 3732, 3732, 3732, 2986, 3870, 2986, 2986, - - 2986, 2986, 2986, 2986, 2986, 2986, 2986, 2986, 1552, 3730, - 1552, 3868, 2986, 3728, 3868, 3625, 3869, 1147, 3625, 3869, - 1148, 1148, 1148, 1148, 3820, 3731, 3720, 3871, 1148, 1148, - 1148, 1148, 1148, 1148, 1148, 1148, 3575, 3575, 3575, 3575, - 3736, 3736, 3736, 3736, 3421, 1129, 3872, 1150, 3874, 3737, - 3737, 3737, 3737, 1129, 3823, 1150, 2014, 1129, 3825, 1150, - 3879, 3576, 2057, 1150, 3855, 1147, 3298, 3525, 3578, 3578, - 3578, 3578, 1596, 3856, 1129, 2987, 3738, 2987, 2988, 2987, - 3526, 3526, 3526, 3526, 3526, 3526, 3527, 3733, 3734, 3773, - 3767, 2986, 3773, 1129, 3880, 1150, 3741, 3741, 3741, 3741, - - 3881, 3882, 3735, 3580, 3580, 3580, 3580, 3795, 3795, 3795, - 3795, 3628, 3635, 3748, 3628, 1551, 3748, 3886, 3774, 3630, - 1595, 1129, 3630, 1150, 3638, 1596, 3640, 1130, 1129, 3739, - 1150, 3647, 3892, 2101, 2101, 2101, 2101, 2101, 2101, 2102, - 3424, 3894, 3740, 3886, 1138, 3298, 3525, 3632, 3428, 3777, - 3632, 1596, 3777, 3895, 2987, 3248, 2987, 2988, 2987, 3526, - 3526, 3526, 3526, 3526, 3526, 3527, 3778, 3898, 3899, 3778, - 2986, 3772, 3781, 3903, 3783, 3781, 3430, 3783, 3635, 3642, - 3645, 3786, 3642, 3645, 3786, 3649, 3921, 3828, 3649, 3803, - 3803, 3803, 3803, 3750, 1551, 3779, 3750, 3873, 1548, 3875, - - 3873, 3638, 3875, 3640, 3804, 3804, 3804, 3804, 3453, 3458, - 3647, 3928, 3929, 3931, 3461, 3795, 3795, 3795, 3795, 3732, - 3732, 3732, 3732, 3936, 3298, 3525, 3736, 3736, 3736, 3736, - 1596, 3756, 1552, 2986, 3756, 2986, 2986, 2986, 3699, 3699, - 3699, 3699, 3699, 3699, 3700, 3803, 3803, 3803, 3803, 2986, - 3804, 3804, 3804, 3804, 3710, 3940, 3943, 3710, 3853, 3853, - 3853, 3853, 1552, 3844, 2326, 3759, 3844, 1552, 3759, 3877, - 2057, 3711, 3877, 3711, 3711, 3711, 3711, 3711, 3711, 3955, - 3711, 3878, 3711, 3711, 3711, 3711, 3711, 3711, 3718, 3718, - 3718, 3718, 3725, 3725, 3725, 3725, 3956, 3924, 3774, 3723, - - 3723, 3723, 3723, 3298, 1595, 3727, 3727, 3727, 3727, 1596, - 2197, 3779, 1551, 3719, 1553, 1554, 1551, 1597, 1597, 1597, - 1597, 1597, 1597, 1598, 3724, 3892, 3962, 3963, 1555, 3854, - 3854, 3854, 3854, 3857, 3857, 3857, 3857, 3967, 3858, 3858, - 3858, 3858, 3732, 3732, 3732, 3732, 3969, 1148, 1148, 1148, - 1148, 1130, 1551, 3739, 1129, 1552, 1150, 1552, 1129, 3985, - 1150, 3990, 3720, 1129, 3761, 1150, 3740, 3761, 1138, 3994, - 3763, 3702, 1129, 3763, 1150, 3762, 1552, 3995, 1148, 1148, - 1148, 1148, 1548, 1595, 3860, 3860, 3860, 3860, 1596, 3768, - 1552, 1551, 3768, 1551, 1552, 1551, 2462, 2462, 2462, 2462, - - 2462, 2462, 1598, 1129, 1552, 1150, 1552, 3885, 3996, 3861, - 3885, 1150, 3736, 3736, 3736, 3736, 3972, 3859, 3737, 3737, - 3737, 3737, 3741, 3741, 3741, 3741, 3742, 3742, 3742, 3742, - 1552, 1551, 3866, 3866, 3866, 3866, 3774, 3891, 3891, 3891, - 3891, 3844, 3975, 1129, 3844, 3738, 3971, 1129, 3950, 1150, - 3976, 3950, 3805, 3863, 3777, 3997, 3888, 3777, 3862, 3888, - 3998, 1548, 3791, 3791, 3791, 3791, 3791, 3791, 3791, 3791, - 3791, 3791, 3791, 3791, 3791, 3791, 3791, 3791, 3811, 3791, - 3811, 3812, 3811, 3635, 3781, 3779, 3980, 3781, 3999, 3811, - 3791, 3791, 3791, 3791, 3791, 3783, 3889, 3786, 3783, 3889, - - 3786, 3795, 3795, 3795, 3795, 3897, 3897, 3897, 3897, 3901, - 3901, 3901, 3901, 3638, 3989, 3991, 1595, 3791, 3811, 3791, - 3791, 1596, 3855, 4005, 3640, 3890, 3647, 2197, 2197, 2101, - 2101, 2101, 2101, 2101, 2101, 2102, 3890, 2106, 1551, 3930, - 3930, 3930, 3930, 4010, 3967, 1551, 3791, 3791, 3791, 3792, - 3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792, - 3792, 3792, 3792, 3792, 3792, 3813, 3792, 3813, 3814, 3813, - 3891, 3891, 3891, 3891, 1551, 1552, 3813, 3792, 3792, 3792, - 3792, 3792, 2106, 1551, 4011, 3883, 3869, 1552, 3952, 3869, - 1551, 3952, 3953, 1552, 1548, 3953, 4125, 4125, 4125, 4125, - - 4125, 4125, 4125, 4125, 3792, 3813, 3792, 3792, 4125, 4125, - 4125, 4125, 3873, 1552, 1552, 3873, 1552, 1552, 3973, 1551, - 4125, 4125, 4125, 4125, 3985, 1552, 4125, 4125, 4125, 4125, - 4025, 3925, 4027, 3792, 3792, 3792, 3525, 1552, 4028, 3954, - 1552, 1596, 3954, 1552, 2987, 1552, 2987, 2988, 2987, 3526, - 3526, 3526, 3526, 3526, 3526, 3527, 3905, 3974, 4029, 3981, - 2986, 4125, 4125, 4125, 4125, 3933, 3933, 3933, 3933, 3907, - 4030, 2106, 1551, 3906, 4125, 4125, 4125, 4125, 1552, 1551, - 4125, 4125, 4125, 4125, 1551, 4125, 4125, 4125, 4125, 4016, - 4014, 1552, 3897, 3897, 3897, 3897, 3908, 1552, 3934, 3934, - - 3934, 3934, 1552, 3826, 4125, 4125, 4125, 4125, 1551, 1552, - 3935, 3935, 3935, 3935, 3298, 3525, 3937, 3937, 3937, 3937, - 1596, 1552, 4031, 2986, 1552, 2986, 2986, 2986, 3699, 3699, - 3699, 3699, 3699, 3699, 3700, 3853, 3853, 3853, 3853, 2986, - 3830, 3938, 1552, 3288, 1552, 3909, 4125, 4125, 4125, 4125, - 3959, 3925, 3910, 4125, 4125, 4125, 4125, 3901, 3901, 3901, - 3901, 3925, 4025, 1552, 4125, 4125, 4125, 4125, 3875, 3950, - 1552, 3875, 3950, 1552, 1552, 3941, 3941, 3941, 3941, 3913, - 4015, 1552, 3866, 3866, 3866, 3866, 3885, 4017, 3877, 3885, - 3939, 3877, 4018, 3298, 3525, 3854, 3854, 3854, 3854, 1596, - - 3878, 4050, 2986, 1552, 2986, 2986, 2986, 3699, 3699, 3699, - 3699, 3699, 3699, 3700, 3915, 3774, 3958, 4020, 2986, 3958, - 1129, 3888, 1150, 1552, 3888, 4054, 3914, 3857, 3857, 3857, - 3857, 3858, 3858, 3858, 3858, 3945, 3945, 3945, 3945, 3961, - 3918, 3952, 3961, 4041, 3952, 3959, 3901, 3901, 3901, 3901, - 3779, 3921, 1129, 4069, 1150, 4068, 1129, 3942, 1150, 3701, - 1147, 3930, 3930, 3930, 3930, 4023, 3953, 3954, 3890, 3953, - 3954, 4044, 3298, 3828, 3828, 3828, 4072, 3925, 3828, 3828, - 3828, 3829, 3828, 3828, 3828, 3828, 3830, 3828, 3828, 3831, - 3925, 3832, 1554, 3831, 3833, 3833, 3833, 3833, 3833, 3833, - - 3834, 3828, 3828, 3828, 3828, 3835, 3836, 3836, 3836, 3836, - 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, - 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3828, 3831, - 3828, 3828, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, - 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, - 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3828, 3828, 3837, - 3840, 3840, 3840, 3841, 3840, 3840, 3840, 3840, 3840, 3840, - 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, 3840, - 3841, 1148, 1148, 1148, 1148, 2106, 1551, 3840, 3840, 3841, - 3840, 3840, 3840, 1551, 3860, 3860, 3860, 3860, 4065, 3701, - - 1148, 1148, 1148, 1148, 4004, 4082, 1129, 4004, 1150, 1148, - 1148, 1148, 1148, 4081, 3701, 3840, 3841, 3840, 3840, 3861, - 4004, 1150, 1551, 4004, 1595, 1129, 4046, 1150, 4096, 1596, - 3964, 3964, 3964, 3964, 1129, 1552, 1150, 2101, 2101, 2101, - 2101, 2101, 2101, 2102, 3840, 3840, 3840, 1595, 3933, 3933, - 3933, 3933, 1596, 3925, 4102, 1551, 3944, 1551, 1552, 1551, - 2462, 2462, 2462, 2462, 2462, 2462, 1598, 3946, 3939, 3934, - 3934, 3934, 3934, 3964, 3964, 3964, 3964, 3935, 3935, 3935, - 3935, 4105, 4058, 3947, 3945, 3945, 3945, 3945, 3957, 3830, - 1552, 3937, 3937, 3937, 3937, 1551, 3941, 3941, 3941, 3941, - - 3528, 1552, 1548, 4045, 3965, 3945, 3945, 3945, 3945, 4107, - 3925, 3904, 4009, 4009, 4009, 4009, 3938, 3964, 3964, 3964, - 3964, 4039, 4039, 4039, 4039, 1548, 3896, 3896, 3896, 3896, - 3896, 3896, 3896, 3896, 3896, 3896, 3896, 3896, 3896, 3896, - 3896, 3896, 3911, 3896, 3911, 3912, 3911, 3977, 4002, 4002, - 4002, 4002, 1552, 3911, 3896, 3896, 3896, 3896, 3896, 1552, - 1148, 1148, 1148, 1148, 4076, 3939, 1148, 1148, 1148, 1148, - 4026, 4008, 4110, 4003, 4008, 1150, 4112, 3701, 3942, 4114, - 1552, 3896, 3911, 3896, 3896, 1129, 4095, 1150, 1552, 1595, - 3925, 1129, 4116, 1150, 1596, 4040, 4040, 4040, 4040, 4117, - - 3959, 4042, 2101, 2101, 2101, 2101, 2101, 2101, 2102, 4057, - 3896, 3896, 3896, 3902, 3902, 3902, 3902, 3902, 3902, 3902, - 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3916, - 3902, 3916, 3917, 3916, 4000, 3961, 4001, 4060, 3961, 1552, - 3916, 3902, 3902, 3902, 3902, 3902, 4009, 4009, 4009, 4009, - 4059, 3925, 4070, 2106, 1551, 1552, 4006, 3964, 3964, 3964, - 3964, 1551, 4008, 1552, 3890, 4008, 3830, 1548, 3902, 3916, - 3902, 3902, 4119, 3925, 1552, 4019, 4019, 4019, 4019, 4032, - 4032, 4032, 4032, 4043, 4037, 4037, 4037, 4037, 3925, 1552, - 1551, 3959, 1552, 4037, 4037, 4037, 4037, 3902, 3902, 3902, - - 3525, 4048, 4121, 4098, 4033, 1596, 4123, 3925, 2987, 1147, - 2987, 2988, 2987, 3526, 3526, 3526, 3526, 3526, 3526, 3527, - 4034, 4034, 4034, 4034, 2986, 1148, 1148, 1148, 1148, 4002, - 4002, 4002, 4002, 4100, 4083, 1552, 4039, 4039, 4039, 4039, - 4040, 4040, 4040, 4040, 1552, 4035, 4075, 1150, 1551, 4124, - 1129, 3919, 1150, 1552, 4003, 3830, 1150, 1552, 4052, 4052, - 4052, 4052, 1547, 4032, 4032, 4032, 4032, 4037, 4037, 4037, - 4037, 4097, 3701, 3925, 4034, 4034, 4034, 4034, 3298, 2986, - 2104, 1552, 3925, 4053, 4101, 4087, 3925, 2986, 4033, 2986, - 2986, 2986, 2986, 2986, 2986, 2986, 2986, 2986, 2986, 4035, - - 4036, 1150, 4078, 2986, 4055, 4055, 4055, 4055, 4039, 4039, - 4039, 4039, 4052, 4052, 4052, 4052, 4055, 4055, 4055, 4055, - 4055, 4055, 4055, 4055, 4073, 4073, 4073, 4073, 1547, 1147, - 4077, 4077, 4077, 4077, 1547, 4108, 2104, 4053, 4104, 4088, - 4088, 4088, 4088, 3920, 4111, 4103, 3788, 1552, 2104, 4074, - 1144, 1150, 4084, 4084, 4084, 4084, 1552, 3298, 3828, 3828, - 3828, 1144, 3900, 3828, 3828, 3828, 3828, 3828, 3828, 3828, - 3828, 3921, 3828, 3828, 3828, 2647, 3828, 4085, 3828, 3828, - 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, - 3828, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, - - 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, - 3922, 3922, 3922, 3828, 3828, 3828, 3828, 3922, 3922, 3922, - 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, - 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, - 3922, 3922, 3828, 3828, 3837, 3828, 3828, 3828, 2647, 3925, - 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3921, 3828, - 3828, 1552, 3925, 3925, 1552, 4073, 4073, 4073, 4073, 4086, - 4086, 4086, 4086, 3828, 3828, 3828, 3828, 3828, 3925, 1148, - 1148, 1148, 1148, 1547, 4089, 4089, 4089, 4089, 3925, 1547, - 4074, 2281, 1150, 2646, 1147, 4084, 4084, 4084, 4084, 4106, - - 3828, 1552, 3828, 3828, 1129, 2642, 1150, 4086, 4086, 4086, - 4086, 4086, 4086, 4086, 4086, 1086, 1105, 2642, 2641, 4109, - 4085, 1105, 4120, 1086, 4115, 2640, 4118, 2637, 1086, 3828, - 3828, 3828, 3828, 3828, 3828, 2636, 2635, 3828, 3828, 3828, - 3828, 3828, 3828, 3828, 3828, 3921, 3828, 3828, 3831, 3713, - 4122, 1554, 3831, 4056, 4113, 4113, 4113, 4113, 2634, 3831, - 3828, 3828, 3828, 3828, 3835, 1103, 1103, 1103, 2631, 2630, - 3713, 1552, 1168, 1168, 1168, 1176, 1176, 1176, 1179, 1215, - 1215, 1215, 2629, 1179, 1652, 1648, 1103, 3828, 3831, 3828, - 3828, 1644, 1281, 1168, 1298, 2627, 1176, 1281, 1413, 1298, - - 1215, 1221, 1221, 1221, 1414, 1444, 1413, 1444, 1450, 1414, - 1540, 1413, 1444, 1450, 2626, 1540, 3828, 3828, 3828, 3828, - 3828, 3828, 1221, 2583, 3828, 3828, 3828, 3829, 3828, 3828, - 3828, 3828, 3925, 3828, 3828, 3831, 2582, 3832, 1554, 3831, - 3833, 3833, 3833, 3833, 3833, 3833, 3834, 3828, 3828, 3828, - 3828, 3835, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, - 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, - 3836, 3836, 3836, 3836, 3828, 3831, 3828, 3828, 3836, 3836, - 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, - 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, 3836, - - 3836, 3836, 3836, 3828, 3828, 3837, 3828, 3828, 3828, 2581, - 2580, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3921, - 3828, 3828, 1381, 1381, 1381, 1552, 1402, 1402, 1402, 1509, - 1509, 1509, 2579, 3926, 3828, 3828, 3828, 3828, 3828, 1523, - 2578, 2572, 2571, 1381, 1523, 1523, 1550, 1402, 2570, 1550, - 1509, 1636, 1636, 1636, 1550, 1688, 1727, 1727, 1727, 2569, - 1688, 3828, 1752, 3828, 3828, 1760, 1760, 1752, 1760, 1773, - 1819, 1086, 1636, 1760, 1773, 1819, 1105, 1727, 1179, 1086, - 1941, 1105, 1945, 1179, 1086, 1941, 2568, 1945, 2564, 3845, - 3828, 3828, 3828, 3828, 3828, 3828, 2563, 2562, 3828, 3828, - - 3828, 3828, 3828, 3828, 3828, 3828, 3921, 3828, 3828, 3828, - 3845, 2561, 2109, 3828, 1103, 1103, 1103, 1168, 1168, 1168, - 3828, 3828, 3828, 3828, 3828, 3828, 1176, 1176, 1176, 1281, - 2560, 1215, 1215, 1215, 1281, 1103, 2559, 1298, 1168, 1221, - 1221, 1221, 1298, 1381, 1381, 1381, 2558, 1176, 3828, 3828, - 3828, 3828, 1215, 2030, 2037, 2030, 2557, 1413, 2030, 2037, - 1221, 1402, 1402, 1402, 1381, 1413, 1414, 1444, 1450, 1444, - 1413, 1414, 2556, 1450, 1444, 2555, 2084, 3828, 3828, 3828, - 1595, 2084, 1402, 2554, 1540, 1596, 2553, 2552, 1551, 1540, - 1551, 1552, 1551, 2462, 2462, 2462, 2462, 2462, 2462, 1598, - - 1351, 1509, 1509, 1509, 2464, 1550, 1523, 2461, 1550, 2085, - 1351, 1523, 1523, 1550, 2085, 2460, 1351, 2085, 1636, 1636, - 1636, 1351, 1509, 2109, 2109, 2241, 2109, 1688, 1551, 2263, - 2241, 2109, 1688, 1727, 1727, 1727, 1752, 1773, 2457, 1636, - 2456, 1752, 1773, 1760, 1760, 2263, 1760, 3970, 1819, 2455, - 2263, 1760, 1941, 1819, 1727, 2454, 2453, 1941, 1548, 3966, - 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, - 3966, 3966, 3966, 3966, 3966, 3978, 3966, 3978, 3979, 3978, - 1103, 1103, 1103, 1110, 1110, 1110, 3978, 3966, 3966, 3966, - 3966, 3966, 1168, 1168, 1168, 1945, 2452, 1176, 1176, 1176, - - 1945, 1103, 2451, 2450, 1110, 1215, 1215, 1215, 1221, 1221, - 1221, 2449, 2448, 1168, 3966, 3978, 3966, 3966, 1176, 1381, - 1381, 1381, 2030, 2037, 2030, 2084, 1215, 2030, 2037, 1221, - 2084, 1402, 1402, 1402, 1509, 1509, 1509, 1524, 2086, 2444, - 1381, 2443, 2085, 3966, 3966, 3966, 3525, 2085, 2241, 2442, - 2085, 1596, 1402, 2241, 2987, 1509, 2987, 2988, 2987, 3526, - 3526, 3526, 3526, 3526, 3526, 3527, 2109, 2109, 2263, 2109, - 2986, 1636, 1636, 1636, 2109, 1727, 1727, 1727, 1760, 1760, - 2069, 1760, 1760, 1760, 2263, 1760, 1760, 2440, 3018, 2263, - 1760, 2439, 1636, 3018, 1551, 2438, 1727, 2660, 2660, 2660, - - 1110, 1110, 1110, 2437, 2436, 2660, 2660, 2660, 1760, 1760, - 2435, 1760, 3018, 3713, 3846, 3982, 1760, 3018, 2660, 3846, - 2057, 1110, 2434, 3932, 3298, 3525, 2660, 3713, 3932, 3713, - 1596, 3845, 2433, 2986, 3713, 2986, 2986, 2986, 3699, 3699, - 3699, 3699, 3699, 3699, 3700, 3845, 3893, 3845, 3846, 2986, - 3893, 3932, 3845, 3846, 3968, 2430, 3932, 2429, 2428, 2427, - 2057, 3893, 2426, 2425, 2422, 3893, 3893, 2421, 2420, 3968, - 3893, 2419, 1391, 1379, 3968, 2418, 2391, 2385, 2415, 2414, - 2413, 2412, 2014, 2408, 2406, 2014, 2405, 2404, 1994, 2403, - 3983, 1984, 2402, 2401, 2400, 2399, 2398, 2397, 2396, 2395, - - 2394, 2393, 2390, 3298, 3828, 3828, 3828, 2388, 2387, 3828, - 3828, 3828, 3829, 3828, 3828, 3828, 3828, 3925, 3828, 3828, - 3828, 2384, 3828, 2383, 3828, 3986, 3986, 3986, 3986, 3986, - 3986, 3987, 3828, 3828, 3828, 3828, 3828, 3988, 3988, 3988, - 3988, 3988, 3988, 3988, 3988, 3988, 3988, 3988, 3988, 3988, - 3988, 3988, 3988, 3988, 3988, 3988, 3988, 3988, 3988, 3828, - 3828, 3828, 3828, 3988, 3988, 3988, 3988, 3988, 3988, 3988, - 3988, 3988, 3988, 3988, 3988, 3988, 3988, 3988, 3988, 3988, - 3988, 3988, 3988, 3988, 3988, 3988, 3988, 3988, 3828, 3828, - 3837, 3828, 3828, 3828, 2382, 2381, 3828, 3828, 3828, 3828, - - 3828, 3828, 3828, 3828, 3921, 3828, 3828, 3831, 2380, 3831, - 1552, 3831, 3831, 3831, 3831, 3831, 3831, 3831, 3831, 3828, - 3828, 3828, 3828, 3828, 3992, 3992, 3992, 3992, 3992, 3992, - 3992, 3992, 3992, 3992, 3992, 3992, 3992, 3992, 3992, 3992, - 3992, 3992, 3992, 3992, 3992, 3992, 3828, 3831, 3828, 3828, - 3992, 3992, 3992, 3992, 3992, 3992, 3992, 3992, 3992, 3992, - 3992, 3992, 3992, 3993, 3992, 3992, 3992, 3992, 3992, 3992, - 3992, 3992, 3992, 3992, 3992, 3828, 3828, 3837, 3828, 3828, - 3828, 2379, 2378, 3828, 3828, 3828, 3828, 3828, 3828, 3828, - 3828, 3921, 3828, 3828, 3828, 2376, 1997, 2109, 3828, 1987, - - 1976, 1283, 1959, 2372, 2371, 3828, 3828, 3828, 3828, 3828, - 3828, 1954, 1953, 2368, 2365, 2365, 2364, 2361, 2361, 2360, - 2359, 2358, 2357, 2297, 2355, 2297, 2334, 2331, 2330, 2329, - 2328, 2327, 2324, 3828, 3828, 3828, 3828, 2323, 2320, 2319, - 2316, 2313, 2312, 2307, 2307, 2306, 2305, 2304, 2303, 1112, - 2297, 2293, 2289, 2285, 2284, 2283, 2282, 2273, 2272, 1775, - 1082, 1775, 3828, 3828, 3828, 3828, 3828, 3828, 1775, 2271, - 3828, 3828, 3828, 3829, 3828, 3828, 3828, 3828, 3830, 3828, - 3828, 3831, 2270, 3831, 1552, 3831, 4012, 4012, 4012, 4012, - 4012, 4012, 3834, 3828, 3828, 3828, 3828, 3828, 4013, 4013, - - 4013, 4013, 4013, 4013, 4013, 4013, 4013, 4013, 4013, 4013, - 4013, 4013, 4013, 4013, 4013, 4013, 4013, 4013, 4013, 4013, - 3828, 3831, 3828, 3828, 4013, 4013, 4013, 4013, 4013, 4013, - 4013, 4013, 4013, 4013, 4013, 4013, 4013, 4013, 4013, 4013, - 4013, 4013, 4013, 4013, 4013, 4013, 4013, 4013, 4013, 3828, - 3828, 3837, 3525, 2269, 2268, 1754, 1754, 1596, 1082, 1754, - 2987, 1754, 2987, 2988, 2987, 3526, 3526, 3526, 3526, 3526, - 3526, 3527, 1082, 2265, 2264, 1729, 2986, 1729, 1729, 1082, - 1729, 1729, 1723, 1082, 2257, 2256, 2255, 2252, 2251, 2250, - 2249, 2248, 1666, 1665, 1652, 1648, 1644, 2243, 2242, 1633, - - 1551, 1629, 1629, 2235, 2234, 2233, 2232, 1552, 1552, 2198, - 1548, 2196, 2195, 2194, 2193, 2189, 4021, 2180, 2111, 1552, - 1552, 2096, 2095, 2094, 2093, 2091, 2087, 2086, 1524, 1524, - 3298, 3525, 1506, 2078, 2077, 2076, 1596, 1488, 1488, 2986, - 1082, 2986, 2986, 2986, 3699, 3699, 3699, 3699, 3699, 3699, - 3700, 1488, 1488, 2075, 2071, 2986, 1475, 1467, 1467, 2064, - 2063, 1452, 1452, 1082, 1452, 1452, 1443, 2062, 1442, 2061, - 2060, 2056, 2055, 2052, 2047, 2043, 1971, 1412, 2041, 2040, - 2039, 1411, 1409, 1399, 2033, 4125, 4022, 1391, 1391, 2032, - 2031, 1379, 1377, 2026, 2025, 1971, 2024, 1310, 2023, 1998, - - 1993, 1988, 2022, 2021, 1977, 2018, 2013, 2012, 1999, 3298, - 3828, 3828, 3828, 1996, 1995, 3828, 3828, 3828, 3828, 3828, - 3828, 3828, 3828, 3921, 3828, 3828, 3828, 1992, 3828, 1991, - 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, - 3828, 3828, 3828, 3922, 3922, 3922, 3922, 3922, 3922, 3922, - 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, - 3922, 3922, 3922, 3922, 3922, 3828, 3828, 3828, 3828, 3922, - 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, - 3922, 3922, 4047, 3922, 3922, 3922, 3922, 3922, 3922, 3922, - 3922, 3922, 3922, 3922, 3828, 3828, 3837, 3828, 3828, 3828, - - 1990, 1989, 3828, 3828, 3828, 4061, 3828, 3828, 3828, 3828, - 3830, 3828, 3828, 4062, 1978, 4062, 2988, 4062, 4063, 4063, - 4063, 4063, 4063, 4063, 4064, 3828, 3828, 3828, 3828, 4065, - 4066, 4066, 4066, 4066, 4066, 4066, 4066, 4066, 4066, 4066, - 4066, 4066, 4066, 4066, 4066, 4066, 4066, 4066, 4066, 4066, - 4066, 4066, 3828, 3831, 3828, 3828, 4066, 4066, 4066, 4066, - 4066, 4066, 4066, 4066, 4066, 4066, 4066, 4066, 4066, 4066, - 4066, 4066, 4066, 4066, 4066, 4066, 4066, 4066, 4066, 4066, - 4066, 3828, 3828, 4067, 3828, 3828, 3828, 1975, 1283, 3828, - 3828, 3828, 4065, 3828, 3828, 3828, 3828, 3921, 3828, 3828, - - 4065, 1283, 4065, 2986, 4065, 4065, 4065, 4065, 4065, 4065, - 4065, 4065, 3828, 3828, 3828, 3828, 4065, 4079, 4079, 4079, - 4079, 4079, 4079, 4079, 4079, 4079, 4079, 4079, 4079, 4079, - 4079, 4079, 4079, 4079, 4079, 4079, 4079, 4079, 4079, 3828, - 3828, 3828, 3828, 4079, 4079, 4079, 4079, 4079, 4079, 4079, - 4079, 4079, 4079, 4079, 4079, 4079, 4079, 4079, 4079, 4079, - 4079, 4079, 4079, 4079, 4079, 4079, 4079, 4079, 3828, 3828, - 4067, 3828, 3828, 3828, 1283, 1283, 3828, 3828, 3828, 4065, - 3828, 3828, 3828, 3828, 3921, 3828, 3828, 1283, 1273, 1957, - 2988, 1956, 1266, 1255, 1255, 1082, 1255, 1255, 1251, 3828, - - 3828, 3828, 3828, 4065, 1954, 1241, 1241, 1953, 1946, 1218, - 1212, 1937, 1929, 1204, 1926, 1925, 1924, 1923, 1194, 1193, - 1192, 1191, 1171, 1890, 1877, 1876, 3828, 3831, 3828, 3828, - 1875, 1874, 1869, 1868, 1863, 1147, 1855, 1854, 1853, 1850, - 1848, 1097, 1091, 1085, 1082, 1837, 1830, 1822, 1082, 1821, - 1082, 1818, 1814, 1082, 1813, 3828, 3828, 4065, 3828, 3828, - 3828, 1082, 1082, 3828, 3828, 3828, 4065, 3828, 3828, 3828, - 3828, 3921, 3828, 3828, 1797, 1082, 1793, 2988, 1082, 1376, - 1775, 1775, 1772, 1771, 1754, 4080, 3828, 3828, 3828, 3828, - 4065, 1754, 1736, 1729, 1729, 1723, 1082, 1669, 1082, 1669, - - 1666, 1665, 1664, 1641, 1640, 1637, 1549, 1082, 1633, 1629, - 4125, 1619, 1552, 3828, 3831, 3828, 3828, 1549, 1548, 1082, - 1530, 1524, 1082, 1082, 1506, 1082, 1488, 1488, 1483, 1082, - 1370, 1082, 1370, 1468, 1082, 1458, 1082, 1452, 1452, 1443, - 1376, 1082, 3828, 3828, 4065, 3828, 3828, 3828, 1442, 1082, - 3828, 3828, 3828, 1266, 3828, 3828, 3828, 3828, 3921, 3828, - 3828, 1082, 1412, 1082, 2986, 1411, 1410, 1409, 1399, 1396, - 1376, 1082, 1391, 3828, 3828, 3828, 3828, 1377, 1376, 1082, - 1266, 1082, 1327, 1082, 1295, 1082, 1283, 1082, 1270, 1269, - 1268, 1266, 1255, 1255, 1251, 1241, 1082, 1082, 1237, 1082, - - 3828, 3828, 3828, 3828, 1226, 1218, 1212, 1209, 1206, 1204, - 1082, 1197, 1082, 1194, 1193, 1192, 1191, 1082, 1082, 1171, - 1147, 1143, 1121, 1119, 1082, 1112, 1082, 1097, 1082, 3828, - 3828, 3828, 3828, 3828, 1082, 1085, 3828, 3828, 3828, 4061, - 3828, 3828, 3828, 3828, 3925, 3828, 3828, 4065, 1082, 4065, - 2986, 4065, 4090, 4090, 4090, 4090, 4090, 4090, 4091, 3828, - 3828, 3828, 3828, 4065, 4092, 4092, 4092, 4092, 4092, 4092, - 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4092, - 4092, 4092, 4092, 4092, 4092, 4092, 3828, 3828, 3828, 3828, - 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4092, - - 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4092, 4092, - 4092, 4092, 4092, 4092, 4092, 3828, 3828, 4067, 3828, 3828, - 3828, 4125, 4125, 3828, 3828, 3828, 4065, 3828, 3828, 3828, - 3828, 3921, 3828, 3828, 4062, 4125, 4062, 2988, 4062, 4062, - 4062, 4062, 4062, 4062, 4062, 4062, 3828, 3828, 3828, 3828, - 4065, 4093, 4093, 4093, 4093, 4093, 4093, 4093, 4093, 4093, - 4093, 4093, 4093, 4093, 4093, 4093, 4093, 4093, 4093, 4093, - 4093, 4093, 4093, 3828, 3831, 3828, 3828, 4093, 4093, 4093, - 4093, 4093, 4093, 4093, 4093, 4093, 4093, 4093, 4093, 4093, - 4094, 4093, 4093, 4093, 4093, 4093, 4093, 4093, 4093, 4093, - - 4093, 4093, 3828, 3828, 4067, 3828, 3828, 3828, 4125, 4125, - 3828, 3828, 3828, 4125, 3828, 3828, 3828, 3828, 3921, 3828, - 3828, 4125, 4125, 4125, 2986, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4099, 3828, 3828, 3828, 3828, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 3828, 3828, 3828, 3828, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 3828, - 3828, 296, 296, 296, 296, 296, 296, 296, 296, 296, - - 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, - 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, - 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, - 302, 302, 302, 302, 302, 302, 302, 302, 302, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - - 329, 329, 329, 329, 329, 329, 329, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 401, 401, 401, 401, - 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, - 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, - 401, 401, 401, 401, 401, 410, 410, 410, 410, 410, - 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, - 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, - 410, 410, 410, 410, 426, 426, 426, 426, 426, 426, - - 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, - 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, - 426, 426, 426, 433, 433, 433, 433, 433, 433, 433, - 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, - 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, - 433, 433, 439, 439, 439, 439, 439, 439, 439, 439, - 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, - 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, - 439, 463, 463, 463, 463, 463, 463, 463, 463, 463, - 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, - - 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, - 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, - 479, 479, 479, 479, 479, 479, 479, 479, 479, 479, - 479, 479, 479, 479, 479, 479, 479, 479, 479, 470, - 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, - 470, 470, 470, 470, 470, 470, 470, 470, 470, 470, - 470, 470, 470, 470, 470, 470, 470, 470, 490, 490, - 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, - 490, 490, 490, 490, 490, 490, 490, 490, 490, 490, - 490, 490, 490, 490, 490, 490, 490, 496, 496, 496, - - 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, - 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, - 496, 496, 496, 496, 496, 496, 502, 502, 502, 502, - 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, - 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, - 502, 502, 502, 502, 502, 511, 511, 511, 511, 511, - 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, - 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, - 511, 511, 511, 511, 524, 524, 524, 524, 524, 524, - 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, - - 524, 524, 524, 524, 524, 524, 524, 524, 524, 524, - 524, 524, 524, 536, 536, 536, 536, 536, 536, 536, - 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, - 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, - 536, 536, 544, 544, 544, 544, 544, 544, 544, 544, - 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, - 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, - 544, 558, 558, 558, 558, 558, 558, 558, 558, 558, - 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, - 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, - - 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, - 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, - 565, 565, 565, 565, 565, 565, 565, 565, 565, 588, - 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, - 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, - 588, 588, 588, 588, 588, 588, 588, 588, 595, 595, - 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, - 595, 595, 595, 595, 595, 595, 595, 595, 595, 595, - 595, 595, 595, 595, 595, 595, 595, 619, 619, 619, - 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, - - 619, 619, 619, 619, 619, 619, 619, 619, 619, 619, - 619, 619, 619, 619, 619, 619, 625, 625, 625, 625, - 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, - 625, 625, 625, 625, 625, 625, 625, 625, 625, 625, - 625, 625, 625, 625, 625, 628, 628, 628, 628, 628, - 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, - 628, 628, 628, 628, 628, 628, 628, 628, 628, 628, - 628, 628, 628, 628, 650, 650, 650, 650, 650, 650, - 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, - 650, 650, 650, 650, 650, 650, 650, 650, 650, 650, - - 650, 650, 650, 657, 657, 657, 657, 657, 657, 657, - 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, - 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, - 657, 657, 674, 674, 674, 674, 674, 674, 674, 674, - 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, - 674, 674, 674, 674, 674, 674, 674, 674, 674, 674, - 674, 681, 681, 681, 681, 681, 681, 681, 681, 681, - 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, - 681, 681, 681, 681, 681, 681, 681, 681, 681, 681, - 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, - - 689, 689, 689, 689, 689, 689, 689, 689, 689, 689, - 689, 689, 689, 689, 689, 689, 689, 689, 689, 696, - 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, - 696, 696, 696, 696, 696, 696, 696, 696, 696, 696, - 696, 696, 696, 696, 696, 696, 696, 696, 701, 701, - 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, - 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, - 701, 701, 701, 701, 701, 701, 701, 711, 711, 711, - 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, - 711, 711, 711, 711, 711, 711, 711, 711, 711, 711, - - 711, 711, 711, 711, 711, 711, 721, 721, 721, 721, - 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, - 721, 721, 721, 721, 721, 721, 721, 721, 721, 721, - 721, 721, 721, 721, 721, 588, 588, 588, 588, 588, - 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, - 588, 588, 588, 588, 588, 588, 588, 588, 588, 588, - 588, 588, 588, 588, 734, 734, 734, 734, 734, 734, - 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, - 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, - 734, 734, 734, 742, 742, 742, 742, 742, 742, 742, - - 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, - 742, 742, 742, 742, 742, 742, 742, 742, 742, 742, - 742, 742, 744, 744, 744, 744, 744, 744, 744, 744, - 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, - 744, 744, 744, 744, 744, 744, 744, 744, 744, 744, - 744, 751, 751, 751, 751, 751, 751, 751, 751, 751, - 751, 751, 751, 751, 751, 751, 751, 751, 751, 751, - 751, 751, 751, 751, 751, 751, 751, 751, 751, 751, - 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, - 756, 756, 756, 756, 756, 756, 756, 756, 756, 756, - - 756, 756, 756, 756, 756, 756, 756, 756, 756, 401, - 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, - 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, - 401, 401, 401, 401, 401, 401, 401, 401, 773, 773, - 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, - 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, - 773, 773, 773, 773, 773, 773, 773, 778, 778, 778, - 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, - 778, 778, 778, 778, 778, 778, 778, 778, 778, 778, - 778, 778, 778, 778, 778, 778, 797, 797, 797, 797, - - 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, - 797, 797, 797, 797, 797, 797, 797, 797, 797, 797, - 797, 797, 797, 797, 797, 810, 810, 810, 810, 810, - 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, - 810, 810, 810, 810, 810, 810, 810, 810, 810, 810, - 810, 810, 810, 810, 835, 835, 835, 835, 835, 835, - 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, - 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, - 835, 835, 835, 842, 842, 842, 842, 842, 842, 842, - 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, - - 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, - 842, 842, 855, 855, 855, 855, 855, 855, 855, 855, - 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, - 855, 855, 855, 855, 855, 855, 855, 855, 855, 855, - 855, 864, 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, 864, 864, 864, 864, - 867, 867, 867, 867, 867, 867, 867, 867, 867, 867, - 867, 867, 867, 867, 867, 867, 867, 867, 867, 867, - 867, 867, 867, 867, 867, 867, 867, 867, 867, 873, - - 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, - 873, 873, 873, 873, 873, 873, 873, 873, 873, 873, - 873, 873, 873, 873, 873, 873, 873, 873, 875, 875, - 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, - 875, 875, 875, 875, 875, 875, 875, 875, 875, 875, - 875, 875, 875, 875, 875, 875, 875, 878, 878, 878, - 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, - 878, 878, 878, 878, 878, 878, 878, 878, 878, 878, - 878, 878, 878, 878, 878, 878, 883, 883, 883, 883, - 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, - - 883, 883, 883, 883, 883, 883, 883, 883, 883, 883, - 883, 883, 883, 883, 883, 885, 885, 885, 885, 885, - 885, 885, 885, 885, 885, 885, 885, 885, 885, 885, - 885, 885, 885, 885, 885, 885, 885, 885, 885, 885, - 885, 885, 885, 885, 888, 888, 888, 888, 888, 888, - 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, - 888, 888, 888, 888, 888, 888, 888, 888, 888, 888, - 888, 888, 888, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, - 896, 896, 896, 896, 896, 896, 896, 896, 896, 896, - - 896, 896, 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, - 899, 899, 899, 899, 899, 899, 899, 899, 899, 899, - 899, 902, 902, 902, 902, 902, 902, 902, 902, 902, - 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, - 902, 902, 902, 902, 902, 902, 902, 902, 902, 902, - 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, - 905, 905, 905, 905, 905, 905, 905, 905, 905, 905, - 905, 905, 905, 905, 905, 905, 905, 905, 905, 908, - 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, - - 908, 908, 908, 908, 908, 908, 908, 908, 908, 908, - 908, 908, 908, 908, 908, 908, 908, 908, 914, 914, - 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, - 914, 914, 914, 914, 914, 914, 914, 914, 914, 914, - 914, 914, 914, 914, 914, 914, 914, 926, 926, 926, - 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, - 926, 926, 926, 926, 926, 926, 926, 926, 926, 926, - 926, 926, 926, 926, 926, 926, 934, 934, 934, 934, - 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, - 934, 934, 934, 934, 934, 934, 934, 934, 934, 934, - - 934, 934, 934, 934, 934, 936, 936, 936, 936, 936, - 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, - 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, - 936, 936, 936, 936, 940, 940, 940, 940, 940, 940, - 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, - 940, 940, 940, 940, 940, 940, 940, 940, 940, 940, - 940, 940, 940, 946, 946, 946, 946, 946, 946, 946, - 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, - 946, 946, 946, 946, 946, 946, 946, 946, 946, 946, - 946, 946, 957, 957, 957, 957, 957, 957, 957, 957, - - 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, - 957, 957, 957, 957, 957, 957, 957, 957, 957, 957, - 957, 961, 961, 961, 961, 961, 961, 961, 961, 961, - 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, - 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, - 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, - 967, 967, 967, 967, 967, 967, 967, 967, 967, 967, - 967, 967, 967, 967, 967, 967, 967, 967, 967, 973, - 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, - 973, 973, 973, 973, 973, 973, 973, 973, 973, 973, - - 973, 973, 973, 973, 973, 973, 973, 973, 979, 979, - 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, - 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, - 979, 979, 979, 979, 979, 979, 979, 987, 987, 987, - 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, - 987, 987, 987, 987, 987, 987, 987, 987, 987, 987, - 987, 987, 987, 987, 987, 987, 984, 984, 984, 984, - 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, - 984, 984, 984, 984, 984, 984, 984, 984, 984, 984, - 984, 984, 984, 984, 984, 999, 999, 999, 999, 999, - - 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, - 999, 999, 999, 999, 999, 999, 999, 999, 999, 999, - 999, 999, 999, 999, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, - 1005, 1005, 1005, 1010, 1010, 1010, 1010, 1010, 1010, 1010, - 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, - 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, - 1010, 1010, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - - 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, 1020, - 1020, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, - 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, - 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, 1028, - 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, - 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, - 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1043, - 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, - 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, - 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1055, 1055, - - 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, - 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1055, - 1055, 1055, 1055, 1055, 1055, 1055, 1055, 1063, 1063, 1063, - 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, - 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, - 1063, 1063, 1063, 1063, 1063, 1063, 1072, 1072, 1072, 1072, - 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, - 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, - 1072, 1072, 1072, 1072, 1072, 1081, 1081, 1081, 1081, 1081, - 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, - - 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, - 1081, 1081, 1081, 1081, 1099, 1099, 1099, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 1099, 1099, 1099, 4125, 4125, 1099, 1110, 1110, 1110, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 1110, 4125, 4125, - 4125, 1110, 1114, 1114, 1114, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 1114, 1114, - 4125, 4125, 4125, 1114, 1120, 1120, 4125, 1120, 1120, 1120, - 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, - - 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, - 1120, 1120, 1120, 1149, 1149, 1149, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 1149, - 1149, 1149, 4125, 4125, 1149, 1173, 1173, 1173, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 1173, 1173, 1173, 4125, 4125, 1173, 1198, 1198, 4125, - 4125, 1198, 4125, 1198, 1198, 4125, 1198, 1198, 1198, 1198, - 1198, 1198, 1198, 4125, 1198, 1198, 1198, 1198, 1198, 1198, - 1198, 1198, 1198, 4125, 4125, 1198, 1199, 1199, 1199, 1199, - 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, - - 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, - 1199, 1199, 1199, 1199, 1199, 1203, 1203, 4125, 4125, 1203, - 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, - 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, - 1203, 1203, 1203, 1203, 1205, 1205, 4125, 1205, 1205, 1205, - 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, - 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, - 1205, 1205, 1205, 1213, 1213, 1213, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 1213, - 1213, 4125, 4125, 4125, 1213, 1219, 1219, 1219, 4125, 4125, - - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 1219, 1219, 4125, 4125, 4125, 1219, 1222, 1222, 4125, - 1222, 1222, 4125, 1222, 1222, 4125, 1222, 1222, 1222, 1222, - 1222, 1222, 1222, 4125, 1222, 1222, 1222, 1222, 1222, 1222, - 1222, 4125, 1222, 4125, 4125, 1222, 1223, 1223, 1223, 1223, - 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, - 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, - 1223, 1223, 1223, 1223, 1223, 1225, 1225, 4125, 1225, 1225, - 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, - 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225, - - 1225, 1225, 1225, 1225, 1240, 1240, 4125, 1240, 1240, 1240, - 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, - 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, - 1240, 1240, 1240, 1246, 1246, 4125, 1246, 1246, 1246, 1246, - 1246, 1246, 1246, 1246, 4125, 1246, 1246, 1246, 1246, 1246, - 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, - 1246, 1246, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, - 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, - 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, - 1247, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, - - 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, - 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, - 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, - 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, - 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1261, - 4125, 4125, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, - 4125, 1261, 1261, 1261, 1261, 4125, 1261, 1261, 1261, 1261, - 1261, 1261, 1261, 4125, 1261, 1261, 1261, 1261, 1262, 1262, - 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, - 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, - - 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1276, 1276, 4125, - 1276, 1276, 4125, 1276, 1276, 1276, 1276, 1276, 1276, 1276, - 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, - 4125, 1276, 4125, 1276, 1276, 1276, 1277, 1277, 1277, 1277, - 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, - 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, - 1277, 1277, 1277, 1277, 1277, 1282, 1282, 4125, 1282, 1282, - 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, - 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, - 1282, 1282, 1282, 1282, 1284, 1284, 1284, 1284, 1284, 1284, - - 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, - 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, - 1284, 1284, 1284, 1289, 1289, 4125, 1289, 1289, 1289, 1289, - 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, - 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, - 1289, 1289, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, - 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, - 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, - 1320, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, - 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, - - 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, - 1351, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 1351, 4125, 4125, 4125, 4125, 4125, 1351, 4125, 4125, 4125, - 1351, 1351, 4125, 1351, 1378, 1378, 1378, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 1378, 1378, 1378, 4125, 4125, 1378, 1384, 1384, 4125, 1384, - 1384, 4125, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, - 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, - 1384, 1384, 1384, 1384, 1384, 1385, 4125, 1385, 1385, 1385, - 1385, 1385, 4125, 4125, 4125, 1385, 4125, 1385, 1389, 1389, - - 4125, 1389, 1389, 4125, 1389, 1389, 1389, 1389, 1389, 1389, - 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, - 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1390, 4125, 1390, - 1390, 1390, 1390, 1390, 4125, 1390, 4125, 1390, 4125, 1390, - 1400, 1400, 1400, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 1400, 1400, 4125, 4125, - 4125, 1400, 1445, 1445, 4125, 1445, 1445, 1445, 1445, 1445, - 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, - 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, - 1445, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, - - 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, - 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, - 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, - 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, - 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1453, - 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, - 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, - 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1466, 1466, - 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, - 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, - - 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1474, 1474, 4125, - 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, - 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, - 1474, 1474, 1474, 1474, 1474, 1474, 1484, 1484, 4125, 1484, - 1484, 4125, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, - 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, - 1484, 1484, 1484, 1484, 1484, 1485, 4125, 1485, 1485, 1485, - 1485, 1485, 4125, 4125, 4125, 1485, 4125, 1485, 1487, 1487, - 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, - 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, - - 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1489, 1489, 1489, - 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, - 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, - 1489, 1489, 1489, 1489, 1489, 1489, 1494, 1494, 4125, 1494, - 1494, 4125, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, - 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, - 1494, 1494, 1494, 1494, 1494, 1495, 4125, 1495, 1495, 1495, - 1495, 1495, 4125, 4125, 4125, 1495, 4125, 1495, 1497, 1497, - 4125, 1497, 1497, 4125, 1497, 1497, 1497, 1497, 1497, 1497, - 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, - - 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1498, 4125, 1498, - 1498, 1498, 1498, 1498, 4125, 4125, 4125, 1498, 4125, 1498, - 1503, 1503, 1503, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 1503, 1503, 4125, 4125, - 4125, 1503, 1507, 1507, 1507, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 1507, 1507, - 4125, 4125, 4125, 1507, 1522, 1522, 1522, 4125, 4125, 4125, - 1522, 4125, 4125, 4125, 1522, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 1522, 1525, 4125, 4125, 1525, - 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, - - 1525, 1525, 4125, 1525, 1525, 1525, 1525, 4125, 1525, 1525, - 4125, 1525, 1525, 1525, 1525, 1526, 1526, 1526, 1526, 1526, - 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, - 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, - 1526, 1526, 1526, 1526, 1551, 4125, 1551, 1551, 1551, 1551, - 1551, 4125, 4125, 4125, 1551, 4125, 1551, 1553, 4125, 1553, - 1553, 1553, 1553, 1553, 4125, 4125, 1553, 1553, 4125, 1553, - 1558, 4125, 1558, 1558, 1558, 1558, 1558, 4125, 4125, 1558, - 1558, 4125, 1558, 1599, 4125, 4125, 1599, 4125, 4125, 1599, - 4125, 1599, 1599, 1599, 1599, 1599, 4125, 4125, 1599, 1599, - - 4125, 1599, 4125, 4125, 4125, 1599, 1628, 1628, 4125, 1628, - 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, - 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, - 1628, 1628, 1628, 1628, 1628, 1630, 1630, 4125, 1630, 1630, - 4125, 4125, 4125, 1630, 1634, 1634, 1634, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 1634, 1634, 4125, 4125, 4125, 1634, 1645, 4125, 4125, 1645, - 4125, 1645, 1645, 1645, 4125, 4125, 1645, 4125, 1645, 1645, - 1645, 1645, 1645, 4125, 1645, 1645, 4125, 1645, 4125, 4125, - 1645, 1649, 4125, 4125, 1649, 4125, 1649, 1649, 1649, 4125, - - 4125, 1649, 4125, 1649, 1649, 1649, 1649, 1649, 4125, 1649, - 1649, 4125, 1649, 4125, 4125, 1649, 1653, 4125, 4125, 1653, - 4125, 1653, 1653, 1653, 4125, 4125, 1653, 4125, 1653, 1653, - 1653, 1653, 1653, 4125, 1653, 1653, 4125, 1653, 4125, 4125, - 1653, 1655, 1655, 4125, 1655, 1655, 1655, 1655, 1655, 1655, - 1655, 1655, 1655, 1655, 1655, 1655, 1655, 4125, 1655, 1655, - 4125, 1655, 1655, 1655, 1655, 4125, 1655, 1655, 1655, 1655, - 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, - 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, - 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1667, - - 4125, 4125, 1667, 1667, 4125, 1667, 4125, 1667, 1667, 1667, - 1667, 1667, 4125, 4125, 4125, 1667, 4125, 4125, 4125, 4125, - 4125, 1667, 1670, 1670, 4125, 4125, 4125, 4125, 1670, 4125, - 1670, 1670, 4125, 4125, 4125, 1670, 1671, 1671, 4125, 1671, - 1671, 4125, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, - 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, - 1671, 1671, 1671, 1671, 1671, 1672, 4125, 1672, 1672, 1672, - 1672, 1672, 4125, 4125, 4125, 1672, 4125, 1672, 1674, 1674, - 4125, 1674, 1674, 4125, 1674, 1674, 1674, 1674, 1674, 1674, - 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, - - 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1675, 4125, 1675, - 1675, 1675, 1675, 1675, 4125, 4125, 4125, 1675, 4125, 1675, - 1679, 4125, 1679, 1679, 1679, 1679, 4125, 4125, 4125, 4125, - 1679, 1681, 4125, 4125, 4125, 4125, 4125, 1681, 4125, 1681, - 1681, 1681, 1681, 1681, 4125, 4125, 1681, 1681, 4125, 4125, - 4125, 4125, 4125, 1681, 1683, 1683, 1683, 1683, 1683, 1683, - 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, - 1683, 1683, 1683, 4125, 1683, 1683, 1683, 1683, 1683, 1683, - 1683, 1683, 1683, 1684, 1684, 1684, 1684, 1684, 1684, 1684, - 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, - - 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, - 1684, 1684, 1689, 4125, 4125, 4125, 1689, 1689, 1689, 1689, - 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, - 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, - 1689, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, - 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, - 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, - 1694, 4125, 4125, 4125, 1694, 1694, 1694, 1694, 1694, 1694, - 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, - 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1695, - - 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, - 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, - 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1699, 4125, - 4125, 4125, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, - 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, - 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1700, 1700, 1700, - 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, - 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, - 1700, 1700, 1700, 1700, 1700, 1700, 1704, 4125, 4125, 4125, - 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, - - 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, - 1704, 1704, 1704, 1704, 1704, 1705, 1705, 1705, 1705, 1705, - 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, - 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, - 1705, 1705, 1705, 1705, 1712, 1712, 1712, 1712, 1712, 1712, - 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, - 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, - 1712, 1712, 1712, 1715, 1715, 1715, 1715, 1715, 1715, 1715, - 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, - 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, - - 1715, 1715, 1725, 1725, 1725, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 1725, 1725, - 4125, 4125, 4125, 1725, 1728, 1728, 1728, 1728, 1728, 1728, - 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, - 1728, 1728, 1728, 1728, 1728, 4125, 1728, 1728, 4125, 1728, - 1728, 1728, 1728, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1737, 1737, 4125, 1737, 1737, 4125, 1737, 1737, - 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, - - 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, - 1737, 1738, 4125, 1738, 1738, 1738, 1738, 1738, 4125, 4125, - 4125, 1738, 4125, 1738, 1740, 1740, 4125, 1740, 1740, 1740, - 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, - 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, - 1740, 1740, 1740, 1741, 1741, 1741, 1741, 1741, 1741, 1741, - 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, - 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, - 1741, 1741, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, - 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, - - 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, - 1745, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, - 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, - 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, - 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, - 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, - 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1755, - 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, - 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, - 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1763, 1763, - - 4125, 1763, 1763, 4125, 1763, 1763, 1763, 1763, 1763, 1763, - 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, - 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1764, 4125, 4125, - 4125, 4125, 4125, 1764, 4125, 1764, 1764, 1764, 1764, 1764, - 4125, 4125, 1764, 1764, 4125, 4125, 4125, 4125, 4125, 1764, - 1765, 4125, 4125, 4125, 4125, 4125, 1765, 4125, 1765, 1765, - 1765, 1765, 1765, 4125, 4125, 1765, 1765, 4125, 1765, 4125, - 4125, 4125, 1765, 1766, 4125, 1766, 1766, 1766, 1766, 1766, - 4125, 4125, 4125, 1766, 4125, 1766, 1768, 1768, 4125, 1768, - 1768, 4125, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, - - 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, - 1768, 1768, 1768, 1768, 1768, 1769, 4125, 1769, 1769, 1769, - 1769, 1769, 4125, 4125, 4125, 1769, 4125, 1769, 1774, 1774, - 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 4125, - 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, - 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1081, 1081, 1081, 1081, - 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, - - 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, - 1081, 1081, 1081, 1081, 1081, 1783, 1783, 4125, 1783, 1783, - 4125, 1783, 1783, 4125, 1783, 1783, 1783, 1783, 1783, 1783, - 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 4125, - 1783, 1783, 1783, 1783, 1784, 1784, 1784, 1784, 1784, 1784, - 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, - 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, - 1784, 1784, 1784, 1788, 1788, 4125, 1788, 1788, 1788, 1788, - 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, - 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, 1788, - - 1788, 1788, 1789, 1789, 4125, 1789, 1789, 4125, 1789, 1789, - 4125, 4125, 4125, 1789, 1789, 1789, 1789, 1789, 4125, 1789, - 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, 1789, - 1789, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, - 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, - 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, - 1792, 1792, 4125, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1794, - 1794, 4125, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, - - 4125, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, - 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1795, 1795, - 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, - 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, - 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1799, 1799, 4125, - 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, - 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, - 1799, 1799, 1799, 1799, 1799, 1799, 1800, 1800, 1800, 1800, - 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, - 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, - - 1800, 1800, 1800, 1800, 1800, 1804, 4125, 4125, 4125, 1804, - 4125, 1804, 1804, 4125, 4125, 4125, 1804, 1804, 1804, 1804, - 1804, 4125, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, - 1804, 1804, 1804, 1804, 1805, 1805, 1805, 1805, 1805, 1805, - 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, - 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, - 1805, 1805, 1805, 1320, 1320, 1320, 1320, 1320, 1320, 1320, - 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 4125, - 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, - 1320, 1320, 1820, 1820, 4125, 1820, 1820, 1820, 1820, 1820, - - 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, - 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, 1820, - 1820, 1825, 1825, 4125, 1825, 1825, 1825, 1825, 1825, 1825, - 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, - 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, 1825, - 1826, 1826, 4125, 1826, 1826, 4125, 1826, 1826, 4125, 4125, - 4125, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, - 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1827, - 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, - 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, - - 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1829, 1829, - 4125, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, - 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, - 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1833, 1833, 4125, - 1833, 1833, 4125, 1833, 1833, 4125, 1833, 1833, 1833, 1833, - 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, - 1833, 1833, 1833, 4125, 4125, 1833, 1834, 1834, 1834, 1834, - 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, - 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, - 1834, 1834, 1834, 1834, 1834, 1836, 1836, 4125, 1836, 1836, - - 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, - 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, 1836, - 1836, 1836, 1836, 1836, 1844, 1844, 1844, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 1844, 4125, 4125, 4125, 1844, 4125, 4125, 4125, 4125, - 4125, 1844, 1099, 1099, 1099, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 1099, 1099, - 1099, 4125, 4125, 1099, 1847, 1847, 1847, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 1847, 4125, 1847, 4125, 4125, 1847, 1110, 1110, 1110, 4125, - - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 1110, 4125, 4125, - 4125, 1110, 1114, 1114, 1114, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 1114, 1114, - 4125, 4125, 4125, 1114, 1856, 1856, 4125, 1856, 1856, 1856, - 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, - 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, 1856, - 1856, 1856, 1856, 1880, 1880, 1880, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 1880, - 1880, 4125, 4125, 4125, 1880, 1888, 1888, 1888, 4125, 4125, - - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 1888, 4125, 4125, 4125, 1888, 4125, 4125, 4125, - 4125, 4125, 1888, 1149, 1149, 1149, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 1149, - 1149, 1149, 4125, 4125, 1149, 1912, 1912, 1912, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 1912, 4125, 1912, 4125, 4125, 1912, 1914, 1914, 1914, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 1914, 4125, 4125, 4125, 1914, 4125, - 4125, 4125, 4125, 4125, 1914, 1173, 1173, 1173, 4125, 4125, - - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 1173, 1173, 1173, 4125, 4125, 1173, 1917, 1917, 1917, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 1917, 4125, 1917, 4125, 4125, 1917, 1198, - 1198, 4125, 4125, 1198, 4125, 1198, 1198, 4125, 1198, 1198, - 1198, 1198, 1198, 1198, 1198, 4125, 1198, 1198, 1198, 1198, - 1198, 1198, 1198, 1198, 1198, 4125, 4125, 1198, 1199, 1199, - 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, - 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1199, - 1199, 1199, 1199, 1199, 1199, 1199, 1199, 1203, 1203, 4125, - - 4125, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, - 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, - 1203, 1203, 1203, 1203, 1203, 1203, 1930, 1930, 4125, 1930, - 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, - 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, 1930, - 1930, 1930, 1930, 1930, 1930, 1936, 1936, 4125, 1936, 1936, - 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, - 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, - 1936, 1936, 1936, 1936, 1939, 1939, 1939, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - - 4125, 1939, 4125, 4125, 4125, 1939, 4125, 4125, 4125, 4125, - 4125, 1939, 1213, 1213, 1213, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 1213, 1213, - 4125, 4125, 4125, 1213, 1943, 1943, 1943, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 1943, 4125, 4125, 4125, 1943, 4125, 4125, 4125, 4125, - 4125, 1943, 1219, 1219, 1219, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 1219, 1219, - 4125, 4125, 4125, 1219, 1222, 1222, 4125, 1222, 1222, 4125, - 1222, 1222, 4125, 1222, 1222, 1222, 1222, 1222, 1222, 1222, - - 4125, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 4125, 1222, - 4125, 4125, 1222, 1223, 1223, 1223, 1223, 1223, 1223, 1223, - 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, - 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, - 1223, 1223, 1947, 1947, 4125, 1947, 1947, 1947, 1947, 1947, - 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, - 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, 1947, - 1947, 1246, 1246, 4125, 1246, 1246, 1246, 1246, 1246, 1246, - 1246, 1246, 4125, 1246, 1246, 1246, 1246, 1246, 1246, 1246, - 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, - - 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, - 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, - 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1254, - 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, - 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, - 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1256, 1256, - 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, - 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, - 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1081, 1081, 1081, - 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, - - 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, - 1081, 1081, 1081, 1081, 1081, 1081, 1261, 4125, 4125, 1261, - 1261, 1261, 1261, 1261, 1261, 1261, 1261, 4125, 1261, 1261, - 1261, 1261, 4125, 1261, 1261, 1261, 1261, 1261, 1261, 1261, - 4125, 1261, 1261, 1261, 1261, 1262, 1262, 1262, 1262, 1262, - 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, - 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, - 1262, 1262, 1262, 1262, 1276, 1276, 4125, 1276, 1276, 4125, - 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, - 1276, 1276, 1276, 1276, 1276, 1276, 1276, 4125, 1276, 4125, - - 1276, 1276, 1276, 1277, 1277, 1277, 1277, 1277, 1277, 1277, - 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, - 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, 1277, - 1277, 1277, 1282, 1282, 4125, 1282, 1282, 1282, 1282, 1282, - 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, - 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, 1282, - 1282, 1289, 1289, 4125, 1289, 1289, 1289, 1289, 1289, 1289, - 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, - 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, - 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, - - 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, - 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1960, - 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, - 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, - 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1320, 1320, - 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, - 1320, 1320, 1320, 1320, 4125, 1320, 1320, 1320, 1320, 1320, - 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1344, 1344, 1344, - 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, - 1344, 1344, 1344, 4125, 1344, 1344, 1344, 1344, 1344, 1344, - - 1344, 1344, 1344, 1344, 1344, 1344, 1351, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 1351, 4125, 4125, 4125, - 4125, 4125, 1351, 4125, 4125, 4125, 1351, 1351, 4125, 1351, - 2028, 2028, 2028, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 2028, 4125, 4125, - 4125, 2028, 4125, 4125, 4125, 4125, 4125, 2028, 1378, 1378, - 1378, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 1378, 1378, 1378, 4125, 4125, 1378, - 1384, 1384, 4125, 1384, 1384, 1384, 1384, 1384, 1384, 1384, - 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, - - 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1384, 1385, - 4125, 1385, 1385, 1385, 1385, 1385, 4125, 4125, 4125, 1385, - 4125, 1385, 1389, 1389, 4125, 1389, 1389, 1389, 1389, 1389, - 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, - 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, - 1389, 1390, 4125, 1390, 1390, 1390, 1390, 1390, 4125, 1390, - 4125, 1390, 4125, 1390, 2035, 2035, 2035, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 2035, 4125, 4125, 4125, 2035, 4125, 4125, 4125, 4125, - 4125, 2035, 1400, 1400, 1400, 4125, 4125, 4125, 4125, 4125, - - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 1400, 1400, - 4125, 4125, 4125, 1400, 1445, 1445, 4125, 1445, 1445, 1445, - 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, - 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, 1445, - 1445, 1445, 1445, 1446, 1446, 1446, 1446, 1446, 1446, 1446, - 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, - 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, 1446, - 1446, 1446, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, - 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, - 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, 1451, - - 1451, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, - 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, - 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, 1453, - 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, - 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, - 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1466, - 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, - 1466, 1466, 1466, 1466, 1466, 4125, 1466, 1466, 1466, 1466, - 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1466, 1474, 1474, - 4125, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, 1474, - - 1474, 1474, 1474, 1474, 4125, 1474, 1474, 1474, 1474, 1474, - 1474, 1474, 1474, 1474, 1474, 1474, 1474, 2067, 2067, 2067, - 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, - 2067, 2067, 2067, 4125, 2067, 2067, 2067, 2067, 2067, 2067, - 2067, 2067, 2067, 2067, 2067, 2067, 1484, 1484, 4125, 1484, - 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, - 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, 1484, - 1484, 1484, 1484, 1484, 1484, 1485, 4125, 1485, 1485, 1485, - 1485, 1485, 4125, 4125, 4125, 1485, 4125, 1485, 1487, 1487, - 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, - - 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1487, - 1487, 1487, 1487, 1487, 1487, 1487, 1487, 1489, 1489, 1489, - 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, - 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, 1489, - 1489, 1489, 1489, 1489, 1489, 1489, 1494, 1494, 4125, 1494, - 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, - 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, 1494, - 1494, 1494, 1494, 1494, 1494, 1495, 4125, 1495, 1495, 1495, - 1495, 1495, 4125, 4125, 4125, 1495, 4125, 1495, 1497, 1497, - 4125, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, - - 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1497, - 1497, 1497, 1497, 1497, 1497, 1497, 1497, 1498, 4125, 1498, - 1498, 1498, 1498, 1498, 4125, 4125, 4125, 1498, 4125, 1498, - 1503, 1503, 1503, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 1503, 1503, 4125, 4125, - 4125, 1503, 2080, 2080, 2080, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 2080, 2080, - 4125, 4125, 4125, 2080, 2082, 2082, 2082, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 2082, 4125, 4125, 4125, 2082, 4125, 4125, 4125, 4125, - - 4125, 2082, 1507, 1507, 1507, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 1507, 1507, - 4125, 4125, 4125, 1507, 1522, 1522, 1522, 4125, 4125, 4125, - 1522, 4125, 4125, 4125, 1522, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 1522, 1525, 4125, 4125, 1525, - 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, 1525, - 1525, 1525, 4125, 1525, 1525, 1525, 1525, 4125, 1525, 1525, - 4125, 1525, 1525, 1525, 1525, 1526, 1526, 1526, 1526, 1526, - 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, - 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, 1526, - - 1526, 1526, 1526, 1526, 2103, 4125, 4125, 2103, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 2103, 2103, 4125, 4125, 4125, - 2103, 4125, 4125, 4125, 4125, 4125, 2103, 1551, 4125, 1551, - 1551, 1551, 1551, 1551, 4125, 4125, 4125, 1551, 4125, 1551, - 2105, 4125, 2105, 2105, 2105, 2105, 2105, 4125, 4125, 4125, - 2105, 4125, 2105, 1553, 4125, 1553, 1553, 1553, 1553, 1553, - 4125, 4125, 1553, 1553, 4125, 1553, 2107, 4125, 2107, 2107, - 2107, 2107, 2107, 4125, 4125, 2107, 2107, 4125, 2107, 1558, - 4125, 1558, 1558, 1558, 1558, 1558, 4125, 4125, 1558, 1558, - 4125, 1558, 2110, 4125, 2110, 2110, 2110, 2110, 2110, 4125, - - 4125, 4125, 2110, 4125, 2110, 4125, 4125, 4125, 2110, 2197, - 4125, 4125, 4125, 4125, 4125, 2197, 4125, 4125, 2197, 2197, - 4125, 2197, 4125, 4125, 4125, 4125, 2197, 2197, 2197, 4125, - 2197, 1599, 4125, 4125, 1599, 4125, 4125, 1599, 4125, 1599, - 1599, 1599, 1599, 1599, 4125, 4125, 1599, 1599, 4125, 1599, - 4125, 4125, 4125, 1599, 1628, 1628, 4125, 1628, 1628, 1628, - 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, - 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, 1628, - 1628, 1628, 1628, 1630, 1630, 4125, 1630, 1630, 4125, 4125, - 4125, 1630, 2239, 2239, 2239, 4125, 4125, 4125, 4125, 4125, - - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 2239, - 4125, 4125, 4125, 2239, 4125, 4125, 4125, 4125, 4125, 2239, - 1634, 1634, 1634, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 1634, 1634, 4125, 4125, - 4125, 1634, 1643, 4125, 4125, 1643, 4125, 1643, 1643, 1643, - 4125, 4125, 1643, 4125, 1643, 1643, 1643, 1643, 1643, 4125, - 1643, 1643, 4125, 1643, 4125, 4125, 1643, 1645, 4125, 4125, - 1645, 4125, 1645, 1645, 1645, 4125, 4125, 1645, 4125, 1645, - 1645, 1645, 1645, 1645, 4125, 1645, 1645, 4125, 1645, 4125, - 4125, 1645, 1646, 4125, 4125, 1646, 4125, 1646, 1646, 1646, - - 4125, 4125, 1646, 4125, 1646, 1646, 1646, 1646, 1646, 4125, - 1646, 1646, 4125, 1646, 4125, 4125, 1646, 1647, 4125, 4125, - 1647, 4125, 1647, 1647, 1647, 4125, 4125, 1647, 4125, 1647, - 1647, 1647, 1647, 1647, 4125, 1647, 1647, 4125, 1647, 4125, - 4125, 1647, 1649, 4125, 4125, 1649, 4125, 1649, 1649, 1649, - 4125, 4125, 1649, 4125, 1649, 1649, 1649, 1649, 1649, 4125, - 1649, 1649, 4125, 1649, 4125, 4125, 1649, 1650, 4125, 4125, - 1650, 4125, 1650, 1650, 1650, 4125, 4125, 1650, 4125, 1650, - 1650, 1650, 1650, 1650, 4125, 1650, 1650, 4125, 1650, 4125, - 4125, 1650, 1651, 4125, 4125, 1651, 4125, 1651, 1651, 1651, - - 4125, 4125, 1651, 4125, 1651, 1651, 1651, 1651, 1651, 4125, - 1651, 1651, 4125, 1651, 4125, 4125, 1651, 1653, 4125, 4125, - 1653, 4125, 1653, 1653, 1653, 4125, 4125, 1653, 4125, 1653, - 1653, 1653, 1653, 1653, 4125, 1653, 1653, 4125, 1653, 4125, - 4125, 1653, 1654, 4125, 4125, 1654, 4125, 1654, 1654, 1654, - 4125, 4125, 1654, 4125, 1654, 1654, 1654, 1654, 1654, 4125, - 1654, 1654, 4125, 1654, 4125, 4125, 1654, 1655, 1655, 4125, - 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, - 1655, 1655, 1655, 4125, 1655, 1655, 4125, 1655, 1655, 1655, - 1655, 4125, 1655, 1655, 1655, 1655, 1656, 1656, 1656, 1656, - - 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, - 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, 1656, - 1656, 1656, 1656, 1656, 1656, 1667, 4125, 4125, 1667, 1667, - 4125, 1667, 4125, 1667, 1667, 1667, 1667, 1667, 4125, 4125, - 4125, 1667, 4125, 4125, 4125, 4125, 4125, 1667, 1670, 1670, - 4125, 4125, 4125, 4125, 1670, 4125, 1670, 1670, 4125, 4125, - 4125, 1670, 1671, 1671, 4125, 1671, 1671, 1671, 1671, 1671, - 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, - 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, - 1671, 1672, 4125, 1672, 1672, 1672, 1672, 1672, 4125, 4125, - - 4125, 1672, 4125, 1672, 1674, 1674, 4125, 1674, 1674, 1674, - 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, - 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, 1674, - 1674, 1674, 1674, 1675, 4125, 1675, 1675, 1675, 1675, 1675, - 4125, 4125, 4125, 1675, 4125, 1675, 1679, 4125, 1679, 1679, - 1679, 1679, 4125, 4125, 4125, 4125, 1679, 1681, 4125, 4125, - 4125, 4125, 4125, 1681, 4125, 1681, 1681, 1681, 1681, 1681, - 4125, 4125, 1681, 1681, 4125, 4125, 4125, 4125, 4125, 1681, - 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, - 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 4125, - - 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1684, - 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, - 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, - 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1684, 1689, 4125, - 4125, 4125, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, - 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1689, - 1689, 1689, 1689, 1689, 1689, 1689, 1689, 1690, 1690, 1690, - 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, - 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, 1690, - 1690, 1690, 1690, 1690, 1690, 1690, 1694, 4125, 4125, 4125, - - 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, - 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, 1694, - 1694, 1694, 1694, 1694, 1694, 1695, 1695, 1695, 1695, 1695, - 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, - 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, 1695, - 1695, 1695, 1695, 1695, 1699, 4125, 4125, 4125, 1699, 1699, - 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, - 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, 1699, - 1699, 1699, 1699, 1700, 1700, 1700, 1700, 1700, 1700, 1700, - 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, - - 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, 1700, - 1700, 1700, 1704, 4125, 4125, 4125, 1704, 1704, 1704, 1704, - 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, - 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, 1704, - 1704, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, - 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, - 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, 1705, - 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, - 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, - 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1712, 1715, - - 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, - 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, - 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1715, 1081, 1081, - 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, - 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, - 1081, 1081, 1081, 1081, 1081, 1081, 1081, 2259, 2259, 2259, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 2259, 4125, 4125, 4125, 2259, 4125, - 4125, 4125, 4125, 4125, 2259, 1725, 1725, 1725, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - - 4125, 1725, 1725, 4125, 4125, 4125, 1725, 1728, 1728, 1728, - 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, - 1728, 1728, 1728, 1728, 1728, 1728, 1728, 1728, 4125, 1728, - 1728, 4125, 1728, 1728, 1728, 1728, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, 1730, - 1730, 1730, 1730, 1730, 1730, 1737, 1737, 4125, 1737, 1737, - 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, - 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, 1737, - 1737, 1737, 1737, 1737, 1738, 4125, 1738, 1738, 1738, 1738, - - 1738, 4125, 4125, 4125, 1738, 4125, 1738, 1740, 1740, 4125, - 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, - 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, 1740, - 1740, 1740, 1740, 1740, 1740, 1740, 1741, 1741, 1741, 1741, - 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, - 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, - 1741, 1741, 1741, 1741, 1741, 1745, 1745, 1745, 1745, 1745, - 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, - 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, 1745, - 1745, 1745, 1745, 1745, 1747, 1747, 1747, 1747, 1747, 1747, - - 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, - 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, 1747, - 1747, 1747, 1747, 1753, 1753, 1753, 1753, 1753, 1753, 1753, - 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, - 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, 1753, - 1753, 1753, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, - 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, - 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, - 1755, 1763, 1763, 4125, 1763, 1763, 1763, 1763, 1763, 1763, - 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, - - 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, 1763, - 1764, 4125, 4125, 4125, 4125, 4125, 1764, 4125, 1764, 1764, - 1764, 1764, 1764, 4125, 4125, 1764, 1764, 4125, 4125, 4125, - 4125, 4125, 1764, 1765, 4125, 4125, 4125, 4125, 4125, 1765, - 4125, 1765, 1765, 1765, 1765, 1765, 4125, 4125, 1765, 1765, - 4125, 1765, 4125, 4125, 4125, 1765, 1766, 4125, 1766, 1766, - 1766, 1766, 1766, 4125, 4125, 4125, 1766, 4125, 1766, 1768, - 1768, 4125, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, - 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, - 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1768, 1769, 4125, - - 1769, 1769, 1769, 1769, 1769, 4125, 4125, 4125, 1769, 4125, - 1769, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, - 1774, 1774, 4125, 1774, 1774, 1774, 1774, 1774, 1774, 1774, - 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, 1774, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, - 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1776, 1783, - 1783, 4125, 1783, 1783, 4125, 1783, 1783, 4125, 1783, 1783, - 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, 1783, - 1783, 1783, 1783, 4125, 1783, 1783, 1783, 1783, 1784, 1784, - - 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, - 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1784, - 1784, 1784, 1784, 1784, 1784, 1784, 1784, 1789, 1789, 4125, - 1789, 1789, 4125, 1789, 1789, 4125, 4125, 4125, 1789, 1789, - 1789, 1789, 1789, 4125, 1789, 1789, 1789, 1789, 1789, 1789, - 1789, 1789, 1789, 1789, 1789, 1789, 1790, 1790, 1790, 1790, - 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, - 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, 1790, - 1790, 1790, 1790, 1790, 1790, 2274, 2274, 4125, 2274, 2274, - 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, - - 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, 2274, - 2274, 2274, 2274, 2274, 1794, 1794, 4125, 1794, 1794, 1794, - 1794, 1794, 1794, 1794, 1794, 4125, 1794, 1794, 1794, 1794, - 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, 1794, - 1794, 1794, 1794, 1795, 1795, 1795, 1795, 1795, 1795, 1795, - 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, - 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, - 1795, 1795, 1799, 1799, 4125, 1799, 1799, 1799, 1799, 1799, - 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, - 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, 1799, - - 1799, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, - 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, - 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, 1800, - 1804, 4125, 4125, 4125, 1804, 4125, 1804, 1804, 4125, 4125, - 4125, 1804, 1804, 1804, 1804, 1804, 4125, 1804, 1804, 1804, - 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1804, 1805, - 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, - 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, - 1805, 1805, 1805, 1805, 1805, 1805, 1805, 1805, 2286, 2286, - 4125, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, - - 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, 2286, - 2286, 2286, 2286, 2286, 2286, 2286, 2286, 1826, 1826, 4125, - 1826, 1826, 4125, 1826, 1826, 4125, 4125, 4125, 1826, 1826, - 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, - 1826, 1826, 1826, 1826, 1826, 1826, 1827, 1827, 1827, 1827, - 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, - 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, 1827, - 1827, 1827, 1827, 1827, 1827, 2290, 2290, 4125, 2290, 2290, - 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, - 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, 2290, - - 2290, 2290, 2290, 2290, 1833, 1833, 4125, 1833, 1833, 4125, - 1833, 1833, 4125, 1833, 1833, 1833, 1833, 1833, 1833, 1833, - 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, 1833, - 4125, 4125, 1833, 1834, 1834, 1834, 1834, 1834, 1834, 1834, - 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, - 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, 1834, - 1834, 1834, 2294, 2294, 4125, 2294, 2294, 2294, 2294, 2294, - 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, - 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, 2294, - 2294, 1844, 1844, 1844, 4125, 4125, 4125, 4125, 4125, 4125, - - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 1844, 4125, - 4125, 4125, 1844, 4125, 4125, 4125, 4125, 4125, 1844, 1099, - 1099, 1099, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 1099, 1099, 1099, 4125, 4125, - 1099, 1847, 1847, 1847, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 1847, 4125, 1847, - 4125, 4125, 1847, 2300, 2300, 2300, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 2300, 4125, 4125, 4125, 2300, 4125, 4125, 4125, 4125, 4125, - 2300, 1880, 1880, 1880, 4125, 4125, 4125, 4125, 4125, 4125, - - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 1880, 1880, 4125, - 4125, 4125, 1880, 2332, 2332, 2332, 2332, 2332, 2332, 2332, - 2332, 2332, 2332, 2332, 4125, 2332, 2332, 2332, 2332, 4125, - 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, 2332, - 2332, 2332, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, - 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 4125, 2333, - 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, 2333, - 2333, 1888, 1888, 1888, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 1888, 4125, - 4125, 4125, 1888, 4125, 4125, 4125, 4125, 4125, 1888, 1149, - - 1149, 1149, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 1149, 1149, 1149, 4125, 4125, - 1149, 1912, 1912, 1912, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 1912, 4125, 1912, - 4125, 4125, 1912, 1914, 1914, 1914, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 1914, 4125, 4125, 4125, 1914, 4125, 4125, 4125, 4125, 4125, - 1914, 1173, 1173, 1173, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 1173, 1173, 1173, - 4125, 4125, 1173, 1917, 1917, 1917, 4125, 4125, 4125, 4125, - - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 1917, - 4125, 1917, 4125, 4125, 1917, 1936, 1936, 4125, 1936, 1936, - 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, - 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, 1936, - 1936, 1936, 1936, 1936, 1939, 1939, 1939, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 1939, 4125, 4125, 4125, 1939, 4125, 4125, 4125, 4125, - 4125, 1939, 1213, 1213, 1213, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 1213, 1213, - 4125, 4125, 4125, 1213, 1943, 1943, 1943, 4125, 4125, 4125, - - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 1943, 4125, 4125, 4125, 1943, 4125, 4125, 4125, 4125, - 4125, 1943, 1219, 1219, 1219, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 1219, 1219, - 4125, 4125, 4125, 1219, 1261, 4125, 4125, 1261, 1261, 1261, - 1261, 1261, 1261, 1261, 1261, 4125, 1261, 1261, 1261, 1261, - 4125, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 4125, 1261, - 1261, 1261, 1261, 1960, 1960, 1960, 1960, 1960, 1960, 1960, - 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, - 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, 1960, - - 1960, 1960, 1289, 1289, 4125, 1289, 1289, 1289, 1289, 1289, - 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, - 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, - 1289, 2028, 2028, 2028, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 2028, 4125, - 4125, 4125, 2028, 4125, 4125, 4125, 4125, 4125, 2028, 1378, - 1378, 1378, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 1378, 1378, 1378, 4125, 4125, - 1378, 2035, 2035, 2035, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 2035, 4125, - - 4125, 4125, 2035, 4125, 4125, 4125, 4125, 4125, 2035, 1400, - 1400, 1400, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 1400, 1400, 4125, 4125, 4125, - 1400, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, - 1320, 1320, 1320, 1320, 1320, 1320, 1320, 4125, 1320, 1320, - 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, 1320, - 2067, 2067, 4125, 2067, 2067, 2067, 2067, 2067, 2067, 2067, - 2067, 2067, 2067, 2067, 2067, 2067, 4125, 2067, 2067, 2067, - 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2067, 2447, - 2447, 2447, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - - 4125, 4125, 4125, 4125, 4125, 4125, 2447, 4125, 4125, 4125, - 2447, 2080, 2080, 2080, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 2080, 2080, 4125, - 4125, 4125, 2080, 2082, 2082, 2082, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 2082, 4125, 4125, 4125, 2082, 4125, 4125, 4125, 4125, 4125, - 2082, 1507, 1507, 1507, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 1507, 1507, 4125, - 4125, 4125, 1507, 2103, 4125, 4125, 2103, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 2103, 2103, 4125, 4125, 4125, 2103, - - 4125, 4125, 4125, 4125, 4125, 2103, 2105, 4125, 2105, 2105, - 2105, 2105, 2105, 4125, 4125, 4125, 2105, 4125, 2105, 2107, - 4125, 2107, 2107, 2107, 2107, 2107, 4125, 4125, 2107, 2107, - 4125, 2107, 2463, 4125, 4125, 2463, 4125, 4125, 2463, 4125, - 2463, 2463, 2463, 2463, 2463, 4125, 4125, 4125, 2463, 4125, - 2463, 4125, 4125, 4125, 2463, 2499, 2499, 4125, 2499, 2499, - 2499, 2499, 2499, 2499, 2499, 2499, 2499, 2499, 2499, 2499, - 2499, 2499, 2499, 2499, 2499, 2499, 2499, 2499, 2499, 2499, - 2499, 2499, 2499, 2499, 2525, 2525, 4125, 2525, 2525, 2525, - 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, - - 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, - 2525, 2525, 2525, 2535, 2535, 4125, 2535, 2535, 2535, 2535, - 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, - 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, - 2535, 2535, 2197, 4125, 4125, 4125, 4125, 4125, 2197, 4125, - 4125, 2197, 2197, 4125, 2197, 4125, 4125, 4125, 4125, 2197, - 2197, 2197, 4125, 2197, 2110, 4125, 2110, 2110, 2110, 2110, - 2110, 4125, 4125, 4125, 2110, 4125, 2110, 4125, 4125, 4125, - 2110, 1551, 4125, 1551, 1551, 1551, 1551, 1551, 4125, 4125, - 4125, 1551, 4125, 1551, 1599, 4125, 4125, 1599, 4125, 4125, - - 1599, 4125, 1599, 1599, 1599, 1599, 1599, 4125, 4125, 1599, - 1599, 4125, 1599, 4125, 4125, 4125, 1599, 2239, 2239, 2239, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 2239, 4125, 4125, 4125, 2239, 4125, - 4125, 4125, 4125, 4125, 2239, 1634, 1634, 1634, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 1634, 1634, 4125, 4125, 4125, 1634, 1643, 4125, 4125, - 1643, 4125, 1643, 1643, 1643, 4125, 4125, 1643, 4125, 1643, - 1643, 1643, 1643, 1643, 4125, 1643, 1643, 4125, 1643, 4125, - 4125, 1643, 1647, 4125, 4125, 1647, 4125, 1647, 1647, 1647, - - 4125, 4125, 1647, 4125, 1647, 1647, 1647, 1647, 1647, 4125, - 1647, 1647, 4125, 1647, 4125, 4125, 1647, 1651, 4125, 4125, - 1651, 4125, 1651, 1651, 1651, 4125, 4125, 1651, 4125, 1651, - 1651, 1651, 1651, 1651, 4125, 1651, 1651, 4125, 1651, 4125, - 4125, 1651, 1655, 1655, 4125, 1655, 1655, 1655, 1655, 1655, - 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 4125, 1655, - 1655, 4125, 1655, 1655, 1655, 1655, 4125, 1655, 1655, 1655, - 1655, 2259, 2259, 2259, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 2259, 4125, - 4125, 4125, 2259, 4125, 4125, 4125, 4125, 4125, 2259, 1725, - - 1725, 1725, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 1725, 1725, 4125, 4125, 4125, - 1725, 2300, 2300, 2300, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 2300, 4125, - 4125, 4125, 2300, 4125, 4125, 4125, 4125, 4125, 2300, 2658, - 2658, 2658, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 2658, 2658, 4125, 4125, 4125, - 2658, 1144, 1144, 1144, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 1144, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 1144, 1149, 1149, 1149, 4125, 4125, 4125, 4125, - - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 1149, - 1149, 1149, 4125, 4125, 1149, 1261, 4125, 4125, 1261, 1261, - 1261, 1261, 1261, 1261, 1261, 1261, 4125, 1261, 1261, 1261, - 1261, 4125, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 4125, - 1261, 1261, 1261, 1261, 2770, 2770, 4125, 2770, 2770, 2770, - 2770, 2770, 2770, 2770, 2770, 2770, 2770, 2770, 2770, 2770, - 2770, 2770, 2770, 2770, 2770, 2770, 2770, 2770, 2770, 2770, - 2770, 2770, 2770, 2447, 2447, 2447, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 2447, 4125, 4125, 4125, 2447, 2794, 2794, 2794, 4125, 4125, - - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 2794, 2794, 4125, 4125, 4125, 2794, 2463, 4125, 4125, - 2463, 4125, 4125, 2463, 4125, 2463, 2463, 2463, 2463, 2463, - 4125, 4125, 4125, 2463, 4125, 2463, 4125, 4125, 4125, 2463, - 2806, 2806, 4125, 2806, 2806, 2806, 2806, 2806, 2806, 2806, - 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, - 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2808, - 2808, 4125, 2808, 2808, 2808, 2808, 2808, 2808, 2808, 2808, - 2808, 2808, 2808, 2808, 2808, 2808, 2808, 2808, 2808, 2808, - 2808, 2808, 2808, 2808, 2808, 2808, 2808, 2808, 2830, 2830, - - 4125, 2830, 2830, 2830, 2830, 2830, 2830, 2830, 2830, 2830, - 2830, 2830, 2830, 2830, 2830, 2830, 2830, 2830, 2830, 2830, - 2830, 2830, 2830, 2830, 2830, 2830, 2830, 2837, 2837, 4125, - 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, - 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, - 2837, 2837, 2837, 2837, 2837, 2837, 2499, 2499, 4125, 2499, - 2499, 2499, 2499, 2499, 2499, 2499, 2499, 2499, 2499, 2499, - 2499, 2499, 2499, 2499, 2499, 2499, 2499, 2499, 2499, 2499, - 2499, 2499, 2499, 2499, 2499, 2855, 2855, 4125, 2855, 2855, - 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, - - 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, - 2855, 2855, 2855, 2855, 2859, 2859, 4125, 2859, 2859, 2859, - 2859, 2859, 2859, 2859, 2859, 2859, 2859, 2859, 2859, 2859, - 2859, 2859, 2859, 2859, 2859, 2859, 2859, 2859, 2859, 2859, - 2859, 2859, 2859, 2863, 2863, 4125, 2863, 2863, 2863, 2863, - 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, - 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, - 2863, 2863, 2865, 2865, 4125, 2865, 2865, 2865, 2865, 2865, - 2865, 2865, 2865, 2865, 2865, 2865, 2865, 2865, 2865, 2865, - 2865, 2865, 2865, 2865, 2865, 2865, 2865, 2865, 2865, 2865, - - 2865, 2867, 2867, 4125, 2867, 2867, 2867, 2867, 2867, 2867, - 2867, 2867, 2867, 2867, 2867, 2867, 2867, 2867, 2867, 2867, - 2867, 2867, 2867, 2867, 2867, 2867, 2867, 2867, 2867, 2867, - 2870, 2870, 4125, 2870, 2870, 2870, 2870, 2870, 2870, 2870, - 2870, 2870, 2870, 2870, 2870, 2870, 2870, 2870, 2870, 2870, - 2870, 2870, 2870, 2870, 2870, 2870, 2870, 2870, 2870, 2872, - 2872, 4125, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, - 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, - 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2874, 2874, - 4125, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, - - 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, - 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2877, 2877, 4125, - 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, - 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, - 2877, 2877, 2877, 2877, 2877, 2877, 2525, 2525, 4125, 2525, - 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, - 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, 2525, - 2525, 2525, 2525, 2525, 2525, 2882, 2882, 4125, 2882, 2882, - 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, - 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, - - 2882, 2882, 2882, 2882, 2886, 2886, 4125, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2535, 2535, 4125, 2535, 2535, 2535, 2535, - 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, - 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, 2535, - 2535, 2535, 2897, 2897, 4125, 2897, 2897, 2897, 2897, 2897, - 2897, 2897, 2897, 2897, 2897, 2897, 2897, 2897, 2897, 2897, - 2897, 2897, 2897, 2897, 2897, 2897, 2897, 2897, 2897, 2897, - 2897, 2899, 2899, 4125, 2899, 2899, 2899, 2899, 2899, 2899, - - 2899, 2899, 2899, 2899, 2899, 2899, 2899, 2899, 2899, 2899, - 2899, 2899, 2899, 2899, 2899, 2899, 2899, 2899, 2899, 2899, - 2901, 2901, 4125, 2901, 2901, 2901, 2901, 2901, 2901, 2901, - 2901, 2901, 2901, 2901, 2901, 2901, 2901, 2901, 2901, 2901, - 2901, 2901, 2901, 2901, 2901, 2901, 2901, 2901, 2901, 2903, - 2903, 4125, 2903, 2903, 2903, 2903, 2903, 2903, 2903, 2903, - 2903, 2903, 2903, 2903, 2903, 2903, 2903, 2903, 2903, 2903, - 2903, 2903, 2903, 2903, 2903, 2903, 2903, 2903, 2463, 4125, - 4125, 2463, 4125, 4125, 2463, 4125, 2463, 2463, 2463, 2463, - 2463, 4125, 4125, 4125, 2463, 4125, 2463, 4125, 4125, 4125, - - 2463, 1551, 4125, 1551, 1551, 1551, 1551, 1551, 4125, 4125, - 4125, 1551, 4125, 1551, 2987, 4125, 4125, 4125, 4125, 4125, - 2987, 4125, 2987, 2987, 2987, 2987, 2987, 4125, 4125, 2987, - 2987, 4125, 2987, 4125, 4125, 4125, 2987, 1599, 4125, 4125, - 1599, 4125, 4125, 1599, 4125, 1599, 1599, 1599, 1599, 1599, - 4125, 4125, 1599, 1599, 4125, 1599, 4125, 4125, 4125, 1599, - 1655, 1655, 4125, 1655, 1655, 1655, 1655, 1655, 1655, 1655, - 1655, 1655, 1655, 1655, 1655, 1655, 4125, 1655, 1655, 4125, - 1655, 1655, 1655, 1655, 4125, 1655, 1655, 1655, 1655, 2300, - 2300, 2300, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - - 4125, 4125, 4125, 4125, 4125, 4125, 2300, 4125, 4125, 4125, - 2300, 4125, 4125, 4125, 4125, 4125, 2300, 2658, 2658, 2658, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 2658, 2658, 4125, 4125, 4125, 2658, 1144, - 1144, 1144, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 1144, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 1144, 1149, 1149, 1149, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 1149, 1149, 1149, - 4125, 4125, 1149, 1261, 4125, 4125, 1261, 1261, 1261, 1261, - 1261, 1261, 1261, 1261, 4125, 1261, 1261, 1261, 1261, 4125, - - 1261, 1261, 1261, 1261, 1261, 1261, 1261, 4125, 1261, 1261, - 1261, 1261, 3074, 3074, 4125, 3074, 3074, 3074, 3074, 3074, - 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, - 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, - 3074, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, - 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 4125, 3082, - 3082, 3082, 3082, 4125, 3082, 3082, 3082, 3082, 3082, 3082, - 2770, 2770, 4125, 2770, 2770, 2770, 2770, 2770, 2770, 2770, - 2770, 2770, 2770, 2770, 2770, 2770, 2770, 2770, 2770, 2770, - 2770, 2770, 2770, 2770, 2770, 2770, 2770, 2770, 2770, 2794, - - 2794, 2794, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 2794, 2794, 4125, 4125, 4125, - 2794, 2103, 4125, 4125, 2103, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 2103, 2103, 4125, 4125, 4125, 2103, 4125, 4125, - 4125, 4125, 4125, 2103, 2806, 2806, 4125, 2806, 2806, 2806, - 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, - 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, 2806, - 2806, 2806, 2806, 2808, 2808, 4125, 2808, 2808, 2808, 2808, - 2808, 2808, 2808, 2808, 2808, 2808, 2808, 2808, 2808, 2808, - 2808, 2808, 2808, 2808, 2808, 2808, 2808, 2808, 2808, 2808, - - 2808, 2808, 3148, 3148, 4125, 3148, 3148, 3148, 3148, 3148, - 3148, 3148, 3148, 3148, 3148, 3148, 3148, 3148, 3148, 3148, - 3148, 3148, 3148, 3148, 3148, 3148, 3148, 3148, 3148, 3148, - 3148, 3152, 3152, 4125, 3152, 3152, 3152, 3152, 3152, 3152, - 3152, 3152, 3152, 3152, 3152, 3152, 3152, 3152, 3152, 3152, - 3152, 3152, 3152, 3152, 3152, 3152, 3152, 3152, 3152, 3152, - 3154, 3154, 4125, 3154, 3154, 3154, 3154, 3154, 3154, 3154, - 3154, 3154, 3154, 3154, 3154, 3154, 3154, 3154, 3154, 3154, - 3154, 3154, 3154, 3154, 3154, 3154, 3154, 3154, 3154, 3156, - 3156, 4125, 3156, 3156, 3156, 3156, 3156, 3156, 3156, 3156, - - 3156, 3156, 3156, 3156, 3156, 3156, 3156, 3156, 3156, 3156, - 3156, 3156, 3156, 3156, 3156, 3156, 3156, 3156, 3159, 3159, - 4125, 3159, 3159, 3159, 3159, 3159, 3159, 3159, 3159, 3159, - 3159, 3159, 3159, 3159, 3159, 3159, 3159, 3159, 3159, 3159, - 3159, 3159, 3159, 3159, 3159, 3159, 3159, 3161, 3161, 4125, - 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, - 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, - 3161, 3161, 3161, 3161, 3161, 3161, 3163, 3163, 4125, 3163, - 3163, 3163, 3163, 3163, 3163, 3163, 3163, 3163, 3163, 3163, - 3163, 3163, 3163, 3163, 3163, 3163, 3163, 3163, 3163, 3163, - - 3163, 3163, 3163, 3163, 3163, 2830, 2830, 4125, 2830, 2830, - 2830, 2830, 2830, 2830, 2830, 2830, 2830, 2830, 2830, 2830, - 2830, 2830, 2830, 2830, 2830, 2830, 2830, 2830, 2830, 2830, - 2830, 2830, 2830, 2830, 3166, 3166, 4125, 3166, 3166, 3166, - 3166, 3166, 3166, 3166, 3166, 3166, 3166, 3166, 3166, 3166, - 3166, 3166, 3166, 3166, 3166, 3166, 3166, 3166, 3166, 3166, - 3166, 3166, 3166, 3169, 3169, 4125, 3169, 3169, 3169, 3169, - 3169, 3169, 3169, 3169, 3169, 3169, 3169, 3169, 3169, 3169, - 3169, 3169, 3169, 3169, 3169, 3169, 3169, 3169, 3169, 3169, - 3169, 3169, 2837, 2837, 4125, 2837, 2837, 2837, 2837, 2837, - - 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, - 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, 2837, - 2837, 3180, 3180, 4125, 3180, 3180, 3180, 3180, 3180, 3180, - 3180, 3180, 3180, 3180, 3180, 3180, 3180, 3180, 3180, 3180, - 3180, 3180, 3180, 3180, 3180, 3180, 3180, 3180, 3180, 3180, - 3182, 3182, 4125, 3182, 3182, 3182, 3182, 3182, 3182, 3182, - 3182, 3182, 3182, 3182, 3182, 3182, 3182, 3182, 3182, 3182, - 3182, 3182, 3182, 3182, 3182, 3182, 3182, 3182, 3182, 3184, - 3184, 4125, 3184, 3184, 3184, 3184, 3184, 3184, 3184, 3184, - 3184, 3184, 3184, 3184, 3184, 3184, 3184, 3184, 3184, 3184, - - 3184, 3184, 3184, 3184, 3184, 3184, 3184, 3184, 3186, 3186, - 4125, 3186, 3186, 3186, 3186, 3186, 3186, 3186, 3186, 3186, - 3186, 3186, 3186, 3186, 3186, 3186, 3186, 3186, 3186, 3186, - 3186, 3186, 3186, 3186, 3186, 3186, 3186, 2855, 2855, 4125, - 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, - 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, 2855, - 2855, 2855, 2855, 2855, 2855, 2855, 2859, 2859, 4125, 2859, - 2859, 2859, 2859, 2859, 2859, 2859, 2859, 2859, 2859, 2859, - 2859, 2859, 2859, 2859, 2859, 2859, 2859, 2859, 2859, 2859, - 2859, 2859, 2859, 2859, 2859, 3195, 3195, 4125, 3195, 3195, - - 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, - 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, - 3195, 3195, 3195, 3195, 2863, 2863, 4125, 2863, 2863, 2863, - 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, - 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, 2863, - 2863, 2863, 2863, 2865, 2865, 4125, 2865, 2865, 2865, 2865, - 2865, 2865, 2865, 2865, 2865, 2865, 2865, 2865, 2865, 2865, - 2865, 2865, 2865, 2865, 2865, 2865, 2865, 2865, 2865, 2865, - 2865, 2865, 2867, 2867, 4125, 2867, 2867, 2867, 2867, 2867, - 2867, 2867, 2867, 2867, 2867, 2867, 2867, 2867, 2867, 2867, - - 2867, 2867, 2867, 2867, 2867, 2867, 2867, 2867, 2867, 2867, - 2867, 2870, 2870, 4125, 2870, 2870, 2870, 2870, 2870, 2870, - 2870, 2870, 2870, 2870, 2870, 2870, 2870, 2870, 2870, 2870, - 2870, 2870, 2870, 2870, 2870, 2870, 2870, 2870, 2870, 2870, - 2872, 2872, 4125, 2872, 2872, 2872, 2872, 2872, 2872, 2872, - 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, - 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2874, - 2874, 4125, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, - 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, - 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2874, 2877, 2877, - - 4125, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, - 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, 2877, - 2877, 2877, 2877, 2877, 2877, 2877, 2877, 3201, 3201, 4125, - 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, - 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, - 3201, 3201, 3201, 3201, 3201, 3201, 2882, 2882, 4125, 2882, - 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, - 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, 2882, - 2882, 2882, 2882, 2882, 2882, 2886, 2886, 4125, 2886, 2886, - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - - 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, 2886, - 2886, 2886, 2886, 2886, 3207, 3207, 4125, 3207, 3207, 3207, - 3207, 3207, 3207, 3207, 3207, 3207, 3207, 3207, 3207, 3207, - 3207, 3207, 3207, 3207, 3207, 3207, 3207, 3207, 3207, 3207, - 3207, 3207, 3207, 3211, 3211, 4125, 3211, 3211, 3211, 3211, - 3211, 3211, 3211, 3211, 3211, 3211, 3211, 3211, 3211, 3211, - 3211, 3211, 3211, 3211, 3211, 3211, 3211, 3211, 3211, 3211, - 3211, 3211, 3213, 3213, 4125, 3213, 3213, 3213, 3213, 3213, - 3213, 3213, 3213, 3213, 3213, 3213, 3213, 3213, 3213, 3213, - 3213, 3213, 3213, 3213, 3213, 3213, 3213, 3213, 3213, 3213, - - 3213, 2897, 2897, 4125, 2897, 2897, 2897, 2897, 2897, 2897, - 2897, 2897, 2897, 2897, 2897, 2897, 2897, 2897, 2897, 2897, - 2897, 2897, 2897, 2897, 2897, 2897, 2897, 2897, 2897, 2897, - 2899, 2899, 4125, 2899, 2899, 2899, 2899, 2899, 2899, 2899, - 2899, 2899, 2899, 2899, 2899, 2899, 2899, 2899, 2899, 2899, - 2899, 2899, 2899, 2899, 2899, 2899, 2899, 2899, 2899, 2901, - 2901, 4125, 2901, 2901, 2901, 2901, 2901, 2901, 2901, 2901, - 2901, 2901, 2901, 2901, 2901, 2901, 2901, 2901, 2901, 2901, - 2901, 2901, 2901, 2901, 2901, 2901, 2901, 2901, 2903, 2903, - 4125, 2903, 2903, 2903, 2903, 2903, 2903, 2903, 2903, 2903, - - 2903, 2903, 2903, 2903, 2903, 2903, 2903, 2903, 2903, 2903, - 2903, 2903, 2903, 2903, 2903, 2903, 2903, 3216, 3216, 4125, - 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, - 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, - 3216, 3216, 3216, 3216, 3216, 3216, 2463, 4125, 4125, 2463, - 4125, 4125, 2463, 4125, 2463, 2463, 2463, 2463, 2463, 4125, - 4125, 4125, 2463, 4125, 2463, 4125, 4125, 4125, 2463, 1551, - 4125, 1551, 1551, 1551, 1551, 1551, 4125, 4125, 4125, 1551, - 4125, 1551, 3260, 3260, 4125, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 2986, 4125, 4125, 4125, 4125, 4125, 2986, 4125, 2986, - 2986, 2986, 2986, 2986, 4125, 4125, 2986, 2986, 4125, 4125, - 4125, 4125, 4125, 2986, 2987, 4125, 4125, 4125, 4125, 4125, - 2987, 4125, 2987, 2987, 2987, 2987, 2987, 4125, 4125, 2987, - 2987, 4125, 2987, 4125, 4125, 4125, 2987, 3294, 4125, 4125, - 4125, 4125, 4125, 3294, 4125, 3294, 3294, 3294, 3294, 3294, - 4125, 4125, 3294, 3294, 4125, 3294, 4125, 4125, 4125, 3294, - 3296, 4125, 4125, 4125, 4125, 4125, 3296, 4125, 3296, 3296, - 3296, 3296, 3296, 4125, 4125, 3296, 3296, 4125, 3296, 4125, - - 4125, 4125, 3296, 1599, 4125, 4125, 1599, 4125, 4125, 1599, - 4125, 1599, 1599, 1599, 1599, 1599, 4125, 4125, 1599, 1599, - 4125, 1599, 4125, 4125, 4125, 1599, 1655, 1655, 4125, 1655, - 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, - 1655, 1655, 4125, 1655, 1655, 4125, 1655, 1655, 1655, 1655, - 4125, 1655, 1655, 1655, 1655, 2300, 2300, 2300, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 2300, 4125, 4125, 4125, 2300, 4125, 4125, 4125, - 4125, 4125, 2300, 1149, 1149, 1149, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 1149, - - 1149, 1149, 4125, 4125, 1149, 3363, 3363, 4125, 3363, 3363, - 3363, 3363, 3363, 3363, 3363, 3363, 3363, 3363, 3363, 3363, - 3363, 3363, 3363, 3363, 3363, 3363, 3363, 3363, 3363, 3363, - 3363, 3363, 3363, 3363, 1261, 4125, 4125, 1261, 1261, 1261, - 1261, 1261, 1261, 1261, 1261, 4125, 1261, 1261, 1261, 1261, - 4125, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 4125, 1261, - 1261, 1261, 1261, 3074, 3074, 4125, 3074, 3074, 3074, 3074, - 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, - 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, 3074, - 3074, 3074, 3368, 3368, 3368, 3368, 3368, 3368, 3368, 3368, - - 3368, 3368, 3368, 3368, 3368, 3368, 3368, 3368, 3368, 4125, - 3368, 3368, 3368, 3368, 4125, 3368, 3368, 3368, 3368, 3368, - 3368, 2103, 4125, 4125, 2103, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 2103, 2103, 4125, 4125, 4125, 2103, 4125, 4125, - 4125, 4125, 4125, 2103, 3148, 3148, 4125, 3148, 3148, 3148, - 3148, 3148, 3148, 3148, 3148, 3148, 3148, 3148, 3148, 3148, - 3148, 3148, 3148, 3148, 3148, 3148, 3148, 3148, 3148, 3148, - 3148, 3148, 3148, 3425, 3425, 4125, 3425, 3425, 3425, 3425, - 3425, 3425, 3425, 3425, 3425, 3425, 3425, 3425, 3425, 3425, - 3425, 3425, 3425, 3425, 3425, 3425, 3425, 3425, 3425, 3425, - - 3425, 3425, 3152, 3152, 4125, 3152, 3152, 3152, 3152, 3152, - 3152, 3152, 3152, 3152, 3152, 3152, 3152, 3152, 3152, 3152, - 3152, 3152, 3152, 3152, 3152, 3152, 3152, 3152, 3152, 3152, - 3152, 3154, 3154, 4125, 3154, 3154, 3154, 3154, 3154, 3154, - 3154, 3154, 3154, 3154, 3154, 3154, 3154, 3154, 3154, 3154, - 3154, 3154, 3154, 3154, 3154, 3154, 3154, 3154, 3154, 3154, - 3156, 3156, 4125, 3156, 3156, 3156, 3156, 3156, 3156, 3156, - 3156, 3156, 3156, 3156, 3156, 3156, 3156, 3156, 3156, 3156, - 3156, 3156, 3156, 3156, 3156, 3156, 3156, 3156, 3156, 3159, - 3159, 4125, 3159, 3159, 3159, 3159, 3159, 3159, 3159, 3159, - - 3159, 3159, 3159, 3159, 3159, 3159, 3159, 3159, 3159, 3159, - 3159, 3159, 3159, 3159, 3159, 3159, 3159, 3159, 3161, 3161, - 4125, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, - 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, - 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3163, 3163, 4125, - 3163, 3163, 3163, 3163, 3163, 3163, 3163, 3163, 3163, 3163, - 3163, 3163, 3163, 3163, 3163, 3163, 3163, 3163, 3163, 3163, - 3163, 3163, 3163, 3163, 3163, 3163, 3166, 3166, 4125, 3166, - 3166, 3166, 3166, 3166, 3166, 3166, 3166, 3166, 3166, 3166, - 3166, 3166, 3166, 3166, 3166, 3166, 3166, 3166, 3166, 3166, - - 3166, 3166, 3166, 3166, 3166, 3169, 3169, 4125, 3169, 3169, - 3169, 3169, 3169, 3169, 3169, 3169, 3169, 3169, 3169, 3169, - 3169, 3169, 3169, 3169, 3169, 3169, 3169, 3169, 3169, 3169, - 3169, 3169, 3169, 3169, 3432, 3432, 4125, 3432, 3432, 3432, - 3432, 3432, 3432, 3432, 3432, 3432, 3432, 3432, 3432, 3432, - 3432, 3432, 3432, 3432, 3432, 3432, 3432, 3432, 3432, 3432, - 3432, 3432, 3432, 3436, 3436, 4125, 3436, 3436, 3436, 3436, - 3436, 3436, 3436, 3436, 3436, 3436, 3436, 3436, 3436, 3436, - 3436, 3436, 3436, 3436, 3436, 3436, 3436, 3436, 3436, 3436, - 3436, 3436, 3438, 3438, 4125, 3438, 3438, 3438, 3438, 3438, - - 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, - 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, - 3438, 3180, 3180, 4125, 3180, 3180, 3180, 3180, 3180, 3180, - 3180, 3180, 3180, 3180, 3180, 3180, 3180, 3180, 3180, 3180, - 3180, 3180, 3180, 3180, 3180, 3180, 3180, 3180, 3180, 3180, - 3182, 3182, 4125, 3182, 3182, 3182, 3182, 3182, 3182, 3182, - 3182, 3182, 3182, 3182, 3182, 3182, 3182, 3182, 3182, 3182, - 3182, 3182, 3182, 3182, 3182, 3182, 3182, 3182, 3182, 3184, - 3184, 4125, 3184, 3184, 3184, 3184, 3184, 3184, 3184, 3184, - 3184, 3184, 3184, 3184, 3184, 3184, 3184, 3184, 3184, 3184, - - 3184, 3184, 3184, 3184, 3184, 3184, 3184, 3184, 3186, 3186, - 4125, 3186, 3186, 3186, 3186, 3186, 3186, 3186, 3186, 3186, - 3186, 3186, 3186, 3186, 3186, 3186, 3186, 3186, 3186, 3186, - 3186, 3186, 3186, 3186, 3186, 3186, 3186, 3441, 3441, 4125, - 3441, 3441, 3441, 3441, 3441, 3441, 3441, 3441, 3441, 3441, - 3441, 3441, 3441, 3441, 3441, 3441, 3441, 3441, 3441, 3441, - 3441, 3441, 3441, 3441, 3441, 3441, 3443, 3443, 4125, 3443, - 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, - 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, - 3443, 3443, 3443, 3443, 3443, 3446, 3446, 4125, 3446, 3446, - - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3195, 3195, 4125, 3195, 3195, 3195, - 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, - 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, 3195, - 3195, 3195, 3195, 3448, 3448, 4125, 3448, 3448, 3448, 3448, - 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, - 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, - 3448, 3448, 3450, 3450, 4125, 3450, 3450, 3450, 3450, 3450, - 3450, 3450, 3450, 3450, 3450, 3450, 3450, 3450, 3450, 3450, - - 3450, 3450, 3450, 3450, 3450, 3450, 3450, 3450, 3450, 3450, - 3450, 3201, 3201, 4125, 3201, 3201, 3201, 3201, 3201, 3201, - 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, - 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, 3201, - 3454, 3454, 4125, 3454, 3454, 3454, 3454, 3454, 3454, 3454, - 3454, 3454, 3454, 3454, 3454, 3454, 3454, 3454, 3454, 3454, - 3454, 3454, 3454, 3454, 3454, 3454, 3454, 3454, 3454, 3207, - 3207, 4125, 3207, 3207, 3207, 3207, 3207, 3207, 3207, 3207, - 3207, 3207, 3207, 3207, 3207, 3207, 3207, 3207, 3207, 3207, - 3207, 3207, 3207, 3207, 3207, 3207, 3207, 3207, 3211, 3211, - - 4125, 3211, 3211, 3211, 3211, 3211, 3211, 3211, 3211, 3211, - 3211, 3211, 3211, 3211, 3211, 3211, 3211, 3211, 3211, 3211, - 3211, 3211, 3211, 3211, 3211, 3211, 3211, 3213, 3213, 4125, - 3213, 3213, 3213, 3213, 3213, 3213, 3213, 3213, 3213, 3213, - 3213, 3213, 3213, 3213, 3213, 3213, 3213, 3213, 3213, 3213, - 3213, 3213, 3213, 3213, 3213, 3213, 3216, 3216, 4125, 3216, - 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, - 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, 3216, - 3216, 3216, 3216, 3216, 3216, 2463, 4125, 4125, 2463, 4125, - 4125, 2463, 4125, 2463, 2463, 2463, 2463, 2463, 4125, 4125, - - 4125, 2463, 4125, 2463, 4125, 4125, 4125, 2463, 1551, 4125, - 1551, 1551, 1551, 1551, 1551, 4125, 4125, 4125, 1551, 4125, - 1551, 3259, 3259, 4125, 3259, 3259, 3259, 3259, 3259, 3259, - 3259, 3259, 3259, 3259, 3259, 3259, 3259, 3259, 3259, 3259, - 3259, 3259, 3259, 3259, 3259, 3259, 3259, 3259, 3259, 3259, - 3260, 3260, 4125, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3495, - 3495, 4125, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, - 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, - - 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3294, 4125, - 4125, 4125, 4125, 4125, 3294, 4125, 3294, 3294, 3294, 3294, - 3294, 4125, 4125, 3294, 3294, 4125, 3294, 4125, 4125, 4125, - 3294, 3528, 4125, 4125, 3528, 4125, 4125, 3528, 4125, 3528, - 3528, 3528, 3528, 3528, 4125, 4125, 3528, 3528, 4125, 3528, - 4125, 4125, 4125, 3528, 3530, 4125, 4125, 4125, 4125, 4125, - 3530, 4125, 3530, 3530, 3530, 3530, 3530, 4125, 4125, 3530, - 3530, 4125, 4125, 4125, 4125, 4125, 3530, 1599, 4125, 4125, - 1599, 4125, 4125, 1599, 4125, 1599, 1599, 1599, 1599, 1599, - 4125, 4125, 1599, 1599, 4125, 1599, 4125, 4125, 4125, 1599, - - 3534, 3534, 4125, 3534, 3534, 3534, 3534, 3534, 3534, 3534, - 3534, 3534, 3534, 3534, 3534, 3534, 3534, 3534, 3534, 3534, - 3534, 3534, 3534, 3534, 3534, 3534, 3534, 3534, 3534, 1655, - 1655, 4125, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, - 1655, 1655, 1655, 1655, 1655, 4125, 1655, 1655, 4125, 1655, - 1655, 1655, 1655, 4125, 1655, 1655, 1655, 1655, 1149, 1149, - 1149, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 1149, 1149, 1149, 4125, 4125, 1149, - 3363, 3363, 4125, 3363, 3363, 3363, 3363, 3363, 3363, 3363, - 3363, 3363, 3363, 3363, 3363, 3363, 3363, 3363, 3363, 3363, - - 3363, 3363, 3363, 3363, 3363, 3363, 3363, 3363, 3363, 1261, - 4125, 4125, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 1261, - 4125, 1261, 1261, 1261, 1261, 4125, 1261, 1261, 1261, 1261, - 1261, 1261, 1261, 4125, 1261, 1261, 1261, 1261, 2103, 4125, - 4125, 2103, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 2103, - 2103, 4125, 4125, 4125, 2103, 4125, 4125, 4125, 4125, 4125, - 2103, 3624, 3624, 4125, 3624, 3624, 3624, 3624, 3624, 3624, - 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, - 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, - 3627, 3627, 4125, 3627, 3627, 3627, 3627, 3627, 3627, 3627, - - 3627, 3627, 3627, 3627, 3627, 3627, 3627, 3627, 3627, 3627, - 3627, 3627, 3627, 3627, 3627, 3627, 3627, 3627, 3627, 3425, - 3425, 4125, 3425, 3425, 3425, 3425, 3425, 3425, 3425, 3425, - 3425, 3425, 3425, 3425, 3425, 3425, 3425, 3425, 3425, 3425, - 3425, 3425, 3425, 3425, 3425, 3425, 3425, 3425, 3629, 3629, - 4125, 3629, 3629, 3629, 3629, 3629, 3629, 3629, 3629, 3629, - 3629, 3629, 3629, 3629, 3629, 3629, 3629, 3629, 3629, 3629, - 3629, 3629, 3629, 3629, 3629, 3629, 3629, 3631, 3631, 4125, - 3631, 3631, 3631, 3631, 3631, 3631, 3631, 3631, 3631, 3631, - 3631, 3631, 3631, 3631, 3631, 3631, 3631, 3631, 3631, 3631, - - 3631, 3631, 3631, 3631, 3631, 3631, 3432, 3432, 4125, 3432, - 3432, 3432, 3432, 3432, 3432, 3432, 3432, 3432, 3432, 3432, - 3432, 3432, 3432, 3432, 3432, 3432, 3432, 3432, 3432, 3432, - 3432, 3432, 3432, 3432, 3432, 3436, 3436, 4125, 3436, 3436, - 3436, 3436, 3436, 3436, 3436, 3436, 3436, 3436, 3436, 3436, - 3436, 3436, 3436, 3436, 3436, 3436, 3436, 3436, 3436, 3436, - 3436, 3436, 3436, 3436, 3438, 3438, 4125, 3438, 3438, 3438, - 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, - 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, 3438, - 3438, 3438, 3438, 3441, 3441, 4125, 3441, 3441, 3441, 3441, - - 3441, 3441, 3441, 3441, 3441, 3441, 3441, 3441, 3441, 3441, - 3441, 3441, 3441, 3441, 3441, 3441, 3441, 3441, 3441, 3441, - 3441, 3441, 3443, 3443, 4125, 3443, 3443, 3443, 3443, 3443, - 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, - 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, 3443, - 3443, 3446, 3446, 4125, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, 3446, - 3448, 3448, 4125, 3448, 3448, 3448, 3448, 3448, 3448, 3448, - 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, - - 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3450, - 3450, 4125, 3450, 3450, 3450, 3450, 3450, 3450, 3450, 3450, - 3450, 3450, 3450, 3450, 3450, 3450, 3450, 3450, 3450, 3450, - 3450, 3450, 3450, 3450, 3450, 3450, 3450, 3450, 3641, 3641, - 4125, 3641, 3641, 3641, 3641, 3641, 3641, 3641, 3641, 3641, - 3641, 3641, 3641, 3641, 3641, 3641, 3641, 3641, 3641, 3641, - 3641, 3641, 3641, 3641, 3641, 3641, 3641, 3454, 3454, 4125, - 3454, 3454, 3454, 3454, 3454, 3454, 3454, 3454, 3454, 3454, - 3454, 3454, 3454, 3454, 3454, 3454, 3454, 3454, 3454, 3454, - 3454, 3454, 3454, 3454, 3454, 3454, 3644, 3644, 4125, 3644, - - 3644, 3644, 3644, 3644, 3644, 3644, 3644, 3644, 3644, 3644, - 3644, 3644, 3644, 3644, 3644, 3644, 3644, 3644, 3644, 3644, - 3644, 3644, 3644, 3644, 3644, 3648, 3648, 4125, 3648, 3648, - 3648, 3648, 3648, 3648, 3648, 3648, 3648, 3648, 3648, 3648, - 3648, 3648, 3648, 3648, 3648, 3648, 3648, 3648, 3648, 3648, - 3648, 3648, 3648, 3648, 2463, 4125, 4125, 2463, 4125, 4125, - 2463, 4125, 2463, 2463, 2463, 2463, 2463, 4125, 4125, 4125, - 2463, 4125, 2463, 4125, 4125, 4125, 2463, 1551, 4125, 1551, - 1551, 1551, 1551, 1551, 4125, 4125, 4125, 1551, 4125, 1551, - 3495, 3495, 4125, 3495, 3495, 3495, 3495, 3495, 3495, 3495, - - 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, - 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3530, - 4125, 4125, 4125, 4125, 4125, 3530, 4125, 3530, 3530, 3530, - 3530, 3530, 4125, 4125, 3530, 3530, 4125, 4125, 4125, 4125, - 4125, 3530, 3528, 4125, 4125, 3528, 4125, 4125, 3528, 4125, - 3528, 3528, 3528, 3528, 3528, 4125, 4125, 3528, 3528, 4125, - 3528, 4125, 4125, 4125, 3528, 2987, 4125, 4125, 4125, 4125, - 4125, 2987, 4125, 2987, 2987, 2987, 2987, 2987, 4125, 4125, - 2987, 2987, 4125, 2987, 4125, 4125, 4125, 2987, 3701, 4125, - 4125, 3701, 4125, 4125, 3701, 4125, 3701, 3701, 3701, 3701, - - 3701, 4125, 4125, 3701, 3701, 4125, 4125, 4125, 4125, 4125, - 3701, 1599, 4125, 4125, 1599, 4125, 4125, 1599, 4125, 1599, - 1599, 1599, 1599, 1599, 4125, 4125, 1599, 1599, 4125, 1599, - 4125, 4125, 4125, 1599, 3534, 3534, 4125, 3534, 3534, 3534, - 3534, 3534, 3534, 3534, 3534, 3534, 3534, 3534, 3534, 3534, - 3534, 3534, 3534, 3534, 3534, 3534, 3534, 3534, 3534, 3534, - 3534, 3534, 3534, 1655, 1655, 4125, 1655, 1655, 1655, 1655, - 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 4125, - 1655, 1655, 4125, 1655, 1655, 1655, 1655, 4125, 1655, 1655, - 1655, 1655, 1149, 1149, 1149, 4125, 4125, 4125, 4125, 4125, - - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 1149, 1149, - 1149, 4125, 4125, 1149, 1261, 4125, 4125, 1261, 1261, 1261, - 1261, 1261, 1261, 1261, 1261, 4125, 1261, 1261, 1261, 1261, - 4125, 1261, 1261, 1261, 1261, 1261, 1261, 1261, 4125, 1261, - 1261, 1261, 1261, 3766, 3766, 3766, 3766, 3766, 3766, 3766, - 3766, 3766, 3766, 3766, 3766, 3766, 3766, 3766, 3766, 3766, - 3766, 3766, 3766, 3766, 3766, 3766, 3766, 3766, 3766, 3766, - 3766, 3766, 2103, 4125, 4125, 2103, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 2103, 2103, 4125, 4125, 4125, 2103, 4125, - 4125, 4125, 4125, 4125, 2103, 3624, 3624, 4125, 3624, 3624, - - 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, - 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, - 3624, 3624, 3624, 3624, 3627, 3627, 4125, 3627, 3627, 3627, - 3627, 3627, 3627, 3627, 3627, 3627, 3627, 3627, 3627, 3627, - 3627, 3627, 3627, 3627, 3627, 3627, 3627, 3627, 3627, 3627, - 3627, 3627, 3627, 3629, 3629, 4125, 3629, 3629, 3629, 3629, - 3629, 3629, 3629, 3629, 3629, 3629, 3629, 3629, 3629, 3629, - 3629, 3629, 3629, 3629, 3629, 3629, 3629, 3629, 3629, 3629, - 3629, 3629, 3631, 3631, 4125, 3631, 3631, 3631, 3631, 3631, - 3631, 3631, 3631, 3631, 3631, 3631, 3631, 3631, 3631, 3631, - - 3631, 3631, 3631, 3631, 3631, 3631, 3631, 3631, 3631, 3631, - 3631, 3776, 3776, 4125, 3776, 3776, 3776, 3776, 3776, 3776, - 3776, 3776, 3776, 3776, 3776, 3776, 3776, 3776, 3776, 3776, - 3776, 3776, 3776, 3776, 3776, 3776, 3776, 3776, 3776, 3776, - 3780, 3780, 4125, 3780, 3780, 3780, 3780, 3780, 3780, 3780, - 3780, 3780, 3780, 3780, 3780, 3780, 3780, 3780, 3780, 3780, - 3780, 3780, 3780, 3780, 3780, 3780, 3780, 3780, 3780, 3782, - 3782, 4125, 3782, 3782, 3782, 3782, 3782, 3782, 3782, 3782, - 3782, 3782, 3782, 3782, 3782, 3782, 3782, 3782, 3782, 3782, - 3782, 3782, 3782, 3782, 3782, 3782, 3782, 3782, 3641, 3641, - - 4125, 3641, 3641, 3641, 3641, 3641, 3641, 3641, 3641, 3641, - 3641, 3641, 3641, 3641, 3641, 3641, 3641, 3641, 3641, 3641, - 3641, 3641, 3641, 3641, 3641, 3641, 3641, 3644, 3644, 4125, - 3644, 3644, 3644, 3644, 3644, 3644, 3644, 3644, 3644, 3644, - 3644, 3644, 3644, 3644, 3644, 3644, 3644, 3644, 3644, 3644, - 3644, 3644, 3644, 3644, 3644, 3644, 3785, 3785, 4125, 3785, - 3785, 3785, 3785, 3785, 3785, 3785, 3785, 3785, 3785, 3785, - 3785, 3785, 3785, 3785, 3785, 3785, 3785, 3785, 3785, 3785, - 3785, 3785, 3785, 3785, 3785, 3648, 3648, 4125, 3648, 3648, - 3648, 3648, 3648, 3648, 3648, 3648, 3648, 3648, 3648, 3648, - - 3648, 3648, 3648, 3648, 3648, 3648, 3648, 3648, 3648, 3648, - 3648, 3648, 3648, 3648, 3791, 3791, 3791, 3791, 3791, 3791, - 3791, 3791, 3791, 3791, 3791, 3791, 3791, 3791, 3791, 3791, - 3791, 4125, 3791, 3791, 3791, 3791, 4125, 3791, 3791, 3791, - 3791, 3791, 3791, 3792, 3792, 3792, 3792, 3792, 3792, 3792, - 3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792, 3792, - 4125, 3792, 3792, 3792, 3792, 4125, 3792, 3792, 3792, 3792, - 3792, 3792, 2463, 4125, 4125, 2463, 4125, 4125, 2463, 4125, - 2463, 2463, 2463, 2463, 2463, 4125, 4125, 4125, 2463, 4125, - 2463, 4125, 4125, 4125, 2463, 1551, 4125, 1551, 1551, 1551, - - 1551, 1551, 4125, 4125, 4125, 1551, 4125, 1551, 3528, 4125, - 4125, 3528, 4125, 4125, 3528, 4125, 3528, 3528, 3528, 3528, - 3528, 4125, 4125, 3528, 3528, 4125, 3528, 4125, 4125, 4125, - 3528, 3701, 4125, 4125, 3701, 4125, 4125, 3701, 4125, 3701, - 3701, 3701, 3701, 3701, 4125, 4125, 3701, 3701, 4125, 4125, - 4125, 4125, 4125, 3701, 2986, 4125, 4125, 4125, 4125, 4125, - 2986, 4125, 2986, 2986, 2986, 2986, 2986, 4125, 4125, 2986, - 2986, 4125, 4125, 4125, 4125, 4125, 2986, 1655, 1655, 1655, - 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, - 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, - - 1655, 1655, 1655, 1655, 1655, 1655, 3841, 3841, 3841, 3841, - 3841, 3841, 3841, 3841, 3841, 3841, 3841, 3841, 3841, 3841, - 3841, 3841, 3841, 4125, 3841, 3841, 3841, 3841, 4125, 3841, - 3841, 3841, 3841, 3841, 3841, 1149, 1149, 1149, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 1149, 1149, 1149, 4125, 4125, 1149, 3876, 3876, 3876, - 3876, 3876, 3876, 3876, 3876, 3876, 3876, 3876, 3876, 3876, - 3876, 3876, 3876, 3876, 4125, 3876, 3876, 3876, 3876, 4125, - 3876, 3876, 3876, 3876, 3876, 3876, 3766, 3766, 3766, 3766, - 3766, 3766, 3766, 3766, 3766, 3766, 3766, 3766, 3766, 3766, - - 3766, 3766, 3766, 3766, 3766, 3766, 3766, 3766, 3766, 3766, - 3766, 3766, 3766, 3766, 3766, 2103, 4125, 4125, 2103, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 2103, 2103, 4125, 4125, - 4125, 2103, 4125, 4125, 4125, 4125, 4125, 2103, 3884, 3884, - 4125, 3884, 3884, 3884, 3884, 3884, 3884, 3884, 3884, 3884, - 3884, 3884, 3884, 3884, 3884, 3884, 3884, 3884, 3884, 3884, - 3884, 3884, 3884, 3884, 3884, 3884, 3884, 3776, 3776, 4125, - 3776, 3776, 3776, 3776, 3776, 3776, 3776, 3776, 3776, 3776, - 3776, 3776, 3776, 3776, 3776, 3776, 3776, 3776, 3776, 3776, - 3776, 3776, 3776, 3776, 3776, 3776, 3887, 3887, 4125, 3887, - - 3887, 3887, 3887, 3887, 3887, 3887, 3887, 3887, 3887, 3887, - 3887, 3887, 3887, 3887, 3887, 3887, 3887, 3887, 3887, 3887, - 3887, 3887, 3887, 3887, 3887, 3780, 3780, 4125, 3780, 3780, - 3780, 3780, 3780, 3780, 3780, 3780, 3780, 3780, 3780, 3780, - 3780, 3780, 3780, 3780, 3780, 3780, 3780, 3780, 3780, 3780, - 3780, 3780, 3780, 3780, 3782, 3782, 4125, 3782, 3782, 3782, - 3782, 3782, 3782, 3782, 3782, 3782, 3782, 3782, 3782, 3782, - 3782, 3782, 3782, 3782, 3782, 3782, 3782, 3782, 3782, 3782, - 3782, 3782, 3782, 3785, 3785, 4125, 3785, 3785, 3785, 3785, - 3785, 3785, 3785, 3785, 3785, 3785, 3785, 3785, 3785, 3785, - - 3785, 3785, 3785, 3785, 3785, 3785, 3785, 3785, 3785, 3785, - 3785, 3785, 3896, 3896, 3896, 3896, 3896, 3896, 3896, 3896, - 3896, 3896, 3896, 3896, 3896, 3896, 3896, 3896, 3896, 4125, - 3896, 3896, 3896, 3896, 4125, 3896, 3896, 3896, 3896, 3896, - 3896, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, - 3902, 3902, 3902, 3902, 3902, 3902, 3902, 3902, 4125, 3902, - 3902, 3902, 3902, 4125, 3902, 3902, 3902, 3902, 3902, 3902, - 2463, 4125, 4125, 2463, 4125, 4125, 2463, 4125, 2463, 2463, - 2463, 2463, 2463, 4125, 4125, 4125, 2463, 4125, 2463, 4125, - 4125, 4125, 2463, 1551, 1551, 1551, 4125, 4125, 4125, 4125, - - 4125, 4125, 4125, 4125, 1551, 4125, 1551, 1551, 1551, 1551, - 1551, 4125, 4125, 4125, 1551, 4125, 1551, 2105, 4125, 2105, - 2105, 2105, 2105, 2105, 4125, 4125, 4125, 2105, 4125, 2105, - 3528, 4125, 4125, 3528, 4125, 4125, 3528, 4125, 3528, 3528, - 3528, 3528, 3528, 4125, 4125, 3528, 3528, 4125, 3528, 4125, - 4125, 4125, 3528, 3530, 4125, 4125, 4125, 4125, 4125, 3530, - 4125, 3530, 3530, 3530, 3530, 3530, 4125, 4125, 3530, 3530, - 4125, 4125, 4125, 4125, 4125, 3530, 3828, 3828, 4125, 4125, - 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 4125, - 3828, 4125, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, - - 3828, 3828, 3828, 3828, 3828, 3923, 4125, 4125, 4125, 4125, - 4125, 3923, 4125, 4125, 3923, 3923, 4125, 3923, 4125, 4125, - 4125, 4125, 3923, 3923, 3923, 4125, 3923, 3831, 3831, 4125, - 4125, 3831, 3831, 3831, 3831, 3831, 3831, 3831, 3831, 3831, - 4125, 3831, 3831, 3831, 3831, 3831, 3831, 3831, 3831, 3831, - 3831, 3831, 3831, 3831, 3831, 3831, 3832, 3832, 4125, 4125, - 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 4125, - 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, - 3832, 3832, 3832, 3832, 3832, 3927, 3927, 4125, 4125, 3927, - 3927, 3927, 3927, 3927, 3927, 3927, 3927, 3927, 4125, 3927, - - 3927, 3927, 3927, 3927, 3927, 3927, 3927, 3927, 3927, 3927, - 3927, 3927, 3927, 3927, 1655, 1655, 4125, 1655, 1655, 1655, - 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, 1655, - 4125, 1655, 1655, 4125, 1655, 1655, 1655, 1655, 4125, 1655, - 1655, 1655, 1655, 1149, 1149, 1149, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 1149, - 1149, 1149, 4125, 4125, 1149, 3948, 3948, 3948, 3948, 3948, - 3948, 3948, 3948, 3948, 3948, 3948, 3948, 3948, 3948, 3948, - 3948, 3948, 4125, 3948, 3948, 3948, 3948, 4125, 3948, 3948, - 3948, 3948, 3948, 3948, 3949, 3949, 4125, 3949, 3949, 3949, - - 3949, 3949, 3949, 3949, 3949, 3949, 3949, 3949, 3949, 3949, - 3949, 3949, 3949, 3949, 3949, 3949, 3949, 3949, 3949, 3949, - 3949, 3949, 3949, 3951, 3951, 3951, 3951, 3951, 3951, 3951, - 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, 3951, - 4125, 3951, 3951, 3951, 3951, 4125, 3951, 3951, 3951, 3951, - 3951, 3951, 2103, 4125, 4125, 2103, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 2103, 2103, 4125, 4125, 4125, 2103, 4125, - 4125, 4125, 4125, 4125, 2103, 3884, 3884, 4125, 3884, 3884, - 3884, 3884, 3884, 3884, 3884, 3884, 3884, 3884, 3884, 3884, - 3884, 3884, 3884, 3884, 3884, 3884, 3884, 3884, 3884, 3884, - - 3884, 3884, 3884, 3884, 3887, 3887, 4125, 3887, 3887, 3887, - 3887, 3887, 3887, 3887, 3887, 3887, 3887, 3887, 3887, 3887, - 3887, 3887, 3887, 3887, 3887, 3887, 3887, 3887, 3887, 3887, - 3887, 3887, 3887, 3960, 3960, 4125, 3960, 3960, 3960, 3960, - 3960, 3960, 3960, 3960, 3960, 3960, 3960, 3960, 3960, 3960, - 3960, 3960, 3960, 3960, 3960, 3960, 3960, 3960, 3960, 3960, - 3960, 3960, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, - 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 3966, 4125, - 3966, 3966, 3966, 3966, 4125, 3966, 3966, 3966, 3966, 3966, - 3966, 2463, 4125, 4125, 2463, 4125, 4125, 2463, 4125, 2463, - - 2463, 2463, 2463, 2463, 4125, 4125, 4125, 2463, 4125, 2463, - 4125, 4125, 4125, 2463, 1551, 4125, 1551, 1551, 1551, 1551, - 1551, 4125, 4125, 4125, 1551, 4125, 1551, 2105, 4125, 2105, - 2105, 2105, 2105, 2105, 4125, 4125, 4125, 2105, 4125, 2105, - 3528, 4125, 4125, 3528, 4125, 4125, 3528, 4125, 3528, 3528, - 3528, 3528, 3528, 4125, 4125, 3528, 3528, 4125, 3528, 4125, - 4125, 4125, 3528, 3701, 4125, 4125, 3701, 4125, 4125, 3701, - 4125, 3701, 3701, 3701, 3701, 3701, 4125, 4125, 3701, 3701, - 4125, 4125, 4125, 4125, 4125, 3701, 3984, 4125, 4125, 4125, - 4125, 4125, 3984, 4125, 4125, 3984, 3984, 4125, 3984, 4125, - - 4125, 4125, 4125, 4125, 3984, 3984, 4125, 3984, 3923, 4125, - 4125, 4125, 4125, 4125, 3923, 4125, 4125, 3923, 3923, 4125, - 3923, 4125, 4125, 4125, 4125, 3923, 3923, 3923, 4125, 3923, - 3927, 3927, 4125, 4125, 3927, 3927, 3927, 3927, 3927, 3927, - 3927, 3927, 3927, 4125, 3927, 3927, 3927, 3927, 3927, 3927, - 3927, 3927, 3927, 3927, 3927, 3927, 3927, 3927, 3927, 1149, - 1149, 1149, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 1149, 1149, 1149, 4125, 4125, - 1149, 4007, 4007, 4125, 4007, 4007, 4007, 4007, 4007, 4007, - 4007, 4007, 4007, 4007, 4007, 4007, 4007, 4007, 4007, 4007, - - 4007, 4007, 4007, 4007, 4007, 4007, 4007, 4007, 4007, 4007, - 3828, 3828, 4125, 4125, 3828, 3828, 3828, 3828, 3828, 3828, - 3828, 3828, 3828, 4125, 3828, 4125, 3828, 3828, 3828, 3828, - 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 4024, - 4125, 4125, 4125, 4125, 4125, 4024, 4125, 4125, 4024, 4024, - 4125, 4024, 4125, 4125, 4125, 4125, 4125, 4024, 4024, 4125, - 4024, 4038, 4038, 4038, 4038, 4038, 4038, 4038, 4038, 4038, - 4038, 4038, 4038, 4038, 4038, 4038, 4038, 4038, 4125, 4038, - 4038, 4038, 4038, 4125, 4038, 4038, 4038, 4038, 4038, 4038, - 4049, 4049, 4049, 4049, 4049, 4049, 4049, 4049, 4049, 4049, - - 4049, 4049, 4049, 4049, 4049, 4049, 4049, 4125, 4049, 4049, - 4049, 4049, 4125, 4049, 4049, 4049, 4049, 4049, 4049, 4051, - 4051, 4051, 4051, 4051, 4051, 4051, 4051, 4051, 4051, 4051, - 4051, 4051, 4051, 4051, 4051, 4051, 4125, 4051, 4051, 4051, - 4051, 4125, 4051, 4051, 4051, 4051, 4051, 4051, 4071, 4071, - 4071, 4071, 4071, 4071, 4071, 4071, 4071, 4071, 4071, 4071, - 4071, 4071, 4071, 4071, 4071, 4125, 4071, 4071, 4071, 4071, - 4125, 4071, 4071, 4071, 4071, 4071, 4071, 4062, 4062, 4125, - 4125, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, - 4125, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, 4062, - - 4062, 4062, 4062, 4062, 4062, 4062, 4065, 4065, 4125, 4125, - 4065, 4065, 4065, 4065, 4065, 4065, 4065, 4065, 4065, 4125, - 4065, 4065, 4065, 4065, 4065, 4065, 4065, 4065, 4065, 4065, - 4065, 4065, 4065, 4065, 4065, 295, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125 - } ; - -static yyconst short int yy_chk[33924] = - { 0, - 0, 1, 0, 1, 1, 2, 0, 2, 2, 314, - 314, 321, 342, 2290, 321, 342, 300, 306, 313, 2291, - 1, 300, 306, 313, 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, 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, 361, 5, 5, 6, 361, 6, 6, - 7, 7, 7, 7, 7, 5, 7, 477, 477, 6, - 9, 5, 9, 9, 10, 6, 10, 10, 881, 7, - 8, 8, 8, 8, 8, 503, 8, 503, 15, 9, - 15, 15, 16, 10, 16, 16, 493, 493, 559, 8, - 29, 29, 29, 29, 29, 881, 63, 15, 63, 63, - 64, 16, 64, 64, 176, 7, 15, 176, 15, 29, - 16, 332, 16, 348, 559, 63, 332, 176, 348, 64, - 176, 349, 176, 2294, 349, 8, 11, 11, 11, 11, - - 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 19, 19, 19, - 19, 19, 20, 20, 20, 20, 20, 21, 150, 21, - 21, 150, 2295, 21, 323, 364, 19, 323, 21, 21, - 364, 20, 666, 21, 393, 22, 21, 22, 22, 393, - 666, 22, 1131, 396, 21, 150, 22, 22, 396, 495, - - 495, 22, 1131, 1615, 22, 30, 30, 30, 30, 30, - 573, 690, 22, 690, 33, 33, 33, 33, 33, 35, - 409, 35, 35, 415, 30, 409, 33, 33, 415, 19, - 33, 35, 35, 33, 20, 19, 573, 497, 35, 497, - 20, 34, 34, 34, 34, 34, 36, 419, 36, 36, - 21, 497, 419, 34, 34, 1615, 323, 34, 36, 36, - 34, 322, 322, 322, 322, 36, 1132, 1132, 22, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 25, 25, 25, 25, - 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - - 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 25, 25, 25, 27, 27, 27, 27, 27, 27, 27, - 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - - 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - 31, 360, 31, 31, 360, 431, 32, 31, 32, 32, - 431, 561, 31, 32, 335, 335, 335, 335, 32, 31, - 41, 930, 41, 41, 436, 32, 31, 31, 39, 436, - 39, 39, 32, 32, 40, 561, 40, 40, 930, 41, - 39, 42, 498, 42, 42, 498, 40, 39, 43, 43, - 43, 43, 43, 40, 43, 498, 39, 889, 2299, 43, - 42, 360, 40, 382, 382, 382, 382, 43, 665, 44, - - 44, 44, 44, 44, 41, 44, 41, 575, 2303, 45, - 44, 45, 45, 31, 46, 889, 46, 46, 44, 32, - 37, 37, 37, 37, 37, 42, 335, 42, 45, 1481, - 665, 575, 51, 46, 51, 51, 45, 446, 51, 37, - 469, 46, 446, 51, 1481, 469, 37, 37, 476, 37, - 627, 51, 55, 476, 55, 55, 56, 473, 56, 56, - 473, 43, 43, 473, 1090, 753, 52, 52, 52, 52, - 52, 55, 52, 52, 627, 56, 485, 52, 1090, 45, - 37, 485, 44, 44, 46, 52, 494, 51, 1236, 1236, - 59, 494, 59, 59, 37, 501, 37, 753, 37, 61, - - 501, 61, 61, 37, 38, 38, 38, 38, 38, 59, - 62, 589, 62, 62, 517, 51, 51, 522, 61, 517, - 2304, 52, 522, 38, 65, 65, 65, 65, 65, 62, - 38, 38, 67, 38, 67, 67, 55, 589, 65, 513, - 56, 664, 513, 65, 66, 66, 66, 66, 66, 52, - 52, 67, 513, 68, 61, 68, 68, 71, 66, 71, - 71, 523, 506, 66, 38, 62, 523, 664, 521, 71, - 71, 521, 68, 59, 506, 697, 71, 697, 38, 506, - 38, 521, 38, 388, 388, 388, 388, 38, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 47, 49, 49, 49, 49, 49, - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, - - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, - 49, 49, 53, 828, 53, 53, 708, 828, 53, 54, - 708, 54, 54, 53, 708, 54, 57, 708, 57, 57, - 54, 53, 57, 58, 2305, 58, 58, 529, 54, 58, - 57, 60, 529, 60, 60, 57, 69, 58, 69, 69, - - 540, 70, 58, 70, 70, 540, 72, 549, 72, 72, - 60, 95, 549, 95, 95, 69, 550, 53, 72, 72, - 70, 550, 588, 2306, 54, 72, 336, 336, 336, 336, - 95, 57, 408, 408, 408, 408, 1243, 1243, 58, 588, - 73, 73, 73, 73, 73, 53, 53, 74, 74, 74, - 74, 74, 54, 54, 73, 309, 309, 309, 309, 73, - 1089, 74, 96, 588, 96, 96, 74, 557, 73, 1089, - 1308, 73, 557, 309, 60, 74, 1308, 564, 74, 69, - 69, 96, 564, 1145, 70, 70, 75, 75, 75, 75, - 75, 77, 1145, 77, 77, 73, 76, 76, 76, 76, - - 76, 78, 74, 78, 78, 75, 2310, 572, 336, 545, - 77, 545, 572, 580, 75, 76, 75, 587, 580, 77, - 78, 77, 587, 545, 76, 79, 76, 79, 79, 78, - 80, 78, 80, 80, 537, 940, 537, 79, 79, 940, - 537, 594, 80, 80, 79, 81, 594, 81, 81, 80, - 82, 81, 82, 82, 1245, 1245, 82, 85, 85, 85, - 85, 85, 600, 109, 81, 109, 109, 600, 2311, 82, - 110, 85, 110, 110, 1433, 1433, 85, 86, 86, 86, - 86, 86, 109, 745, 111, 745, 111, 111, 537, 110, - 537, 86, 441, 441, 441, 441, 86, 111, 942, 81, - - 604, 81, 942, 111, 82, 604, 82, 83, 83, 83, - 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, - 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, - 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, - 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, - 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, - 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, - 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, - 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, - 83, 83, 83, 83, 87, 87, 87, 87, 87, 87, - - 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, - 87, 87, 87, 87, 87, 89, 89, 89, 89, 89, - 2312, 87, 87, 87, 87, 87, 87, 607, 112, 89, - 112, 112, 607, 89, 89, 125, 729, 125, 125, 729, - 754, 112, 126, 89, 126, 126, 89, 112, 754, 87, - 87, 87, 87, 103, 125, 103, 103, 104, 620, 104, - 104, 126, 729, 620, 1136, 103, 729, 103, 634, 104, - 89, 104, 103, 634, 1136, 937, 104, 937, 87, 87, - 87, 88, 88, 88, 88, 88, 88, 88, 88, 88, - 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, - - 88, 88, 90, 90, 90, 90, 90, 602, 88, 88, - 88, 88, 88, 88, 632, 602, 90, 632, 602, 1096, - 90, 90, 1096, 602, 103, 953, 654, 632, 104, 882, - 90, 654, 121, 90, 121, 121, 88, 88, 88, 88, - 119, 119, 119, 119, 119, 121, 121, 442, 442, 442, - 442, 121, 953, 663, 119, 882, 821, 90, 663, 119, - 337, 337, 337, 337, 821, 88, 88, 88, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 91, 91, 93, - 93, 93, 93, 93, 1813, 91, 91, 91, 91, 91, - - 91, 2313, 120, 120, 120, 120, 120, 1101, 93, 659, - 1101, 129, 659, 129, 129, 122, 120, 122, 122, 1813, - 93, 120, 659, 91, 91, 91, 91, 626, 122, 122, - 129, 947, 626, 947, 122, 403, 403, 403, 403, 1006, - 1177, 1006, 337, 626, 93, 443, 443, 443, 443, 1177, - 403, 2205, 91, 91, 91, 92, 92, 92, 92, 92, - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, - 92, 92, 92, 92, 92, 92, 94, 94, 94, 94, - 94, 2314, 92, 92, 92, 92, 92, 92, 671, 130, - 601, 130, 130, 671, 1111, 94, 139, 1111, 139, 139, - - 140, 680, 140, 140, 686, 2205, 680, 94, 130, 686, - 92, 92, 92, 92, 143, 139, 143, 143, 144, 140, - 144, 144, 601, 709, 139, 601, 709, 693, 140, 706, - 601, 94, 693, 143, 706, 1116, 709, 144, 1116, 92, - 92, 92, 97, 97, 97, 97, 97, 97, 97, 97, - 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, - 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, - 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, - 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, - 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, - - 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, - 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, - 97, 97, 97, 97, 97, 97, 97, 97, 97, 99, - 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, - 99, 99, 99, 99, 99, 147, 99, 147, 147, 99, - 700, 117, 117, 117, 117, 117, 2315, 99, 99, 99, - 99, 99, 700, 954, 147, 117, 148, 700, 148, 148, - 117, 1256, 1227, 1256, 107, 107, 107, 107, 107, 117, - 1135, 1227, 117, 1135, 99, 148, 99, 99, 153, 954, - 153, 153, 154, 107, 154, 154, 710, 404, 404, 404, - - 404, 710, 553, 107, 717, 553, 117, 153, 1446, 717, - 1446, 154, 404, 99, 99, 99, 100, 100, 100, 100, - 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, - 100, 100, 553, 100, 107, 193, 100, 193, 193, 118, - 118, 118, 118, 118, 100, 100, 100, 100, 100, 1299, - 107, 1268, 107, 118, 193, 720, 553, 107, 118, 2316, - 720, 108, 108, 108, 108, 108, 159, 118, 159, 159, - 118, 100, 645, 100, 100, 645, 1299, 1268, 159, 159, - 108, 310, 310, 310, 310, 159, 430, 430, 430, 430, - 108, 645, 725, 1303, 118, 2317, 1303, 725, 430, 310, - - 100, 100, 100, 101, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, 101, 101, 101, 101, 101, 2318, - 101, 108, 131, 101, 131, 131, 132, 132, 132, 132, - 132, 101, 101, 101, 101, 101, 131, 108, 1142, 108, - 132, 131, 1142, 707, 108, 132, 1305, 169, 2319, 169, - 169, 563, 149, 131, 563, 149, 1305, 132, 101, 719, - 101, 101, 719, 169, 563, 149, 169, 563, 728, 563, - 149, 707, 719, 728, 169, 707, 1316, 131, 707, 149, - 1316, 132, 149, 316, 316, 316, 316, 101, 101, 101, - 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, - - 102, 102, 102, 102, 102, 102, 149, 102, 316, 133, - 102, 133, 133, 135, 2320, 135, 135, 1301, 102, 102, - 102, 102, 102, 133, 733, 738, 1301, 133, 133, 733, - 738, 194, 135, 194, 194, 317, 317, 317, 317, 160, - 133, 160, 160, 1231, 135, 102, 1231, 102, 102, 1231, - 194, 160, 160, 161, 161, 161, 161, 161, 160, 968, - 317, 968, 743, 2321, 133, 161, 161, 743, 135, 161, - 1585, 1585, 161, 968, 102, 102, 102, 105, 105, 105, - 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, - 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, - - 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, - 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, - 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, - 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, - 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, - 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, - 105, 105, 105, 105, 113, 113, 113, 113, 113, 113, - 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, - 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, - 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, - - 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, - 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, - 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, - 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, - 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, - 113, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 115, 115, 115, 115, 115, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - - 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 134, 134, 134, 134, 134, 136, 1313, 136, - 136, 162, 162, 162, 162, 162, 134, 752, 1684, 1313, - 134, 134, 752, 162, 162, 2322, 136, 162, 748, 163, - 162, 163, 163, 134, 164, 1332, 164, 164, 136, 1332, - 748, 205, 163, 205, 205, 748, 1684, 164, 163, 456, - 456, 456, 456, 164, 757, 1128, 765, 134, 1128, 757, - 205, 765, 136, 137, 137, 137, 137, 137, 137, 137, - 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, - 137, 137, 137, 137, 165, 165, 165, 165, 165, 1307, - - 137, 137, 137, 137, 137, 137, 165, 165, 1307, 777, - 165, 786, 2323, 165, 777, 206, 786, 206, 206, 1598, - 166, 166, 166, 166, 166, 1128, 1479, 1598, 137, 137, - 137, 137, 166, 166, 206, 235, 166, 235, 235, 166, - 405, 405, 405, 405, 462, 462, 462, 462, 526, 526, - 526, 526, 1479, 1323, 235, 405, 1323, 137, 137, 137, - 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, - 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, - 138, 170, 1338, 170, 170, 1326, 1338, 138, 138, 138, - 138, 138, 138, 527, 527, 527, 527, 170, 802, 1617, - - 170, 1326, 213, 802, 213, 213, 676, 676, 170, 676, - 171, 171, 171, 171, 171, 138, 138, 138, 138, 676, - 1453, 213, 1453, 217, 217, 217, 217, 217, 1356, 171, - 213, 528, 528, 528, 528, 547, 547, 547, 547, 1617, - 1331, 171, 217, 1331, 138, 138, 138, 141, 141, 141, - 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, - 141, 141, 141, 567, 141, 171, 567, 141, 172, 172, - 172, 172, 172, 1333, 1356, 141, 141, 141, 141, 141, - 2324, 804, 214, 1333, 214, 214, 804, 172, 218, 218, - 218, 218, 218, 567, 941, 181, 941, 181, 181, 172, - - 941, 214, 141, 181, 141, 141, 809, 218, 819, 181, - 214, 809, 819, 819, 181, 913, 1810, 567, 571, 571, - 571, 571, 913, 172, 913, 1810, 181, 315, 315, 315, - 315, 141, 141, 141, 142, 142, 142, 142, 142, 142, - 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, - 181, 142, 315, 182, 142, 182, 182, 546, 546, 546, - 546, 182, 142, 142, 142, 142, 142, 182, 1614, 1415, - 546, 236, 182, 236, 236, 219, 219, 219, 219, 219, - 320, 320, 320, 320, 182, 183, 2216, 183, 183, 142, - 236, 142, 142, 183, 219, 237, 1415, 237, 237, 183, - - 548, 548, 548, 548, 183, 320, 833, 320, 182, 315, - 833, 833, 847, 548, 237, 1614, 183, 847, 142, 142, - 142, 145, 145, 145, 145, 145, 145, 145, 145, 145, - 145, 145, 145, 145, 145, 145, 145, 2216, 145, 1334, - 183, 145, 191, 191, 191, 191, 191, 1334, 1334, 145, - 145, 145, 145, 145, 1811, 220, 220, 220, 220, 220, - 1483, 191, 221, 221, 221, 221, 221, 1535, 1811, 184, - 191, 184, 184, 191, 220, 851, 145, 184, 145, 145, - 851, 221, 238, 184, 238, 238, 1535, 1483, 184, 578, - 578, 578, 578, 614, 614, 614, 614, 191, 860, 865, - - 184, 238, 2325, 860, 865, 145, 145, 145, 146, 146, - 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, - 146, 146, 146, 146, 184, 146, 1644, 1644, 146, 192, - 192, 192, 192, 192, 1648, 1648, 146, 146, 146, 146, - 146, 2326, 222, 222, 222, 222, 222, 2327, 192, 223, - 223, 223, 223, 223, 1652, 1652, 197, 192, 197, 197, - 192, 222, 1762, 146, 593, 146, 146, 593, 223, 224, - 224, 224, 224, 224, 871, 197, 876, 593, 879, 871, - 593, 876, 593, 879, 192, 884, 886, 197, 224, 1762, - 884, 886, 146, 146, 146, 151, 151, 151, 151, 151, - - 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, - 151, 197, 151, 2227, 198, 151, 198, 198, 225, 1321, - 225, 225, 1321, 151, 151, 151, 151, 151, 227, 227, - 227, 227, 227, 198, 1489, 1321, 1489, 225, 228, 228, - 228, 228, 228, 892, 2328, 198, 898, 227, 892, 225, - 151, 898, 151, 151, 1841, 901, 239, 228, 239, 239, - 901, 2227, 239, 615, 615, 615, 615, 904, 1841, 198, - 1306, 907, 904, 225, 1349, 239, 907, 1349, 2329, 151, - 151, 151, 152, 152, 152, 152, 152, 152, 152, 152, - 152, 152, 152, 152, 152, 152, 152, 152, 226, 152, - - 226, 226, 152, 912, 231, 1431, 231, 231, 912, 1431, - 152, 152, 152, 152, 152, 935, 1306, 226, 231, 240, - 935, 240, 240, 231, 241, 240, 241, 241, 1306, 226, - 241, 245, 1306, 245, 245, 231, 939, 152, 240, 152, - 152, 939, 242, 241, 242, 242, 962, 976, 242, 2330, - 245, 962, 976, 226, 617, 617, 617, 617, 1741, 231, - 1741, 242, 621, 621, 621, 621, 152, 152, 152, 155, - 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, - 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, - 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, - - 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, - 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, - 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, - 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, - 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, - 155, 155, 155, 155, 155, 155, 157, 157, 157, 157, - 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, - 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, - 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, - 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, - - 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, - 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, - 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, - 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, - 157, 157, 157, 167, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, - - 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, - 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, - 173, 232, 1408, 232, 232, 1408, 1352, 173, 173, 173, - 173, 173, 173, 985, 246, 232, 246, 246, 985, 994, - 232, 1352, 1352, 253, 994, 253, 253, 254, 931, 254, - 254, 643, 232, 246, 643, 173, 173, 173, 173, 2357, - 931, 257, 253, 257, 257, 931, 254, 623, 623, 623, - - 623, 642, 642, 642, 642, 257, 232, 1004, 1009, 643, - 257, 2358, 1004, 1009, 173, 173, 173, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, - 174, 174, 174, 174, 174, 174, 174, 174, 253, 1612, - 643, 1000, 254, 1000, 174, 174, 174, 174, 174, 174, - 950, 258, 253, 258, 258, 1000, 254, 259, 643, 259, - 259, 260, 950, 260, 260, 258, 261, 950, 261, 261, - 258, 2359, 174, 174, 174, 174, 259, 2360, 972, 269, - 260, 269, 269, 1612, 1353, 261, 669, 669, 669, 669, - 972, 1353, 1017, 269, 261, 972, 261, 1017, 269, 1353, - - 1353, 174, 174, 174, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, - 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, - 175, 177, 177, 177, 177, 177, 177, 177, 177, 177, - - 177, 177, 177, 177, 177, 177, 177, 177, 177, 1330, - 262, 177, 262, 262, 270, 1616, 270, 270, 1330, 177, - 177, 177, 177, 177, 265, 1330, 265, 265, 270, 262, - 265, 1249, 2364, 270, 1249, 265, 265, 265, 262, 271, - 262, 271, 271, 265, 1249, 2222, 177, 177, 177, 177, - 263, 2369, 263, 263, 831, 1025, 263, 831, 271, 1616, - 1025, 263, 716, 716, 716, 716, 1755, 831, 1755, 263, - 831, 334, 334, 334, 334, 177, 177, 177, 178, 178, - 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, - 178, 178, 178, 178, 178, 178, 334, 272, 178, 272, - - 272, 279, 2222, 279, 279, 263, 178, 178, 178, 178, - 178, 266, 1264, 266, 266, 1264, 272, 266, 279, 1800, - 279, 1800, 266, 266, 266, 1264, 267, 1566, 267, 267, - 266, 2371, 267, 178, 178, 178, 178, 267, 273, 273, - 273, 273, 273, 1032, 273, 267, 1840, 1036, 1032, 273, - 273, 273, 1036, 1566, 267, 1840, 267, 273, 768, 768, - 768, 768, 178, 178, 178, 179, 179, 179, 179, 179, - 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, - 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, - 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, - - 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, - 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, - 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, - 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, - 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, - 179, 179, 185, 185, 185, 185, 185, 185, 185, 185, - 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, - 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, - 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, - 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, - - 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, - 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, - 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, - 185, 185, 185, 185, 185, 185, 185, 185, 185, 187, - 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, - - 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 187, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 195, 195, 195, 195, 195, 195, 195, - 195, 1040, 195, 195, 195, 195, 1040, 2372, 195, 264, - 195, 264, 264, 195, 2373, 264, 311, 311, 311, 311, - 264, 195, 195, 195, 195, 195, 1052, 207, 264, 207, - 207, 1052, 1061, 268, 311, 268, 268, 1061, 1859, 268, - 341, 341, 341, 341, 268, 2374, 207, 1859, 195, 195, - 195, 195, 268, 280, 1071, 280, 280, 207, 1964, 1071, - 1861, 268, 1078, 268, 264, 341, 207, 1078, 1964, 1861, - 280, 207, 280, 358, 358, 358, 358, 195, 195, 196, - - 196, 196, 196, 196, 196, 196, 196, 1567, 196, 196, - 196, 196, 207, 927, 196, 927, 196, 207, 358, 196, - 354, 354, 354, 354, 2009, 2376, 2009, 196, 196, 196, - 196, 196, 1430, 1567, 208, 1430, 208, 208, 354, 274, - 274, 274, 274, 274, 927, 274, 359, 359, 359, 359, - 274, 274, 274, 208, 196, 196, 196, 196, 274, 355, - 355, 355, 355, 291, 208, 291, 291, 1088, 927, 291, - 1951, 359, 1088, 208, 291, 291, 291, 355, 208, 1951, - 2023, 2023, 291, 196, 196, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, 1860, 208, - - 199, 199, 199, 199, 208, 199, 277, 277, 277, 277, - 277, 2213, 1860, 199, 199, 199, 199, 199, 275, 275, - 275, 275, 275, 1745, 275, 277, 1570, 1745, 818, 275, - 275, 818, 818, 1117, 277, 1865, 277, 275, 1117, 818, - 199, 199, 199, 199, 818, 2206, 275, 292, 275, 292, - 292, 1865, 1570, 292, 785, 785, 785, 785, 292, 292, - 292, 383, 383, 383, 383, 1572, 292, 2213, 818, 199, - 199, 199, 200, 200, 200, 200, 200, 200, 200, 200, - 200, 200, 200, 200, 200, 2206, 383, 200, 200, 200, - 200, 1572, 200, 278, 278, 278, 278, 278, 2378, 1576, - - 200, 200, 200, 200, 200, 276, 276, 276, 276, 276, - 1104, 276, 278, 1104, 943, 1123, 276, 276, 943, 1271, - 1123, 278, 1271, 278, 276, 1576, 943, 200, 200, 200, - 200, 943, 1271, 276, 2210, 276, 363, 363, 363, 363, - 780, 780, 780, 780, 811, 811, 811, 811, 812, 812, - 812, 812, 1606, 1955, 363, 780, 200, 200, 200, 201, - 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, - 201, 201, 201, 201, 201, 281, 201, 281, 281, 201, - 1955, 282, 282, 282, 282, 282, 2210, 201, 201, 201, - 201, 201, 1104, 2379, 281, 282, 421, 421, 421, 421, - - 282, 366, 366, 366, 366, 1606, 281, 283, 1125, 283, - 283, 1606, 282, 1125, 201, 421, 201, 201, 289, 366, - 289, 289, 1230, 2212, 289, 1867, 283, 1230, 1140, 1272, - 281, 1140, 289, 1867, 1272, 1607, 282, 289, 283, 384, - 384, 384, 384, 201, 201, 201, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 283, 202, 384, 2212, 202, 284, 284, 284, - 284, 284, 2380, 289, 202, 202, 202, 202, 202, 1607, - 1577, 284, 385, 385, 385, 385, 284, 2013, 1140, 369, - 369, 369, 369, 1607, 290, 2013, 290, 290, 284, 1228, - - 290, 202, 1228, 202, 202, 1283, 1577, 385, 290, 293, - 1283, 293, 293, 290, 369, 293, 369, 1228, 1623, 2012, - 293, 1623, 284, 813, 813, 813, 813, 2070, 293, 2012, - 202, 202, 202, 203, 203, 203, 203, 203, 203, 203, - 203, 203, 203, 203, 203, 203, 203, 203, 203, 290, - 203, 1291, 1626, 203, 2070, 1626, 1291, 389, 389, 389, - 389, 203, 203, 203, 203, 203, 390, 390, 390, 390, - 287, 287, 287, 287, 287, 389, 287, 391, 391, 391, - 391, 287, 287, 1664, 390, 2381, 287, 1862, 203, 287, - 203, 203, 293, 293, 1873, 391, 294, 287, 294, 294, - - 2382, 1862, 294, 841, 841, 841, 841, 294, 2202, 1664, - 1873, 374, 374, 374, 374, 294, 1677, 203, 203, 203, - 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, - 204, 204, 204, 204, 204, 204, 374, 204, 374, 2223, - 204, 1247, 1677, 1247, 392, 392, 392, 392, 204, 204, - 204, 204, 204, 287, 2202, 1247, 1571, 288, 288, 288, - 288, 288, 392, 288, 371, 371, 371, 371, 288, 288, - 1571, 1404, 2383, 288, 1404, 204, 288, 204, 204, 294, - 294, 374, 1571, 2223, 288, 400, 400, 400, 400, 371, - 1404, 371, 897, 897, 897, 897, 897, 1571, 372, 372, - - 372, 372, 1678, 400, 204, 204, 204, 209, 209, 209, - 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, - 209, 209, 209, 372, 209, 372, 1761, 209, 1678, 1274, - 1324, 371, 1274, 1324, 209, 209, 209, 209, 209, 209, - 288, 2121, 1274, 1324, 373, 373, 373, 373, 387, 387, - 387, 387, 1761, 375, 375, 375, 375, 376, 376, 376, - 376, 1809, 209, 209, 209, 209, 1809, 372, 2121, 373, - 1582, 373, 1337, 387, 1582, 387, 1337, 372, 375, 1337, - 375, 2204, 376, 1582, 376, 900, 900, 900, 900, 900, - 1337, 209, 209, 209, 210, 210, 210, 210, 210, 210, - - 210, 210, 210, 210, 210, 210, 210, 210, 210, 210, - 375, 210, 373, 373, 210, 1588, 2385, 451, 451, 451, - 451, 210, 210, 210, 210, 210, 210, 2204, 1588, 1300, - 376, 1588, 1300, 376, 452, 452, 452, 452, 377, 377, - 377, 377, 451, 378, 378, 378, 378, 1300, 2386, 210, - 210, 210, 210, 472, 472, 472, 472, 1727, 1146, 452, - 1727, 1146, 1146, 377, 1394, 377, 1984, 1394, 378, 1984, - 378, 472, 379, 379, 379, 379, 1146, 1394, 210, 210, - 210, 211, 211, 211, 211, 211, 211, 211, 211, 2203, - 211, 211, 211, 211, 211, 211, 211, 379, 211, 379, - - 2191, 211, 2191, 377, 378, 453, 453, 453, 453, 211, - 211, 211, 211, 377, 914, 914, 914, 914, 380, 380, - 380, 380, 1038, 378, 2215, 1038, 416, 416, 416, 416, - 453, 417, 417, 417, 417, 1038, 211, 211, 211, 211, - 1038, 379, 1747, 380, 1747, 380, 379, 2203, 1747, 2387, - 455, 455, 455, 455, 416, 916, 916, 916, 916, 417, - 418, 418, 418, 418, 2215, 211, 211, 212, 212, 212, - 212, 212, 212, 212, 212, 455, 212, 212, 212, 212, - 212, 212, 212, 380, 212, 416, 1921, 212, 418, 1608, - 417, 457, 457, 457, 457, 212, 212, 212, 212, 416, - - 1921, 416, 1039, 416, 417, 1039, 417, 1952, 417, 458, - 458, 458, 458, 2388, 1329, 1039, 457, 1329, 1039, 418, - 2390, 1952, 212, 212, 212, 212, 579, 579, 579, 579, - 2391, 1986, 1329, 418, 458, 418, 1284, 418, 1284, 579, - 1608, 1608, 579, 1986, 579, 903, 903, 903, 903, 903, - 1284, 212, 212, 215, 215, 215, 215, 215, 215, 215, - 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, - 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, - 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, - 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, - - 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, - 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, - 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, - 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, - 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, - 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, - 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, - 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, - 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, - 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, - - 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, - 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, - 229, 229, 229, 229, 229, 229, 229, 233, 233, 233, - 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, - 233, 233, 233, 2001, 233, 2392, 2001, 233, 459, 459, - 459, 459, 856, 2393, 856, 233, 233, 233, 233, 233, - 918, 918, 918, 918, 440, 1436, 440, 440, 2394, 1436, - 440, 856, 1436, 459, 2395, 440, 461, 461, 461, 461, - 856, 2214, 233, 440, 233, 233, 512, 512, 512, 2200, - 512, 598, 598, 598, 598, 781, 781, 781, 781, 1590, - - 512, 461, 1748, 1590, 2396, 512, 1748, 856, 1590, 598, - 781, 233, 233, 233, 234, 234, 234, 234, 234, 234, - 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, - 590, 234, 2200, 2214, 234, 1366, 562, 583, 1366, 562, - 583, 512, 234, 234, 234, 234, 234, 440, 440, 562, - 583, 2397, 1178, 1366, 562, 1178, 1178, 590, 590, 590, - 1625, 590, 590, 1625, 2398, 590, 562, 583, 590, 234, - 1178, 234, 234, 590, 590, 2399, 1625, 590, 599, 599, - 599, 599, 782, 782, 782, 782, 925, 925, 925, 925, - 562, 583, 1012, 1012, 1012, 1012, 599, 782, 234, 234, - - 234, 243, 243, 243, 243, 243, 243, 243, 243, 243, - 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, - 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, - 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, - 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, - 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, - 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, - 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, - 243, 243, 243, 243, 243, 243, 243, 243, 247, 247, - 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, - - 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, - 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, - 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, - 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, - 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, - 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, - 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, - 247, 247, 247, 247, 247, 249, 249, 249, 249, 249, - 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, - 249, 597, 249, 2208, 597, 249, 576, 576, 576, 576, - - 2220, 1969, 1351, 249, 249, 249, 249, 249, 2011, 576, - 608, 608, 608, 608, 576, 609, 609, 609, 609, 1351, - 2011, 597, 1533, 464, 1533, 464, 576, 1969, 1533, 464, - 249, 249, 249, 249, 464, 608, 791, 791, 791, 791, - 609, 1533, 464, 1351, 1966, 597, 1013, 1013, 1013, 1013, - 576, 2208, 2220, 1966, 791, 610, 610, 610, 610, 249, - 249, 249, 250, 250, 250, 250, 250, 250, 250, 250, - 250, 250, 250, 250, 250, 250, 250, 250, 464, 250, - 610, 2024, 250, 592, 603, 1293, 592, 603, 1293, 1979, - 250, 250, 250, 250, 250, 2024, 592, 636, 636, 636, - - 636, 592, 603, 2400, 1750, 1979, 464, 464, 1750, 613, - 613, 613, 613, 592, 603, 1293, 2401, 250, 250, 250, - 250, 591, 636, 1751, 591, 591, 591, 1751, 591, 591, - 1395, 2402, 591, 1395, 613, 591, 613, 592, 603, 1293, - 591, 591, 2002, 1395, 591, 2002, 250, 250, 250, 251, - 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, - 251, 251, 251, 251, 251, 2038, 251, 2403, 2038, 251, - 637, 637, 637, 637, 1730, 2221, 1730, 251, 251, 251, - 251, 251, 2278, 638, 638, 638, 638, 641, 641, 641, - 641, 792, 792, 792, 792, 637, 2278, 1870, 667, 667, - - 667, 667, 1870, 2219, 251, 1730, 251, 251, 638, 792, - 1965, 667, 641, 1286, 1965, 1286, 667, 787, 787, 787, - 787, 906, 906, 906, 906, 906, 787, 1286, 667, 1730, - 787, 2221, 1286, 251, 251, 251, 252, 252, 252, 252, - 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, - 252, 252, 667, 252, 672, 2229, 252, 670, 670, 670, - 670, 2219, 2054, 2139, 252, 252, 252, 252, 252, 1407, - 670, 1971, 1407, 670, 2054, 670, 915, 915, 915, 915, - 915, 672, 672, 2404, 672, 672, 672, 670, 1407, 672, - 2139, 252, 2074, 252, 252, 672, 1884, 672, 672, 1884, - - 2405, 672, 672, 788, 788, 788, 788, 1014, 1014, 1014, - 1014, 670, 788, 2229, 1884, 2406, 788, 1971, 2074, 1971, - 252, 252, 252, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 357, 357, 357, - - 357, 673, 2277, 357, 673, 673, 730, 673, 673, 673, - 727, 2277, 673, 727, 1464, 957, 732, 1464, 673, 732, - 673, 673, 357, 727, 673, 673, 2116, 1464, 2100, 732, - 980, 2100, 980, 730, 732, 730, 980, 730, 730, 957, - 727, 980, 1439, 1439, 730, 1439, 732, 2189, 1472, 730, - 730, 1472, 2116, 730, 1478, 1439, 357, 1478, 357, 2189, - 2189, 1472, 357, 957, 727, 357, 357, 1478, 357, 2217, - 732, 357, 357, 357, 357, 560, 731, 2407, 1776, 731, - 1776, 731, 1564, 731, 731, 980, 762, 762, 762, 762, - 731, 1564, 1776, 957, 2263, 731, 731, 2263, 1795, 731, - - 1795, 2150, 560, 560, 560, 560, 560, 560, 1564, 2217, - 560, 762, 1795, 560, 560, 560, 560, 1564, 560, 560, - 560, 560, 560, 574, 759, 759, 759, 759, 2150, 2408, - 2409, 763, 763, 763, 763, 764, 764, 764, 764, 1016, - 1016, 1016, 1016, 759, 759, 759, 759, 759, 759, 759, - 574, 574, 574, 574, 574, 574, 763, 1016, 574, 2410, - 764, 574, 574, 574, 574, 2412, 574, 574, 574, 574, - 574, 574, 767, 767, 767, 767, 770, 770, 770, 770, - 776, 776, 776, 776, 798, 798, 798, 770, 798, 2414, - 2334, 776, 789, 789, 789, 789, 2415, 767, 2207, 2334, - - 2416, 789, 770, 798, 2418, 789, 776, 790, 790, 790, - 790, 836, 836, 836, 836, 798, 790, 2117, 2419, 820, - 790, 820, 820, 820, 830, 830, 830, 830, 2420, 770, - 820, 837, 837, 837, 837, 820, 836, 830, 2228, 798, - 830, 2207, 830, 2117, 838, 838, 838, 838, 840, 840, - 840, 840, 920, 920, 920, 920, 837, 1325, 2421, 820, - 1325, 1817, 776, 808, 1817, 832, 2422, 808, 832, 838, - 2230, 808, 2120, 840, 1817, 808, 808, 920, 1960, 832, - 1960, 808, 832, 832, 808, 808, 1962, 1325, 1962, 808, - 832, 808, 1960, 808, 2228, 832, 1482, 808, 2120, 1482, - - 1962, 808, 808, 2234, 808, 2234, 808, 1815, 808, 1482, - 1815, 1325, 808, 822, 1482, 919, 919, 919, 919, 832, - 1815, 921, 921, 921, 921, 1815, 2230, 822, 919, 1022, - 1022, 1022, 1022, 919, 2425, 922, 922, 922, 922, 2426, - 822, 822, 822, 822, 822, 822, 921, 822, 822, 2122, - 822, 822, 1350, 822, 822, 1350, 822, 822, 822, 822, - 922, 857, 857, 857, 857, 1350, 822, 822, 822, 822, - 822, 822, 2201, 822, 822, 2122, 822, 822, 2042, 822, - 822, 2042, 1350, 822, 822, 822, 822, 823, 823, 823, - 823, 857, 2126, 858, 858, 858, 858, 859, 859, 859, - - 859, 924, 924, 924, 924, 958, 1350, 2042, 823, 2157, - 823, 823, 958, 1364, 2201, 857, 1364, 958, 2126, 978, - 978, 978, 978, 858, 2201, 2231, 924, 859, 2368, 958, - 978, 1023, 1023, 1023, 1023, 823, 2157, 2368, 823, 823, - 823, 823, 823, 1364, 978, 823, 823, 858, 823, 2427, - 823, 859, 823, 958, 823, 823, 823, 823, 823, 823, - 824, 1024, 1024, 1024, 1024, 824, 2389, 1364, 824, 2389, - 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, - 988, 2231, 988, 958, 824, 2428, 988, 1102, 1102, 1102, - 1102, 988, 988, 988, 1011, 1011, 1011, 1011, 1011, 988, - - 1011, 1045, 1045, 1045, 1045, 1011, 1011, 1011, 824, 1046, - 1046, 1046, 1046, 1011, 1047, 1047, 1047, 1047, 2429, 1045, - 2411, 2411, 2430, 1093, 1093, 1093, 1093, 1046, 1051, 1051, - 1051, 1051, 1047, 1053, 1053, 1053, 1053, 2164, 824, 825, - 825, 825, 825, 1064, 1958, 1064, 1051, 1958, 1093, 1064, - 825, 1053, 2431, 2432, 1064, 1064, 1064, 1958, 2433, 1073, - 825, 1073, 825, 825, 2164, 1073, 1087, 1087, 1087, 1087, - 1073, 1094, 1094, 1094, 1094, 2127, 2211, 2435, 1097, 1097, - 1097, 1097, 2436, 1277, 1087, 1277, 2437, 825, 2438, 1277, - 825, 825, 825, 825, 825, 825, 1094, 825, 825, 2439, - - 825, 2127, 825, 1097, 825, 1093, 825, 825, 825, 825, - 825, 825, 826, 1098, 1098, 1098, 1098, 826, 2440, 2211, - 826, 2442, 826, 826, 826, 826, 826, 826, 826, 826, - 826, 826, 1099, 1099, 1099, 1099, 826, 1277, 1098, 1277, - 1098, 2443, 1073, 1073, 1103, 1103, 1103, 1103, 1106, 1106, - 1106, 1106, 1108, 1108, 1108, 1108, 2413, 1099, 2000, 1099, - 826, 2000, 1097, 1109, 1109, 1109, 1109, 1110, 1110, 1110, - 1110, 1103, 2413, 1106, 2000, 2247, 1112, 1112, 1112, 1112, - 2130, 826, 1113, 1113, 1113, 1113, 1114, 1114, 1114, 1114, - 826, 852, 1110, 2434, 2434, 852, 852, 2444, 852, 852, - - 852, 1112, 2247, 852, 2448, 852, 2130, 1113, 1121, 2449, - 2112, 1114, 852, 2112, 852, 852, 852, 1121, 1121, 1121, - 1121, 1121, 2450, 1122, 1122, 1122, 1122, 2451, 1124, 1124, - 1124, 1124, 2452, 2132, 1108, 1127, 1127, 1127, 1127, 2112, - 852, 1122, 852, 852, 1999, 1109, 1124, 1999, 1143, 1143, - 1143, 1143, 2453, 1144, 1144, 1144, 1144, 1999, 1112, 2132, - 1127, 1143, 1147, 1147, 1147, 1147, 2454, 1148, 1148, 1148, - 1148, 852, 853, 2455, 1552, 1552, 853, 853, 1144, 853, - 853, 853, 1552, 2456, 853, 2445, 853, 1147, 1149, 1149, - 1149, 1149, 1148, 853, 1148, 853, 853, 853, 1167, 1167, - - 1167, 1167, 1151, 1151, 1151, 1151, 1152, 1152, 1152, 1152, - 2209, 1552, 2445, 1149, 2133, 1149, 1153, 1153, 1153, 1153, - 2457, 853, 2003, 853, 853, 2003, 1532, 1151, 1532, 1151, - 2135, 1152, 1532, 1152, 2499, 2003, 1168, 1168, 1168, 1168, - 2133, 1153, 2525, 1153, 1532, 1532, 1147, 1169, 1169, 1169, - 1169, 2459, 853, 854, 2459, 2209, 2135, 854, 854, 1151, - 854, 854, 854, 1168, 2209, 854, 2535, 854, 1154, 1154, - 1154, 1154, 1169, 2552, 854, 1153, 854, 854, 854, 2118, - 2118, 2118, 1152, 1155, 1155, 1155, 1155, 1156, 1156, 1156, - 1156, 1153, 1611, 1154, 2118, 1154, 1157, 1157, 1157, 1157, - - 2283, 2460, 854, 2283, 854, 854, 2262, 2553, 1155, 2262, - 1155, 2262, 1156, 2283, 1156, 2460, 1158, 1158, 1158, 1158, - 2118, 1157, 2555, 1157, 1159, 1159, 1159, 1159, 1160, 1160, - 1160, 1160, 1611, 854, 1126, 1126, 1126, 1126, 2477, 1154, - 1126, 1158, 2557, 1158, 1604, 1611, 2558, 1156, 1611, 1159, - 1155, 1159, 2491, 1160, 2119, 1160, 1765, 2119, 1155, 1126, - 1161, 1161, 1161, 1161, 1157, 2477, 2559, 1162, 1162, 1162, - 1162, 1163, 1163, 1163, 1163, 1171, 1171, 1171, 1171, 2491, - 1765, 1158, 1159, 2119, 1604, 1161, 1158, 1161, 1604, 2560, - 2143, 1160, 1162, 1126, 1162, 1126, 1163, 1604, 1163, 1126, - - 1171, 2562, 1126, 1126, 1765, 1126, 2147, 2563, 1126, 1126, - 1126, 1126, 1164, 1164, 1164, 1164, 2143, 1161, 1165, 1165, - 1165, 1165, 1166, 1166, 1166, 1166, 1172, 1172, 1172, 1172, - 2182, 2498, 2147, 1161, 1765, 1162, 2564, 1164, 2226, 1164, - 2565, 2566, 1163, 1165, 1767, 1165, 2182, 1166, 2182, 1166, - 2567, 1172, 2148, 1172, 1173, 1173, 1173, 1173, 2498, 1171, - 1175, 1175, 1175, 1175, 1176, 1176, 1176, 1176, 1767, 1180, - 1180, 1180, 1180, 1181, 1181, 1181, 1181, 1164, 2148, 1173, - 2226, 1173, 2226, 1165, 1180, 1182, 1182, 1182, 1182, 2568, - 2571, 1176, 1767, 2573, 2574, 1166, 1183, 1183, 1183, 1183, - - 1184, 1184, 1184, 1184, 1189, 1189, 1189, 1189, 1190, 1190, - 1190, 1190, 2151, 1195, 1195, 1195, 1195, 2128, 1318, 1184, - 2128, 1318, 1767, 1189, 1183, 1195, 1196, 1196, 1196, 1196, - 1199, 1318, 1199, 1199, 1318, 2577, 1199, 1196, 2151, 2578, - 2561, 1199, 1201, 1201, 1201, 1201, 2128, 1206, 2561, 1199, - 1202, 1202, 1202, 1202, 2579, 1183, 1206, 1206, 1206, 1206, - 1206, 1207, 1207, 1207, 1207, 1210, 1210, 1210, 1210, 1183, - 2580, 1183, 2501, 1183, 1212, 1212, 1212, 1212, 1213, 1213, - 1213, 1213, 1214, 1214, 1214, 1214, 1216, 1216, 1216, 1216, - 1210, 1218, 1218, 1218, 1218, 1219, 1219, 1219, 1219, 1212, - - 2501, 2105, 2105, 1213, 1220, 1220, 1220, 1220, 2582, 2105, - 2626, 1216, 2627, 1199, 1199, 1223, 1218, 1223, 1226, 2592, - 1219, 1223, 1229, 1229, 1229, 1229, 1223, 1226, 1226, 1226, - 1226, 1226, 2604, 2155, 1223, 1262, 1262, 1262, 2105, 1262, - 1229, 1275, 1275, 1275, 1275, 1288, 1288, 1288, 1288, 1262, - 1287, 1287, 1287, 1287, 1262, 2575, 2575, 2458, 1212, 2155, - 2458, 1322, 2131, 1287, 1322, 2131, 1317, 2569, 2134, 1317, - 1223, 2134, 2569, 2458, 1322, 1218, 2592, 1322, 2604, 1317, - 1342, 1342, 1342, 1342, 1317, 1347, 1347, 1347, 1347, 2629, - 1262, 2131, 1343, 1343, 1343, 1343, 1317, 2134, 1223, 1223, - - 1294, 1294, 1294, 1294, 1294, 1343, 2618, 1294, 1343, 2585, - 1294, 1294, 1294, 1294, 1613, 1294, 1294, 1294, 1294, 1294, - 1317, 1340, 1340, 1340, 1340, 1345, 1345, 1345, 1345, 1348, - 1348, 1348, 1348, 2237, 1340, 1362, 2237, 2504, 1362, 1340, - 2596, 1345, 1348, 1363, 1371, 1348, 1363, 1371, 1362, 2570, - 2237, 1340, 2570, 1362, 1613, 2593, 1363, 2585, 1613, 1363, - 2618, 1363, 1371, 1613, 2504, 1362, 1367, 1367, 1367, 1367, - 1374, 1374, 1374, 1374, 1371, 1340, 1377, 1377, 1377, 1377, - 1378, 1378, 1378, 1378, 1367, 1380, 1380, 1380, 1380, 1362, - 1382, 1382, 1382, 1382, 2594, 1374, 2596, 2600, 1371, 2593, - - 1403, 1377, 2528, 1403, 2156, 1378, 2570, 1378, 1387, 1387, - 1387, 1387, 1397, 1397, 1397, 1397, 1399, 1399, 1399, 1399, - 1400, 1400, 1400, 1400, 1401, 1401, 1401, 1401, 1403, 2528, - 2156, 1417, 1417, 1417, 1417, 2586, 2591, 1397, 2594, 2136, - 1574, 1399, 2136, 2159, 1417, 1400, 1574, 1574, 2600, 1417, - 1419, 1419, 1419, 1419, 1420, 1420, 1420, 1420, 2630, 1403, - 1377, 1417, 1425, 1425, 1425, 1425, 1574, 1420, 2136, 2159, - 1420, 2253, 1420, 1574, 1574, 1422, 1422, 1403, 1422, 1422, - 2587, 2254, 2586, 1422, 1420, 1417, 2599, 2601, 2631, 1422, - 2137, 1422, 1422, 2137, 2591, 1422, 1422, 2253, 2106, 2106, - - 1399, 1423, 1423, 1423, 1423, 2532, 2106, 2254, 1420, 1426, - 1426, 1426, 1426, 1428, 1428, 1428, 1428, 1423, 2595, 2137, - 1427, 1427, 1426, 1427, 1427, 1426, 1428, 2266, 1427, 2601, - 2599, 1423, 2532, 2587, 1427, 2106, 1427, 1427, 2267, 1426, - 1427, 1427, 2634, 1428, 1474, 1474, 1474, 1474, 1475, 1475, - 1475, 1475, 2635, 2266, 2370, 1423, 1500, 1500, 1500, 1500, - 2441, 1475, 2384, 1426, 2267, 2384, 2595, 1428, 1501, 1501, - 1501, 1501, 2597, 2636, 2603, 1503, 1503, 1503, 1503, 2469, - 2370, 1500, 1504, 1504, 1504, 1504, 2441, 1501, 1501, 1501, - 1501, 1501, 1501, 1501, 1503, 1503, 1503, 1503, 1503, 1503, - - 1503, 1506, 1506, 1506, 1506, 2469, 2218, 1504, 1507, 1507, - 1507, 1507, 1508, 1508, 1508, 1508, 1510, 1510, 1510, 1510, - 1514, 1514, 1514, 1514, 2603, 2384, 1506, 1510, 2613, 2138, - 2597, 1514, 2138, 1507, 1517, 1517, 1517, 1517, 1518, 1518, - 1518, 1518, 1510, 2589, 2470, 2471, 1514, 2637, 2218, 1517, - 1519, 1519, 1519, 1519, 1520, 1520, 1520, 1520, 2138, 1521, - 1521, 1521, 1521, 1520, 2218, 2473, 2218, 1520, 1521, 1510, - 2470, 2471, 1521, 1526, 1526, 1526, 2613, 1526, 1541, 1541, - 1541, 1541, 2640, 2641, 2645, 1506, 1542, 1542, 1542, 1542, - 2589, 2473, 1526, 1543, 1543, 1543, 1543, 1544, 1544, 1544, - - 1544, 2481, 1514, 2581, 1526, 1545, 1545, 1545, 1545, 1546, - 1546, 1546, 1546, 1622, 2661, 2611, 1622, 1547, 1545, 2581, - 1563, 1545, 1547, 1563, 2602, 2485, 1622, 2481, 1526, 1622, - 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1553, 2662, 1554, - 1553, 1553, 1554, 1554, 1586, 1586, 1586, 1586, 1553, 1563, - 1554, 2485, 2607, 1553, 1558, 1554, 1558, 1558, 1558, 1580, - 1580, 1580, 1580, 2663, 1563, 1558, 1563, 2602, 2606, 2664, - 1558, 1569, 2608, 2611, 1569, 2605, 2614, 1553, 1559, 1554, - 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, 1559, - 1563, 2158, 2607, 1563, 1558, 1547, 1565, 2489, 1565, 1573, - - 1569, 1586, 1573, 1565, 2158, 1568, 1568, 1568, 2490, 1586, - 1565, 2615, 2606, 1569, 1569, 2617, 2608, 2158, 1559, 1656, - 1568, 1656, 1565, 2489, 1565, 2605, 2666, 2614, 1573, 1565, - 2158, 1568, 2669, 2671, 2490, 1580, 2639, 1565, 1656, 1569, - 1569, 1581, 1581, 1581, 1581, 1573, 1568, 1656, 1559, 1561, - 1561, 1561, 1561, 1561, 1561, 2619, 1561, 1561, 1568, 1561, - 1561, 2620, 1561, 1561, 2639, 1561, 1561, 1561, 1561, 2672, - 2615, 2493, 1573, 2617, 1656, 1561, 1561, 1561, 1561, 1561, - 1561, 1575, 1561, 1561, 1575, 1561, 1561, 2123, 1561, 1561, - 2123, 2673, 1561, 1561, 1561, 1561, 1575, 2493, 1575, 1579, - - 1579, 1579, 1579, 1635, 1635, 1635, 1635, 1575, 2619, 2620, - 1575, 1581, 1583, 1583, 1583, 1583, 2123, 1601, 1601, 1601, - 1601, 2140, 2674, 1575, 2140, 1575, 2114, 2622, 1603, 1603, - 1603, 1603, 2675, 2123, 1601, 2114, 1602, 1602, 1602, 1602, - 2141, 1627, 2676, 2141, 1627, 1603, 1605, 1605, 1605, 1605, - 2140, 2677, 2114, 1602, 1627, 2678, 2505, 1627, 1627, 1579, - 2123, 2114, 2515, 1605, 1631, 1631, 1631, 1631, 1579, 2141, - 2142, 2099, 1579, 2142, 2099, 1579, 2679, 1601, 2680, 2622, - 2681, 1583, 2505, 2682, 2099, 1603, 1601, 2099, 2515, 1631, - 1601, 1583, 1597, 1601, 2683, 1603, 2522, 1597, 1603, 2142, - - 1597, 2685, 1597, 1597, 1597, 1597, 1597, 1597, 1597, 1597, - 1597, 1597, 1602, 2686, 2684, 1605, 1597, 2609, 1633, 1633, - 1633, 1633, 2522, 2684, 2687, 1605, 1621, 1621, 1621, 1621, - 1634, 1634, 1634, 1634, 1609, 1609, 1609, 1609, 2144, 1621, - 1597, 2144, 1621, 1633, 1621, 1646, 2711, 2713, 2715, 1646, - 1646, 1609, 1646, 1646, 1646, 1634, 2716, 1646, 2616, 1646, - 2718, 2609, 1658, 1658, 1658, 1658, 2609, 2144, 2721, 1646, - 1597, 1599, 1712, 1712, 1712, 1712, 1599, 2722, 2723, 1599, - 2726, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, 1599, - 1599, 1609, 1658, 2727, 1646, 1599, 1646, 1646, 2598, 1609, - - 2531, 2728, 1633, 1713, 1713, 1713, 1713, 1659, 1659, 1659, - 1659, 1690, 1690, 1690, 1690, 1690, 1658, 2616, 2616, 1599, - 1695, 1695, 1695, 1695, 1695, 1646, 2531, 1650, 2729, 2730, - 2538, 1650, 1650, 2731, 1650, 1650, 1650, 1659, 2734, 1650, - 2598, 1650, 1700, 1700, 1700, 1700, 1700, 2735, 2598, 1599, - 1645, 1650, 2737, 2739, 1645, 1645, 2538, 1645, 1645, 1645, - 2733, 1659, 1645, 2733, 1645, 1705, 1705, 1705, 1705, 1705, - 2740, 1645, 2539, 1645, 1645, 1645, 1650, 2621, 1650, 1650, - 1715, 1715, 1715, 1715, 1715, 1716, 1716, 1716, 1716, 1717, - 1717, 1717, 1717, 1717, 1719, 1719, 1719, 1719, 2539, 1645, - - 2741, 1645, 1645, 1720, 1720, 1720, 1720, 1650, 1654, 2742, - 2743, 2542, 1654, 1654, 2744, 1654, 1654, 1654, 2621, 2745, - 1654, 2747, 1654, 1721, 1721, 1721, 1721, 2748, 2749, 2750, - 1645, 1649, 1654, 2751, 2621, 1649, 1649, 2542, 1649, 1649, - 1649, 2736, 2752, 1649, 2736, 1649, 2753, 1784, 1721, 1784, - 2754, 2755, 1649, 1784, 1649, 1649, 1649, 1654, 1784, 1654, - 1654, 1723, 1723, 1723, 1723, 1724, 1724, 1724, 1724, 2628, - 1724, 1725, 1725, 1725, 1725, 1726, 1726, 1726, 1726, 2756, - 1649, 2145, 1649, 1649, 2145, 2757, 1723, 2758, 1654, 2149, - 1724, 2759, 2149, 2760, 1793, 2628, 1725, 1780, 1780, 1780, - - 1780, 2761, 1784, 1793, 1793, 1793, 1793, 1793, 1780, 2762, - 2145, 1649, 1653, 2763, 2764, 2765, 1653, 1653, 2149, 1653, - 1653, 1653, 1780, 2766, 1653, 2769, 1653, 2770, 1790, 2738, - 1790, 2772, 2738, 1653, 1790, 1653, 1653, 1653, 2773, 1790, - 1790, 1790, 2774, 2746, 2775, 1723, 2746, 1790, 1807, 1807, - 1807, 1807, 2776, 2777, 1805, 1805, 1805, 1805, 1805, 2152, - 1805, 1653, 2152, 1653, 1653, 1805, 1805, 1805, 1808, 1808, - 1808, 1808, 1821, 1805, 1812, 1812, 1812, 1812, 2778, 2779, - 2780, 1821, 1821, 1821, 1821, 1821, 1808, 1827, 2152, 1827, - 2781, 2782, 1653, 1827, 1830, 2783, 2784, 2785, 1827, 1827, - - 1827, 2786, 2787, 1830, 1830, 1830, 1830, 1830, 1834, 2153, - 1834, 1837, 2153, 2788, 1834, 1843, 1843, 1843, 1843, 1834, - 1837, 1837, 1837, 1837, 1837, 1844, 1844, 1844, 1844, 1845, - 1845, 1845, 1845, 1846, 1846, 1846, 1846, 2789, 2153, 2788, - 1843, 1847, 1847, 1847, 1847, 1848, 1848, 1848, 1848, 2790, - 1844, 2791, 1844, 1850, 1850, 1850, 1850, 2795, 2767, 2796, - 1846, 2767, 1858, 1878, 1878, 1878, 1878, 2797, 1847, 2798, - 1848, 1858, 1858, 1858, 1858, 1858, 1878, 1879, 1879, 1879, - 1879, 1880, 1880, 1880, 1880, 1887, 1887, 1887, 1887, 2792, - 2799, 1834, 1834, 1888, 1888, 1888, 1888, 2800, 2768, 1843, - - 2801, 2768, 1879, 2802, 2803, 2160, 1880, 2804, 2160, 2768, - 1887, 1889, 1889, 1889, 1889, 2792, 2161, 2806, 1888, 2161, - 1888, 1891, 1891, 1891, 1891, 1892, 1892, 1892, 1892, 1848, - 1893, 1893, 1893, 1893, 2160, 1894, 1894, 1894, 1894, 1895, - 1895, 1895, 1895, 2808, 2610, 2161, 1891, 2610, 1891, 2811, - 1892, 2830, 1892, 2837, 2855, 1893, 2859, 1893, 2863, 2865, - 1894, 2610, 1894, 2812, 1895, 2162, 1895, 2867, 2162, 1887, - 2810, 2870, 1896, 1896, 1896, 1896, 2811, 1897, 1897, 1897, - 1897, 1898, 1898, 1898, 1898, 1899, 1899, 1899, 1899, 2812, - 2872, 1893, 2874, 1892, 2162, 1891, 1894, 1896, 2810, 1896, - - 2877, 2610, 1897, 2834, 1897, 2882, 1898, 2886, 1898, 1895, - 1899, 2897, 1899, 2881, 1900, 1900, 1900, 1900, 1901, 1901, - 1901, 1901, 1902, 1902, 1902, 1902, 1903, 1903, 1903, 1903, - 2834, 1904, 1904, 1904, 1904, 2899, 2901, 1896, 1897, 1900, - 2881, 1900, 2903, 1901, 2907, 1901, 1899, 1902, 2908, 1902, - 2910, 1903, 2915, 1903, 2916, 2917, 1904, 1898, 1904, 1905, - 1905, 1905, 1905, 1906, 1906, 1906, 1906, 1907, 1907, 1907, - 1907, 1908, 1908, 1908, 1908, 1909, 1909, 1909, 1909, 2918, - 1910, 1910, 1910, 1910, 1905, 2919, 1905, 2920, 1906, 1902, - 1906, 1900, 1907, 1901, 1907, 1903, 1908, 2921, 1908, 2822, - - 1909, 2829, 1909, 2922, 2923, 1910, 1904, 1910, 2924, 1911, - 1911, 1911, 1911, 1912, 1912, 1912, 1912, 1913, 1913, 1913, - 1913, 1914, 1914, 1914, 1914, 2822, 2925, 2829, 1907, 1915, - 1915, 1915, 1915, 2929, 1906, 1905, 1911, 2933, 2934, 2935, - 1912, 1908, 1913, 2936, 1909, 2937, 1914, 2840, 1914, 1916, - 1916, 1916, 1916, 2939, 2940, 1910, 1917, 1917, 1917, 1917, - 1922, 1922, 1922, 1922, 1927, 1927, 1927, 1927, 1932, 1933, - 1933, 1933, 1933, 2840, 2841, 1927, 1916, 1932, 1932, 1932, - 1932, 1932, 2942, 1917, 1935, 1935, 1935, 1935, 1938, 1938, - 1938, 1938, 1939, 1939, 1939, 1939, 1940, 1940, 1940, 1940, - - 2841, 1913, 1942, 1942, 1942, 1942, 1943, 1943, 1943, 1943, - 2943, 2928, 2991, 1938, 2928, 2992, 2994, 1939, 1944, 1944, - 1944, 1944, 2163, 1949, 2844, 2163, 2857, 1942, 2995, 2996, - 3002, 1943, 1949, 1949, 1949, 1949, 1949, 2019, 2019, 2019, - 2019, 2027, 2027, 2027, 2027, 3003, 2028, 2028, 2028, 2028, - 2844, 2163, 2857, 2019, 2029, 2029, 2029, 2029, 2034, 2034, - 2034, 2034, 2035, 2035, 2035, 2035, 2027, 2036, 2036, 2036, - 2036, 2028, 1938, 2028, 2945, 2043, 2043, 2043, 2043, 2044, - 2044, 2044, 2044, 2034, 2955, 2885, 1942, 2035, 2043, 2045, - 2045, 2045, 2045, 2941, 2959, 2044, 2946, 2046, 2046, 2046, - - 2046, 2941, 2045, 2375, 2947, 2043, 2375, 2948, 2956, 2044, - 2046, 2885, 3004, 2046, 2065, 2065, 2065, 2065, 3006, 2045, - 2068, 2068, 2068, 2068, 2124, 2027, 2945, 2046, 2955, 2043, - 2124, 2124, 2375, 2044, 2078, 2078, 2078, 2078, 2083, 2083, - 2083, 2083, 2034, 2045, 2079, 2079, 2079, 2079, 2959, 2946, - 2124, 2046, 2080, 2080, 2080, 2080, 2956, 2124, 2124, 2078, - 2948, 3009, 2947, 2079, 2079, 2079, 2079, 2079, 2079, 2079, - 2951, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2081, 2081, - 2081, 2081, 2082, 2082, 2082, 2082, 2097, 2097, 2097, 2097, - 3012, 2954, 2098, 2098, 2098, 2098, 2101, 2423, 3014, 2097, - - 2423, 2101, 2097, 2081, 2971, 2098, 2961, 2082, 2098, 2101, - 2101, 2101, 2101, 2101, 2101, 2101, 2103, 2113, 2890, 2891, - 2113, 2103, 2165, 2165, 2165, 2165, 2423, 2951, 3016, 2103, - 2103, 2103, 2103, 2103, 2103, 2103, 2107, 2896, 2108, 2107, - 2107, 2108, 2108, 2954, 2890, 2891, 2113, 2107, 2957, 2108, - 3019, 2115, 2107, 2115, 2108, 2971, 2465, 2467, 2115, 2465, - 2467, 2113, 2081, 2896, 2961, 2115, 2170, 2170, 2170, 2170, - 2172, 2172, 2172, 2172, 2101, 2958, 2107, 2115, 2108, 2115, - 2177, 2177, 2177, 2177, 2115, 2465, 2467, 2113, 2183, 2183, - 2183, 2183, 2115, 3020, 2103, 2110, 2190, 2190, 2190, 2190, - - 2110, 2957, 2966, 2110, 2224, 2110, 2110, 2110, 2110, 2110, - 2110, 2110, 2110, 2110, 2110, 2125, 2965, 2960, 2125, 2225, - 2225, 2225, 2225, 2958, 2235, 2962, 2236, 2235, 2960, 2236, - 2125, 2472, 2125, 2963, 2472, 2975, 2225, 2235, 3022, 2236, - 2235, 2125, 2236, 2110, 2125, 2238, 2238, 2238, 2238, 2224, - 3025, 2968, 2224, 2240, 2240, 2240, 2240, 2125, 2966, 2125, - 2472, 2224, 2224, 2239, 2239, 2239, 2239, 2976, 2964, 2962, - 2238, 3026, 2967, 2110, 2199, 2965, 2199, 2199, 2199, 2199, - 2199, 2199, 2199, 2199, 2199, 2199, 2963, 2977, 2239, 2975, - 2258, 2258, 2258, 2258, 2259, 2259, 2259, 2259, 2260, 2260, - - 2260, 2260, 2298, 2298, 2298, 2298, 2300, 2300, 2300, 2300, - 2974, 2276, 2964, 2968, 2199, 2258, 3027, 2976, 3028, 2259, - 2276, 2276, 2276, 2276, 2276, 2288, 3029, 2298, 2967, 2238, - 2199, 2300, 2978, 3030, 2288, 2288, 2288, 2288, 2288, 2301, - 2301, 2301, 2301, 2977, 2199, 2232, 2302, 2302, 2302, 2302, - 2232, 3031, 3032, 2232, 3033, 2232, 2232, 2232, 2232, 2232, - 2232, 2232, 2232, 2232, 2232, 3034, 2292, 3035, 2974, 2232, - 2474, 2296, 2978, 2474, 2258, 2292, 2292, 2292, 2292, 2292, - 2296, 2296, 2296, 2296, 2296, 2309, 2298, 2331, 2331, 2331, - 2331, 3036, 3037, 2232, 2309, 2309, 2309, 2309, 2309, 2474, - - 2331, 2335, 2335, 2335, 2335, 2363, 2336, 2336, 2336, 2336, - 2554, 2554, 2554, 2554, 2363, 2363, 2363, 2363, 2363, 2337, - 2337, 2337, 2337, 2232, 2233, 2979, 2335, 2981, 2335, 2233, - 3038, 2336, 2233, 2336, 2233, 2233, 2233, 2233, 2233, 2233, - 2233, 2233, 2233, 2233, 2337, 3039, 2337, 3041, 2233, 2338, - 2338, 2338, 2338, 2339, 2339, 2339, 2339, 3042, 2340, 2340, - 2340, 2340, 2446, 2446, 2446, 2446, 2341, 2341, 2341, 2341, - 2982, 3067, 2233, 2979, 2338, 2335, 2338, 3068, 2339, 3071, - 2339, 2984, 3072, 2340, 3073, 2340, 3074, 2446, 2981, 2233, - 2337, 2341, 3077, 2341, 2342, 2342, 2342, 2342, 2343, 2343, - - 2343, 2343, 2233, 2344, 2344, 2344, 2344, 2345, 2345, 2345, - 2345, 2346, 2346, 2346, 2346, 2556, 2556, 2556, 2556, 2342, - 2982, 2342, 2338, 2343, 3078, 2343, 2339, 2340, 2344, 2984, - 2344, 3079, 2345, 3083, 2345, 3084, 2346, 3086, 2346, 2341, - 2347, 2347, 2347, 2347, 2348, 2348, 2348, 2348, 2349, 2349, - 2349, 2349, 2350, 2350, 2350, 2350, 2351, 2351, 2351, 2351, - 2344, 2342, 3088, 2985, 3089, 2347, 3091, 2347, 2345, 2348, - 3092, 2348, 2343, 2349, 3093, 2349, 2346, 2350, 3094, 2350, - 3096, 2351, 3097, 2351, 3098, 2352, 2352, 2352, 2352, 2556, - 2353, 2353, 2353, 2353, 3100, 3081, 3101, 2347, 3081, 2354, - - 2354, 2354, 2354, 2475, 3103, 2476, 2475, 2349, 2476, 2348, - 2352, 2985, 2352, 3105, 3106, 2353, 2351, 2353, 2367, 2350, - 2447, 2447, 2447, 2447, 2354, 2351, 2354, 2367, 2367, 2367, - 2367, 2367, 2475, 2478, 2476, 2479, 2478, 3107, 2479, 2447, - 2447, 2447, 2447, 2447, 2447, 2447, 3108, 3085, 2480, 2482, - 3085, 2480, 2482, 2353, 2352, 3087, 2484, 3095, 3087, 2484, - 3095, 3109, 2478, 3110, 2479, 3111, 3090, 2486, 2487, 2494, - 2486, 2487, 2494, 3090, 3115, 2354, 2462, 2480, 2482, 2495, - 2496, 2462, 2495, 2496, 2462, 2484, 2462, 2462, 2462, 2462, - 2462, 2462, 2462, 2462, 2462, 2462, 2486, 2487, 2494, 2492, - - 2497, 2500, 2502, 2497, 2500, 2502, 3116, 2506, 2495, 2496, - 2506, 2508, 2492, 2509, 2508, 2511, 2509, 2513, 2511, 2516, - 2513, 3104, 2516, 2518, 2462, 2492, 2518, 3118, 3104, 2497, - 2500, 2502, 2520, 3119, 3099, 2520, 2506, 3099, 2492, 3120, - 2508, 3121, 2509, 3122, 2511, 3123, 2513, 2523, 2516, 3124, - 2523, 3125, 2518, 2526, 2462, 2463, 2526, 3128, 3129, 2527, - 2463, 2520, 2527, 2463, 3130, 2463, 2463, 2463, 2463, 2463, - 2463, 2463, 2463, 2463, 2463, 2529, 2523, 2533, 2529, 2983, - 2533, 2536, 2526, 2537, 2536, 3131, 2537, 2540, 2527, 2541, - 2540, 2543, 2541, 2545, 2543, 2547, 2545, 2549, 2547, 2551, - - 2549, 3132, 2551, 2463, 2529, 3102, 2533, 3134, 3102, 3135, - 2536, 3136, 2537, 3137, 2720, 3138, 2540, 2720, 2541, 2983, - 2543, 3140, 2545, 3143, 2547, 3148, 2549, 2983, 2551, 2572, - 2572, 2572, 2572, 2463, 2588, 2588, 2588, 2588, 3133, 2590, - 2590, 2590, 2590, 2720, 3152, 3154, 2623, 2632, 2632, 2632, - 2632, 2588, 2612, 2612, 2612, 2612, 2590, 2623, 2633, 2633, - 2633, 2633, 3156, 2724, 3133, 2623, 2724, 2644, 3112, 2612, - 2623, 3112, 2649, 3159, 3161, 2632, 2644, 2644, 2644, 2644, - 2644, 2649, 2649, 2649, 2649, 2649, 2633, 2652, 2659, 2659, - 2659, 2659, 2724, 3163, 2623, 3166, 2652, 2652, 2652, 2652, - - 2652, 3146, 3169, 2572, 2584, 2656, 2656, 2656, 2656, 2584, - 3180, 3182, 2584, 2590, 2584, 2584, 2584, 2584, 2584, 2584, - 2584, 2584, 2584, 2584, 2623, 2655, 2612, 3146, 2771, 2807, - 2656, 2771, 2807, 3184, 2655, 2655, 2655, 2655, 2655, 2657, - 2657, 2657, 2657, 2658, 2658, 2658, 2658, 2670, 2670, 2670, - 2670, 3186, 2584, 2688, 2688, 2688, 2688, 2771, 2807, 2689, - 2689, 2689, 2689, 3192, 2657, 3195, 2688, 3201, 2658, 2584, - 2710, 2710, 2710, 2710, 2712, 2712, 2712, 2712, 2690, 2690, - 2690, 2690, 2584, 2624, 2689, 2712, 2689, 3207, 2624, 2656, - 3192, 2624, 3211, 2624, 2624, 2624, 2624, 2624, 2624, 2624, - - 2624, 2624, 2624, 2690, 3213, 2690, 3168, 2624, 2691, 2691, - 2691, 2691, 3216, 2692, 2692, 2692, 2692, 2693, 2693, 2693, - 2693, 3173, 3218, 2694, 2694, 2694, 2694, 2695, 2695, 2695, - 2695, 2624, 3168, 2691, 3113, 2691, 3219, 3113, 2692, 3220, - 2692, 3225, 2693, 3174, 2693, 3113, 3226, 3173, 2694, 3227, - 2694, 3228, 2695, 3229, 2695, 3230, 2809, 3231, 3232, 2809, - 3231, 2624, 2625, 2696, 2696, 2696, 2696, 2625, 2813, 3174, - 2625, 2813, 2625, 2625, 2625, 2625, 2625, 2625, 2625, 2625, - 2625, 2625, 2692, 2691, 2694, 2809, 2625, 3233, 2696, 2695, - 2696, 3234, 2693, 2697, 2697, 2697, 2697, 2813, 2698, 2698, - - 2698, 2698, 2699, 2699, 2699, 2699, 2700, 2700, 2700, 2700, - 2625, 3235, 3241, 2625, 2701, 2701, 2701, 2701, 2697, 3242, - 2697, 3243, 3244, 2698, 2696, 2698, 3245, 2699, 3247, 2699, - 3250, 2700, 3251, 2700, 3252, 2702, 2702, 2702, 2702, 2701, - 2625, 2701, 2703, 2703, 2703, 2703, 3253, 2704, 2704, 2704, - 2704, 2705, 2705, 2705, 2705, 2912, 2912, 2912, 2912, 3256, - 2702, 2699, 2702, 2815, 2697, 2700, 2815, 2703, 3257, 2703, - 3300, 3255, 2704, 2698, 2704, 3285, 2705, 2816, 2705, 3179, - 2816, 2701, 2706, 2706, 2706, 2706, 2707, 2707, 2707, 2707, - 2818, 3301, 2815, 2818, 2702, 2708, 2708, 2708, 2708, 2709, - - 2709, 2709, 2709, 3264, 2704, 3179, 2816, 2706, 3257, 2706, - 3262, 2707, 2705, 2707, 3255, 3256, 3304, 2703, 2805, 2818, - 2708, 3305, 2708, 2805, 2709, 3285, 2709, 2793, 2793, 2793, - 2793, 2805, 2805, 2805, 2805, 2805, 2805, 2805, 3258, 2706, - 2794, 2794, 2794, 2794, 3268, 3264, 2793, 2793, 2793, 2793, - 2793, 2793, 2793, 3306, 3206, 2820, 2709, 3262, 2820, 2794, - 2794, 2794, 2794, 2794, 2794, 2794, 2823, 3210, 2825, 2823, - 2827, 2825, 2831, 2827, 2832, 2831, 2835, 2832, 2838, 2835, - 3206, 2838, 2839, 2805, 2820, 2839, 2842, 2843, 2845, 2842, - 2843, 2845, 3263, 3210, 3258, 2823, 2805, 2825, 3265, 2827, - - 3267, 2831, 3268, 2832, 3272, 2835, 2847, 2838, 3266, 2847, - 2849, 2839, 3271, 2849, 3274, 2842, 2843, 2845, 2851, 2853, - 2854, 2851, 2853, 2854, 2856, 2858, 2860, 2856, 2858, 2860, - 2861, 2864, 3312, 2861, 2864, 2847, 3263, 2866, 2868, 2849, - 2866, 2868, 2869, 2871, 3275, 2869, 2871, 2851, 2853, 2854, - 3265, 3266, 3267, 2856, 2858, 2860, 3272, 3274, 2873, 2861, - 2864, 2873, 2875, 3279, 3270, 2875, 2866, 2868, 3271, 3277, - 2876, 2869, 2871, 2876, 2878, 2879, 2883, 2878, 2879, 2883, - 2884, 2887, 2888, 2884, 2887, 2888, 2892, 2873, 3286, 2892, - 2894, 2875, 2898, 2894, 2900, 2898, 3275, 2900, 2902, 2876, - - 3314, 2902, 3319, 2878, 2879, 2883, 3322, 3279, 3326, 2884, - 2887, 2888, 3270, 2904, 2905, 2892, 2904, 2905, 3283, 2894, - 3328, 2898, 3277, 2900, 3329, 3330, 3284, 2902, 2913, 2913, - 2913, 2913, 2914, 2914, 2914, 2914, 2926, 2926, 2926, 2926, - 3276, 3286, 2904, 2905, 2927, 2927, 2927, 2927, 2930, 2930, - 2930, 2930, 2932, 2932, 2932, 2932, 2938, 2938, 2938, 2938, - 2949, 2949, 2949, 2949, 2952, 2952, 2952, 2952, 2953, 2953, - 2953, 2953, 2969, 2969, 2969, 2969, 3283, 2949, 3284, 2993, - 3332, 2952, 2993, 3287, 3007, 2953, 3290, 3007, 3276, 2969, - 2970, 2970, 2970, 2970, 2972, 2972, 2972, 2972, 2973, 2973, - - 2973, 2973, 2980, 2980, 2980, 2980, 2987, 2970, 2993, 2988, - 3273, 2972, 3007, 3273, 3335, 2973, 3336, 2987, 3292, 2980, - 2988, 2988, 2930, 2938, 2944, 3338, 3281, 3273, 2988, 2944, - 2987, 3287, 2944, 2988, 2944, 2944, 2944, 2944, 2944, 2944, - 2944, 2944, 2944, 2944, 3290, 2997, 2997, 2997, 2997, 3361, - 2998, 2998, 2998, 2998, 2987, 2998, 3069, 2988, 2972, 3069, - 2999, 2999, 2999, 2999, 3001, 3001, 3001, 3001, 2972, 2980, - 3281, 3292, 2944, 2997, 3362, 3000, 3000, 3000, 3000, 2944, - 3000, 3363, 3365, 3366, 2987, 3069, 3367, 2988, 2999, 3023, - 3023, 3023, 3023, 3369, 3017, 3017, 3017, 3017, 3024, 3024, - - 3024, 3024, 2944, 2950, 2950, 2950, 3370, 2950, 2950, 2950, - 2950, 2950, 2950, 2950, 2950, 2950, 2950, 2950, 2950, 3017, - 2950, 3373, 2950, 3040, 3040, 3040, 3040, 3043, 3043, 3043, - 3043, 2950, 2950, 2950, 2950, 2950, 3374, 3045, 3045, 3045, - 3045, 3046, 3046, 3046, 3046, 3044, 3044, 3044, 3044, 3375, - 3075, 3376, 3043, 3075, 3043, 3377, 3145, 3378, 2950, 3145, - 2950, 2950, 3045, 3291, 3045, 3293, 3046, 3379, 3046, 3380, - 3044, 3382, 3044, 3063, 3063, 3063, 3063, 3383, 3017, 3075, - 3117, 3117, 3117, 3117, 3386, 3145, 3388, 2950, 2950, 2950, - 2989, 3047, 3047, 3047, 3047, 3390, 3371, 3384, 2989, 3371, - - 2989, 2989, 2989, 2989, 2989, 2989, 2989, 2989, 2989, 2989, - 3044, 3384, 3391, 3392, 2989, 3291, 3047, 3293, 3047, 3048, - 3048, 3048, 3048, 3049, 3049, 3049, 3049, 3393, 3052, 3052, - 3052, 3052, 3050, 3050, 3050, 3050, 3394, 3395, 2989, 3051, - 3051, 3051, 3051, 3396, 3048, 3397, 3048, 3398, 3049, 3147, - 3049, 3400, 3147, 3052, 2989, 3052, 3401, 3050, 3372, 3050, - 3381, 3372, 3149, 3381, 3051, 3149, 3051, 3402, 2989, 2990, - 3053, 3053, 3053, 3053, 2990, 3403, 3048, 2990, 3147, 2990, - 2990, 2990, 2990, 2990, 2990, 2990, 2990, 2990, 2990, 3050, - 3404, 3149, 3405, 2990, 3406, 3053, 3408, 3053, 3150, 3153, - - 3051, 3150, 3153, 3052, 3054, 3054, 3054, 3054, 3055, 3055, - 3055, 3055, 3056, 3056, 3056, 3056, 3409, 2990, 3057, 3057, - 3057, 3057, 3410, 3058, 3058, 3058, 3058, 3150, 3153, 3054, - 3411, 3054, 3412, 3055, 3413, 3055, 3415, 3056, 2990, 3056, - 3416, 3417, 3425, 3057, 3053, 3057, 3385, 2990, 3058, 3385, - 3058, 3432, 3059, 3059, 3059, 3059, 3060, 3060, 3060, 3060, - 3436, 3061, 3061, 3061, 3061, 3062, 3062, 3062, 3062, 3064, - 3064, 3064, 3064, 3065, 3065, 3065, 3065, 3059, 3054, 3059, - 3064, 3060, 3144, 3060, 3065, 3058, 3061, 3144, 3061, 3438, - 3062, 3387, 3062, 3057, 3387, 3144, 3144, 3144, 3144, 3144, - - 3144, 3144, 3155, 3422, 3157, 3155, 3158, 3157, 3431, 3158, - 3160, 3162, 3164, 3160, 3162, 3164, 3165, 3441, 3167, 3165, - 3059, 3167, 3170, 3171, 3175, 3170, 3171, 3175, 3443, 3446, - 3422, 3155, 3062, 3157, 3431, 3158, 3448, 3144, 3450, 3160, - 3162, 3164, 3454, 3177, 3462, 3165, 3177, 3167, 3463, 3465, - 3466, 3170, 3171, 3175, 3181, 3183, 3185, 3181, 3183, 3185, - 3144, 3187, 3188, 3190, 3187, 3188, 3190, 3193, 3196, 3467, - 3193, 3196, 3177, 3197, 3199, 3202, 3197, 3199, 3202, 3203, - 3468, 3469, 3203, 3181, 3183, 3185, 3204, 3470, 3472, 3204, - 3187, 3188, 3190, 3435, 3473, 3208, 3193, 3196, 3208, 3474, - - 3475, 3477, 3197, 3199, 3202, 3481, 3209, 3212, 3203, 3209, - 3212, 3214, 3456, 3215, 3214, 3204, 3215, 3217, 3389, 3435, - 3217, 3389, 3482, 3486, 3208, 3221, 3221, 3221, 3221, 3222, - 3222, 3222, 3222, 3487, 3471, 3209, 3212, 3471, 3456, 3488, - 3214, 3489, 3215, 3493, 3529, 3532, 3217, 3223, 3223, 3223, - 3223, 3236, 3236, 3236, 3236, 3238, 3238, 3238, 3238, 3240, - 3240, 3240, 3240, 3246, 3246, 3246, 3246, 3248, 3248, 3248, - 3248, 3249, 3249, 3249, 3249, 3269, 3269, 3269, 3269, 3269, - 3269, 3278, 3278, 3278, 3278, 3280, 3280, 3280, 3280, 3282, - 3282, 3282, 3282, 3288, 3288, 3288, 3288, 3294, 3278, 3491, - - 3302, 3493, 3280, 3302, 3499, 3533, 3282, 3501, 3294, 3294, - 3288, 3289, 3289, 3289, 3289, 3295, 3294, 3307, 3307, 3307, - 3307, 3294, 3307, 3502, 3492, 3497, 3295, 3295, 3289, 3302, - 3309, 3309, 3309, 3309, 3295, 3309, 3511, 3315, 3492, 3295, - 3315, 3248, 3254, 3491, 3499, 3294, 3316, 3254, 3503, 3316, - 3254, 3501, 3254, 3254, 3254, 3254, 3254, 3254, 3254, 3254, - 3254, 3254, 3534, 3295, 3536, 3315, 3505, 3288, 3311, 3311, - 3311, 3311, 3502, 3497, 3316, 3294, 3313, 3313, 3313, 3313, - 3317, 3537, 3538, 3317, 3321, 3321, 3321, 3321, 3511, 3364, - 3254, 3539, 3364, 3295, 3541, 3420, 3503, 3317, 3420, 3317, - - 3317, 3317, 3317, 3317, 3317, 3323, 3323, 3323, 3323, 3254, - 3324, 3324, 3324, 3324, 3325, 3325, 3325, 3325, 3364, 3505, - 3254, 3260, 3260, 3260, 3420, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3509, 3260, 3500, - 3260, 3327, 3327, 3327, 3327, 3333, 3333, 3333, 3333, 3260, - 3260, 3260, 3260, 3260, 3546, 3331, 3331, 3331, 3331, 3334, - 3334, 3334, 3334, 3337, 3337, 3337, 3337, 3342, 3342, 3342, - 3342, 3340, 3340, 3340, 3340, 3547, 3260, 3509, 3260, 3260, - 3331, 3500, 3359, 3359, 3359, 3359, 3350, 3350, 3350, 3350, - 3551, 3553, 3342, 3359, 3342, 3555, 3340, 3558, 3340, 3341, - - 3341, 3341, 3341, 3513, 3341, 3260, 3260, 3260, 3261, 3261, - 3261, 3350, 3261, 3261, 3261, 3261, 3261, 3261, 3261, 3261, - 3261, 3261, 3261, 3261, 3341, 3261, 3341, 3261, 3261, 3331, - 3343, 3343, 3343, 3343, 3507, 3261, 3261, 3261, 3261, 3261, - 3261, 3340, 3344, 3344, 3344, 3344, 3345, 3345, 3345, 3345, - 3347, 3347, 3347, 3347, 3513, 3343, 3521, 3343, 3346, 3346, - 3346, 3346, 3510, 3261, 3261, 3261, 3261, 3344, 3518, 3344, - 3563, 3345, 3566, 3345, 3508, 3347, 3582, 3347, 3399, 3399, - 3399, 3399, 3512, 3346, 3507, 3346, 3423, 3426, 3585, 3423, - 3426, 3586, 3261, 3261, 3261, 3296, 3348, 3348, 3348, 3348, - - 3296, 3344, 3510, 3296, 3521, 3296, 3296, 3296, 3296, 3296, - 3296, 3296, 3296, 3296, 3296, 3423, 3426, 3346, 3508, 3296, - 3518, 3348, 3512, 3348, 3347, 3349, 3349, 3349, 3349, 3351, - 3351, 3351, 3351, 3352, 3352, 3352, 3352, 3353, 3353, 3353, - 3353, 3522, 3588, 3296, 3354, 3354, 3354, 3354, 3589, 3519, - 3349, 3524, 3349, 3591, 3351, 3593, 3351, 3348, 3352, 3523, - 3352, 3594, 3353, 3587, 3353, 3427, 3587, 3542, 3427, 3354, - 3542, 3354, 3595, 3296, 3297, 3355, 3355, 3355, 3355, 3297, - 3597, 3598, 3297, 3522, 3297, 3297, 3297, 3297, 3297, 3297, - 3297, 3297, 3297, 3297, 3427, 3542, 3351, 3524, 3297, 3349, - - 3355, 3519, 3355, 3356, 3356, 3356, 3356, 3358, 3358, 3358, - 3358, 3523, 3601, 3357, 3357, 3357, 3357, 3602, 3429, 3603, - 3433, 3429, 3297, 3433, 3464, 3464, 3464, 3464, 3356, 3606, - 3356, 3609, 3358, 3610, 3358, 3612, 3355, 3614, 3357, 3297, - 3357, 3419, 3478, 3478, 3478, 3478, 3419, 3429, 3590, 3433, - 3616, 3590, 3297, 3298, 3419, 3419, 3419, 3419, 3419, 3419, - 3419, 3298, 3618, 3298, 3298, 3298, 3298, 3298, 3298, 3298, - 3298, 3298, 3298, 3434, 3357, 3437, 3434, 3298, 3437, 3622, - 3439, 3440, 3442, 3439, 3440, 3442, 3444, 3445, 3447, 3444, - 3445, 3447, 3449, 3451, 3452, 3449, 3451, 3452, 3455, 3624, - - 3457, 3455, 3434, 3457, 3437, 3627, 3629, 3631, 3419, 3439, - 3440, 3442, 3641, 3644, 3648, 3444, 3445, 3447, 3650, 3419, - 3653, 3449, 3451, 3452, 3654, 3459, 3657, 3455, 3459, 3457, - 3460, 3298, 3299, 3460, 3658, 3592, 3596, 3299, 3592, 3596, - 3299, 3660, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3599, 3661, 3459, 3599, 3299, 3662, 3666, 3460, - 3479, 3479, 3479, 3479, 3480, 3480, 3480, 3480, 3484, 3484, - 3484, 3484, 3485, 3485, 3485, 3485, 3494, 3494, 3494, 3494, - 3299, 3498, 3498, 3498, 3498, 3504, 3504, 3504, 3504, 3504, - 3504, 3600, 3605, 3494, 3600, 3605, 3299, 3667, 3498, 3506, - - 3506, 3506, 3506, 3515, 3515, 3515, 3515, 3668, 3669, 3691, - 3299, 3516, 3516, 3516, 3516, 3700, 3506, 3703, 3527, 3704, - 3515, 3517, 3517, 3517, 3517, 3674, 3673, 3708, 3516, 3527, - 3535, 3681, 3709, 3535, 3479, 3490, 3608, 3527, 3517, 3608, - 3490, 3615, 3527, 3490, 3615, 3490, 3490, 3490, 3490, 3490, - 3490, 3490, 3490, 3490, 3490, 3520, 3520, 3520, 3520, 3535, - 3682, 3506, 3540, 3540, 3540, 3540, 3527, 3675, 3607, 3674, - 3543, 3607, 3520, 3543, 3548, 3548, 3548, 3548, 3544, 3607, - 3678, 3544, 3677, 3490, 3681, 3516, 3490, 3543, 3673, 3543, - 3543, 3543, 3543, 3543, 3543, 3544, 3527, 3544, 3544, 3544, - - 3544, 3544, 3544, 3549, 3549, 3549, 3549, 3550, 3550, 3550, - 3550, 3675, 3682, 3490, 3495, 3495, 3495, 3694, 3495, 3495, - 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, 3495, - 3678, 3495, 3545, 3495, 3495, 3545, 3552, 3552, 3552, 3552, - 3677, 3495, 3495, 3495, 3495, 3495, 3495, 3712, 3715, 3545, - 3712, 3545, 3545, 3545, 3545, 3545, 3545, 3633, 3643, 3716, - 3554, 3554, 3554, 3554, 3556, 3556, 3556, 3556, 3694, 3495, - 3495, 3495, 3495, 3557, 3557, 3557, 3557, 3717, 3684, 3559, - 3559, 3559, 3559, 3633, 3643, 3554, 3687, 3689, 3720, 3556, - 3560, 3560, 3560, 3560, 3561, 3561, 3561, 3561, 3495, 3495, - - 3495, 3496, 3496, 3496, 3559, 3496, 3496, 3496, 3496, 3496, - 3496, 3496, 3496, 3496, 3496, 3496, 3496, 3721, 3496, 3722, - 3496, 3496, 3562, 3562, 3562, 3562, 3684, 3685, 3496, 3496, - 3496, 3496, 3496, 3496, 3554, 3690, 3687, 3689, 3556, 3564, - 3564, 3564, 3564, 3738, 3565, 3565, 3565, 3565, 3567, 3567, - 3567, 3567, 3569, 3569, 3569, 3569, 3496, 3496, 3496, 3496, - 3573, 3573, 3573, 3573, 3568, 3568, 3568, 3568, 3739, 3565, - 3692, 3565, 3688, 3567, 3740, 3567, 3744, 3569, 3690, 3569, - 3581, 3581, 3581, 3581, 3692, 3496, 3496, 3496, 3525, 3568, - 3685, 3568, 3570, 3570, 3570, 3570, 3525, 3747, 3525, 3525, - - 3525, 3525, 3525, 3525, 3525, 3525, 3525, 3525, 3695, 3567, - 3693, 3745, 3525, 3565, 3745, 3625, 3746, 3570, 3625, 3746, - 3571, 3571, 3571, 3571, 3688, 3568, 3569, 3749, 3572, 3572, - 3572, 3572, 3574, 3574, 3574, 3574, 3575, 3575, 3575, 3575, - 3576, 3576, 3576, 3576, 3625, 3571, 3751, 3571, 3754, 3577, - 3577, 3577, 3577, 3572, 3693, 3572, 3758, 3574, 3695, 3574, - 3764, 3575, 3765, 3575, 3729, 3576, 3525, 3526, 3578, 3578, - 3578, 3578, 3526, 3729, 3577, 3526, 3577, 3526, 3526, 3526, - 3526, 3526, 3526, 3526, 3526, 3526, 3526, 3571, 3572, 3626, - 3766, 3526, 3626, 3578, 3769, 3578, 3579, 3579, 3579, 3579, - - 3770, 3771, 3574, 3580, 3580, 3580, 3580, 3659, 3659, 3659, - 3659, 3628, 3776, 3748, 3628, 3526, 3748, 3775, 3626, 3630, - 3623, 3579, 3630, 3579, 3780, 3623, 3782, 3578, 3580, 3578, - 3580, 3785, 3788, 3623, 3623, 3623, 3623, 3623, 3623, 3623, - 3628, 3789, 3578, 3775, 3578, 3526, 3528, 3632, 3630, 3634, - 3632, 3528, 3634, 3790, 3528, 3793, 3528, 3528, 3528, 3528, - 3528, 3528, 3528, 3528, 3528, 3528, 3636, 3797, 3798, 3636, - 3528, 3623, 3637, 3802, 3639, 3637, 3632, 3639, 3634, 3642, - 3645, 3646, 3642, 3645, 3646, 3649, 3828, 3837, 3649, 3670, - 3670, 3670, 3670, 3750, 3528, 3636, 3750, 3753, 3623, 3755, - - 3753, 3637, 3755, 3639, 3671, 3671, 3671, 3671, 3642, 3645, - 3646, 3838, 3839, 3843, 3649, 3686, 3686, 3686, 3686, 3719, - 3719, 3719, 3719, 3850, 3528, 3530, 3724, 3724, 3724, 3724, - 3530, 3756, 3686, 3530, 3756, 3530, 3530, 3530, 3530, 3530, - 3530, 3530, 3530, 3530, 3530, 3696, 3696, 3696, 3696, 3530, - 3697, 3697, 3697, 3697, 3710, 3852, 3856, 3710, 3726, 3726, - 3726, 3726, 3696, 3711, 3865, 3759, 3711, 3697, 3759, 3762, - 3879, 3710, 3762, 3710, 3710, 3710, 3710, 3710, 3710, 3880, - 3711, 3762, 3711, 3711, 3711, 3711, 3711, 3711, 3718, 3718, - 3718, 3718, 3725, 3725, 3725, 3725, 3881, 3830, 3884, 3723, - - 3723, 3723, 3723, 3530, 3531, 3727, 3727, 3727, 3727, 3531, - 3830, 3887, 3531, 3718, 3531, 3531, 3531, 3531, 3531, 3531, - 3531, 3531, 3531, 3531, 3723, 3893, 3894, 3895, 3531, 3728, - 3728, 3728, 3728, 3730, 3730, 3730, 3730, 3900, 3731, 3731, - 3731, 3731, 3732, 3732, 3732, 3732, 3903, 3733, 3733, 3733, - 3733, 3725, 3531, 3725, 3728, 3911, 3728, 3916, 3730, 3921, - 3730, 3924, 3718, 3731, 3761, 3731, 3725, 3761, 3725, 3928, - 3763, 3531, 3733, 3763, 3733, 3761, 3906, 3929, 3735, 3735, - 3735, 3735, 3531, 3672, 3734, 3734, 3734, 3734, 3672, 3768, - 3909, 3672, 3768, 3672, 3672, 3672, 3672, 3672, 3672, 3672, - - 3672, 3672, 3672, 3735, 3905, 3735, 3910, 3773, 3931, 3734, - 3773, 3734, 3736, 3736, 3736, 3736, 3906, 3733, 3737, 3737, - 3737, 3737, 3741, 3741, 3741, 3741, 3742, 3742, 3742, 3742, - 3915, 3672, 3743, 3743, 3743, 3743, 3773, 3787, 3787, 3787, - 3787, 3844, 3909, 3737, 3844, 3737, 3905, 3741, 3868, 3741, - 3910, 3868, 3672, 3735, 3777, 3936, 3778, 3777, 3734, 3778, - 3939, 3672, 3679, 3679, 3679, 3679, 3679, 3679, 3679, 3679, - 3679, 3679, 3679, 3679, 3679, 3679, 3679, 3679, 3679, 3679, - 3679, 3679, 3679, 3777, 3781, 3778, 3915, 3781, 3940, 3679, - 3679, 3679, 3679, 3679, 3679, 3783, 3784, 3786, 3783, 3784, - - 3786, 3795, 3795, 3795, 3795, 3796, 3796, 3796, 3796, 3800, - 3800, 3800, 3800, 3781, 3923, 3925, 3772, 3679, 3679, 3679, - 3679, 3772, 3943, 3956, 3783, 3784, 3786, 3923, 3925, 3772, - 3772, 3772, 3772, 3772, 3772, 3772, 3960, 3812, 3812, 3842, - 3842, 3842, 3842, 3963, 3968, 3812, 3679, 3679, 3679, 3680, - 3680, 3680, 3680, 3680, 3680, 3680, 3680, 3680, 3680, 3680, - 3680, 3680, 3680, 3680, 3680, 3680, 3680, 3680, 3680, 3680, - 3806, 3806, 3806, 3806, 3812, 3907, 3680, 3680, 3680, 3680, - 3680, 3680, 3814, 3814, 3969, 3772, 3869, 3806, 3871, 3869, - 3814, 3871, 3872, 3978, 3772, 3872, 3807, 3807, 3807, 3807, - - 3808, 3808, 3808, 3808, 3680, 3680, 3680, 3680, 3809, 3809, - 3809, 3809, 3873, 3807, 3908, 3873, 3918, 3808, 3907, 3814, - 3810, 3810, 3810, 3810, 3984, 3809, 3811, 3811, 3811, 3811, - 3990, 3992, 3994, 3680, 3680, 3680, 3698, 3810, 3995, 3874, - 3971, 3698, 3874, 3811, 3698, 3974, 3698, 3698, 3698, 3698, - 3698, 3698, 3698, 3698, 3698, 3698, 3807, 3908, 3996, 3918, - 3698, 3813, 3813, 3813, 3813, 3847, 3847, 3847, 3847, 3809, - 3997, 3912, 3912, 3808, 3815, 3815, 3815, 3815, 3813, 3912, - 3816, 3816, 3816, 3816, 3698, 3817, 3817, 3817, 3817, 3974, - 3971, 3815, 3819, 3819, 3819, 3819, 3810, 3816, 3848, 3848, - - 3848, 3848, 3817, 3698, 3820, 3820, 3820, 3820, 3912, 3819, - 3849, 3849, 3849, 3849, 3698, 3699, 3851, 3851, 3851, 3851, - 3699, 3820, 3998, 3699, 3972, 3699, 3699, 3699, 3699, 3699, - 3699, 3699, 3699, 3699, 3699, 3853, 3853, 3853, 3853, 3699, - 4006, 3851, 3976, 3815, 3975, 3816, 3821, 3821, 3821, 3821, - 4007, 4012, 3817, 3822, 3822, 3822, 3822, 3823, 3823, 3823, - 3823, 4013, 4024, 3821, 3825, 3825, 3825, 3825, 3875, 3950, - 3822, 3875, 3950, 3981, 3823, 3855, 3855, 3855, 3855, 3820, - 3972, 3825, 3866, 3866, 3866, 3866, 3885, 3975, 3877, 3885, - 3851, 3877, 3976, 3699, 3701, 3854, 3854, 3854, 3854, 3701, - - 3877, 4028, 3701, 4014, 3701, 3701, 3701, 3701, 3701, 3701, - 3701, 3701, 3701, 3701, 3822, 3885, 3886, 3981, 3701, 3886, - 3854, 3888, 3854, 4018, 3888, 4031, 3821, 3857, 3857, 3857, - 3857, 3858, 3858, 3858, 3858, 3861, 3861, 3861, 3861, 3889, - 3825, 3952, 3889, 4014, 3952, 3886, 3901, 3901, 3901, 3901, - 3888, 3987, 3857, 4047, 3857, 4046, 3858, 3855, 3858, 4046, - 3861, 3930, 3930, 3930, 3930, 3987, 3953, 3954, 3889, 3953, - 3954, 4018, 3701, 3702, 3702, 3702, 4054, 4063, 3702, 3702, - 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, - 4066, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, - - 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, - 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, - 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, - 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, - 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, - 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, - 3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705, - 3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705, 3705, - 3705, 3859, 3859, 3859, 3859, 3917, 3917, 3705, 3705, 3705, - 3705, 3705, 3705, 3917, 3860, 3860, 3860, 3860, 4067, 4068, - - 3862, 3862, 3862, 3862, 3955, 4069, 3859, 3955, 3859, 3863, - 3863, 3863, 3863, 4068, 4022, 3705, 3705, 3705, 3705, 3860, - 4004, 3860, 3917, 4004, 3883, 3862, 4022, 3862, 4082, 3883, - 3898, 3898, 3898, 3898, 3863, 4042, 3863, 3883, 3883, 3883, - 3883, 3883, 3883, 3883, 3705, 3705, 3705, 3805, 3933, 3933, - 3933, 3933, 3805, 4093, 4096, 3805, 3859, 3805, 3805, 3805, - 3805, 3805, 3805, 3805, 3805, 3805, 3805, 3862, 3860, 3934, - 3934, 3934, 3934, 3913, 3913, 3913, 3913, 3935, 3935, 3935, - 3935, 4099, 4042, 3863, 3938, 3938, 3938, 3938, 3883, 4101, - 3913, 3937, 3937, 3937, 3937, 3805, 3941, 3941, 3941, 3941, - - 4021, 4058, 3883, 4021, 3898, 3945, 3945, 3945, 3945, 4102, - 3993, 3805, 3962, 3962, 3962, 3962, 3937, 3965, 3965, 3965, - 3965, 4010, 4010, 4010, 4010, 3805, 3818, 3818, 3818, 3818, - 3818, 3818, 3818, 3818, 3818, 3818, 3818, 3818, 3818, 3818, - 3818, 3818, 3818, 3818, 3818, 3818, 3818, 3913, 3947, 3947, - 3947, 3947, 4041, 3818, 3818, 3818, 3818, 3818, 3818, 4015, - 3944, 3944, 3944, 3944, 4058, 3937, 3946, 3946, 3946, 3946, - 3993, 3958, 4105, 3947, 3958, 3947, 4107, 4081, 3941, 4110, - 4044, 3818, 3818, 3818, 3818, 3944, 4081, 3944, 4043, 3957, - 4048, 3946, 4112, 3946, 3957, 4011, 4011, 4011, 4011, 4114, - - 3958, 4015, 3957, 3957, 3957, 3957, 3957, 3957, 3957, 4041, - 3818, 3818, 3818, 3824, 3824, 3824, 3824, 3824, 3824, 3824, - 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, 3824, - 3824, 3824, 3824, 3824, 3944, 3961, 3946, 4044, 3961, 4017, - 3824, 3824, 3824, 3824, 3824, 3824, 3973, 3973, 3973, 3973, - 4043, 4026, 4048, 3979, 3979, 4087, 3957, 3977, 3977, 3977, - 3977, 3979, 4008, 3973, 3961, 4008, 4116, 3957, 3824, 3824, - 3824, 3824, 4117, 4094, 3977, 3980, 3980, 3980, 3980, 3999, - 3999, 3999, 3999, 4017, 4003, 4003, 4003, 4003, 4070, 4057, - 3979, 4008, 3980, 4033, 4033, 4033, 4033, 3824, 3824, 3824, - - 3826, 4026, 4119, 4087, 3999, 3826, 4121, 4083, 3826, 4003, - 3826, 3826, 3826, 3826, 3826, 3826, 3826, 3826, 3826, 3826, - 4000, 4000, 4000, 4000, 3826, 4001, 4001, 4001, 4001, 4002, - 4002, 4002, 4002, 4094, 4070, 4075, 4016, 4016, 4016, 4016, - 4020, 4020, 4020, 4020, 4060, 4000, 4057, 4000, 3826, 4123, - 4001, 3826, 4001, 4016, 4002, 4124, 4002, 4020, 4030, 4030, - 4030, 4030, 4469, 4032, 4032, 4032, 4032, 4037, 4037, 4037, - 4037, 4083, 4095, 4103, 4034, 4034, 4034, 4034, 3826, 3827, - 4470, 4098, 4106, 4030, 4095, 4075, 4097, 3827, 4032, 3827, - 3827, 3827, 3827, 3827, 3827, 3827, 3827, 3827, 3827, 4034, - - 4001, 4034, 4060, 3827, 4035, 4035, 4035, 4035, 4039, 4039, - 4039, 4039, 4052, 4052, 4052, 4052, 4053, 4053, 4053, 4053, - 4055, 4055, 4055, 4055, 4056, 4056, 4056, 4056, 4288, 4035, - 4059, 4059, 4059, 4059, 4288, 4103, 4611, 4052, 4098, 4076, - 4076, 4076, 4076, 3827, 4106, 4097, 4831, 4059, 4611, 4056, - 4220, 4056, 4072, 4072, 4072, 4072, 4076, 3827, 3829, 3829, - 3829, 4220, 4856, 3829, 3829, 3829, 3829, 3829, 3829, 3829, - 3829, 3829, 3829, 3829, 3829, 2287, 3829, 4072, 3829, 3829, - 3829, 3829, 3829, 3829, 3829, 3829, 3829, 3829, 3829, 3829, - 3829, 3829, 3829, 3829, 3829, 3829, 3829, 3829, 3829, 3829, - - 3829, 3829, 3829, 3829, 3829, 3829, 3829, 3829, 3829, 3829, - 3829, 3829, 3829, 3829, 3829, 3829, 3829, 3829, 3829, 3829, - 3829, 3829, 3829, 3829, 3829, 3829, 3829, 3829, 3829, 3829, - 3829, 3829, 3829, 3829, 3829, 3829, 3829, 3829, 3829, 3829, - 3829, 3829, 3829, 3829, 3829, 3831, 3831, 3831, 2286, 4100, - 3831, 3831, 3831, 3831, 3831, 3831, 3831, 3831, 3831, 3831, - 3831, 4104, 4115, 4118, 3831, 4073, 4073, 4073, 4073, 4074, - 4074, 4074, 4074, 3831, 3831, 3831, 3831, 3831, 4111, 4036, - 4036, 4036, 4036, 4646, 4078, 4078, 4078, 4078, 4120, 4646, - 4073, 2280, 4073, 2279, 4074, 4084, 4084, 4084, 4084, 4100, - - 3831, 4078, 3831, 3831, 4036, 2275, 4036, 4085, 4085, 4085, - 4085, 4086, 4086, 4086, 4086, 4213, 4216, 2274, 2271, 4104, - 4084, 4216, 4118, 4213, 4111, 2270, 4115, 2264, 4213, 3831, - 3831, 3831, 3832, 3832, 3832, 2257, 2256, 3832, 3832, 3832, - 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 3832, 4842, - 4120, 3832, 3832, 4036, 4109, 4109, 4109, 4109, 2255, 3832, - 3832, 3832, 3832, 3832, 3832, 4215, 4215, 4215, 2250, 2249, - 4842, 4109, 4222, 4222, 4222, 4224, 4224, 4224, 4225, 4231, - 4231, 4231, 2248, 4225, 2246, 2245, 4215, 3832, 3832, 3832, - 3832, 2244, 4246, 4222, 4250, 2243, 4224, 4246, 4262, 4250, - - 4231, 4233, 4233, 4233, 4263, 4264, 4262, 4264, 4267, 4263, - 4287, 4262, 4264, 4267, 2242, 4287, 3832, 3832, 3832, 3833, - 3833, 3833, 4233, 2197, 3833, 3833, 3833, 3833, 3833, 3833, - 3833, 3833, 3833, 3833, 3833, 3833, 2196, 3833, 3833, 3833, - 3833, 3833, 3833, 3833, 3833, 3833, 3833, 3833, 3833, 3833, - 3833, 3833, 3833, 3833, 3833, 3833, 3833, 3833, 3833, 3833, - 3833, 3833, 3833, 3833, 3833, 3833, 3833, 3833, 3833, 3833, - 3833, 3833, 3833, 3833, 3833, 3833, 3833, 3833, 3833, 3833, - 3833, 3833, 3833, 3833, 3833, 3833, 3833, 3833, 3833, 3833, - 3833, 3833, 3833, 3833, 3833, 3833, 3833, 3833, 3833, 3833, - - 3833, 3833, 3833, 3833, 3833, 3833, 3834, 3834, 3834, 2195, - 2194, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, 3834, - 3834, 3834, 4255, 4255, 4255, 3834, 4261, 4261, 4261, 4282, - 4282, 4282, 2193, 3834, 3834, 3834, 3834, 3834, 3834, 4284, - 2192, 2188, 2187, 4255, 4284, 4284, 4289, 4261, 2186, 4289, - 4282, 4297, 4297, 4297, 4289, 4313, 4325, 4325, 4325, 2185, - 4313, 3834, 4334, 3834, 3834, 4337, 4337, 4334, 4337, 4344, - 4361, 4370, 4297, 4337, 4344, 4361, 4375, 4325, 4388, 4370, - 4397, 4375, 4401, 4388, 4370, 4397, 2184, 4401, 2181, 4869, - 3834, 3834, 3834, 3835, 3835, 3835, 2180, 2179, 3835, 3835, - - 3835, 3835, 3835, 3835, 3835, 3835, 3835, 3835, 3835, 3835, - 4869, 2178, 3835, 3835, 4373, 4373, 4373, 4382, 4382, 4382, - 3835, 3835, 3835, 3835, 3835, 3835, 4386, 4386, 4386, 4414, - 2176, 4396, 4396, 4396, 4414, 4373, 2175, 4419, 4382, 4400, - 4400, 4400, 4419, 4425, 4425, 4425, 2174, 4386, 3835, 3835, - 3835, 3835, 4396, 4426, 4434, 4426, 2173, 4435, 4426, 4434, - 4400, 4433, 4433, 4433, 4425, 4435, 4436, 4437, 4440, 4437, - 4435, 4436, 2171, 4440, 4437, 2169, 4461, 3835, 3835, 3835, - 3904, 4461, 4433, 2168, 4467, 3904, 2167, 2166, 3904, 4467, - 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, - - 4447, 4460, 4460, 4460, 2111, 4471, 4463, 2104, 4471, 4464, - 4447, 4463, 4463, 4471, 4464, 2102, 4447, 4464, 4485, 4485, - 4485, 4447, 4460, 4476, 4476, 4486, 4476, 4508, 3904, 4523, - 4486, 4476, 4508, 4522, 4522, 4522, 4532, 4542, 2096, 4485, - 2095, 4532, 4542, 4535, 4535, 4523, 4535, 3904, 4556, 2094, - 4523, 4535, 4585, 4556, 4522, 2093, 2092, 4585, 3904, 3914, - 3914, 3914, 3914, 3914, 3914, 3914, 3914, 3914, 3914, 3914, - 3914, 3914, 3914, 3914, 3914, 3914, 3914, 3914, 3914, 3914, - 4566, 4566, 4566, 4569, 4569, 4569, 3914, 3914, 3914, 3914, - 3914, 3914, 4575, 4575, 4575, 4589, 2091, 4579, 4579, 4579, - - 4589, 4566, 2090, 2089, 4569, 4584, 4584, 4584, 4588, 4588, - 4588, 2088, 2087, 4575, 3914, 3914, 3914, 3914, 4579, 4595, - 4595, 4595, 4596, 4600, 4596, 4608, 4584, 4596, 4600, 4588, - 4608, 4599, 4599, 4599, 4607, 4607, 4607, 2086, 2085, 2073, - 4595, 2072, 4609, 3914, 3914, 3914, 3919, 4609, 4626, 2071, - 4609, 3919, 4599, 4626, 3919, 4607, 3919, 3919, 3919, 3919, - 3919, 3919, 3919, 3919, 3919, 3919, 4614, 4614, 4634, 4614, - 3919, 4625, 4625, 4625, 4614, 4633, 4633, 4633, 4635, 4635, - 2069, 4635, 4675, 4675, 4634, 4675, 4635, 2064, 4679, 4634, - 4675, 2063, 4625, 4679, 3919, 2062, 4633, 4638, 4638, 4638, - - 4639, 4639, 4639, 2061, 2060, 4678, 4678, 4678, 4735, 4735, - 2059, 4735, 4737, 4815, 4843, 3919, 4735, 4737, 4638, 4843, - 2058, 4639, 2056, 4870, 3919, 3920, 4678, 4815, 4870, 4815, - 3920, 4841, 2055, 3920, 4815, 3920, 3920, 3920, 3920, 3920, - 3920, 3920, 3920, 3920, 3920, 4841, 4854, 4841, 4871, 3920, - 4880, 4891, 4841, 4871, 4882, 2053, 4891, 2052, 2051, 2050, - 2049, 4854, 2048, 2047, 2041, 4880, 4854, 2040, 2039, 4882, - 4880, 2033, 2032, 2030, 4882, 2025, 2022, 2021, 2020, 2018, - 2017, 2016, 2015, 2010, 2008, 2007, 2006, 2005, 2004, 1998, - 3920, 1997, 1996, 1995, 1994, 1993, 1992, 1991, 1990, 1989, - - 1988, 1987, 1985, 3920, 3922, 3922, 3922, 1983, 1980, 3922, - 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, - 3922, 1978, 3922, 1977, 3922, 3922, 3922, 3922, 3922, 3922, - 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, - 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, - 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, - 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, - 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, - 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, 3922, - 3922, 3926, 3926, 3926, 1976, 1975, 3926, 3926, 3926, 3926, - - 3926, 3926, 3926, 3926, 3926, 3926, 3926, 3926, 1974, 3926, - 3926, 3926, 3926, 3926, 3926, 3926, 3926, 3926, 3926, 3926, - 3926, 3926, 3926, 3926, 3926, 3926, 3926, 3926, 3926, 3926, - 3926, 3926, 3926, 3926, 3926, 3926, 3926, 3926, 3926, 3926, - 3926, 3926, 3926, 3926, 3926, 3926, 3926, 3926, 3926, 3926, - 3926, 3926, 3926, 3926, 3926, 3926, 3926, 3926, 3926, 3926, - 3926, 3926, 3926, 3926, 3926, 3926, 3926, 3926, 3926, 3926, - 3926, 3926, 3926, 3926, 3926, 3926, 3926, 3926, 3927, 3927, - 3927, 1973, 1972, 3927, 3927, 3927, 3927, 3927, 3927, 3927, - 3927, 3927, 3927, 3927, 3927, 1970, 1968, 3927, 3927, 1967, - - 1963, 1961, 1959, 1957, 1956, 3927, 3927, 3927, 3927, 3927, - 3927, 1954, 1953, 1950, 1948, 1947, 1937, 1931, 1930, 1926, - 1925, 1924, 1923, 1920, 1919, 1918, 1886, 1881, 1877, 1876, - 1875, 1874, 1872, 3927, 3927, 3927, 3927, 1871, 1869, 1868, - 1866, 1864, 1863, 1857, 1856, 1854, 1853, 1852, 1851, 1849, - 1842, 1836, 1829, 1820, 1818, 1816, 1814, 1792, 1782, 1779, - 1778, 1777, 3927, 3927, 3927, 3970, 3970, 3970, 1774, 1772, - 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, - 3970, 3970, 1771, 3970, 3970, 3970, 3970, 3970, 3970, 3970, - 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, - - 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, - 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, - 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, - 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, - 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, 3970, - 3970, 3970, 3982, 1768, 1763, 1759, 1758, 3982, 1757, 1756, - 3982, 1753, 3982, 3982, 3982, 3982, 3982, 3982, 3982, 3982, - 3982, 3982, 1749, 1737, 1736, 1735, 3982, 1734, 1733, 1732, - 1731, 1728, 1722, 1718, 1711, 1710, 1709, 1674, 1671, 1669, - 1666, 1665, 1661, 1660, 1651, 1647, 1643, 1641, 1640, 1632, - - 3982, 1629, 1628, 1624, 1620, 1619, 1618, 1610, 1600, 1596, - 1595, 1594, 1593, 1592, 1591, 1589, 3982, 1584, 1560, 1557, - 1551, 1539, 1538, 1537, 1536, 1534, 1530, 1524, 1523, 1522, - 3982, 3983, 1505, 1502, 1497, 1494, 3983, 1493, 1492, 3983, - 1491, 3983, 3983, 3983, 3983, 3983, 3983, 3983, 3983, 3983, - 3983, 1490, 1487, 1484, 1480, 3983, 1473, 1467, 1465, 1463, - 1462, 1457, 1456, 1455, 1454, 1451, 1444, 1443, 1441, 1438, - 1437, 1435, 1434, 1432, 1429, 1421, 1416, 1413, 1411, 1410, - 1409, 1406, 1405, 1398, 1396, 1393, 3983, 1392, 1390, 1389, - 1384, 1381, 1375, 1372, 1370, 1369, 1368, 1365, 1361, 1360, - - 1359, 1358, 1357, 1355, 1354, 1339, 1336, 1335, 1319, 3983, - 4023, 4023, 4023, 1315, 1314, 4023, 4023, 4023, 4023, 4023, - 4023, 4023, 4023, 4023, 4023, 4023, 4023, 1312, 4023, 1311, - 4023, 4023, 4023, 4023, 4023, 4023, 4023, 4023, 4023, 4023, - 4023, 4023, 4023, 4023, 4023, 4023, 4023, 4023, 4023, 4023, - 4023, 4023, 4023, 4023, 4023, 4023, 4023, 4023, 4023, 4023, - 4023, 4023, 4023, 4023, 4023, 4023, 4023, 4023, 4023, 4023, - 4023, 4023, 4023, 4023, 4023, 4023, 4023, 4023, 4023, 4023, - 4023, 4023, 4023, 4023, 4023, 4023, 4023, 4023, 4023, 4023, - 4023, 4023, 4023, 4023, 4023, 4023, 4023, 4045, 4045, 4045, - - 1310, 1309, 4045, 4045, 4045, 4045, 4045, 4045, 4045, 4045, - 4045, 4045, 4045, 4045, 1304, 4045, 4045, 4045, 4045, 4045, - 4045, 4045, 4045, 4045, 4045, 4045, 4045, 4045, 4045, 4045, - 4045, 4045, 4045, 4045, 4045, 4045, 4045, 4045, 4045, 4045, - 4045, 4045, 4045, 4045, 4045, 4045, 4045, 4045, 4045, 4045, - 4045, 4045, 4045, 4045, 4045, 4045, 4045, 4045, 4045, 4045, - 4045, 4045, 4045, 4045, 4045, 4045, 4045, 4045, 4045, 4045, - 4045, 4045, 4045, 4045, 4045, 4045, 4045, 4045, 4045, 4045, - 4045, 4045, 4045, 4045, 4061, 4061, 4061, 1302, 1292, 4061, - 4061, 4061, 4061, 4061, 4061, 4061, 4061, 4061, 4061, 4061, - - 4061, 1290, 4061, 4061, 4061, 4061, 4061, 4061, 4061, 4061, - 4061, 4061, 4061, 4061, 4061, 4061, 4061, 4061, 4061, 4061, - 4061, 4061, 4061, 4061, 4061, 4061, 4061, 4061, 4061, 4061, - 4061, 4061, 4061, 4061, 4061, 4061, 4061, 4061, 4061, 4061, - 4061, 4061, 4061, 4061, 4061, 4061, 4061, 4061, 4061, 4061, - 4061, 4061, 4061, 4061, 4061, 4061, 4061, 4061, 4061, 4061, - 4061, 4061, 4061, 4061, 4061, 4061, 4061, 4061, 4061, 4061, - 4061, 4062, 4062, 4062, 1289, 1285, 4062, 4062, 4062, 4062, - 4062, 4062, 4062, 4062, 4062, 4062, 4062, 1282, 1273, 1270, - 4062, 1269, 1265, 1260, 1259, 1258, 1257, 1254, 1250, 4062, - - 4062, 4062, 4062, 4062, 1244, 1242, 1241, 1235, 1225, 1217, - 1211, 1209, 1205, 1203, 1194, 1193, 1192, 1191, 1188, 1187, - 1186, 1185, 1170, 1150, 1141, 1139, 4062, 4062, 4062, 4062, - 1138, 1137, 1134, 1133, 1130, 1129, 1120, 1119, 1118, 1115, - 1107, 1095, 1092, 1086, 1081, 1077, 1068, 1060, 1056, 1049, - 1044, 1041, 1037, 1034, 1031, 4062, 4062, 4062, 4064, 4064, - 4064, 1029, 1021, 4064, 4064, 4064, 4064, 4064, 4064, 4064, - 4064, 4064, 4064, 4064, 1003, 995, 991, 4064, 974, 971, - 970, 967, 965, 964, 949, 4064, 4064, 4064, 4064, 4064, - 4064, 946, 932, 929, 926, 923, 909, 872, 868, 866, - - 863, 862, 861, 849, 848, 846, 845, 843, 839, 834, - 829, 827, 817, 4064, 4064, 4064, 4064, 815, 814, 806, - 803, 794, 779, 774, 766, 761, 747, 744, 739, 735, - 726, 722, 718, 715, 712, 705, 702, 699, 696, 688, - 685, 682, 4064, 4064, 4064, 4065, 4065, 4065, 679, 675, - 4065, 4065, 4065, 662, 4065, 4065, 4065, 4065, 4065, 4065, - 4065, 658, 655, 651, 4065, 648, 647, 646, 640, 635, - 633, 629, 625, 4065, 4065, 4065, 4065, 612, 611, 596, - 586, 582, 570, 566, 556, 552, 544, 525, 520, 519, - 518, 516, 505, 502, 500, 492, 491, 487, 484, 480, - - 4065, 4065, 4065, 4065, 468, 460, 454, 450, 445, 444, - 434, 432, 427, 425, 424, 423, 422, 411, 402, 386, - 365, 362, 352, 350, 344, 339, 330, 318, 308, 4065, - 4065, 4079, 4079, 4079, 303, 301, 4079, 4079, 4079, 4079, - 4079, 4079, 4079, 4079, 4079, 4079, 4079, 4079, 297, 4079, - 4079, 4079, 4079, 4079, 4079, 4079, 4079, 4079, 4079, 4079, - 4079, 4079, 4079, 4079, 4079, 4079, 4079, 4079, 4079, 4079, - 4079, 4079, 4079, 4079, 4079, 4079, 4079, 4079, 4079, 4079, - 4079, 4079, 4079, 4079, 4079, 4079, 4079, 4079, 4079, 4079, - 4079, 4079, 4079, 4079, 4079, 4079, 4079, 4079, 4079, 4079, - - 4079, 4079, 4079, 4079, 4079, 4079, 4079, 4079, 4079, 4079, - 4079, 4079, 4079, 4079, 4079, 4079, 4079, 4079, 4080, 4080, - 4080, 295, 0, 4080, 4080, 4080, 4080, 4080, 4080, 4080, - 4080, 4080, 4080, 4080, 4080, 0, 4080, 4080, 4080, 4080, - 4080, 4080, 4080, 4080, 4080, 4080, 4080, 4080, 4080, 4080, - 4080, 4080, 4080, 4080, 4080, 4080, 4080, 4080, 4080, 4080, - 4080, 4080, 4080, 4080, 4080, 4080, 4080, 4080, 4080, 4080, - 4080, 4080, 4080, 4080, 4080, 4080, 4080, 4080, 4080, 4080, - 4080, 4080, 4080, 4080, 4080, 4080, 4080, 4080, 4080, 4080, - 4080, 4080, 4080, 4080, 4080, 4080, 4080, 4080, 4080, 4080, - - 4080, 4080, 4080, 4080, 4080, 4091, 4091, 4091, 0, 0, - 4091, 4091, 4091, 0, 4091, 4091, 4091, 4091, 4091, 4091, - 4091, 0, 0, 0, 4091, 0, 0, 0, 0, 0, - 0, 0, 4091, 4091, 4091, 4091, 4091, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4091, 4091, 4091, 4091, 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, 4091, - 4091, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, - - 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, - 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, 4126, - 4127, 4127, 4127, 4127, 4127, 4127, 4127, 4127, 4127, 4127, - 4127, 4127, 4127, 4127, 4127, 4127, 4127, 4127, 4127, 4127, - 4127, 4127, 4127, 4127, 4127, 4127, 4127, 4127, 4127, 4128, - 4128, 4128, 4128, 4128, 4128, 4128, 4128, 4128, 4128, 4128, - 4128, 4128, 4128, 4128, 4128, 4128, 4128, 4128, 4128, 4128, - 4128, 4128, 4128, 4128, 4128, 4128, 4128, 4128, 4129, 4129, - 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, - 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4129, - - 4129, 4129, 4129, 4129, 4129, 4129, 4129, 4130, 4130, 4130, - 4130, 4130, 4130, 4130, 4130, 4130, 4130, 4130, 4130, 4130, - 4130, 4130, 4130, 4130, 4130, 4130, 4130, 4130, 4130, 4130, - 4130, 4130, 4130, 4130, 4130, 4130, 4131, 4131, 4131, 4131, - 4131, 4131, 4131, 4131, 4131, 4131, 4131, 4131, 4131, 4131, - 4131, 4131, 4131, 4131, 4131, 4131, 4131, 4131, 4131, 4131, - 4131, 4131, 4131, 4131, 4131, 4132, 4132, 4132, 4132, 4132, - 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, - 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, 4132, - 4132, 4132, 4132, 4132, 4133, 4133, 4133, 4133, 4133, 4133, - - 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, - 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, 4133, - 4133, 4133, 4133, 4134, 4134, 4134, 4134, 4134, 4134, 4134, - 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, - 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, 4134, - 4134, 4134, 4135, 4135, 4135, 4135, 4135, 4135, 4135, 4135, - 4135, 4135, 4135, 4135, 4135, 4135, 4135, 4135, 4135, 4135, - 4135, 4135, 4135, 4135, 4135, 4135, 4135, 4135, 4135, 4135, - 4135, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, - 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, - - 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, 4136, - 4137, 4137, 4137, 4137, 4137, 4137, 4137, 4137, 4137, 4137, - 4137, 4137, 4137, 4137, 4137, 4137, 4137, 4137, 4137, 4137, - 4137, 4137, 4137, 4137, 4137, 4137, 4137, 4137, 4137, 4138, - 4138, 4138, 4138, 4138, 4138, 4138, 4138, 4138, 4138, 4138, - 4138, 4138, 4138, 4138, 4138, 4138, 4138, 4138, 4138, 4138, - 4138, 4138, 4138, 4138, 4138, 4138, 4138, 4138, 4139, 4139, - 4139, 4139, 4139, 4139, 4139, 4139, 4139, 4139, 4139, 4139, - 4139, 4139, 4139, 4139, 4139, 4139, 4139, 4139, 4139, 4139, - 4139, 4139, 4139, 4139, 4139, 4139, 4139, 4140, 4140, 4140, - - 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, - 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, 4140, - 4140, 4140, 4140, 4140, 4140, 4140, 4141, 4141, 4141, 4141, - 4141, 4141, 4141, 4141, 4141, 4141, 4141, 4141, 4141, 4141, - 4141, 4141, 4141, 4141, 4141, 4141, 4141, 4141, 4141, 4141, - 4141, 4141, 4141, 4141, 4141, 4142, 4142, 4142, 4142, 4142, - 4142, 4142, 4142, 4142, 4142, 4142, 4142, 4142, 4142, 4142, - 4142, 4142, 4142, 4142, 4142, 4142, 4142, 4142, 4142, 4142, - 4142, 4142, 4142, 4142, 4143, 4143, 4143, 4143, 4143, 4143, - 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, - - 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, 4143, - 4143, 4143, 4143, 4144, 4144, 4144, 4144, 4144, 4144, 4144, - 4144, 4144, 4144, 4144, 4144, 4144, 4144, 4144, 4144, 4144, - 4144, 4144, 4144, 4144, 4144, 4144, 4144, 4144, 4144, 4144, - 4144, 4144, 4145, 4145, 4145, 4145, 4145, 4145, 4145, 4145, - 4145, 4145, 4145, 4145, 4145, 4145, 4145, 4145, 4145, 4145, - 4145, 4145, 4145, 4145, 4145, 4145, 4145, 4145, 4145, 4145, - 4145, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, - 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, - 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, 4146, - - 4147, 4147, 4147, 4147, 4147, 4147, 4147, 4147, 4147, 4147, - 4147, 4147, 4147, 4147, 4147, 4147, 4147, 4147, 4147, 4147, - 4147, 4147, 4147, 4147, 4147, 4147, 4147, 4147, 4147, 4148, - 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, - 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, - 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4148, 4149, 4149, - 4149, 4149, 4149, 4149, 4149, 4149, 4149, 4149, 4149, 4149, - 4149, 4149, 4149, 4149, 4149, 4149, 4149, 4149, 4149, 4149, - 4149, 4149, 4149, 4149, 4149, 4149, 4149, 4150, 4150, 4150, - 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, - - 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, - 4150, 4150, 4150, 4150, 4150, 4150, 4151, 4151, 4151, 4151, - 4151, 4151, 4151, 4151, 4151, 4151, 4151, 4151, 4151, 4151, - 4151, 4151, 4151, 4151, 4151, 4151, 4151, 4151, 4151, 4151, - 4151, 4151, 4151, 4151, 4151, 4152, 4152, 4152, 4152, 4152, - 4152, 4152, 4152, 4152, 4152, 4152, 4152, 4152, 4152, 4152, - 4152, 4152, 4152, 4152, 4152, 4152, 4152, 4152, 4152, 4152, - 4152, 4152, 4152, 4152, 4153, 4153, 4153, 4153, 4153, 4153, - 4153, 4153, 4153, 4153, 4153, 4153, 4153, 4153, 4153, 4153, - 4153, 4153, 4153, 4153, 4153, 4153, 4153, 4153, 4153, 4153, - - 4153, 4153, 4153, 4154, 4154, 4154, 4154, 4154, 4154, 4154, - 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, - 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, 4154, - 4154, 4154, 4155, 4155, 4155, 4155, 4155, 4155, 4155, 4155, - 4155, 4155, 4155, 4155, 4155, 4155, 4155, 4155, 4155, 4155, - 4155, 4155, 4155, 4155, 4155, 4155, 4155, 4155, 4155, 4155, - 4155, 4156, 4156, 4156, 4156, 4156, 4156, 4156, 4156, 4156, - 4156, 4156, 4156, 4156, 4156, 4156, 4156, 4156, 4156, 4156, - 4156, 4156, 4156, 4156, 4156, 4156, 4156, 4156, 4156, 4156, - 4157, 4157, 4157, 4157, 4157, 4157, 4157, 4157, 4157, 4157, - - 4157, 4157, 4157, 4157, 4157, 4157, 4157, 4157, 4157, 4157, - 4157, 4157, 4157, 4157, 4157, 4157, 4157, 4157, 4157, 4158, - 4158, 4158, 4158, 4158, 4158, 4158, 4158, 4158, 4158, 4158, - 4158, 4158, 4158, 4158, 4158, 4158, 4158, 4158, 4158, 4158, - 4158, 4158, 4158, 4158, 4158, 4158, 4158, 4158, 4159, 4159, - 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, - 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4159, - 4159, 4159, 4159, 4159, 4159, 4159, 4159, 4160, 4160, 4160, - 4160, 4160, 4160, 4160, 4160, 4160, 4160, 4160, 4160, 4160, - 4160, 4160, 4160, 4160, 4160, 4160, 4160, 4160, 4160, 4160, - - 4160, 4160, 4160, 4160, 4160, 4160, 4161, 4161, 4161, 4161, - 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, - 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, 4161, - 4161, 4161, 4161, 4161, 4161, 4162, 4162, 4162, 4162, 4162, - 4162, 4162, 4162, 4162, 4162, 4162, 4162, 4162, 4162, 4162, - 4162, 4162, 4162, 4162, 4162, 4162, 4162, 4162, 4162, 4162, - 4162, 4162, 4162, 4162, 4163, 4163, 4163, 4163, 4163, 4163, - 4163, 4163, 4163, 4163, 4163, 4163, 4163, 4163, 4163, 4163, - 4163, 4163, 4163, 4163, 4163, 4163, 4163, 4163, 4163, 4163, - 4163, 4163, 4163, 4164, 4164, 4164, 4164, 4164, 4164, 4164, - - 4164, 4164, 4164, 4164, 4164, 4164, 4164, 4164, 4164, 4164, - 4164, 4164, 4164, 4164, 4164, 4164, 4164, 4164, 4164, 4164, - 4164, 4164, 4165, 4165, 4165, 4165, 4165, 4165, 4165, 4165, - 4165, 4165, 4165, 4165, 4165, 4165, 4165, 4165, 4165, 4165, - 4165, 4165, 4165, 4165, 4165, 4165, 4165, 4165, 4165, 4165, - 4165, 4166, 4166, 4166, 4166, 4166, 4166, 4166, 4166, 4166, - 4166, 4166, 4166, 4166, 4166, 4166, 4166, 4166, 4166, 4166, - 4166, 4166, 4166, 4166, 4166, 4166, 4166, 4166, 4166, 4166, - 4167, 4167, 4167, 4167, 4167, 4167, 4167, 4167, 4167, 4167, - 4167, 4167, 4167, 4167, 4167, 4167, 4167, 4167, 4167, 4167, - - 4167, 4167, 4167, 4167, 4167, 4167, 4167, 4167, 4167, 4168, - 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168, - 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168, - 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4168, 4169, 4169, - 4169, 4169, 4169, 4169, 4169, 4169, 4169, 4169, 4169, 4169, - 4169, 4169, 4169, 4169, 4169, 4169, 4169, 4169, 4169, 4169, - 4169, 4169, 4169, 4169, 4169, 4169, 4169, 4170, 4170, 4170, - 4170, 4170, 4170, 4170, 4170, 4170, 4170, 4170, 4170, 4170, - 4170, 4170, 4170, 4170, 4170, 4170, 4170, 4170, 4170, 4170, - 4170, 4170, 4170, 4170, 4170, 4170, 4171, 4171, 4171, 4171, - - 4171, 4171, 4171, 4171, 4171, 4171, 4171, 4171, 4171, 4171, - 4171, 4171, 4171, 4171, 4171, 4171, 4171, 4171, 4171, 4171, - 4171, 4171, 4171, 4171, 4171, 4172, 4172, 4172, 4172, 4172, - 4172, 4172, 4172, 4172, 4172, 4172, 4172, 4172, 4172, 4172, - 4172, 4172, 4172, 4172, 4172, 4172, 4172, 4172, 4172, 4172, - 4172, 4172, 4172, 4172, 4173, 4173, 4173, 4173, 4173, 4173, - 4173, 4173, 4173, 4173, 4173, 4173, 4173, 4173, 4173, 4173, - 4173, 4173, 4173, 4173, 4173, 4173, 4173, 4173, 4173, 4173, - 4173, 4173, 4173, 4174, 4174, 4174, 4174, 4174, 4174, 4174, - 4174, 4174, 4174, 4174, 4174, 4174, 4174, 4174, 4174, 4174, - - 4174, 4174, 4174, 4174, 4174, 4174, 4174, 4174, 4174, 4174, - 4174, 4174, 4175, 4175, 4175, 4175, 4175, 4175, 4175, 4175, - 4175, 4175, 4175, 4175, 4175, 4175, 4175, 4175, 4175, 4175, - 4175, 4175, 4175, 4175, 4175, 4175, 4175, 4175, 4175, 4175, - 4175, 4176, 4176, 4176, 4176, 4176, 4176, 4176, 4176, 4176, - 4176, 4176, 4176, 4176, 4176, 4176, 4176, 4176, 4176, 4176, - 4176, 4176, 4176, 4176, 4176, 4176, 4176, 4176, 4176, 4176, - 4177, 4177, 4177, 4177, 4177, 4177, 4177, 4177, 4177, 4177, - 4177, 4177, 4177, 4177, 4177, 4177, 4177, 4177, 4177, 4177, - 4177, 4177, 4177, 4177, 4177, 4177, 4177, 4177, 4177, 4178, - - 4178, 4178, 4178, 4178, 4178, 4178, 4178, 4178, 4178, 4178, - 4178, 4178, 4178, 4178, 4178, 4178, 4178, 4178, 4178, 4178, - 4178, 4178, 4178, 4178, 4178, 4178, 4178, 4178, 4179, 4179, - 4179, 4179, 4179, 4179, 4179, 4179, 4179, 4179, 4179, 4179, - 4179, 4179, 4179, 4179, 4179, 4179, 4179, 4179, 4179, 4179, - 4179, 4179, 4179, 4179, 4179, 4179, 4179, 4180, 4180, 4180, - 4180, 4180, 4180, 4180, 4180, 4180, 4180, 4180, 4180, 4180, - 4180, 4180, 4180, 4180, 4180, 4180, 4180, 4180, 4180, 4180, - 4180, 4180, 4180, 4180, 4180, 4180, 4181, 4181, 4181, 4181, - 4181, 4181, 4181, 4181, 4181, 4181, 4181, 4181, 4181, 4181, - - 4181, 4181, 4181, 4181, 4181, 4181, 4181, 4181, 4181, 4181, - 4181, 4181, 4181, 4181, 4181, 4182, 4182, 4182, 4182, 4182, - 4182, 4182, 4182, 4182, 4182, 4182, 4182, 4182, 4182, 4182, - 4182, 4182, 4182, 4182, 4182, 4182, 4182, 4182, 4182, 4182, - 4182, 4182, 4182, 4182, 4183, 4183, 4183, 4183, 4183, 4183, - 4183, 4183, 4183, 4183, 4183, 4183, 4183, 4183, 4183, 4183, - 4183, 4183, 4183, 4183, 4183, 4183, 4183, 4183, 4183, 4183, - 4183, 4183, 4183, 4184, 4184, 4184, 4184, 4184, 4184, 4184, - 4184, 4184, 4184, 4184, 4184, 4184, 4184, 4184, 4184, 4184, - 4184, 4184, 4184, 4184, 4184, 4184, 4184, 4184, 4184, 4184, - - 4184, 4184, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, - 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, - 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, 4185, - 4185, 4186, 4186, 4186, 4186, 4186, 4186, 4186, 4186, 4186, - 4186, 4186, 4186, 4186, 4186, 4186, 4186, 4186, 4186, 4186, - 4186, 4186, 4186, 4186, 4186, 4186, 4186, 4186, 4186, 4186, - 4187, 4187, 4187, 4187, 4187, 4187, 4187, 4187, 4187, 4187, - 4187, 4187, 4187, 4187, 4187, 4187, 4187, 4187, 4187, 4187, - 4187, 4187, 4187, 4187, 4187, 4187, 4187, 4187, 4187, 4188, - 4188, 4188, 4188, 4188, 4188, 4188, 4188, 4188, 4188, 4188, - - 4188, 4188, 4188, 4188, 4188, 4188, 4188, 4188, 4188, 4188, - 4188, 4188, 4188, 4188, 4188, 4188, 4188, 4188, 4189, 4189, - 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4189, - 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4189, - 4189, 4189, 4189, 4189, 4189, 4189, 4189, 4190, 4190, 4190, - 4190, 4190, 4190, 4190, 4190, 4190, 4190, 4190, 4190, 4190, - 4190, 4190, 4190, 4190, 4190, 4190, 4190, 4190, 4190, 4190, - 4190, 4190, 4190, 4190, 4190, 4190, 4191, 4191, 4191, 4191, - 4191, 4191, 4191, 4191, 4191, 4191, 4191, 4191, 4191, 4191, - 4191, 4191, 4191, 4191, 4191, 4191, 4191, 4191, 4191, 4191, - - 4191, 4191, 4191, 4191, 4191, 4192, 4192, 4192, 4192, 4192, - 4192, 4192, 4192, 4192, 4192, 4192, 4192, 4192, 4192, 4192, - 4192, 4192, 4192, 4192, 4192, 4192, 4192, 4192, 4192, 4192, - 4192, 4192, 4192, 4192, 4193, 4193, 4193, 4193, 4193, 4193, - 4193, 4193, 4193, 4193, 4193, 4193, 4193, 4193, 4193, 4193, - 4193, 4193, 4193, 4193, 4193, 4193, 4193, 4193, 4193, 4193, - 4193, 4193, 4193, 4194, 4194, 4194, 4194, 4194, 4194, 4194, - 4194, 4194, 4194, 4194, 4194, 4194, 4194, 4194, 4194, 4194, - 4194, 4194, 4194, 4194, 4194, 4194, 4194, 4194, 4194, 4194, - 4194, 4194, 4195, 4195, 4195, 4195, 4195, 4195, 4195, 4195, - - 4195, 4195, 4195, 4195, 4195, 4195, 4195, 4195, 4195, 4195, - 4195, 4195, 4195, 4195, 4195, 4195, 4195, 4195, 4195, 4195, - 4195, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, - 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, - 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, 4196, - 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, - 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, - 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4198, - 4198, 4198, 4198, 4198, 4198, 4198, 4198, 4198, 4198, 4198, - 4198, 4198, 4198, 4198, 4198, 4198, 4198, 4198, 4198, 4198, - - 4198, 4198, 4198, 4198, 4198, 4198, 4198, 4198, 4199, 4199, - 4199, 4199, 4199, 4199, 4199, 4199, 4199, 4199, 4199, 4199, - 4199, 4199, 4199, 4199, 4199, 4199, 4199, 4199, 4199, 4199, - 4199, 4199, 4199, 4199, 4199, 4199, 4199, 4200, 4200, 4200, - 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, - 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, 4200, - 4200, 4200, 4200, 4200, 4200, 4200, 4201, 4201, 4201, 4201, - 4201, 4201, 4201, 4201, 4201, 4201, 4201, 4201, 4201, 4201, - 4201, 4201, 4201, 4201, 4201, 4201, 4201, 4201, 4201, 4201, - 4201, 4201, 4201, 4201, 4201, 4202, 4202, 4202, 4202, 4202, - - 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, - 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, 4202, - 4202, 4202, 4202, 4202, 4203, 4203, 4203, 4203, 4203, 4203, - 4203, 4203, 4203, 4203, 4203, 4203, 4203, 4203, 4203, 4203, - 4203, 4203, 4203, 4203, 4203, 4203, 4203, 4203, 4203, 4203, - 4203, 4203, 4203, 4204, 4204, 4204, 4204, 4204, 4204, 4204, - 4204, 4204, 4204, 4204, 4204, 4204, 4204, 4204, 4204, 4204, - 4204, 4204, 4204, 4204, 4204, 4204, 4204, 4204, 4204, 4204, - 4204, 4204, 4205, 4205, 4205, 4205, 4205, 4205, 4205, 4205, - 4205, 4205, 4205, 4205, 4205, 4205, 4205, 4205, 4205, 4205, - - 4205, 4205, 4205, 4205, 4205, 4205, 4205, 4205, 4205, 4205, - 4205, 4206, 4206, 4206, 4206, 4206, 4206, 4206, 4206, 4206, - 4206, 4206, 4206, 4206, 4206, 4206, 4206, 4206, 4206, 4206, - 4206, 4206, 4206, 4206, 4206, 4206, 4206, 4206, 4206, 4206, - 4207, 4207, 4207, 4207, 4207, 4207, 4207, 4207, 4207, 4207, - 4207, 4207, 4207, 4207, 4207, 4207, 4207, 4207, 4207, 4207, - 4207, 4207, 4207, 4207, 4207, 4207, 4207, 4207, 4207, 4208, - 4208, 4208, 4208, 4208, 4208, 4208, 4208, 4208, 4208, 4208, - 4208, 4208, 4208, 4208, 4208, 4208, 4208, 4208, 4208, 4208, - 4208, 4208, 4208, 4208, 4208, 4208, 4208, 4208, 4209, 4209, - - 4209, 4209, 4209, 4209, 4209, 4209, 4209, 4209, 4209, 4209, - 4209, 4209, 4209, 4209, 4209, 4209, 4209, 4209, 4209, 4209, - 4209, 4209, 4209, 4209, 4209, 4209, 4209, 4210, 4210, 4210, - 4210, 4210, 4210, 4210, 4210, 4210, 4210, 4210, 4210, 4210, - 4210, 4210, 4210, 4210, 4210, 4210, 4210, 4210, 4210, 4210, - 4210, 4210, 4210, 4210, 4210, 4210, 4211, 4211, 4211, 4211, - 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, - 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, 4211, - 4211, 4211, 4211, 4211, 4211, 4212, 4212, 4212, 4212, 4212, - 4212, 4212, 4212, 4212, 4212, 4212, 4212, 4212, 4212, 4212, - - 4212, 4212, 4212, 4212, 4212, 4212, 4212, 4212, 4212, 4212, - 4212, 4212, 4212, 4212, 4214, 4214, 4214, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4214, 4214, 4214, 0, 0, 4214, 4217, 4217, 4217, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 4217, 0, 0, - 0, 4217, 4218, 4218, 4218, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4218, 4218, - 0, 0, 0, 4218, 4219, 4219, 0, 4219, 4219, 4219, - 4219, 4219, 4219, 4219, 4219, 4219, 4219, 4219, 4219, 4219, - - 4219, 4219, 4219, 4219, 4219, 4219, 4219, 4219, 4219, 4219, - 4219, 4219, 4219, 4221, 4221, 4221, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 4221, - 4221, 4221, 0, 0, 4221, 4223, 4223, 4223, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 4223, 4223, 4223, 0, 0, 4223, 4226, 4226, 0, - 0, 4226, 0, 4226, 4226, 0, 4226, 4226, 4226, 4226, - 4226, 4226, 4226, 0, 4226, 4226, 4226, 4226, 4226, 4226, - 4226, 4226, 4226, 0, 0, 4226, 4227, 4227, 4227, 4227, - 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, - - 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, 4227, - 4227, 4227, 4227, 4227, 4227, 4228, 4228, 0, 0, 4228, - 4228, 4228, 4228, 4228, 4228, 4228, 4228, 4228, 4228, 4228, - 4228, 4228, 4228, 4228, 4228, 4228, 4228, 4228, 4228, 4228, - 4228, 4228, 4228, 4228, 4229, 4229, 0, 4229, 4229, 4229, - 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, - 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, 4229, - 4229, 4229, 4229, 4230, 4230, 4230, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 4230, - 4230, 0, 0, 0, 4230, 4232, 4232, 4232, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 4232, 4232, 0, 0, 0, 4232, 4234, 4234, 0, - 4234, 4234, 0, 4234, 4234, 0, 4234, 4234, 4234, 4234, - 4234, 4234, 4234, 0, 4234, 4234, 4234, 4234, 4234, 4234, - 4234, 0, 4234, 0, 0, 4234, 4235, 4235, 4235, 4235, - 4235, 4235, 4235, 4235, 4235, 4235, 4235, 4235, 4235, 4235, - 4235, 4235, 4235, 4235, 4235, 4235, 4235, 4235, 4235, 4235, - 4235, 4235, 4235, 4235, 4235, 4236, 4236, 0, 4236, 4236, - 4236, 4236, 4236, 4236, 4236, 4236, 4236, 4236, 4236, 4236, - 4236, 4236, 4236, 4236, 4236, 4236, 4236, 4236, 4236, 4236, - - 4236, 4236, 4236, 4236, 4237, 4237, 0, 4237, 4237, 4237, - 4237, 4237, 4237, 4237, 4237, 4237, 4237, 4237, 4237, 4237, - 4237, 4237, 4237, 4237, 4237, 4237, 4237, 4237, 4237, 4237, - 4237, 4237, 4237, 4238, 4238, 0, 4238, 4238, 4238, 4238, - 4238, 4238, 4238, 4238, 0, 4238, 4238, 4238, 4238, 4238, - 4238, 4238, 4238, 4238, 4238, 4238, 4238, 4238, 4238, 4238, - 4238, 4238, 4239, 4239, 4239, 4239, 4239, 4239, 4239, 4239, - 4239, 4239, 4239, 4239, 4239, 4239, 4239, 4239, 4239, 4239, - 4239, 4239, 4239, 4239, 4239, 4239, 4239, 4239, 4239, 4239, - 4239, 4240, 4240, 4240, 4240, 4240, 4240, 4240, 4240, 4240, - - 4240, 4240, 4240, 4240, 4240, 4240, 4240, 4240, 4240, 4240, - 4240, 4240, 4240, 4240, 4240, 4240, 4240, 4240, 4240, 4240, - 4241, 4241, 4241, 4241, 4241, 4241, 4241, 4241, 4241, 4241, - 4241, 4241, 4241, 4241, 4241, 4241, 4241, 4241, 4241, 4241, - 4241, 4241, 4241, 4241, 4241, 4241, 4241, 4241, 4241, 4242, - 0, 0, 4242, 4242, 4242, 4242, 4242, 4242, 4242, 4242, - 0, 4242, 4242, 4242, 4242, 0, 4242, 4242, 4242, 4242, - 4242, 4242, 4242, 0, 4242, 4242, 4242, 4242, 4243, 4243, - 4243, 4243, 4243, 4243, 4243, 4243, 4243, 4243, 4243, 4243, - 4243, 4243, 4243, 4243, 4243, 4243, 4243, 4243, 4243, 4243, - - 4243, 4243, 4243, 4243, 4243, 4243, 4243, 4244, 4244, 0, - 4244, 4244, 0, 4244, 4244, 4244, 4244, 4244, 4244, 4244, - 4244, 4244, 4244, 4244, 4244, 4244, 4244, 4244, 4244, 4244, - 0, 4244, 0, 4244, 4244, 4244, 4245, 4245, 4245, 4245, - 4245, 4245, 4245, 4245, 4245, 4245, 4245, 4245, 4245, 4245, - 4245, 4245, 4245, 4245, 4245, 4245, 4245, 4245, 4245, 4245, - 4245, 4245, 4245, 4245, 4245, 4247, 4247, 0, 4247, 4247, - 4247, 4247, 4247, 4247, 4247, 4247, 4247, 4247, 4247, 4247, - 4247, 4247, 4247, 4247, 4247, 4247, 4247, 4247, 4247, 4247, - 4247, 4247, 4247, 4247, 4248, 4248, 4248, 4248, 4248, 4248, - - 4248, 4248, 4248, 4248, 4248, 4248, 4248, 4248, 4248, 4248, - 4248, 4248, 4248, 4248, 4248, 4248, 4248, 4248, 4248, 4248, - 4248, 4248, 4248, 4249, 4249, 0, 4249, 4249, 4249, 4249, - 4249, 4249, 4249, 4249, 4249, 4249, 4249, 4249, 4249, 4249, - 4249, 4249, 4249, 4249, 4249, 4249, 4249, 4249, 4249, 4249, - 4249, 4249, 4251, 4251, 4251, 4251, 4251, 4251, 4251, 4251, - 4251, 4251, 4251, 4251, 4251, 4251, 4251, 4251, 4251, 4251, - 4251, 4251, 4251, 4251, 4251, 4251, 4251, 4251, 4251, 4251, - 4251, 4252, 4252, 4252, 4252, 4252, 4252, 4252, 4252, 4252, - 4252, 4252, 4252, 4252, 4252, 4252, 4252, 4252, 4252, 4252, - - 4252, 4252, 4252, 4252, 4252, 4252, 4252, 4252, 4252, 4252, - 4253, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4253, 0, 0, 0, 0, 0, 4253, 0, 0, 0, - 4253, 4253, 0, 4253, 4254, 4254, 4254, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4254, 4254, 4254, 0, 0, 4254, 4256, 4256, 0, 4256, - 4256, 0, 4256, 4256, 4256, 4256, 4256, 4256, 4256, 4256, - 4256, 4256, 4256, 4256, 4256, 4256, 4256, 4256, 4256, 4256, - 4256, 4256, 4256, 4256, 4256, 4257, 0, 4257, 4257, 4257, - 4257, 4257, 0, 0, 0, 4257, 0, 4257, 4258, 4258, - - 0, 4258, 4258, 0, 4258, 4258, 4258, 4258, 4258, 4258, - 4258, 4258, 4258, 4258, 4258, 4258, 4258, 4258, 4258, 4258, - 4258, 4258, 4258, 4258, 4258, 4258, 4258, 4259, 0, 4259, - 4259, 4259, 4259, 4259, 0, 4259, 0, 4259, 0, 4259, - 4260, 4260, 4260, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 4260, 4260, 0, 0, - 0, 4260, 4265, 4265, 0, 4265, 4265, 4265, 4265, 4265, - 4265, 4265, 4265, 4265, 4265, 4265, 4265, 4265, 4265, 4265, - 4265, 4265, 4265, 4265, 4265, 4265, 4265, 4265, 4265, 4265, - 4265, 4266, 4266, 4266, 4266, 4266, 4266, 4266, 4266, 4266, - - 4266, 4266, 4266, 4266, 4266, 4266, 4266, 4266, 4266, 4266, - 4266, 4266, 4266, 4266, 4266, 4266, 4266, 4266, 4266, 4266, - 4268, 4268, 4268, 4268, 4268, 4268, 4268, 4268, 4268, 4268, - 4268, 4268, 4268, 4268, 4268, 4268, 4268, 4268, 4268, 4268, - 4268, 4268, 4268, 4268, 4268, 4268, 4268, 4268, 4268, 4269, - 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, - 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, - 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4269, 4270, 4270, - 4270, 4270, 4270, 4270, 4270, 4270, 4270, 4270, 4270, 4270, - 4270, 4270, 4270, 4270, 4270, 4270, 4270, 4270, 4270, 4270, - - 4270, 4270, 4270, 4270, 4270, 4270, 4270, 4271, 4271, 0, - 4271, 4271, 4271, 4271, 4271, 4271, 4271, 4271, 4271, 4271, - 4271, 4271, 4271, 4271, 4271, 4271, 4271, 4271, 4271, 4271, - 4271, 4271, 4271, 4271, 4271, 4271, 4272, 4272, 0, 4272, - 4272, 0, 4272, 4272, 4272, 4272, 4272, 4272, 4272, 4272, - 4272, 4272, 4272, 4272, 4272, 4272, 4272, 4272, 4272, 4272, - 4272, 4272, 4272, 4272, 4272, 4273, 0, 4273, 4273, 4273, - 4273, 4273, 0, 0, 0, 4273, 0, 4273, 4274, 4274, - 4274, 4274, 4274, 4274, 4274, 4274, 4274, 4274, 4274, 4274, - 4274, 4274, 4274, 4274, 4274, 4274, 4274, 4274, 4274, 4274, - - 4274, 4274, 4274, 4274, 4274, 4274, 4274, 4275, 4275, 4275, - 4275, 4275, 4275, 4275, 4275, 4275, 4275, 4275, 4275, 4275, - 4275, 4275, 4275, 4275, 4275, 4275, 4275, 4275, 4275, 4275, - 4275, 4275, 4275, 4275, 4275, 4275, 4276, 4276, 0, 4276, - 4276, 0, 4276, 4276, 4276, 4276, 4276, 4276, 4276, 4276, - 4276, 4276, 4276, 4276, 4276, 4276, 4276, 4276, 4276, 4276, - 4276, 4276, 4276, 4276, 4276, 4277, 0, 4277, 4277, 4277, - 4277, 4277, 0, 0, 0, 4277, 0, 4277, 4278, 4278, - 0, 4278, 4278, 0, 4278, 4278, 4278, 4278, 4278, 4278, - 4278, 4278, 4278, 4278, 4278, 4278, 4278, 4278, 4278, 4278, - - 4278, 4278, 4278, 4278, 4278, 4278, 4278, 4279, 0, 4279, - 4279, 4279, 4279, 4279, 0, 0, 0, 4279, 0, 4279, - 4280, 4280, 4280, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 4280, 4280, 0, 0, - 0, 4280, 4281, 4281, 4281, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4281, 4281, - 0, 0, 0, 4281, 4283, 4283, 4283, 0, 0, 0, - 4283, 0, 0, 0, 4283, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 4283, 4285, 0, 0, 4285, - 4285, 4285, 4285, 4285, 4285, 4285, 4285, 4285, 4285, 4285, - - 4285, 4285, 0, 4285, 4285, 4285, 4285, 0, 4285, 4285, - 0, 4285, 4285, 4285, 4285, 4286, 4286, 4286, 4286, 4286, - 4286, 4286, 4286, 4286, 4286, 4286, 4286, 4286, 4286, 4286, - 4286, 4286, 4286, 4286, 4286, 4286, 4286, 4286, 4286, 4286, - 4286, 4286, 4286, 4286, 4290, 0, 4290, 4290, 4290, 4290, - 4290, 0, 0, 0, 4290, 0, 4290, 4291, 0, 4291, - 4291, 4291, 4291, 4291, 0, 0, 4291, 4291, 0, 4291, - 4292, 0, 4292, 4292, 4292, 4292, 4292, 0, 0, 4292, - 4292, 0, 4292, 4293, 0, 0, 4293, 0, 0, 4293, - 0, 4293, 4293, 4293, 4293, 4293, 0, 0, 4293, 4293, - - 0, 4293, 0, 0, 0, 4293, 4294, 4294, 0, 4294, - 4294, 4294, 4294, 4294, 4294, 4294, 4294, 4294, 4294, 4294, - 4294, 4294, 4294, 4294, 4294, 4294, 4294, 4294, 4294, 4294, - 4294, 4294, 4294, 4294, 4294, 4295, 4295, 0, 4295, 4295, - 0, 0, 0, 4295, 4296, 4296, 4296, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4296, 4296, 0, 0, 0, 4296, 4298, 0, 0, 4298, - 0, 4298, 4298, 4298, 0, 0, 4298, 0, 4298, 4298, - 4298, 4298, 4298, 0, 4298, 4298, 0, 4298, 0, 0, - 4298, 4299, 0, 0, 4299, 0, 4299, 4299, 4299, 0, - - 0, 4299, 0, 4299, 4299, 4299, 4299, 4299, 0, 4299, - 4299, 0, 4299, 0, 0, 4299, 4300, 0, 0, 4300, - 0, 4300, 4300, 4300, 0, 0, 4300, 0, 4300, 4300, - 4300, 4300, 4300, 0, 4300, 4300, 0, 4300, 0, 0, - 4300, 4301, 4301, 0, 4301, 4301, 4301, 4301, 4301, 4301, - 4301, 4301, 4301, 4301, 4301, 4301, 4301, 0, 4301, 4301, - 0, 4301, 4301, 4301, 4301, 0, 4301, 4301, 4301, 4301, - 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, - 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, - 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4302, 4303, - - 0, 0, 4303, 4303, 0, 4303, 0, 4303, 4303, 4303, - 4303, 4303, 0, 0, 0, 4303, 0, 0, 0, 0, - 0, 4303, 4304, 4304, 0, 0, 0, 0, 4304, 0, - 4304, 4304, 0, 0, 0, 4304, 4305, 4305, 0, 4305, - 4305, 0, 4305, 4305, 4305, 4305, 4305, 4305, 4305, 4305, - 4305, 4305, 4305, 4305, 4305, 4305, 4305, 4305, 4305, 4305, - 4305, 4305, 4305, 4305, 4305, 4306, 0, 4306, 4306, 4306, - 4306, 4306, 0, 0, 0, 4306, 0, 4306, 4307, 4307, - 0, 4307, 4307, 0, 4307, 4307, 4307, 4307, 4307, 4307, - 4307, 4307, 4307, 4307, 4307, 4307, 4307, 4307, 4307, 4307, - - 4307, 4307, 4307, 4307, 4307, 4307, 4307, 4308, 0, 4308, - 4308, 4308, 4308, 4308, 0, 0, 0, 4308, 0, 4308, - 4309, 0, 4309, 4309, 4309, 4309, 0, 0, 0, 0, - 4309, 4310, 0, 0, 0, 0, 0, 4310, 0, 4310, - 4310, 4310, 4310, 4310, 0, 0, 4310, 4310, 0, 0, - 0, 0, 0, 4310, 4311, 4311, 4311, 4311, 4311, 4311, - 4311, 4311, 4311, 4311, 4311, 4311, 4311, 4311, 4311, 4311, - 4311, 4311, 4311, 0, 4311, 4311, 4311, 4311, 4311, 4311, - 4311, 4311, 4311, 4312, 4312, 4312, 4312, 4312, 4312, 4312, - 4312, 4312, 4312, 4312, 4312, 4312, 4312, 4312, 4312, 4312, - - 4312, 4312, 4312, 4312, 4312, 4312, 4312, 4312, 4312, 4312, - 4312, 4312, 4314, 0, 0, 0, 4314, 4314, 4314, 4314, - 4314, 4314, 4314, 4314, 4314, 4314, 4314, 4314, 4314, 4314, - 4314, 4314, 4314, 4314, 4314, 4314, 4314, 4314, 4314, 4314, - 4314, 4315, 4315, 4315, 4315, 4315, 4315, 4315, 4315, 4315, - 4315, 4315, 4315, 4315, 4315, 4315, 4315, 4315, 4315, 4315, - 4315, 4315, 4315, 4315, 4315, 4315, 4315, 4315, 4315, 4315, - 4316, 0, 0, 0, 4316, 4316, 4316, 4316, 4316, 4316, - 4316, 4316, 4316, 4316, 4316, 4316, 4316, 4316, 4316, 4316, - 4316, 4316, 4316, 4316, 4316, 4316, 4316, 4316, 4316, 4317, - - 4317, 4317, 4317, 4317, 4317, 4317, 4317, 4317, 4317, 4317, - 4317, 4317, 4317, 4317, 4317, 4317, 4317, 4317, 4317, 4317, - 4317, 4317, 4317, 4317, 4317, 4317, 4317, 4317, 4318, 0, - 0, 0, 4318, 4318, 4318, 4318, 4318, 4318, 4318, 4318, - 4318, 4318, 4318, 4318, 4318, 4318, 4318, 4318, 4318, 4318, - 4318, 4318, 4318, 4318, 4318, 4318, 4318, 4319, 4319, 4319, - 4319, 4319, 4319, 4319, 4319, 4319, 4319, 4319, 4319, 4319, - 4319, 4319, 4319, 4319, 4319, 4319, 4319, 4319, 4319, 4319, - 4319, 4319, 4319, 4319, 4319, 4319, 4320, 0, 0, 0, - 4320, 4320, 4320, 4320, 4320, 4320, 4320, 4320, 4320, 4320, - - 4320, 4320, 4320, 4320, 4320, 4320, 4320, 4320, 4320, 4320, - 4320, 4320, 4320, 4320, 4320, 4321, 4321, 4321, 4321, 4321, - 4321, 4321, 4321, 4321, 4321, 4321, 4321, 4321, 4321, 4321, - 4321, 4321, 4321, 4321, 4321, 4321, 4321, 4321, 4321, 4321, - 4321, 4321, 4321, 4321, 4322, 4322, 4322, 4322, 4322, 4322, - 4322, 4322, 4322, 4322, 4322, 4322, 4322, 4322, 4322, 4322, - 4322, 4322, 4322, 4322, 4322, 4322, 4322, 4322, 4322, 4322, - 4322, 4322, 4322, 4323, 4323, 4323, 4323, 4323, 4323, 4323, - 4323, 4323, 4323, 4323, 4323, 4323, 4323, 4323, 4323, 4323, - 4323, 4323, 4323, 4323, 4323, 4323, 4323, 4323, 4323, 4323, - - 4323, 4323, 4324, 4324, 4324, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4324, 4324, - 0, 0, 0, 4324, 4326, 4326, 4326, 4326, 4326, 4326, - 4326, 4326, 4326, 4326, 4326, 4326, 4326, 4326, 4326, 4326, - 4326, 4326, 4326, 4326, 4326, 0, 4326, 4326, 0, 4326, - 4326, 4326, 4326, 4327, 4327, 4327, 4327, 4327, 4327, 4327, - 4327, 4327, 4327, 4327, 4327, 4327, 4327, 4327, 4327, 4327, - 4327, 4327, 4327, 4327, 4327, 4327, 4327, 4327, 4327, 4327, - 4327, 4327, 4328, 4328, 0, 4328, 4328, 0, 4328, 4328, - 4328, 4328, 4328, 4328, 4328, 4328, 4328, 4328, 4328, 4328, - - 4328, 4328, 4328, 4328, 4328, 4328, 4328, 4328, 4328, 4328, - 4328, 4329, 0, 4329, 4329, 4329, 4329, 4329, 0, 0, - 0, 4329, 0, 4329, 4330, 4330, 0, 4330, 4330, 4330, - 4330, 4330, 4330, 4330, 4330, 4330, 4330, 4330, 4330, 4330, - 4330, 4330, 4330, 4330, 4330, 4330, 4330, 4330, 4330, 4330, - 4330, 4330, 4330, 4331, 4331, 4331, 4331, 4331, 4331, 4331, - 4331, 4331, 4331, 4331, 4331, 4331, 4331, 4331, 4331, 4331, - 4331, 4331, 4331, 4331, 4331, 4331, 4331, 4331, 4331, 4331, - 4331, 4331, 4332, 4332, 4332, 4332, 4332, 4332, 4332, 4332, - 4332, 4332, 4332, 4332, 4332, 4332, 4332, 4332, 4332, 4332, - - 4332, 4332, 4332, 4332, 4332, 4332, 4332, 4332, 4332, 4332, - 4332, 4333, 4333, 4333, 4333, 4333, 4333, 4333, 4333, 4333, - 4333, 4333, 4333, 4333, 4333, 4333, 4333, 4333, 4333, 4333, - 4333, 4333, 4333, 4333, 4333, 4333, 4333, 4333, 4333, 4333, - 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, - 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, - 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4335, 4336, - 4336, 4336, 4336, 4336, 4336, 4336, 4336, 4336, 4336, 4336, - 4336, 4336, 4336, 4336, 4336, 4336, 4336, 4336, 4336, 4336, - 4336, 4336, 4336, 4336, 4336, 4336, 4336, 4336, 4338, 4338, - - 0, 4338, 4338, 0, 4338, 4338, 4338, 4338, 4338, 4338, - 4338, 4338, 4338, 4338, 4338, 4338, 4338, 4338, 4338, 4338, - 4338, 4338, 4338, 4338, 4338, 4338, 4338, 4339, 0, 0, - 0, 0, 0, 4339, 0, 4339, 4339, 4339, 4339, 4339, - 0, 0, 4339, 4339, 0, 0, 0, 0, 0, 4339, - 4340, 0, 0, 0, 0, 0, 4340, 0, 4340, 4340, - 4340, 4340, 4340, 0, 0, 4340, 4340, 0, 4340, 0, - 0, 0, 4340, 4341, 0, 4341, 4341, 4341, 4341, 4341, - 0, 0, 0, 4341, 0, 4341, 4342, 4342, 0, 4342, - 4342, 0, 4342, 4342, 4342, 4342, 4342, 4342, 4342, 4342, - - 4342, 4342, 4342, 4342, 4342, 4342, 4342, 4342, 4342, 4342, - 4342, 4342, 4342, 4342, 4342, 4343, 0, 4343, 4343, 4343, - 4343, 4343, 0, 0, 0, 4343, 0, 4343, 4345, 4345, - 4345, 4345, 4345, 4345, 4345, 4345, 4345, 4345, 4345, 0, - 4345, 4345, 4345, 4345, 4345, 4345, 4345, 4345, 4345, 4345, - 4345, 4345, 4345, 4345, 4345, 4345, 4345, 4346, 4346, 4346, - 4346, 4346, 4346, 4346, 4346, 4346, 4346, 4346, 4346, 4346, - 4346, 4346, 4346, 4346, 4346, 4346, 4346, 4346, 4346, 4346, - 4346, 4346, 4346, 4346, 4346, 4346, 4347, 4347, 4347, 4347, - 4347, 4347, 4347, 4347, 4347, 4347, 4347, 4347, 4347, 4347, - - 4347, 4347, 4347, 4347, 4347, 4347, 4347, 4347, 4347, 4347, - 4347, 4347, 4347, 4347, 4347, 4348, 4348, 0, 4348, 4348, - 0, 4348, 4348, 0, 4348, 4348, 4348, 4348, 4348, 4348, - 4348, 4348, 4348, 4348, 4348, 4348, 4348, 4348, 4348, 0, - 4348, 4348, 4348, 4348, 4349, 4349, 4349, 4349, 4349, 4349, - 4349, 4349, 4349, 4349, 4349, 4349, 4349, 4349, 4349, 4349, - 4349, 4349, 4349, 4349, 4349, 4349, 4349, 4349, 4349, 4349, - 4349, 4349, 4349, 4350, 4350, 0, 4350, 4350, 4350, 4350, - 4350, 4350, 4350, 4350, 4350, 4350, 4350, 4350, 4350, 4350, - 4350, 4350, 4350, 4350, 4350, 4350, 4350, 4350, 4350, 4350, - - 4350, 4350, 4351, 4351, 0, 4351, 4351, 0, 4351, 4351, - 0, 0, 0, 4351, 4351, 4351, 4351, 4351, 0, 4351, - 4351, 4351, 4351, 4351, 4351, 4351, 4351, 4351, 4351, 4351, - 4351, 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, 4352, - 4353, 4353, 0, 4353, 4353, 4353, 4353, 4353, 4353, 4353, - 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, - 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4354, - 4354, 0, 4354, 4354, 4354, 4354, 4354, 4354, 4354, 4354, - - 0, 4354, 4354, 4354, 4354, 4354, 4354, 4354, 4354, 4354, - 4354, 4354, 4354, 4354, 4354, 4354, 4354, 4354, 4355, 4355, - 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, - 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4355, - 4355, 4355, 4355, 4355, 4355, 4355, 4355, 4356, 4356, 0, - 4356, 4356, 4356, 4356, 4356, 4356, 4356, 4356, 4356, 4356, - 4356, 4356, 4356, 4356, 4356, 4356, 4356, 4356, 4356, 4356, - 4356, 4356, 4356, 4356, 4356, 4356, 4357, 4357, 4357, 4357, - 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, - 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, 4357, - - 4357, 4357, 4357, 4357, 4357, 4358, 0, 0, 0, 4358, - 0, 4358, 4358, 0, 0, 0, 4358, 4358, 4358, 4358, - 4358, 0, 4358, 4358, 4358, 4358, 4358, 4358, 4358, 4358, - 4358, 4358, 4358, 4358, 4359, 4359, 4359, 4359, 4359, 4359, - 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, - 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, 4359, - 4359, 4359, 4359, 4360, 4360, 4360, 4360, 4360, 4360, 4360, - 4360, 4360, 4360, 4360, 4360, 4360, 4360, 4360, 4360, 0, - 4360, 4360, 4360, 4360, 4360, 4360, 4360, 4360, 4360, 4360, - 4360, 4360, 4362, 4362, 0, 4362, 4362, 4362, 4362, 4362, - - 4362, 4362, 4362, 4362, 4362, 4362, 4362, 4362, 4362, 4362, - 4362, 4362, 4362, 4362, 4362, 4362, 4362, 4362, 4362, 4362, - 4362, 4363, 4363, 0, 4363, 4363, 4363, 4363, 4363, 4363, - 4363, 4363, 4363, 4363, 4363, 4363, 4363, 4363, 4363, 4363, - 4363, 4363, 4363, 4363, 4363, 4363, 4363, 4363, 4363, 4363, - 4364, 4364, 0, 4364, 4364, 0, 4364, 4364, 0, 0, - 0, 4364, 4364, 4364, 4364, 4364, 4364, 4364, 4364, 4364, - 4364, 4364, 4364, 4364, 4364, 4364, 4364, 4364, 4364, 4365, - 4365, 4365, 4365, 4365, 4365, 4365, 4365, 4365, 4365, 4365, - 4365, 4365, 4365, 4365, 4365, 4365, 4365, 4365, 4365, 4365, - - 4365, 4365, 4365, 4365, 4365, 4365, 4365, 4365, 4366, 4366, - 0, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, - 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4366, - 4366, 4366, 4366, 4366, 4366, 4366, 4366, 4367, 4367, 0, - 4367, 4367, 0, 4367, 4367, 0, 4367, 4367, 4367, 4367, - 4367, 4367, 4367, 4367, 4367, 4367, 4367, 4367, 4367, 4367, - 4367, 4367, 4367, 0, 0, 4367, 4368, 4368, 4368, 4368, - 4368, 4368, 4368, 4368, 4368, 4368, 4368, 4368, 4368, 4368, - 4368, 4368, 4368, 4368, 4368, 4368, 4368, 4368, 4368, 4368, - 4368, 4368, 4368, 4368, 4368, 4369, 4369, 0, 4369, 4369, - - 4369, 4369, 4369, 4369, 4369, 4369, 4369, 4369, 4369, 4369, - 4369, 4369, 4369, 4369, 4369, 4369, 4369, 4369, 4369, 4369, - 4369, 4369, 4369, 4369, 4371, 4371, 4371, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 4371, 0, 0, 0, 4371, 0, 0, 0, 0, - 0, 4371, 4372, 4372, 4372, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4372, 4372, - 4372, 0, 0, 4372, 4374, 4374, 4374, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4374, 0, 4374, 0, 0, 4374, 4376, 4376, 4376, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 4376, 0, 0, - 0, 4376, 4377, 4377, 4377, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4377, 4377, - 0, 0, 0, 4377, 4378, 4378, 0, 4378, 4378, 4378, - 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, - 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, 4378, - 4378, 4378, 4378, 4379, 4379, 4379, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 4379, - 4379, 0, 0, 0, 4379, 4380, 4380, 4380, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 4380, 0, 0, 0, 4380, 0, 0, 0, - 0, 0, 4380, 4381, 4381, 4381, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 4381, - 4381, 4381, 0, 0, 4381, 4383, 4383, 4383, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 4383, 0, 4383, 0, 0, 4383, 4384, 4384, 4384, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 4384, 0, 0, 0, 4384, 0, - 0, 0, 0, 0, 4384, 4385, 4385, 4385, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 4385, 4385, 4385, 0, 0, 4385, 4387, 4387, 4387, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4387, 0, 4387, 0, 0, 4387, 4389, - 4389, 0, 0, 4389, 0, 4389, 4389, 0, 4389, 4389, - 4389, 4389, 4389, 4389, 4389, 0, 4389, 4389, 4389, 4389, - 4389, 4389, 4389, 4389, 4389, 0, 0, 4389, 4390, 4390, - 4390, 4390, 4390, 4390, 4390, 4390, 4390, 4390, 4390, 4390, - 4390, 4390, 4390, 4390, 4390, 4390, 4390, 4390, 4390, 4390, - 4390, 4390, 4390, 4390, 4390, 4390, 4390, 4391, 4391, 0, - - 0, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, - 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, 4391, - 4391, 4391, 4391, 4391, 4391, 4391, 4392, 4392, 0, 4392, - 4392, 4392, 4392, 4392, 4392, 4392, 4392, 4392, 4392, 4392, - 4392, 4392, 4392, 4392, 4392, 4392, 4392, 4392, 4392, 4392, - 4392, 4392, 4392, 4392, 4392, 4393, 4393, 0, 4393, 4393, - 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, - 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, 4393, - 4393, 4393, 4393, 4393, 4394, 4394, 4394, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 4394, 0, 0, 0, 4394, 0, 0, 0, 0, - 0, 4394, 4395, 4395, 4395, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4395, 4395, - 0, 0, 0, 4395, 4398, 4398, 4398, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 4398, 0, 0, 0, 4398, 0, 0, 0, 0, - 0, 4398, 4399, 4399, 4399, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4399, 4399, - 0, 0, 0, 4399, 4402, 4402, 0, 4402, 4402, 0, - 4402, 4402, 0, 4402, 4402, 4402, 4402, 4402, 4402, 4402, - - 0, 4402, 4402, 4402, 4402, 4402, 4402, 4402, 0, 4402, - 0, 0, 4402, 4403, 4403, 4403, 4403, 4403, 4403, 4403, - 4403, 4403, 4403, 4403, 4403, 4403, 4403, 4403, 4403, 4403, - 4403, 4403, 4403, 4403, 4403, 4403, 4403, 4403, 4403, 4403, - 4403, 4403, 4404, 4404, 0, 4404, 4404, 4404, 4404, 4404, - 4404, 4404, 4404, 4404, 4404, 4404, 4404, 4404, 4404, 4404, - 4404, 4404, 4404, 4404, 4404, 4404, 4404, 4404, 4404, 4404, - 4404, 4405, 4405, 0, 4405, 4405, 4405, 4405, 4405, 4405, - 4405, 4405, 0, 4405, 4405, 4405, 4405, 4405, 4405, 4405, - 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, 4405, - - 4406, 4406, 4406, 4406, 4406, 4406, 4406, 4406, 4406, 4406, - 4406, 4406, 4406, 4406, 4406, 4406, 4406, 4406, 4406, 4406, - 4406, 4406, 4406, 4406, 4406, 4406, 4406, 4406, 4406, 4407, - 4407, 4407, 4407, 4407, 4407, 4407, 4407, 4407, 4407, 4407, - 4407, 4407, 4407, 4407, 4407, 4407, 4407, 4407, 4407, 4407, - 4407, 4407, 4407, 4407, 4407, 4407, 4407, 4407, 4408, 4408, - 4408, 4408, 4408, 4408, 4408, 4408, 4408, 4408, 4408, 4408, - 4408, 4408, 4408, 4408, 4408, 4408, 4408, 4408, 4408, 4408, - 4408, 4408, 4408, 4408, 4408, 4408, 4408, 4409, 4409, 4409, - 4409, 4409, 4409, 4409, 4409, 4409, 4409, 4409, 4409, 4409, - - 4409, 4409, 4409, 4409, 4409, 4409, 4409, 4409, 4409, 4409, - 4409, 4409, 4409, 4409, 4409, 4409, 4410, 0, 0, 4410, - 4410, 4410, 4410, 4410, 4410, 4410, 4410, 0, 4410, 4410, - 4410, 4410, 0, 4410, 4410, 4410, 4410, 4410, 4410, 4410, - 0, 4410, 4410, 4410, 4410, 4411, 4411, 4411, 4411, 4411, - 4411, 4411, 4411, 4411, 4411, 4411, 4411, 4411, 4411, 4411, - 4411, 4411, 4411, 4411, 4411, 4411, 4411, 4411, 4411, 4411, - 4411, 4411, 4411, 4411, 4412, 4412, 0, 4412, 4412, 0, - 4412, 4412, 4412, 4412, 4412, 4412, 4412, 4412, 4412, 4412, - 4412, 4412, 4412, 4412, 4412, 4412, 4412, 0, 4412, 0, - - 4412, 4412, 4412, 4413, 4413, 4413, 4413, 4413, 4413, 4413, - 4413, 4413, 4413, 4413, 4413, 4413, 4413, 4413, 4413, 4413, - 4413, 4413, 4413, 4413, 4413, 4413, 4413, 4413, 4413, 4413, - 4413, 4413, 4415, 4415, 0, 4415, 4415, 4415, 4415, 4415, - 4415, 4415, 4415, 4415, 4415, 4415, 4415, 4415, 4415, 4415, - 4415, 4415, 4415, 4415, 4415, 4415, 4415, 4415, 4415, 4415, - 4415, 4416, 4416, 0, 4416, 4416, 4416, 4416, 4416, 4416, - 4416, 4416, 4416, 4416, 4416, 4416, 4416, 4416, 4416, 4416, - 4416, 4416, 4416, 4416, 4416, 4416, 4416, 4416, 4416, 4416, - 4417, 4417, 4417, 4417, 4417, 4417, 4417, 4417, 4417, 4417, - - 4417, 4417, 4417, 4417, 4417, 4417, 4417, 4417, 4417, 4417, - 4417, 4417, 4417, 4417, 4417, 4417, 4417, 4417, 4417, 4418, - 4418, 4418, 4418, 4418, 4418, 4418, 4418, 4418, 4418, 4418, - 4418, 4418, 4418, 4418, 4418, 4418, 4418, 4418, 4418, 4418, - 4418, 4418, 4418, 4418, 4418, 4418, 4418, 4418, 4420, 4420, - 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4420, - 4420, 4420, 4420, 4420, 0, 4420, 4420, 4420, 4420, 4420, - 4420, 4420, 4420, 4420, 4420, 4420, 4420, 4421, 4421, 4421, - 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, 4421, - 4421, 4421, 4421, 0, 4421, 4421, 4421, 4421, 4421, 4421, - - 4421, 4421, 4421, 4421, 4421, 4421, 4422, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 4422, 0, 0, 0, - 0, 0, 4422, 0, 0, 0, 4422, 4422, 0, 4422, - 4423, 4423, 4423, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 4423, 0, 0, - 0, 4423, 0, 0, 0, 0, 0, 4423, 4424, 4424, - 4424, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 4424, 4424, 4424, 0, 0, 4424, - 4427, 4427, 0, 4427, 4427, 4427, 4427, 4427, 4427, 4427, - 4427, 4427, 4427, 4427, 4427, 4427, 4427, 4427, 4427, 4427, - - 4427, 4427, 4427, 4427, 4427, 4427, 4427, 4427, 4427, 4428, - 0, 4428, 4428, 4428, 4428, 4428, 0, 0, 0, 4428, - 0, 4428, 4429, 4429, 0, 4429, 4429, 4429, 4429, 4429, - 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, - 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, 4429, - 4429, 4430, 0, 4430, 4430, 4430, 4430, 4430, 0, 4430, - 0, 4430, 0, 4430, 4431, 4431, 4431, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 4431, 0, 0, 0, 4431, 0, 0, 0, 0, - 0, 4431, 4432, 4432, 4432, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 4432, 4432, - 0, 0, 0, 4432, 4438, 4438, 0, 4438, 4438, 4438, - 4438, 4438, 4438, 4438, 4438, 4438, 4438, 4438, 4438, 4438, - 4438, 4438, 4438, 4438, 4438, 4438, 4438, 4438, 4438, 4438, - 4438, 4438, 4438, 4439, 4439, 4439, 4439, 4439, 4439, 4439, - 4439, 4439, 4439, 4439, 4439, 4439, 4439, 4439, 4439, 4439, - 4439, 4439, 4439, 4439, 4439, 4439, 4439, 4439, 4439, 4439, - 4439, 4439, 4441, 4441, 4441, 4441, 4441, 4441, 4441, 4441, - 4441, 4441, 4441, 4441, 4441, 4441, 4441, 4441, 4441, 4441, - 4441, 4441, 4441, 4441, 4441, 4441, 4441, 4441, 4441, 4441, - - 4441, 4442, 4442, 4442, 4442, 4442, 4442, 4442, 4442, 4442, - 4442, 4442, 4442, 4442, 4442, 4442, 4442, 4442, 4442, 4442, - 4442, 4442, 4442, 4442, 4442, 4442, 4442, 4442, 4442, 4442, - 4443, 4443, 4443, 4443, 4443, 4443, 4443, 4443, 4443, 4443, - 4443, 4443, 4443, 4443, 4443, 4443, 4443, 4443, 4443, 4443, - 4443, 4443, 4443, 4443, 4443, 4443, 4443, 4443, 4443, 4444, - 4444, 4444, 4444, 4444, 4444, 4444, 4444, 4444, 4444, 4444, - 4444, 4444, 4444, 4444, 4444, 0, 4444, 4444, 4444, 4444, - 4444, 4444, 4444, 4444, 4444, 4444, 4444, 4444, 4445, 4445, - 0, 4445, 4445, 4445, 4445, 4445, 4445, 4445, 4445, 4445, - - 4445, 4445, 4445, 4445, 0, 4445, 4445, 4445, 4445, 4445, - 4445, 4445, 4445, 4445, 4445, 4445, 4445, 4446, 4446, 4446, - 4446, 4446, 4446, 4446, 4446, 4446, 4446, 4446, 4446, 4446, - 4446, 4446, 4446, 0, 4446, 4446, 4446, 4446, 4446, 4446, - 4446, 4446, 4446, 4446, 4446, 4446, 4448, 4448, 0, 4448, - 4448, 4448, 4448, 4448, 4448, 4448, 4448, 4448, 4448, 4448, - 4448, 4448, 4448, 4448, 4448, 4448, 4448, 4448, 4448, 4448, - 4448, 4448, 4448, 4448, 4448, 4449, 0, 4449, 4449, 4449, - 4449, 4449, 0, 0, 0, 4449, 0, 4449, 4450, 4450, - 4450, 4450, 4450, 4450, 4450, 4450, 4450, 4450, 4450, 4450, - - 4450, 4450, 4450, 4450, 4450, 4450, 4450, 4450, 4450, 4450, - 4450, 4450, 4450, 4450, 4450, 4450, 4450, 4451, 4451, 4451, - 4451, 4451, 4451, 4451, 4451, 4451, 4451, 4451, 4451, 4451, - 4451, 4451, 4451, 4451, 4451, 4451, 4451, 4451, 4451, 4451, - 4451, 4451, 4451, 4451, 4451, 4451, 4452, 4452, 0, 4452, - 4452, 4452, 4452, 4452, 4452, 4452, 4452, 4452, 4452, 4452, - 4452, 4452, 4452, 4452, 4452, 4452, 4452, 4452, 4452, 4452, - 4452, 4452, 4452, 4452, 4452, 4453, 0, 4453, 4453, 4453, - 4453, 4453, 0, 0, 0, 4453, 0, 4453, 4454, 4454, - 0, 4454, 4454, 4454, 4454, 4454, 4454, 4454, 4454, 4454, - - 4454, 4454, 4454, 4454, 4454, 4454, 4454, 4454, 4454, 4454, - 4454, 4454, 4454, 4454, 4454, 4454, 4454, 4455, 0, 4455, - 4455, 4455, 4455, 4455, 0, 0, 0, 4455, 0, 4455, - 4456, 4456, 4456, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 4456, 4456, 0, 0, - 0, 4456, 4457, 4457, 4457, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4457, 4457, - 0, 0, 0, 4457, 4458, 4458, 4458, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 4458, 0, 0, 0, 4458, 0, 0, 0, 0, - - 0, 4458, 4459, 4459, 4459, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4459, 4459, - 0, 0, 0, 4459, 4462, 4462, 4462, 0, 0, 0, - 4462, 0, 0, 0, 4462, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 4462, 4465, 0, 0, 4465, - 4465, 4465, 4465, 4465, 4465, 4465, 4465, 4465, 4465, 4465, - 4465, 4465, 0, 4465, 4465, 4465, 4465, 0, 4465, 4465, - 0, 4465, 4465, 4465, 4465, 4466, 4466, 4466, 4466, 4466, - 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, - 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, - - 4466, 4466, 4466, 4466, 4468, 0, 0, 4468, 0, 0, - 0, 0, 0, 0, 0, 4468, 4468, 0, 0, 0, - 4468, 0, 0, 0, 0, 0, 4468, 4472, 0, 4472, - 4472, 4472, 4472, 4472, 0, 0, 0, 4472, 0, 4472, - 4473, 0, 4473, 4473, 4473, 4473, 4473, 0, 0, 0, - 4473, 0, 4473, 4474, 0, 4474, 4474, 4474, 4474, 4474, - 0, 0, 4474, 4474, 0, 4474, 4475, 0, 4475, 4475, - 4475, 4475, 4475, 0, 0, 4475, 4475, 0, 4475, 4477, - 0, 4477, 4477, 4477, 4477, 4477, 0, 0, 4477, 4477, - 0, 4477, 4478, 0, 4478, 4478, 4478, 4478, 4478, 0, - - 0, 0, 4478, 0, 4478, 0, 0, 0, 4478, 4479, - 0, 0, 0, 0, 0, 4479, 0, 0, 4479, 4479, - 0, 4479, 0, 0, 0, 0, 4479, 4479, 4479, 0, - 4479, 4480, 0, 0, 4480, 0, 0, 4480, 0, 4480, - 4480, 4480, 4480, 4480, 0, 0, 4480, 4480, 0, 4480, - 0, 0, 0, 4480, 4481, 4481, 0, 4481, 4481, 4481, - 4481, 4481, 4481, 4481, 4481, 4481, 4481, 4481, 4481, 4481, - 4481, 4481, 4481, 4481, 4481, 4481, 4481, 4481, 4481, 4481, - 4481, 4481, 4481, 4482, 4482, 0, 4482, 4482, 0, 0, - 0, 4482, 4483, 4483, 4483, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 4483, - 0, 0, 0, 4483, 0, 0, 0, 0, 0, 4483, - 4484, 4484, 4484, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 4484, 4484, 0, 0, - 0, 4484, 4487, 0, 0, 4487, 0, 4487, 4487, 4487, - 0, 0, 4487, 0, 4487, 4487, 4487, 4487, 4487, 0, - 4487, 4487, 0, 4487, 0, 0, 4487, 4488, 0, 0, - 4488, 0, 4488, 4488, 4488, 0, 0, 4488, 0, 4488, - 4488, 4488, 4488, 4488, 0, 4488, 4488, 0, 4488, 0, - 0, 4488, 4489, 0, 0, 4489, 0, 4489, 4489, 4489, - - 0, 0, 4489, 0, 4489, 4489, 4489, 4489, 4489, 0, - 4489, 4489, 0, 4489, 0, 0, 4489, 4490, 0, 0, - 4490, 0, 4490, 4490, 4490, 0, 0, 4490, 0, 4490, - 4490, 4490, 4490, 4490, 0, 4490, 4490, 0, 4490, 0, - 0, 4490, 4491, 0, 0, 4491, 0, 4491, 4491, 4491, - 0, 0, 4491, 0, 4491, 4491, 4491, 4491, 4491, 0, - 4491, 4491, 0, 4491, 0, 0, 4491, 4492, 0, 0, - 4492, 0, 4492, 4492, 4492, 0, 0, 4492, 0, 4492, - 4492, 4492, 4492, 4492, 0, 4492, 4492, 0, 4492, 0, - 0, 4492, 4493, 0, 0, 4493, 0, 4493, 4493, 4493, - - 0, 0, 4493, 0, 4493, 4493, 4493, 4493, 4493, 0, - 4493, 4493, 0, 4493, 0, 0, 4493, 4494, 0, 0, - 4494, 0, 4494, 4494, 4494, 0, 0, 4494, 0, 4494, - 4494, 4494, 4494, 4494, 0, 4494, 4494, 0, 4494, 0, - 0, 4494, 4495, 0, 0, 4495, 0, 4495, 4495, 4495, - 0, 0, 4495, 0, 4495, 4495, 4495, 4495, 4495, 0, - 4495, 4495, 0, 4495, 0, 0, 4495, 4496, 4496, 0, - 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, 4496, - 4496, 4496, 4496, 0, 4496, 4496, 0, 4496, 4496, 4496, - 4496, 0, 4496, 4496, 4496, 4496, 4497, 4497, 4497, 4497, - - 4497, 4497, 4497, 4497, 4497, 4497, 4497, 4497, 4497, 4497, - 4497, 4497, 4497, 4497, 4497, 4497, 4497, 4497, 4497, 4497, - 4497, 4497, 4497, 4497, 4497, 4498, 0, 0, 4498, 4498, - 0, 4498, 0, 4498, 4498, 4498, 4498, 4498, 0, 0, - 0, 4498, 0, 0, 0, 0, 0, 4498, 4499, 4499, - 0, 0, 0, 0, 4499, 0, 4499, 4499, 0, 0, - 0, 4499, 4500, 4500, 0, 4500, 4500, 4500, 4500, 4500, - 4500, 4500, 4500, 4500, 4500, 4500, 4500, 4500, 4500, 4500, - 4500, 4500, 4500, 4500, 4500, 4500, 4500, 4500, 4500, 4500, - 4500, 4501, 0, 4501, 4501, 4501, 4501, 4501, 0, 0, - - 0, 4501, 0, 4501, 4502, 4502, 0, 4502, 4502, 4502, - 4502, 4502, 4502, 4502, 4502, 4502, 4502, 4502, 4502, 4502, - 4502, 4502, 4502, 4502, 4502, 4502, 4502, 4502, 4502, 4502, - 4502, 4502, 4502, 4503, 0, 4503, 4503, 4503, 4503, 4503, - 0, 0, 0, 4503, 0, 4503, 4504, 0, 4504, 4504, - 4504, 4504, 0, 0, 0, 0, 4504, 4505, 0, 0, - 0, 0, 0, 4505, 0, 4505, 4505, 4505, 4505, 4505, - 0, 0, 4505, 4505, 0, 0, 0, 0, 0, 4505, - 4506, 4506, 4506, 4506, 4506, 4506, 4506, 4506, 4506, 4506, - 4506, 4506, 4506, 4506, 4506, 4506, 4506, 4506, 4506, 0, - - 4506, 4506, 4506, 4506, 4506, 4506, 4506, 4506, 4506, 4507, - 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4507, - 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4507, - 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4507, 4509, 0, - 0, 0, 4509, 4509, 4509, 4509, 4509, 4509, 4509, 4509, - 4509, 4509, 4509, 4509, 4509, 4509, 4509, 4509, 4509, 4509, - 4509, 4509, 4509, 4509, 4509, 4509, 4509, 4510, 4510, 4510, - 4510, 4510, 4510, 4510, 4510, 4510, 4510, 4510, 4510, 4510, - 4510, 4510, 4510, 4510, 4510, 4510, 4510, 4510, 4510, 4510, - 4510, 4510, 4510, 4510, 4510, 4510, 4511, 0, 0, 0, - - 4511, 4511, 4511, 4511, 4511, 4511, 4511, 4511, 4511, 4511, - 4511, 4511, 4511, 4511, 4511, 4511, 4511, 4511, 4511, 4511, - 4511, 4511, 4511, 4511, 4511, 4512, 4512, 4512, 4512, 4512, - 4512, 4512, 4512, 4512, 4512, 4512, 4512, 4512, 4512, 4512, - 4512, 4512, 4512, 4512, 4512, 4512, 4512, 4512, 4512, 4512, - 4512, 4512, 4512, 4512, 4513, 0, 0, 0, 4513, 4513, - 4513, 4513, 4513, 4513, 4513, 4513, 4513, 4513, 4513, 4513, - 4513, 4513, 4513, 4513, 4513, 4513, 4513, 4513, 4513, 4513, - 4513, 4513, 4513, 4514, 4514, 4514, 4514, 4514, 4514, 4514, - 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, - - 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, 4514, - 4514, 4514, 4515, 0, 0, 0, 4515, 4515, 4515, 4515, - 4515, 4515, 4515, 4515, 4515, 4515, 4515, 4515, 4515, 4515, - 4515, 4515, 4515, 4515, 4515, 4515, 4515, 4515, 4515, 4515, - 4515, 4516, 4516, 4516, 4516, 4516, 4516, 4516, 4516, 4516, - 4516, 4516, 4516, 4516, 4516, 4516, 4516, 4516, 4516, 4516, - 4516, 4516, 4516, 4516, 4516, 4516, 4516, 4516, 4516, 4516, - 4517, 4517, 4517, 4517, 4517, 4517, 4517, 4517, 4517, 4517, - 4517, 4517, 4517, 4517, 4517, 4517, 4517, 4517, 4517, 4517, - 4517, 4517, 4517, 4517, 4517, 4517, 4517, 4517, 4517, 4518, - - 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, - 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, - 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4518, 4519, 4519, - 4519, 4519, 4519, 4519, 4519, 4519, 4519, 4519, 4519, 4519, - 4519, 4519, 4519, 4519, 4519, 4519, 4519, 4519, 4519, 4519, - 4519, 4519, 4519, 4519, 4519, 4519, 4519, 4520, 4520, 4520, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 4520, 0, 0, 0, 4520, 0, - 0, 0, 0, 0, 4520, 4521, 4521, 4521, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 4521, 4521, 0, 0, 0, 4521, 4524, 4524, 4524, - 4524, 4524, 4524, 4524, 4524, 4524, 4524, 4524, 4524, 4524, - 4524, 4524, 4524, 4524, 4524, 4524, 4524, 4524, 0, 4524, - 4524, 0, 4524, 4524, 4524, 4524, 4525, 4525, 4525, 4525, - 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, - 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, 4525, - 4525, 4525, 4525, 4525, 4525, 4526, 4526, 0, 4526, 4526, - 4526, 4526, 4526, 4526, 4526, 4526, 4526, 4526, 4526, 4526, - 4526, 4526, 4526, 4526, 4526, 4526, 4526, 4526, 4526, 4526, - 4526, 4526, 4526, 4526, 4527, 0, 4527, 4527, 4527, 4527, - - 4527, 0, 0, 0, 4527, 0, 4527, 4528, 4528, 0, - 4528, 4528, 4528, 4528, 4528, 4528, 4528, 4528, 4528, 4528, - 4528, 4528, 4528, 4528, 4528, 4528, 4528, 4528, 4528, 4528, - 4528, 4528, 4528, 4528, 4528, 4528, 4529, 4529, 4529, 4529, - 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, - 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, 4529, - 4529, 4529, 4529, 4529, 4529, 4530, 4530, 4530, 4530, 4530, - 4530, 4530, 4530, 4530, 4530, 4530, 4530, 4530, 4530, 4530, - 4530, 4530, 4530, 4530, 4530, 4530, 4530, 4530, 4530, 4530, - 4530, 4530, 4530, 4530, 4531, 4531, 4531, 4531, 4531, 4531, - - 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, - 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, 4531, - 4531, 4531, 4531, 4533, 4533, 4533, 4533, 4533, 4533, 4533, - 4533, 4533, 4533, 4533, 4533, 4533, 4533, 4533, 4533, 4533, - 4533, 4533, 4533, 4533, 4533, 4533, 4533, 4533, 4533, 4533, - 4533, 4533, 4534, 4534, 4534, 4534, 4534, 4534, 4534, 4534, - 4534, 4534, 4534, 4534, 4534, 4534, 4534, 4534, 4534, 4534, - 4534, 4534, 4534, 4534, 4534, 4534, 4534, 4534, 4534, 4534, - 4534, 4536, 4536, 0, 4536, 4536, 4536, 4536, 4536, 4536, - 4536, 4536, 4536, 4536, 4536, 4536, 4536, 4536, 4536, 4536, - - 4536, 4536, 4536, 4536, 4536, 4536, 4536, 4536, 4536, 4536, - 4537, 0, 0, 0, 0, 0, 4537, 0, 4537, 4537, - 4537, 4537, 4537, 0, 0, 4537, 4537, 0, 0, 0, - 0, 0, 4537, 4538, 0, 0, 0, 0, 0, 4538, - 0, 4538, 4538, 4538, 4538, 4538, 0, 0, 4538, 4538, - 0, 4538, 0, 0, 0, 4538, 4539, 0, 4539, 4539, - 4539, 4539, 4539, 0, 0, 0, 4539, 0, 4539, 4540, - 4540, 0, 4540, 4540, 4540, 4540, 4540, 4540, 4540, 4540, - 4540, 4540, 4540, 4540, 4540, 4540, 4540, 4540, 4540, 4540, - 4540, 4540, 4540, 4540, 4540, 4540, 4540, 4540, 4541, 0, - - 4541, 4541, 4541, 4541, 4541, 0, 0, 0, 4541, 0, - 4541, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, - 4543, 4543, 0, 4543, 4543, 4543, 4543, 4543, 4543, 4543, - 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, 4543, - 4544, 4544, 4544, 4544, 4544, 4544, 4544, 4544, 4544, 4544, - 4544, 4544, 4544, 4544, 4544, 4544, 4544, 4544, 4544, 4544, - 4544, 4544, 4544, 4544, 4544, 4544, 4544, 4544, 4544, 4545, - 4545, 0, 4545, 4545, 0, 4545, 4545, 0, 4545, 4545, - 4545, 4545, 4545, 4545, 4545, 4545, 4545, 4545, 4545, 4545, - 4545, 4545, 4545, 0, 4545, 4545, 4545, 4545, 4546, 4546, - - 4546, 4546, 4546, 4546, 4546, 4546, 4546, 4546, 4546, 4546, - 4546, 4546, 4546, 4546, 4546, 4546, 4546, 4546, 4546, 4546, - 4546, 4546, 4546, 4546, 4546, 4546, 4546, 4547, 4547, 0, - 4547, 4547, 0, 4547, 4547, 0, 0, 0, 4547, 4547, - 4547, 4547, 4547, 0, 4547, 4547, 4547, 4547, 4547, 4547, - 4547, 4547, 4547, 4547, 4547, 4547, 4548, 4548, 4548, 4548, - 4548, 4548, 4548, 4548, 4548, 4548, 4548, 4548, 4548, 4548, - 4548, 4548, 4548, 4548, 4548, 4548, 4548, 4548, 4548, 4548, - 4548, 4548, 4548, 4548, 4548, 4549, 4549, 0, 4549, 4549, - 4549, 4549, 4549, 4549, 4549, 4549, 4549, 4549, 4549, 4549, - - 4549, 4549, 4549, 4549, 4549, 4549, 4549, 4549, 4549, 4549, - 4549, 4549, 4549, 4549, 4550, 4550, 0, 4550, 4550, 4550, - 4550, 4550, 4550, 4550, 4550, 0, 4550, 4550, 4550, 4550, - 4550, 4550, 4550, 4550, 4550, 4550, 4550, 4550, 4550, 4550, - 4550, 4550, 4550, 4551, 4551, 4551, 4551, 4551, 4551, 4551, - 4551, 4551, 4551, 4551, 4551, 4551, 4551, 4551, 4551, 4551, - 4551, 4551, 4551, 4551, 4551, 4551, 4551, 4551, 4551, 4551, - 4551, 4551, 4552, 4552, 0, 4552, 4552, 4552, 4552, 4552, - 4552, 4552, 4552, 4552, 4552, 4552, 4552, 4552, 4552, 4552, - 4552, 4552, 4552, 4552, 4552, 4552, 4552, 4552, 4552, 4552, - - 4552, 4553, 4553, 4553, 4553, 4553, 4553, 4553, 4553, 4553, - 4553, 4553, 4553, 4553, 4553, 4553, 4553, 4553, 4553, 4553, - 4553, 4553, 4553, 4553, 4553, 4553, 4553, 4553, 4553, 4553, - 4554, 0, 0, 0, 4554, 0, 4554, 4554, 0, 0, - 0, 4554, 4554, 4554, 4554, 4554, 0, 4554, 4554, 4554, - 4554, 4554, 4554, 4554, 4554, 4554, 4554, 4554, 4554, 4555, - 4555, 4555, 4555, 4555, 4555, 4555, 4555, 4555, 4555, 4555, - 4555, 4555, 4555, 4555, 4555, 4555, 4555, 4555, 4555, 4555, - 4555, 4555, 4555, 4555, 4555, 4555, 4555, 4555, 4557, 4557, - 0, 4557, 4557, 4557, 4557, 4557, 4557, 4557, 4557, 4557, - - 4557, 4557, 4557, 4557, 4557, 4557, 4557, 4557, 4557, 4557, - 4557, 4557, 4557, 4557, 4557, 4557, 4557, 4558, 4558, 0, - 4558, 4558, 0, 4558, 4558, 0, 0, 0, 4558, 4558, - 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, 4558, - 4558, 4558, 4558, 4558, 4558, 4558, 4559, 4559, 4559, 4559, - 4559, 4559, 4559, 4559, 4559, 4559, 4559, 4559, 4559, 4559, - 4559, 4559, 4559, 4559, 4559, 4559, 4559, 4559, 4559, 4559, - 4559, 4559, 4559, 4559, 4559, 4560, 4560, 0, 4560, 4560, - 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, - 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, 4560, - - 4560, 4560, 4560, 4560, 4561, 4561, 0, 4561, 4561, 0, - 4561, 4561, 0, 4561, 4561, 4561, 4561, 4561, 4561, 4561, - 4561, 4561, 4561, 4561, 4561, 4561, 4561, 4561, 4561, 4561, - 0, 0, 4561, 4562, 4562, 4562, 4562, 4562, 4562, 4562, - 4562, 4562, 4562, 4562, 4562, 4562, 4562, 4562, 4562, 4562, - 4562, 4562, 4562, 4562, 4562, 4562, 4562, 4562, 4562, 4562, - 4562, 4562, 4563, 4563, 0, 4563, 4563, 4563, 4563, 4563, - 4563, 4563, 4563, 4563, 4563, 4563, 4563, 4563, 4563, 4563, - 4563, 4563, 4563, 4563, 4563, 4563, 4563, 4563, 4563, 4563, - 4563, 4564, 4564, 4564, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 4564, 0, - 0, 0, 4564, 0, 0, 0, 0, 0, 4564, 4565, - 4565, 4565, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 4565, 4565, 4565, 0, 0, - 4565, 4567, 4567, 4567, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 4567, 0, 4567, - 0, 0, 4567, 4568, 4568, 4568, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4568, 0, 0, 0, 4568, 0, 0, 0, 0, 0, - 4568, 4570, 4570, 4570, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 4570, 4570, 0, - 0, 0, 4570, 4571, 4571, 4571, 4571, 4571, 4571, 4571, - 4571, 4571, 4571, 4571, 0, 4571, 4571, 4571, 4571, 0, - 4571, 4571, 4571, 4571, 4571, 4571, 4571, 4571, 4571, 4571, - 4571, 4571, 4572, 4572, 4572, 4572, 4572, 4572, 4572, 4572, - 4572, 4572, 4572, 4572, 4572, 4572, 4572, 4572, 0, 4572, - 4572, 4572, 4572, 4572, 4572, 4572, 4572, 4572, 4572, 4572, - 4572, 4573, 4573, 4573, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4573, 0, - 0, 0, 4573, 0, 0, 0, 0, 0, 4573, 4574, - - 4574, 4574, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 4574, 4574, 4574, 0, 0, - 4574, 4576, 4576, 4576, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 4576, 0, 4576, - 0, 0, 4576, 4577, 4577, 4577, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4577, 0, 0, 0, 4577, 0, 0, 0, 0, 0, - 4577, 4578, 4578, 4578, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 4578, 4578, 4578, - 0, 0, 4578, 4580, 4580, 4580, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 4580, - 0, 4580, 0, 0, 4580, 4581, 4581, 0, 4581, 4581, - 4581, 4581, 4581, 4581, 4581, 4581, 4581, 4581, 4581, 4581, - 4581, 4581, 4581, 4581, 4581, 4581, 4581, 4581, 4581, 4581, - 4581, 4581, 4581, 4581, 4582, 4582, 4582, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 4582, 0, 0, 0, 4582, 0, 0, 0, 0, - 0, 4582, 4583, 4583, 4583, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4583, 4583, - 0, 0, 0, 4583, 4586, 4586, 4586, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 4586, 0, 0, 0, 4586, 0, 0, 0, 0, - 0, 4586, 4587, 4587, 4587, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4587, 4587, - 0, 0, 0, 4587, 4590, 0, 0, 4590, 4590, 4590, - 4590, 4590, 4590, 4590, 4590, 0, 4590, 4590, 4590, 4590, - 0, 4590, 4590, 4590, 4590, 4590, 4590, 4590, 0, 4590, - 4590, 4590, 4590, 4591, 4591, 4591, 4591, 4591, 4591, 4591, - 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, - 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, 4591, - - 4591, 4591, 4592, 4592, 0, 4592, 4592, 4592, 4592, 4592, - 4592, 4592, 4592, 4592, 4592, 4592, 4592, 4592, 4592, 4592, - 4592, 4592, 4592, 4592, 4592, 4592, 4592, 4592, 4592, 4592, - 4592, 4593, 4593, 4593, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4593, 0, - 0, 0, 4593, 0, 0, 0, 0, 0, 4593, 4594, - 4594, 4594, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 4594, 4594, 4594, 0, 0, - 4594, 4597, 4597, 4597, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4597, 0, - - 0, 0, 4597, 0, 0, 0, 0, 0, 4597, 4598, - 4598, 4598, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 4598, 4598, 0, 0, 0, - 4598, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, - 4601, 4601, 4601, 4601, 4601, 4601, 4601, 0, 4601, 4601, - 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, 4601, - 4602, 4602, 0, 4602, 4602, 4602, 4602, 4602, 4602, 4602, - 4602, 4602, 4602, 4602, 4602, 4602, 0, 4602, 4602, 4602, - 4602, 4602, 4602, 4602, 4602, 4602, 4602, 4602, 4602, 4603, - 4603, 4603, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 4603, 0, 0, 0, - 4603, 4604, 4604, 4604, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 4604, 4604, 0, - 0, 0, 4604, 4605, 4605, 4605, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4605, 0, 0, 0, 4605, 0, 0, 0, 0, 0, - 4605, 4606, 4606, 4606, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 4606, 4606, 0, - 0, 0, 4606, 4610, 0, 0, 4610, 0, 0, 0, - 0, 0, 0, 0, 4610, 4610, 0, 0, 0, 4610, - - 0, 0, 0, 0, 0, 4610, 4612, 0, 4612, 4612, - 4612, 4612, 4612, 0, 0, 0, 4612, 0, 4612, 4613, - 0, 4613, 4613, 4613, 4613, 4613, 0, 0, 4613, 4613, - 0, 4613, 4615, 0, 0, 4615, 0, 0, 4615, 0, - 4615, 4615, 4615, 4615, 4615, 0, 0, 0, 4615, 0, - 4615, 0, 0, 0, 4615, 4616, 4616, 0, 4616, 4616, - 4616, 4616, 4616, 4616, 4616, 4616, 4616, 4616, 4616, 4616, - 4616, 4616, 4616, 4616, 4616, 4616, 4616, 4616, 4616, 4616, - 4616, 4616, 4616, 4616, 4617, 4617, 0, 4617, 4617, 4617, - 4617, 4617, 4617, 4617, 4617, 4617, 4617, 4617, 4617, 4617, - - 4617, 4617, 4617, 4617, 4617, 4617, 4617, 4617, 4617, 4617, - 4617, 4617, 4617, 4618, 4618, 0, 4618, 4618, 4618, 4618, - 4618, 4618, 4618, 4618, 4618, 4618, 4618, 4618, 4618, 4618, - 4618, 4618, 4618, 4618, 4618, 4618, 4618, 4618, 4618, 4618, - 4618, 4618, 4619, 0, 0, 0, 0, 0, 4619, 0, - 0, 4619, 4619, 0, 4619, 0, 0, 0, 0, 4619, - 4619, 4619, 0, 4619, 4620, 0, 4620, 4620, 4620, 4620, - 4620, 0, 0, 0, 4620, 0, 4620, 0, 0, 0, - 4620, 4621, 0, 4621, 4621, 4621, 4621, 4621, 0, 0, - 0, 4621, 0, 4621, 4622, 0, 0, 4622, 0, 0, - - 4622, 0, 4622, 4622, 4622, 4622, 4622, 0, 0, 4622, - 4622, 0, 4622, 0, 0, 0, 4622, 4623, 4623, 4623, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 4623, 0, 0, 0, 4623, 0, - 0, 0, 0, 0, 4623, 4624, 4624, 4624, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 4624, 4624, 0, 0, 0, 4624, 4627, 0, 0, - 4627, 0, 4627, 4627, 4627, 0, 0, 4627, 0, 4627, - 4627, 4627, 4627, 4627, 0, 4627, 4627, 0, 4627, 0, - 0, 4627, 4628, 0, 0, 4628, 0, 4628, 4628, 4628, - - 0, 0, 4628, 0, 4628, 4628, 4628, 4628, 4628, 0, - 4628, 4628, 0, 4628, 0, 0, 4628, 4629, 0, 0, - 4629, 0, 4629, 4629, 4629, 0, 0, 4629, 0, 4629, - 4629, 4629, 4629, 4629, 0, 4629, 4629, 0, 4629, 0, - 0, 4629, 4630, 4630, 0, 4630, 4630, 4630, 4630, 4630, - 4630, 4630, 4630, 4630, 4630, 4630, 4630, 4630, 0, 4630, - 4630, 0, 4630, 4630, 4630, 4630, 0, 4630, 4630, 4630, - 4630, 4631, 4631, 4631, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4631, 0, - 0, 0, 4631, 0, 0, 0, 0, 0, 4631, 4632, - - 4632, 4632, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 4632, 4632, 0, 0, 0, - 4632, 4636, 4636, 4636, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4636, 0, - 0, 0, 4636, 0, 0, 0, 0, 0, 4636, 4637, - 4637, 4637, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 4637, 4637, 0, 0, 0, - 4637, 4640, 4640, 4640, 0, 0, 0, 0, 0, 0, - 0, 4640, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 4640, 4641, 4641, 4641, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 4641, - 4641, 4641, 0, 0, 4641, 4642, 0, 0, 4642, 4642, - 4642, 4642, 4642, 4642, 4642, 4642, 0, 4642, 4642, 4642, - 4642, 0, 4642, 4642, 4642, 4642, 4642, 4642, 4642, 0, - 4642, 4642, 4642, 4642, 4643, 4643, 0, 4643, 4643, 4643, - 4643, 4643, 4643, 4643, 4643, 4643, 4643, 4643, 4643, 4643, - 4643, 4643, 4643, 4643, 4643, 4643, 4643, 4643, 4643, 4643, - 4643, 4643, 4643, 4644, 4644, 4644, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4644, 0, 0, 0, 4644, 4645, 4645, 4645, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 4645, 4645, 0, 0, 0, 4645, 4647, 0, 0, - 4647, 0, 0, 4647, 0, 4647, 4647, 4647, 4647, 4647, - 0, 0, 0, 4647, 0, 4647, 0, 0, 0, 4647, - 4648, 4648, 0, 4648, 4648, 4648, 4648, 4648, 4648, 4648, - 4648, 4648, 4648, 4648, 4648, 4648, 4648, 4648, 4648, 4648, - 4648, 4648, 4648, 4648, 4648, 4648, 4648, 4648, 4648, 4649, - 4649, 0, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, - 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, - 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4649, 4650, 4650, - - 0, 4650, 4650, 4650, 4650, 4650, 4650, 4650, 4650, 4650, - 4650, 4650, 4650, 4650, 4650, 4650, 4650, 4650, 4650, 4650, - 4650, 4650, 4650, 4650, 4650, 4650, 4650, 4651, 4651, 0, - 4651, 4651, 4651, 4651, 4651, 4651, 4651, 4651, 4651, 4651, - 4651, 4651, 4651, 4651, 4651, 4651, 4651, 4651, 4651, 4651, - 4651, 4651, 4651, 4651, 4651, 4651, 4652, 4652, 0, 4652, - 4652, 4652, 4652, 4652, 4652, 4652, 4652, 4652, 4652, 4652, - 4652, 4652, 4652, 4652, 4652, 4652, 4652, 4652, 4652, 4652, - 4652, 4652, 4652, 4652, 4652, 4653, 4653, 0, 4653, 4653, - 4653, 4653, 4653, 4653, 4653, 4653, 4653, 4653, 4653, 4653, - - 4653, 4653, 4653, 4653, 4653, 4653, 4653, 4653, 4653, 4653, - 4653, 4653, 4653, 4653, 4654, 4654, 0, 4654, 4654, 4654, - 4654, 4654, 4654, 4654, 4654, 4654, 4654, 4654, 4654, 4654, - 4654, 4654, 4654, 4654, 4654, 4654, 4654, 4654, 4654, 4654, - 4654, 4654, 4654, 4655, 4655, 0, 4655, 4655, 4655, 4655, - 4655, 4655, 4655, 4655, 4655, 4655, 4655, 4655, 4655, 4655, - 4655, 4655, 4655, 4655, 4655, 4655, 4655, 4655, 4655, 4655, - 4655, 4655, 4656, 4656, 0, 4656, 4656, 4656, 4656, 4656, - 4656, 4656, 4656, 4656, 4656, 4656, 4656, 4656, 4656, 4656, - 4656, 4656, 4656, 4656, 4656, 4656, 4656, 4656, 4656, 4656, - - 4656, 4657, 4657, 0, 4657, 4657, 4657, 4657, 4657, 4657, - 4657, 4657, 4657, 4657, 4657, 4657, 4657, 4657, 4657, 4657, - 4657, 4657, 4657, 4657, 4657, 4657, 4657, 4657, 4657, 4657, - 4658, 4658, 0, 4658, 4658, 4658, 4658, 4658, 4658, 4658, - 4658, 4658, 4658, 4658, 4658, 4658, 4658, 4658, 4658, 4658, - 4658, 4658, 4658, 4658, 4658, 4658, 4658, 4658, 4658, 4659, - 4659, 0, 4659, 4659, 4659, 4659, 4659, 4659, 4659, 4659, - 4659, 4659, 4659, 4659, 4659, 4659, 4659, 4659, 4659, 4659, - 4659, 4659, 4659, 4659, 4659, 4659, 4659, 4659, 4660, 4660, - 0, 4660, 4660, 4660, 4660, 4660, 4660, 4660, 4660, 4660, - - 4660, 4660, 4660, 4660, 4660, 4660, 4660, 4660, 4660, 4660, - 4660, 4660, 4660, 4660, 4660, 4660, 4660, 4661, 4661, 0, - 4661, 4661, 4661, 4661, 4661, 4661, 4661, 4661, 4661, 4661, - 4661, 4661, 4661, 4661, 4661, 4661, 4661, 4661, 4661, 4661, - 4661, 4661, 4661, 4661, 4661, 4661, 4662, 4662, 0, 4662, - 4662, 4662, 4662, 4662, 4662, 4662, 4662, 4662, 4662, 4662, - 4662, 4662, 4662, 4662, 4662, 4662, 4662, 4662, 4662, 4662, - 4662, 4662, 4662, 4662, 4662, 4663, 4663, 0, 4663, 4663, - 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, - 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, 4663, - - 4663, 4663, 4663, 4663, 4664, 4664, 0, 4664, 4664, 4664, - 4664, 4664, 4664, 4664, 4664, 4664, 4664, 4664, 4664, 4664, - 4664, 4664, 4664, 4664, 4664, 4664, 4664, 4664, 4664, 4664, - 4664, 4664, 4664, 4665, 4665, 0, 4665, 4665, 4665, 4665, - 4665, 4665, 4665, 4665, 4665, 4665, 4665, 4665, 4665, 4665, - 4665, 4665, 4665, 4665, 4665, 4665, 4665, 4665, 4665, 4665, - 4665, 4665, 4666, 4666, 0, 4666, 4666, 4666, 4666, 4666, - 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, - 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, 4666, - 4666, 4667, 4667, 0, 4667, 4667, 4667, 4667, 4667, 4667, - - 4667, 4667, 4667, 4667, 4667, 4667, 4667, 4667, 4667, 4667, - 4667, 4667, 4667, 4667, 4667, 4667, 4667, 4667, 4667, 4667, - 4668, 4668, 0, 4668, 4668, 4668, 4668, 4668, 4668, 4668, - 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, - 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4668, 4669, - 4669, 0, 4669, 4669, 4669, 4669, 4669, 4669, 4669, 4669, - 4669, 4669, 4669, 4669, 4669, 4669, 4669, 4669, 4669, 4669, - 4669, 4669, 4669, 4669, 4669, 4669, 4669, 4669, 4670, 0, - 0, 4670, 0, 0, 4670, 0, 4670, 4670, 4670, 4670, - 4670, 0, 0, 0, 4670, 0, 4670, 0, 0, 0, - - 4670, 4671, 0, 4671, 4671, 4671, 4671, 4671, 0, 0, - 0, 4671, 0, 4671, 4672, 0, 0, 0, 0, 0, - 4672, 0, 4672, 4672, 4672, 4672, 4672, 0, 0, 4672, - 4672, 0, 4672, 0, 0, 0, 4672, 4673, 0, 0, - 4673, 0, 0, 4673, 0, 4673, 4673, 4673, 4673, 4673, - 0, 0, 4673, 4673, 0, 4673, 0, 0, 0, 4673, - 4674, 4674, 0, 4674, 4674, 4674, 4674, 4674, 4674, 4674, - 4674, 4674, 4674, 4674, 4674, 4674, 0, 4674, 4674, 0, - 4674, 4674, 4674, 4674, 0, 4674, 4674, 4674, 4674, 4676, - 4676, 4676, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 4676, 0, 0, 0, - 4676, 0, 0, 0, 0, 0, 4676, 4677, 4677, 4677, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4677, 4677, 0, 0, 0, 4677, 4680, - 4680, 4680, 0, 0, 0, 0, 0, 0, 0, 4680, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4680, 4681, 4681, 4681, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 4681, 4681, 4681, - 0, 0, 4681, 4682, 0, 0, 4682, 4682, 4682, 4682, - 4682, 4682, 4682, 4682, 0, 4682, 4682, 4682, 4682, 0, - - 4682, 4682, 4682, 4682, 4682, 4682, 4682, 0, 4682, 4682, - 4682, 4682, 4683, 4683, 0, 4683, 4683, 4683, 4683, 4683, - 4683, 4683, 4683, 4683, 4683, 4683, 4683, 4683, 4683, 4683, - 4683, 4683, 4683, 4683, 4683, 4683, 4683, 4683, 4683, 4683, - 4683, 4684, 4684, 4684, 4684, 4684, 4684, 4684, 4684, 4684, - 4684, 4684, 4684, 4684, 4684, 4684, 4684, 4684, 0, 4684, - 4684, 4684, 4684, 0, 4684, 4684, 4684, 4684, 4684, 4684, - 4685, 4685, 0, 4685, 4685, 4685, 4685, 4685, 4685, 4685, - 4685, 4685, 4685, 4685, 4685, 4685, 4685, 4685, 4685, 4685, - 4685, 4685, 4685, 4685, 4685, 4685, 4685, 4685, 4685, 4686, - - 4686, 4686, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 4686, 4686, 0, 0, 0, - 4686, 4687, 0, 0, 4687, 0, 0, 0, 0, 0, - 0, 0, 4687, 4687, 0, 0, 0, 4687, 0, 0, - 0, 0, 0, 4687, 4688, 4688, 0, 4688, 4688, 4688, - 4688, 4688, 4688, 4688, 4688, 4688, 4688, 4688, 4688, 4688, - 4688, 4688, 4688, 4688, 4688, 4688, 4688, 4688, 4688, 4688, - 4688, 4688, 4688, 4689, 4689, 0, 4689, 4689, 4689, 4689, - 4689, 4689, 4689, 4689, 4689, 4689, 4689, 4689, 4689, 4689, - 4689, 4689, 4689, 4689, 4689, 4689, 4689, 4689, 4689, 4689, - - 4689, 4689, 4690, 4690, 0, 4690, 4690, 4690, 4690, 4690, - 4690, 4690, 4690, 4690, 4690, 4690, 4690, 4690, 4690, 4690, - 4690, 4690, 4690, 4690, 4690, 4690, 4690, 4690, 4690, 4690, - 4690, 4691, 4691, 0, 4691, 4691, 4691, 4691, 4691, 4691, - 4691, 4691, 4691, 4691, 4691, 4691, 4691, 4691, 4691, 4691, - 4691, 4691, 4691, 4691, 4691, 4691, 4691, 4691, 4691, 4691, - 4692, 4692, 0, 4692, 4692, 4692, 4692, 4692, 4692, 4692, - 4692, 4692, 4692, 4692, 4692, 4692, 4692, 4692, 4692, 4692, - 4692, 4692, 4692, 4692, 4692, 4692, 4692, 4692, 4692, 4693, - 4693, 0, 4693, 4693, 4693, 4693, 4693, 4693, 4693, 4693, - - 4693, 4693, 4693, 4693, 4693, 4693, 4693, 4693, 4693, 4693, - 4693, 4693, 4693, 4693, 4693, 4693, 4693, 4693, 4694, 4694, - 0, 4694, 4694, 4694, 4694, 4694, 4694, 4694, 4694, 4694, - 4694, 4694, 4694, 4694, 4694, 4694, 4694, 4694, 4694, 4694, - 4694, 4694, 4694, 4694, 4694, 4694, 4694, 4695, 4695, 0, - 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, - 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, 4695, - 4695, 4695, 4695, 4695, 4695, 4695, 4696, 4696, 0, 4696, - 4696, 4696, 4696, 4696, 4696, 4696, 4696, 4696, 4696, 4696, - 4696, 4696, 4696, 4696, 4696, 4696, 4696, 4696, 4696, 4696, - - 4696, 4696, 4696, 4696, 4696, 4697, 4697, 0, 4697, 4697, - 4697, 4697, 4697, 4697, 4697, 4697, 4697, 4697, 4697, 4697, - 4697, 4697, 4697, 4697, 4697, 4697, 4697, 4697, 4697, 4697, - 4697, 4697, 4697, 4697, 4698, 4698, 0, 4698, 4698, 4698, - 4698, 4698, 4698, 4698, 4698, 4698, 4698, 4698, 4698, 4698, - 4698, 4698, 4698, 4698, 4698, 4698, 4698, 4698, 4698, 4698, - 4698, 4698, 4698, 4699, 4699, 0, 4699, 4699, 4699, 4699, - 4699, 4699, 4699, 4699, 4699, 4699, 4699, 4699, 4699, 4699, - 4699, 4699, 4699, 4699, 4699, 4699, 4699, 4699, 4699, 4699, - 4699, 4699, 4700, 4700, 0, 4700, 4700, 4700, 4700, 4700, - - 4700, 4700, 4700, 4700, 4700, 4700, 4700, 4700, 4700, 4700, - 4700, 4700, 4700, 4700, 4700, 4700, 4700, 4700, 4700, 4700, - 4700, 4701, 4701, 0, 4701, 4701, 4701, 4701, 4701, 4701, - 4701, 4701, 4701, 4701, 4701, 4701, 4701, 4701, 4701, 4701, - 4701, 4701, 4701, 4701, 4701, 4701, 4701, 4701, 4701, 4701, - 4702, 4702, 0, 4702, 4702, 4702, 4702, 4702, 4702, 4702, - 4702, 4702, 4702, 4702, 4702, 4702, 4702, 4702, 4702, 4702, - 4702, 4702, 4702, 4702, 4702, 4702, 4702, 4702, 4702, 4703, - 4703, 0, 4703, 4703, 4703, 4703, 4703, 4703, 4703, 4703, - 4703, 4703, 4703, 4703, 4703, 4703, 4703, 4703, 4703, 4703, - - 4703, 4703, 4703, 4703, 4703, 4703, 4703, 4703, 4704, 4704, - 0, 4704, 4704, 4704, 4704, 4704, 4704, 4704, 4704, 4704, - 4704, 4704, 4704, 4704, 4704, 4704, 4704, 4704, 4704, 4704, - 4704, 4704, 4704, 4704, 4704, 4704, 4704, 4705, 4705, 0, - 4705, 4705, 4705, 4705, 4705, 4705, 4705, 4705, 4705, 4705, - 4705, 4705, 4705, 4705, 4705, 4705, 4705, 4705, 4705, 4705, - 4705, 4705, 4705, 4705, 4705, 4705, 4706, 4706, 0, 4706, - 4706, 4706, 4706, 4706, 4706, 4706, 4706, 4706, 4706, 4706, - 4706, 4706, 4706, 4706, 4706, 4706, 4706, 4706, 4706, 4706, - 4706, 4706, 4706, 4706, 4706, 4707, 4707, 0, 4707, 4707, - - 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, - 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, 4707, - 4707, 4707, 4707, 4707, 4708, 4708, 0, 4708, 4708, 4708, - 4708, 4708, 4708, 4708, 4708, 4708, 4708, 4708, 4708, 4708, - 4708, 4708, 4708, 4708, 4708, 4708, 4708, 4708, 4708, 4708, - 4708, 4708, 4708, 4709, 4709, 0, 4709, 4709, 4709, 4709, - 4709, 4709, 4709, 4709, 4709, 4709, 4709, 4709, 4709, 4709, - 4709, 4709, 4709, 4709, 4709, 4709, 4709, 4709, 4709, 4709, - 4709, 4709, 4710, 4710, 0, 4710, 4710, 4710, 4710, 4710, - 4710, 4710, 4710, 4710, 4710, 4710, 4710, 4710, 4710, 4710, - - 4710, 4710, 4710, 4710, 4710, 4710, 4710, 4710, 4710, 4710, - 4710, 4711, 4711, 0, 4711, 4711, 4711, 4711, 4711, 4711, - 4711, 4711, 4711, 4711, 4711, 4711, 4711, 4711, 4711, 4711, - 4711, 4711, 4711, 4711, 4711, 4711, 4711, 4711, 4711, 4711, - 4712, 4712, 0, 4712, 4712, 4712, 4712, 4712, 4712, 4712, - 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, - 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4712, 4713, - 4713, 0, 4713, 4713, 4713, 4713, 4713, 4713, 4713, 4713, - 4713, 4713, 4713, 4713, 4713, 4713, 4713, 4713, 4713, 4713, - 4713, 4713, 4713, 4713, 4713, 4713, 4713, 4713, 4714, 4714, - - 0, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, - 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4714, - 4714, 4714, 4714, 4714, 4714, 4714, 4714, 4715, 4715, 0, - 4715, 4715, 4715, 4715, 4715, 4715, 4715, 4715, 4715, 4715, - 4715, 4715, 4715, 4715, 4715, 4715, 4715, 4715, 4715, 4715, - 4715, 4715, 4715, 4715, 4715, 4715, 4716, 4716, 0, 4716, - 4716, 4716, 4716, 4716, 4716, 4716, 4716, 4716, 4716, 4716, - 4716, 4716, 4716, 4716, 4716, 4716, 4716, 4716, 4716, 4716, - 4716, 4716, 4716, 4716, 4716, 4717, 4717, 0, 4717, 4717, - 4717, 4717, 4717, 4717, 4717, 4717, 4717, 4717, 4717, 4717, - - 4717, 4717, 4717, 4717, 4717, 4717, 4717, 4717, 4717, 4717, - 4717, 4717, 4717, 4717, 4718, 4718, 0, 4718, 4718, 4718, - 4718, 4718, 4718, 4718, 4718, 4718, 4718, 4718, 4718, 4718, - 4718, 4718, 4718, 4718, 4718, 4718, 4718, 4718, 4718, 4718, - 4718, 4718, 4718, 4719, 4719, 0, 4719, 4719, 4719, 4719, - 4719, 4719, 4719, 4719, 4719, 4719, 4719, 4719, 4719, 4719, - 4719, 4719, 4719, 4719, 4719, 4719, 4719, 4719, 4719, 4719, - 4719, 4719, 4720, 4720, 0, 4720, 4720, 4720, 4720, 4720, - 4720, 4720, 4720, 4720, 4720, 4720, 4720, 4720, 4720, 4720, - 4720, 4720, 4720, 4720, 4720, 4720, 4720, 4720, 4720, 4720, - - 4720, 4721, 4721, 0, 4721, 4721, 4721, 4721, 4721, 4721, - 4721, 4721, 4721, 4721, 4721, 4721, 4721, 4721, 4721, 4721, - 4721, 4721, 4721, 4721, 4721, 4721, 4721, 4721, 4721, 4721, - 4722, 4722, 0, 4722, 4722, 4722, 4722, 4722, 4722, 4722, - 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, - 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4722, 4723, - 4723, 0, 4723, 4723, 4723, 4723, 4723, 4723, 4723, 4723, - 4723, 4723, 4723, 4723, 4723, 4723, 4723, 4723, 4723, 4723, - 4723, 4723, 4723, 4723, 4723, 4723, 4723, 4723, 4724, 4724, - 0, 4724, 4724, 4724, 4724, 4724, 4724, 4724, 4724, 4724, - - 4724, 4724, 4724, 4724, 4724, 4724, 4724, 4724, 4724, 4724, - 4724, 4724, 4724, 4724, 4724, 4724, 4724, 4725, 4725, 0, - 4725, 4725, 4725, 4725, 4725, 4725, 4725, 4725, 4725, 4725, - 4725, 4725, 4725, 4725, 4725, 4725, 4725, 4725, 4725, 4725, - 4725, 4725, 4725, 4725, 4725, 4725, 4726, 0, 0, 4726, - 0, 0, 4726, 0, 4726, 4726, 4726, 4726, 4726, 0, - 0, 0, 4726, 0, 4726, 0, 0, 0, 4726, 4727, - 0, 4727, 4727, 4727, 4727, 4727, 0, 0, 0, 4727, - 0, 4727, 4728, 4728, 0, 4728, 4728, 4728, 4728, 4728, - 4728, 4728, 4728, 4728, 4728, 4728, 4728, 4728, 4728, 4728, - - 4728, 4728, 4728, 4728, 4728, 4728, 4728, 4728, 4728, 4728, - 4728, 4729, 0, 0, 0, 0, 0, 4729, 0, 4729, - 4729, 4729, 4729, 4729, 0, 0, 4729, 4729, 0, 0, - 0, 0, 0, 4729, 4730, 0, 0, 0, 0, 0, - 4730, 0, 4730, 4730, 4730, 4730, 4730, 0, 0, 4730, - 4730, 0, 4730, 0, 0, 0, 4730, 4731, 0, 0, - 0, 0, 0, 4731, 0, 4731, 4731, 4731, 4731, 4731, - 0, 0, 4731, 4731, 0, 4731, 0, 0, 0, 4731, - 4732, 0, 0, 0, 0, 0, 4732, 0, 4732, 4732, - 4732, 4732, 4732, 0, 0, 4732, 4732, 0, 4732, 0, - - 0, 0, 4732, 4733, 0, 0, 4733, 0, 0, 4733, - 0, 4733, 4733, 4733, 4733, 4733, 0, 0, 4733, 4733, - 0, 4733, 0, 0, 0, 4733, 4734, 4734, 0, 4734, - 4734, 4734, 4734, 4734, 4734, 4734, 4734, 4734, 4734, 4734, - 4734, 4734, 0, 4734, 4734, 0, 4734, 4734, 4734, 4734, - 0, 4734, 4734, 4734, 4734, 4736, 4736, 4736, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 4736, 0, 0, 0, 4736, 0, 0, 0, - 0, 0, 4736, 4738, 4738, 4738, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 4738, - - 4738, 4738, 0, 0, 4738, 4739, 4739, 0, 4739, 4739, - 4739, 4739, 4739, 4739, 4739, 4739, 4739, 4739, 4739, 4739, - 4739, 4739, 4739, 4739, 4739, 4739, 4739, 4739, 4739, 4739, - 4739, 4739, 4739, 4739, 4740, 0, 0, 4740, 4740, 4740, - 4740, 4740, 4740, 4740, 4740, 0, 4740, 4740, 4740, 4740, - 0, 4740, 4740, 4740, 4740, 4740, 4740, 4740, 0, 4740, - 4740, 4740, 4740, 4741, 4741, 0, 4741, 4741, 4741, 4741, - 4741, 4741, 4741, 4741, 4741, 4741, 4741, 4741, 4741, 4741, - 4741, 4741, 4741, 4741, 4741, 4741, 4741, 4741, 4741, 4741, - 4741, 4741, 4742, 4742, 4742, 4742, 4742, 4742, 4742, 4742, - - 4742, 4742, 4742, 4742, 4742, 4742, 4742, 4742, 4742, 0, - 4742, 4742, 4742, 4742, 0, 4742, 4742, 4742, 4742, 4742, - 4742, 4743, 0, 0, 4743, 0, 0, 0, 0, 0, - 0, 0, 4743, 4743, 0, 0, 0, 4743, 0, 0, - 0, 0, 0, 4743, 4744, 4744, 0, 4744, 4744, 4744, - 4744, 4744, 4744, 4744, 4744, 4744, 4744, 4744, 4744, 4744, - 4744, 4744, 4744, 4744, 4744, 4744, 4744, 4744, 4744, 4744, - 4744, 4744, 4744, 4745, 4745, 0, 4745, 4745, 4745, 4745, - 4745, 4745, 4745, 4745, 4745, 4745, 4745, 4745, 4745, 4745, - 4745, 4745, 4745, 4745, 4745, 4745, 4745, 4745, 4745, 4745, - - 4745, 4745, 4746, 4746, 0, 4746, 4746, 4746, 4746, 4746, - 4746, 4746, 4746, 4746, 4746, 4746, 4746, 4746, 4746, 4746, - 4746, 4746, 4746, 4746, 4746, 4746, 4746, 4746, 4746, 4746, - 4746, 4747, 4747, 0, 4747, 4747, 4747, 4747, 4747, 4747, - 4747, 4747, 4747, 4747, 4747, 4747, 4747, 4747, 4747, 4747, - 4747, 4747, 4747, 4747, 4747, 4747, 4747, 4747, 4747, 4747, - 4748, 4748, 0, 4748, 4748, 4748, 4748, 4748, 4748, 4748, - 4748, 4748, 4748, 4748, 4748, 4748, 4748, 4748, 4748, 4748, - 4748, 4748, 4748, 4748, 4748, 4748, 4748, 4748, 4748, 4749, - 4749, 0, 4749, 4749, 4749, 4749, 4749, 4749, 4749, 4749, - - 4749, 4749, 4749, 4749, 4749, 4749, 4749, 4749, 4749, 4749, - 4749, 4749, 4749, 4749, 4749, 4749, 4749, 4749, 4750, 4750, - 0, 4750, 4750, 4750, 4750, 4750, 4750, 4750, 4750, 4750, - 4750, 4750, 4750, 4750, 4750, 4750, 4750, 4750, 4750, 4750, - 4750, 4750, 4750, 4750, 4750, 4750, 4750, 4751, 4751, 0, - 4751, 4751, 4751, 4751, 4751, 4751, 4751, 4751, 4751, 4751, - 4751, 4751, 4751, 4751, 4751, 4751, 4751, 4751, 4751, 4751, - 4751, 4751, 4751, 4751, 4751, 4751, 4752, 4752, 0, 4752, - 4752, 4752, 4752, 4752, 4752, 4752, 4752, 4752, 4752, 4752, - 4752, 4752, 4752, 4752, 4752, 4752, 4752, 4752, 4752, 4752, - - 4752, 4752, 4752, 4752, 4752, 4753, 4753, 0, 4753, 4753, - 4753, 4753, 4753, 4753, 4753, 4753, 4753, 4753, 4753, 4753, - 4753, 4753, 4753, 4753, 4753, 4753, 4753, 4753, 4753, 4753, - 4753, 4753, 4753, 4753, 4754, 4754, 0, 4754, 4754, 4754, - 4754, 4754, 4754, 4754, 4754, 4754, 4754, 4754, 4754, 4754, - 4754, 4754, 4754, 4754, 4754, 4754, 4754, 4754, 4754, 4754, - 4754, 4754, 4754, 4755, 4755, 0, 4755, 4755, 4755, 4755, - 4755, 4755, 4755, 4755, 4755, 4755, 4755, 4755, 4755, 4755, - 4755, 4755, 4755, 4755, 4755, 4755, 4755, 4755, 4755, 4755, - 4755, 4755, 4756, 4756, 0, 4756, 4756, 4756, 4756, 4756, - - 4756, 4756, 4756, 4756, 4756, 4756, 4756, 4756, 4756, 4756, - 4756, 4756, 4756, 4756, 4756, 4756, 4756, 4756, 4756, 4756, - 4756, 4757, 4757, 0, 4757, 4757, 4757, 4757, 4757, 4757, - 4757, 4757, 4757, 4757, 4757, 4757, 4757, 4757, 4757, 4757, - 4757, 4757, 4757, 4757, 4757, 4757, 4757, 4757, 4757, 4757, - 4758, 4758, 0, 4758, 4758, 4758, 4758, 4758, 4758, 4758, - 4758, 4758, 4758, 4758, 4758, 4758, 4758, 4758, 4758, 4758, - 4758, 4758, 4758, 4758, 4758, 4758, 4758, 4758, 4758, 4759, - 4759, 0, 4759, 4759, 4759, 4759, 4759, 4759, 4759, 4759, - 4759, 4759, 4759, 4759, 4759, 4759, 4759, 4759, 4759, 4759, - - 4759, 4759, 4759, 4759, 4759, 4759, 4759, 4759, 4760, 4760, - 0, 4760, 4760, 4760, 4760, 4760, 4760, 4760, 4760, 4760, - 4760, 4760, 4760, 4760, 4760, 4760, 4760, 4760, 4760, 4760, - 4760, 4760, 4760, 4760, 4760, 4760, 4760, 4761, 4761, 0, - 4761, 4761, 4761, 4761, 4761, 4761, 4761, 4761, 4761, 4761, - 4761, 4761, 4761, 4761, 4761, 4761, 4761, 4761, 4761, 4761, - 4761, 4761, 4761, 4761, 4761, 4761, 4762, 4762, 0, 4762, - 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, - 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, 4762, - 4762, 4762, 4762, 4762, 4762, 4763, 4763, 0, 4763, 4763, - - 4763, 4763, 4763, 4763, 4763, 4763, 4763, 4763, 4763, 4763, - 4763, 4763, 4763, 4763, 4763, 4763, 4763, 4763, 4763, 4763, - 4763, 4763, 4763, 4763, 4764, 4764, 0, 4764, 4764, 4764, - 4764, 4764, 4764, 4764, 4764, 4764, 4764, 4764, 4764, 4764, - 4764, 4764, 4764, 4764, 4764, 4764, 4764, 4764, 4764, 4764, - 4764, 4764, 4764, 4765, 4765, 0, 4765, 4765, 4765, 4765, - 4765, 4765, 4765, 4765, 4765, 4765, 4765, 4765, 4765, 4765, - 4765, 4765, 4765, 4765, 4765, 4765, 4765, 4765, 4765, 4765, - 4765, 4765, 4766, 4766, 0, 4766, 4766, 4766, 4766, 4766, - 4766, 4766, 4766, 4766, 4766, 4766, 4766, 4766, 4766, 4766, - - 4766, 4766, 4766, 4766, 4766, 4766, 4766, 4766, 4766, 4766, - 4766, 4767, 4767, 0, 4767, 4767, 4767, 4767, 4767, 4767, - 4767, 4767, 4767, 4767, 4767, 4767, 4767, 4767, 4767, 4767, - 4767, 4767, 4767, 4767, 4767, 4767, 4767, 4767, 4767, 4767, - 4768, 4768, 0, 4768, 4768, 4768, 4768, 4768, 4768, 4768, - 4768, 4768, 4768, 4768, 4768, 4768, 4768, 4768, 4768, 4768, - 4768, 4768, 4768, 4768, 4768, 4768, 4768, 4768, 4768, 4769, - 4769, 0, 4769, 4769, 4769, 4769, 4769, 4769, 4769, 4769, - 4769, 4769, 4769, 4769, 4769, 4769, 4769, 4769, 4769, 4769, - 4769, 4769, 4769, 4769, 4769, 4769, 4769, 4769, 4770, 4770, - - 0, 4770, 4770, 4770, 4770, 4770, 4770, 4770, 4770, 4770, - 4770, 4770, 4770, 4770, 4770, 4770, 4770, 4770, 4770, 4770, - 4770, 4770, 4770, 4770, 4770, 4770, 4770, 4771, 4771, 0, - 4771, 4771, 4771, 4771, 4771, 4771, 4771, 4771, 4771, 4771, - 4771, 4771, 4771, 4771, 4771, 4771, 4771, 4771, 4771, 4771, - 4771, 4771, 4771, 4771, 4771, 4771, 4772, 4772, 0, 4772, - 4772, 4772, 4772, 4772, 4772, 4772, 4772, 4772, 4772, 4772, - 4772, 4772, 4772, 4772, 4772, 4772, 4772, 4772, 4772, 4772, - 4772, 4772, 4772, 4772, 4772, 4773, 0, 0, 4773, 0, - 0, 4773, 0, 4773, 4773, 4773, 4773, 4773, 0, 0, - - 0, 4773, 0, 4773, 0, 0, 0, 4773, 4774, 0, - 4774, 4774, 4774, 4774, 4774, 0, 0, 0, 4774, 0, - 4774, 4775, 4775, 0, 4775, 4775, 4775, 4775, 4775, 4775, - 4775, 4775, 4775, 4775, 4775, 4775, 4775, 4775, 4775, 4775, - 4775, 4775, 4775, 4775, 4775, 4775, 4775, 4775, 4775, 4775, - 4776, 4776, 0, 4776, 4776, 4776, 4776, 4776, 4776, 4776, - 4776, 4776, 4776, 4776, 4776, 4776, 4776, 4776, 4776, 4776, - 4776, 4776, 4776, 4776, 4776, 4776, 4776, 4776, 4776, 4777, - 4777, 0, 4777, 4777, 4777, 4777, 4777, 4777, 4777, 4777, - 4777, 4777, 4777, 4777, 4777, 4777, 4777, 4777, 4777, 4777, - - 4777, 4777, 4777, 4777, 4777, 4777, 4777, 4777, 4778, 0, - 0, 0, 0, 0, 4778, 0, 4778, 4778, 4778, 4778, - 4778, 0, 0, 4778, 4778, 0, 4778, 0, 0, 0, - 4778, 4779, 0, 0, 4779, 0, 0, 4779, 0, 4779, - 4779, 4779, 4779, 4779, 0, 0, 4779, 4779, 0, 4779, - 0, 0, 0, 4779, 4780, 0, 0, 0, 0, 0, - 4780, 0, 4780, 4780, 4780, 4780, 4780, 0, 0, 4780, - 4780, 0, 0, 0, 0, 0, 4780, 4781, 0, 0, - 4781, 0, 0, 4781, 0, 4781, 4781, 4781, 4781, 4781, - 0, 0, 4781, 4781, 0, 4781, 0, 0, 0, 4781, - - 4782, 4782, 0, 4782, 4782, 4782, 4782, 4782, 4782, 4782, - 4782, 4782, 4782, 4782, 4782, 4782, 4782, 4782, 4782, 4782, - 4782, 4782, 4782, 4782, 4782, 4782, 4782, 4782, 4782, 4783, - 4783, 0, 4783, 4783, 4783, 4783, 4783, 4783, 4783, 4783, - 4783, 4783, 4783, 4783, 4783, 0, 4783, 4783, 0, 4783, - 4783, 4783, 4783, 0, 4783, 4783, 4783, 4783, 4784, 4784, - 4784, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 4784, 4784, 4784, 0, 0, 4784, - 4785, 4785, 0, 4785, 4785, 4785, 4785, 4785, 4785, 4785, - 4785, 4785, 4785, 4785, 4785, 4785, 4785, 4785, 4785, 4785, - - 4785, 4785, 4785, 4785, 4785, 4785, 4785, 4785, 4785, 4786, - 0, 0, 4786, 4786, 4786, 4786, 4786, 4786, 4786, 4786, - 0, 4786, 4786, 4786, 4786, 0, 4786, 4786, 4786, 4786, - 4786, 4786, 4786, 0, 4786, 4786, 4786, 4786, 4787, 0, - 0, 4787, 0, 0, 0, 0, 0, 0, 0, 4787, - 4787, 0, 0, 0, 4787, 0, 0, 0, 0, 0, - 4787, 4788, 4788, 0, 4788, 4788, 4788, 4788, 4788, 4788, - 4788, 4788, 4788, 4788, 4788, 4788, 4788, 4788, 4788, 4788, - 4788, 4788, 4788, 4788, 4788, 4788, 4788, 4788, 4788, 4788, - 4789, 4789, 0, 4789, 4789, 4789, 4789, 4789, 4789, 4789, - - 4789, 4789, 4789, 4789, 4789, 4789, 4789, 4789, 4789, 4789, - 4789, 4789, 4789, 4789, 4789, 4789, 4789, 4789, 4789, 4790, - 4790, 0, 4790, 4790, 4790, 4790, 4790, 4790, 4790, 4790, - 4790, 4790, 4790, 4790, 4790, 4790, 4790, 4790, 4790, 4790, - 4790, 4790, 4790, 4790, 4790, 4790, 4790, 4790, 4791, 4791, - 0, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, - 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4791, - 4791, 4791, 4791, 4791, 4791, 4791, 4791, 4792, 4792, 0, - 4792, 4792, 4792, 4792, 4792, 4792, 4792, 4792, 4792, 4792, - 4792, 4792, 4792, 4792, 4792, 4792, 4792, 4792, 4792, 4792, - - 4792, 4792, 4792, 4792, 4792, 4792, 4793, 4793, 0, 4793, - 4793, 4793, 4793, 4793, 4793, 4793, 4793, 4793, 4793, 4793, - 4793, 4793, 4793, 4793, 4793, 4793, 4793, 4793, 4793, 4793, - 4793, 4793, 4793, 4793, 4793, 4794, 4794, 0, 4794, 4794, - 4794, 4794, 4794, 4794, 4794, 4794, 4794, 4794, 4794, 4794, - 4794, 4794, 4794, 4794, 4794, 4794, 4794, 4794, 4794, 4794, - 4794, 4794, 4794, 4794, 4795, 4795, 0, 4795, 4795, 4795, - 4795, 4795, 4795, 4795, 4795, 4795, 4795, 4795, 4795, 4795, - 4795, 4795, 4795, 4795, 4795, 4795, 4795, 4795, 4795, 4795, - 4795, 4795, 4795, 4796, 4796, 0, 4796, 4796, 4796, 4796, - - 4796, 4796, 4796, 4796, 4796, 4796, 4796, 4796, 4796, 4796, - 4796, 4796, 4796, 4796, 4796, 4796, 4796, 4796, 4796, 4796, - 4796, 4796, 4797, 4797, 0, 4797, 4797, 4797, 4797, 4797, - 4797, 4797, 4797, 4797, 4797, 4797, 4797, 4797, 4797, 4797, - 4797, 4797, 4797, 4797, 4797, 4797, 4797, 4797, 4797, 4797, - 4797, 4798, 4798, 0, 4798, 4798, 4798, 4798, 4798, 4798, - 4798, 4798, 4798, 4798, 4798, 4798, 4798, 4798, 4798, 4798, - 4798, 4798, 4798, 4798, 4798, 4798, 4798, 4798, 4798, 4798, - 4799, 4799, 0, 4799, 4799, 4799, 4799, 4799, 4799, 4799, - 4799, 4799, 4799, 4799, 4799, 4799, 4799, 4799, 4799, 4799, - - 4799, 4799, 4799, 4799, 4799, 4799, 4799, 4799, 4799, 4800, - 4800, 0, 4800, 4800, 4800, 4800, 4800, 4800, 4800, 4800, - 4800, 4800, 4800, 4800, 4800, 4800, 4800, 4800, 4800, 4800, - 4800, 4800, 4800, 4800, 4800, 4800, 4800, 4800, 4801, 4801, - 0, 4801, 4801, 4801, 4801, 4801, 4801, 4801, 4801, 4801, - 4801, 4801, 4801, 4801, 4801, 4801, 4801, 4801, 4801, 4801, - 4801, 4801, 4801, 4801, 4801, 4801, 4801, 4802, 4802, 0, - 4802, 4802, 4802, 4802, 4802, 4802, 4802, 4802, 4802, 4802, - 4802, 4802, 4802, 4802, 4802, 4802, 4802, 4802, 4802, 4802, - 4802, 4802, 4802, 4802, 4802, 4802, 4803, 4803, 0, 4803, - - 4803, 4803, 4803, 4803, 4803, 4803, 4803, 4803, 4803, 4803, - 4803, 4803, 4803, 4803, 4803, 4803, 4803, 4803, 4803, 4803, - 4803, 4803, 4803, 4803, 4803, 4804, 4804, 0, 4804, 4804, - 4804, 4804, 4804, 4804, 4804, 4804, 4804, 4804, 4804, 4804, - 4804, 4804, 4804, 4804, 4804, 4804, 4804, 4804, 4804, 4804, - 4804, 4804, 4804, 4804, 4805, 0, 0, 4805, 0, 0, - 4805, 0, 4805, 4805, 4805, 4805, 4805, 0, 0, 0, - 4805, 0, 4805, 0, 0, 0, 4805, 4806, 0, 4806, - 4806, 4806, 4806, 4806, 0, 0, 0, 4806, 0, 4806, - 4807, 4807, 0, 4807, 4807, 4807, 4807, 4807, 4807, 4807, - - 4807, 4807, 4807, 4807, 4807, 4807, 4807, 4807, 4807, 4807, - 4807, 4807, 4807, 4807, 4807, 4807, 4807, 4807, 4807, 4808, - 0, 0, 0, 0, 0, 4808, 0, 4808, 4808, 4808, - 4808, 4808, 0, 0, 4808, 4808, 0, 0, 0, 0, - 0, 4808, 4809, 0, 0, 4809, 0, 0, 4809, 0, - 4809, 4809, 4809, 4809, 4809, 0, 0, 4809, 4809, 0, - 4809, 0, 0, 0, 4809, 4810, 0, 0, 0, 0, - 0, 4810, 0, 4810, 4810, 4810, 4810, 4810, 0, 0, - 4810, 4810, 0, 4810, 0, 0, 0, 4810, 4811, 0, - 0, 4811, 0, 0, 4811, 0, 4811, 4811, 4811, 4811, - - 4811, 0, 0, 4811, 4811, 0, 0, 0, 0, 0, - 4811, 4812, 0, 0, 4812, 0, 0, 4812, 0, 4812, - 4812, 4812, 4812, 4812, 0, 0, 4812, 4812, 0, 4812, - 0, 0, 0, 4812, 4813, 4813, 0, 4813, 4813, 4813, - 4813, 4813, 4813, 4813, 4813, 4813, 4813, 4813, 4813, 4813, - 4813, 4813, 4813, 4813, 4813, 4813, 4813, 4813, 4813, 4813, - 4813, 4813, 4813, 4814, 4814, 0, 4814, 4814, 4814, 4814, - 4814, 4814, 4814, 4814, 4814, 4814, 4814, 4814, 4814, 0, - 4814, 4814, 0, 4814, 4814, 4814, 4814, 0, 4814, 4814, - 4814, 4814, 4816, 4816, 4816, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 4816, 4816, - 4816, 0, 0, 4816, 4817, 0, 0, 4817, 4817, 4817, - 4817, 4817, 4817, 4817, 4817, 0, 4817, 4817, 4817, 4817, - 0, 4817, 4817, 4817, 4817, 4817, 4817, 4817, 0, 4817, - 4817, 4817, 4817, 4818, 4818, 4818, 4818, 4818, 4818, 4818, - 4818, 4818, 4818, 4818, 4818, 4818, 4818, 4818, 4818, 4818, - 4818, 4818, 4818, 4818, 4818, 4818, 4818, 4818, 4818, 4818, - 4818, 4818, 4819, 0, 0, 4819, 0, 0, 0, 0, - 0, 0, 0, 4819, 4819, 0, 0, 0, 4819, 0, - 0, 0, 0, 0, 4819, 4820, 4820, 0, 4820, 4820, - - 4820, 4820, 4820, 4820, 4820, 4820, 4820, 4820, 4820, 4820, - 4820, 4820, 4820, 4820, 4820, 4820, 4820, 4820, 4820, 4820, - 4820, 4820, 4820, 4820, 4821, 4821, 0, 4821, 4821, 4821, - 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, - 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, 4821, - 4821, 4821, 4821, 4822, 4822, 0, 4822, 4822, 4822, 4822, - 4822, 4822, 4822, 4822, 4822, 4822, 4822, 4822, 4822, 4822, - 4822, 4822, 4822, 4822, 4822, 4822, 4822, 4822, 4822, 4822, - 4822, 4822, 4823, 4823, 0, 4823, 4823, 4823, 4823, 4823, - 4823, 4823, 4823, 4823, 4823, 4823, 4823, 4823, 4823, 4823, - - 4823, 4823, 4823, 4823, 4823, 4823, 4823, 4823, 4823, 4823, - 4823, 4824, 4824, 0, 4824, 4824, 4824, 4824, 4824, 4824, - 4824, 4824, 4824, 4824, 4824, 4824, 4824, 4824, 4824, 4824, - 4824, 4824, 4824, 4824, 4824, 4824, 4824, 4824, 4824, 4824, - 4825, 4825, 0, 4825, 4825, 4825, 4825, 4825, 4825, 4825, - 4825, 4825, 4825, 4825, 4825, 4825, 4825, 4825, 4825, 4825, - 4825, 4825, 4825, 4825, 4825, 4825, 4825, 4825, 4825, 4826, - 4826, 0, 4826, 4826, 4826, 4826, 4826, 4826, 4826, 4826, - 4826, 4826, 4826, 4826, 4826, 4826, 4826, 4826, 4826, 4826, - 4826, 4826, 4826, 4826, 4826, 4826, 4826, 4826, 4827, 4827, - - 0, 4827, 4827, 4827, 4827, 4827, 4827, 4827, 4827, 4827, - 4827, 4827, 4827, 4827, 4827, 4827, 4827, 4827, 4827, 4827, - 4827, 4827, 4827, 4827, 4827, 4827, 4827, 4828, 4828, 0, - 4828, 4828, 4828, 4828, 4828, 4828, 4828, 4828, 4828, 4828, - 4828, 4828, 4828, 4828, 4828, 4828, 4828, 4828, 4828, 4828, - 4828, 4828, 4828, 4828, 4828, 4828, 4829, 4829, 0, 4829, - 4829, 4829, 4829, 4829, 4829, 4829, 4829, 4829, 4829, 4829, - 4829, 4829, 4829, 4829, 4829, 4829, 4829, 4829, 4829, 4829, - 4829, 4829, 4829, 4829, 4829, 4830, 4830, 0, 4830, 4830, - 4830, 4830, 4830, 4830, 4830, 4830, 4830, 4830, 4830, 4830, - - 4830, 4830, 4830, 4830, 4830, 4830, 4830, 4830, 4830, 4830, - 4830, 4830, 4830, 4830, 4832, 4832, 4832, 4832, 4832, 4832, - 4832, 4832, 4832, 4832, 4832, 4832, 4832, 4832, 4832, 4832, - 4832, 0, 4832, 4832, 4832, 4832, 0, 4832, 4832, 4832, - 4832, 4832, 4832, 4833, 4833, 4833, 4833, 4833, 4833, 4833, - 4833, 4833, 4833, 4833, 4833, 4833, 4833, 4833, 4833, 4833, - 0, 4833, 4833, 4833, 4833, 0, 4833, 4833, 4833, 4833, - 4833, 4833, 4834, 0, 0, 4834, 0, 0, 4834, 0, - 4834, 4834, 4834, 4834, 4834, 0, 0, 0, 4834, 0, - 4834, 0, 0, 0, 4834, 4835, 0, 4835, 4835, 4835, - - 4835, 4835, 0, 0, 0, 4835, 0, 4835, 4836, 0, - 0, 4836, 0, 0, 4836, 0, 4836, 4836, 4836, 4836, - 4836, 0, 0, 4836, 4836, 0, 4836, 0, 0, 0, - 4836, 4837, 0, 0, 4837, 0, 0, 4837, 0, 4837, - 4837, 4837, 4837, 4837, 0, 0, 4837, 4837, 0, 0, - 0, 0, 0, 4837, 4838, 0, 0, 0, 0, 0, - 4838, 0, 4838, 4838, 4838, 4838, 4838, 0, 0, 4838, - 4838, 0, 0, 0, 0, 0, 4838, 4839, 4839, 4839, - 4839, 4839, 4839, 4839, 4839, 4839, 4839, 4839, 4839, 4839, - 4839, 4839, 4839, 4839, 4839, 4839, 4839, 4839, 4839, 4839, - - 4839, 4839, 4839, 4839, 4839, 4839, 4840, 4840, 4840, 4840, - 4840, 4840, 4840, 4840, 4840, 4840, 4840, 4840, 4840, 4840, - 4840, 4840, 4840, 0, 4840, 4840, 4840, 4840, 0, 4840, - 4840, 4840, 4840, 4840, 4840, 4844, 4844, 4844, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 4844, 4844, 4844, 0, 0, 4844, 4845, 4845, 4845, - 4845, 4845, 4845, 4845, 4845, 4845, 4845, 4845, 4845, 4845, - 4845, 4845, 4845, 4845, 0, 4845, 4845, 4845, 4845, 0, - 4845, 4845, 4845, 4845, 4845, 4845, 4846, 4846, 4846, 4846, - 4846, 4846, 4846, 4846, 4846, 4846, 4846, 4846, 4846, 4846, - - 4846, 4846, 4846, 4846, 4846, 4846, 4846, 4846, 4846, 4846, - 4846, 4846, 4846, 4846, 4846, 4847, 0, 0, 4847, 0, - 0, 0, 0, 0, 0, 0, 4847, 4847, 0, 0, - 0, 4847, 0, 0, 0, 0, 0, 4847, 4848, 4848, - 0, 4848, 4848, 4848, 4848, 4848, 4848, 4848, 4848, 4848, - 4848, 4848, 4848, 4848, 4848, 4848, 4848, 4848, 4848, 4848, - 4848, 4848, 4848, 4848, 4848, 4848, 4848, 4849, 4849, 0, - 4849, 4849, 4849, 4849, 4849, 4849, 4849, 4849, 4849, 4849, - 4849, 4849, 4849, 4849, 4849, 4849, 4849, 4849, 4849, 4849, - 4849, 4849, 4849, 4849, 4849, 4849, 4850, 4850, 0, 4850, - - 4850, 4850, 4850, 4850, 4850, 4850, 4850, 4850, 4850, 4850, - 4850, 4850, 4850, 4850, 4850, 4850, 4850, 4850, 4850, 4850, - 4850, 4850, 4850, 4850, 4850, 4851, 4851, 0, 4851, 4851, - 4851, 4851, 4851, 4851, 4851, 4851, 4851, 4851, 4851, 4851, - 4851, 4851, 4851, 4851, 4851, 4851, 4851, 4851, 4851, 4851, - 4851, 4851, 4851, 4851, 4852, 4852, 0, 4852, 4852, 4852, - 4852, 4852, 4852, 4852, 4852, 4852, 4852, 4852, 4852, 4852, - 4852, 4852, 4852, 4852, 4852, 4852, 4852, 4852, 4852, 4852, - 4852, 4852, 4852, 4853, 4853, 0, 4853, 4853, 4853, 4853, - 4853, 4853, 4853, 4853, 4853, 4853, 4853, 4853, 4853, 4853, - - 4853, 4853, 4853, 4853, 4853, 4853, 4853, 4853, 4853, 4853, - 4853, 4853, 4855, 4855, 4855, 4855, 4855, 4855, 4855, 4855, - 4855, 4855, 4855, 4855, 4855, 4855, 4855, 4855, 4855, 0, - 4855, 4855, 4855, 4855, 0, 4855, 4855, 4855, 4855, 4855, - 4855, 4857, 4857, 4857, 4857, 4857, 4857, 4857, 4857, 4857, - 4857, 4857, 4857, 4857, 4857, 4857, 4857, 4857, 0, 4857, - 4857, 4857, 4857, 0, 4857, 4857, 4857, 4857, 4857, 4857, - 4858, 0, 0, 4858, 0, 0, 4858, 0, 4858, 4858, - 4858, 4858, 4858, 0, 0, 0, 4858, 0, 4858, 0, - 0, 0, 4858, 4859, 4859, 4859, 0, 0, 0, 0, - - 0, 0, 0, 0, 4859, 0, 4859, 4859, 4859, 4859, - 4859, 0, 0, 0, 4859, 0, 4859, 4860, 0, 4860, - 4860, 4860, 4860, 4860, 0, 0, 0, 4860, 0, 4860, - 4861, 0, 0, 4861, 0, 0, 4861, 0, 4861, 4861, - 4861, 4861, 4861, 0, 0, 4861, 4861, 0, 4861, 0, - 0, 0, 4861, 4862, 0, 0, 0, 0, 0, 4862, - 0, 4862, 4862, 4862, 4862, 4862, 0, 0, 4862, 4862, - 0, 0, 0, 0, 0, 4862, 4863, 4863, 0, 0, - 4863, 4863, 4863, 4863, 4863, 4863, 4863, 4863, 4863, 0, - 4863, 0, 4863, 4863, 4863, 4863, 4863, 4863, 4863, 4863, - - 4863, 4863, 4863, 4863, 4863, 4864, 0, 0, 0, 0, - 0, 4864, 0, 0, 4864, 4864, 0, 4864, 0, 0, - 0, 0, 4864, 4864, 4864, 0, 4864, 4865, 4865, 0, - 0, 4865, 4865, 4865, 4865, 4865, 4865, 4865, 4865, 4865, - 0, 4865, 4865, 4865, 4865, 4865, 4865, 4865, 4865, 4865, - 4865, 4865, 4865, 4865, 4865, 4865, 4866, 4866, 0, 0, - 4866, 4866, 4866, 4866, 4866, 4866, 4866, 4866, 4866, 0, - 4866, 4866, 4866, 4866, 4866, 4866, 4866, 4866, 4866, 4866, - 4866, 4866, 4866, 4866, 4866, 4867, 4867, 0, 0, 4867, - 4867, 4867, 4867, 4867, 4867, 4867, 4867, 4867, 0, 4867, - - 4867, 4867, 4867, 4867, 4867, 4867, 4867, 4867, 4867, 4867, - 4867, 4867, 4867, 4867, 4868, 4868, 0, 4868, 4868, 4868, - 4868, 4868, 4868, 4868, 4868, 4868, 4868, 4868, 4868, 4868, - 0, 4868, 4868, 0, 4868, 4868, 4868, 4868, 0, 4868, - 4868, 4868, 4868, 4872, 4872, 4872, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 4872, - 4872, 4872, 0, 0, 4872, 4873, 4873, 4873, 4873, 4873, - 4873, 4873, 4873, 4873, 4873, 4873, 4873, 4873, 4873, 4873, - 4873, 4873, 0, 4873, 4873, 4873, 4873, 0, 4873, 4873, - 4873, 4873, 4873, 4873, 4874, 4874, 0, 4874, 4874, 4874, - - 4874, 4874, 4874, 4874, 4874, 4874, 4874, 4874, 4874, 4874, - 4874, 4874, 4874, 4874, 4874, 4874, 4874, 4874, 4874, 4874, - 4874, 4874, 4874, 4875, 4875, 4875, 4875, 4875, 4875, 4875, - 4875, 4875, 4875, 4875, 4875, 4875, 4875, 4875, 4875, 4875, - 0, 4875, 4875, 4875, 4875, 0, 4875, 4875, 4875, 4875, - 4875, 4875, 4876, 0, 0, 4876, 0, 0, 0, 0, - 0, 0, 0, 4876, 4876, 0, 0, 0, 4876, 0, - 0, 0, 0, 0, 4876, 4877, 4877, 0, 4877, 4877, - 4877, 4877, 4877, 4877, 4877, 4877, 4877, 4877, 4877, 4877, - 4877, 4877, 4877, 4877, 4877, 4877, 4877, 4877, 4877, 4877, - - 4877, 4877, 4877, 4877, 4878, 4878, 0, 4878, 4878, 4878, - 4878, 4878, 4878, 4878, 4878, 4878, 4878, 4878, 4878, 4878, - 4878, 4878, 4878, 4878, 4878, 4878, 4878, 4878, 4878, 4878, - 4878, 4878, 4878, 4879, 4879, 0, 4879, 4879, 4879, 4879, - 4879, 4879, 4879, 4879, 4879, 4879, 4879, 4879, 4879, 4879, - 4879, 4879, 4879, 4879, 4879, 4879, 4879, 4879, 4879, 4879, - 4879, 4879, 4881, 4881, 4881, 4881, 4881, 4881, 4881, 4881, - 4881, 4881, 4881, 4881, 4881, 4881, 4881, 4881, 4881, 0, - 4881, 4881, 4881, 4881, 0, 4881, 4881, 4881, 4881, 4881, - 4881, 4883, 0, 0, 4883, 0, 0, 4883, 0, 4883, - - 4883, 4883, 4883, 4883, 0, 0, 0, 4883, 0, 4883, - 0, 0, 0, 4883, 4884, 0, 4884, 4884, 4884, 4884, - 4884, 0, 0, 0, 4884, 0, 4884, 4885, 0, 4885, - 4885, 4885, 4885, 4885, 0, 0, 0, 4885, 0, 4885, - 4886, 0, 0, 4886, 0, 0, 4886, 0, 4886, 4886, - 4886, 4886, 4886, 0, 0, 4886, 4886, 0, 4886, 0, - 0, 0, 4886, 4887, 0, 0, 4887, 0, 0, 4887, - 0, 4887, 4887, 4887, 4887, 4887, 0, 0, 4887, 4887, - 0, 0, 0, 0, 0, 4887, 4888, 0, 0, 0, - 0, 0, 4888, 0, 0, 4888, 4888, 0, 4888, 0, - - 0, 0, 0, 0, 4888, 4888, 0, 4888, 4889, 0, - 0, 0, 0, 0, 4889, 0, 0, 4889, 4889, 0, - 4889, 0, 0, 0, 0, 4889, 4889, 4889, 0, 4889, - 4890, 4890, 0, 0, 4890, 4890, 4890, 4890, 4890, 4890, - 4890, 4890, 4890, 0, 4890, 4890, 4890, 4890, 4890, 4890, - 4890, 4890, 4890, 4890, 4890, 4890, 4890, 4890, 4890, 4892, - 4892, 4892, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 4892, 4892, 4892, 0, 0, - 4892, 4893, 4893, 0, 4893, 4893, 4893, 4893, 4893, 4893, - 4893, 4893, 4893, 4893, 4893, 4893, 4893, 4893, 4893, 4893, - - 4893, 4893, 4893, 4893, 4893, 4893, 4893, 4893, 4893, 4893, - 4894, 4894, 0, 0, 4894, 4894, 4894, 4894, 4894, 4894, - 4894, 4894, 4894, 0, 4894, 0, 4894, 4894, 4894, 4894, - 4894, 4894, 4894, 4894, 4894, 4894, 4894, 4894, 4894, 4895, - 0, 0, 0, 0, 0, 4895, 0, 0, 4895, 4895, - 0, 4895, 0, 0, 0, 0, 0, 4895, 4895, 0, - 4895, 4896, 4896, 4896, 4896, 4896, 4896, 4896, 4896, 4896, - 4896, 4896, 4896, 4896, 4896, 4896, 4896, 4896, 0, 4896, - 4896, 4896, 4896, 0, 4896, 4896, 4896, 4896, 4896, 4896, - 4897, 4897, 4897, 4897, 4897, 4897, 4897, 4897, 4897, 4897, - - 4897, 4897, 4897, 4897, 4897, 4897, 4897, 0, 4897, 4897, - 4897, 4897, 0, 4897, 4897, 4897, 4897, 4897, 4897, 4898, - 4898, 4898, 4898, 4898, 4898, 4898, 4898, 4898, 4898, 4898, - 4898, 4898, 4898, 4898, 4898, 4898, 0, 4898, 4898, 4898, - 4898, 0, 4898, 4898, 4898, 4898, 4898, 4898, 4899, 4899, - 4899, 4899, 4899, 4899, 4899, 4899, 4899, 4899, 4899, 4899, - 4899, 4899, 4899, 4899, 4899, 0, 4899, 4899, 4899, 4899, - 0, 4899, 4899, 4899, 4899, 4899, 4899, 4900, 4900, 0, - 0, 4900, 4900, 4900, 4900, 4900, 4900, 4900, 4900, 4900, - 0, 4900, 4900, 4900, 4900, 4900, 4900, 4900, 4900, 4900, - - 4900, 4900, 4900, 4900, 4900, 4900, 4901, 4901, 0, 0, - 4901, 4901, 4901, 4901, 4901, 4901, 4901, 4901, 4901, 0, - 4901, 4901, 4901, 4901, 4901, 4901, 4901, 4901, 4901, 4901, - 4901, 4901, 4901, 4901, 4901, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, 4125, - 4125, 4125, 4125 - } ; - -static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr; -static char *yy_full_match; -static int yy_lp; -static int yy_looking_for_trail_begin = 0; -static int yy_full_lp; -static int *yy_full_state; -#define YY_TRAILING_MASK 0x2000 -#define YY_TRAILING_HEAD_MASK 0x4000 -#define REJECT \ -{ \ -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ \ -yy_cp = yy_full_match; /* restore poss. backed-over text */ \ -yy_lp = yy_full_lp; /* restore orig. accepting pos. */ \ -yy_state_ptr = yy_full_state; /* restore orig. state */ \ -yy_current_state = *yy_state_ptr; /* restore curr. state */ \ -++yy_lp; \ -goto find_rule; \ -} -#define yymore() yymore_used_but_not_detected -#define YY_MORE_ADJ 0 -#define YY_RESTORE_YY_MORE_OFFSET -char *yytext; -#line 1 "scanner.l" -#define INITIAL 0 -/****************************************************************************** - * - * $Id$ - * - * Copyright (C) 1997-2000 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - * All output generated with Doxygen is not covered by this license. - * - */ -#line 18 "scanner.l" - -/* - * includes - */ -#include -#include -#include -#include -#include - -#include "qtbc.h" -#include -#include -#include - -#include "scanner.h" -#include "entry.h" -#include "doxygen.h" -#include "message.h" -#include "config.h" -#include "util.h" -#include "index.h" -#include "defargs.h" -#include "language.h" -#include "outputlist.h" - -#ifndef WIN32 -#include -#endif - -#define YY_NEVER_INTERACTIVE 1 - - -MemberGroupDict memberGroupDict(1009); // dictionary of the member groups heading - -/* ----------------------------------------------------------------- - * - * statics - */ -static bool insideArgumentList; -static QCString className; -static QCString memberName; -static QCString refName; -static OutputList * outDoc; -static QCString code; -static QCString linkRef; -static QCString linkText; -static QCString codeBlock; -static const char * inputString; -static int inputPosition; -static int lastContext; -static int lastCContext; -static int lastDocContext; -static int lastDocRelContext; -static int lastCPPContext; -static int lastSkipSharpContext; -static int lastSkipRoundContext; -static int lastBriefContext; -static int lastVerbState; -static int lastStringContext; -static int lastCurlyContext; -static int lastRoundContext; -static int lastSquareContext; -static int lastCodeState; -static int lastAfterDocContext; -static int lastGroupContext; -static int lastMemberGroupContext; -static int lastFormulaContext; -static int lastAnchorContext; -static int lastInitializerContext; -static int lastClassTemplSpecContext; -static int nextDefContext; -static int overloadContext; -static Protection protection; -static Protection baseProt; -static int sharpCount = 0 ; -static int roundCount = 0 ; -static int curlyCount = 0 ; -static int squareCount = 0 ; -static int ifCount = 0 ; -static Entry* current_root = 0 ; -static Entry* global_root = 0 ; -static Entry* current = 0 ; -static Entry* previous = 0 ; -static Entry* tempEntry = 0 ; -static int yyLineNr = 0 ; -static int anonCount = 0 ; -static char yyFileName[2048] ; -static int lastMemberGroupLine; -static bool sig; -static bool slot; -static bool gstat; -static bool removeSlashes; -static Specifier virt; -static Specifier baseVirt; -static bool exampleDoc; -static QCString exampleName; -static QCString htmlUrl,htmlText; -static QCString currentIncludeFile; -static QCString msType,msName,msArgs; -static int memberGroupId = -1; -static int includeFileOffset = 0; -static int includeFileLength = 0; -static bool firstLine; -static bool isTypedef; -static bool inParamBlock; -static bool inRetValBlock; -static bool inExceptionBlock; -static bool inSeeBlock; -static bool inReturnBlock; -static bool inAuthorBlock; -static bool inDeprecatedBlock; -static bool inVersionBlock; -static bool inDateBlock; -static bool inBugBlock; -static bool inPreBlock; -static bool inPostBlock; -static bool inInvarBlock; -static bool inWarningBlock; -static bool inParBlock; -static bool firstSeeArg; -static char afterDocTerminator; -static int tmpDocType; -static QCString sectionLabel; -static QCString sectionTitle; -static SectionInfo::SectionType - sectionType; -static QCString funcPtrType; -static QCString templateStr; -static QCString baseName; -static QCString *specName; -static QCString formulaText; -static QCString sectionRef; - -// state variable for reading the argument list of a function -static int argRoundCount; -static int argSharpCount; -static int currentArgumentContext; -static int lastCopyArgStringContext; -static int lastCopyArgContext; -static int currentListIndentLevel; -static QCString *copyArgString; -static QCString fullArgString; - -static ArgumentList *currentArgumentList; -static QCString *currentTemplateSpec; -static QCString curImageName; -static char lastCopyArgChar; -static QCString *pCopyRoundString; -static QCString *pCopyCurlyString; -static QCString *pCopyQuotedString; - -//----------------------------------------------------------------------------- - -static void initParser() -{ - insideArgumentList=FALSE; - className.resize(0); - memberName.resize(0); - refName=""; - code.resize(0); - linkRef.resize(0); - linkText.resize(0); - codeBlock.resize(0); - htmlUrl.resize(0); - htmlText.resize(0); - currentIncludeFile.resize(0); - sectionLabel.resize(0); - sectionTitle.resize(0); - baseName.resize(0); - formulaText.resize(0); - protection = Public; - baseProt = Public; - sharpCount = 0; - roundCount = 0; - curlyCount = 0; - ifCount = 0; - memberGroupId = -1; - sig = FALSE; - slot = FALSE; - gstat = FALSE; - virt = Normal; - baseVirt = Normal; - includeFileOffset = 0; - includeFileLength = 0; - firstLine = TRUE; - isTypedef = FALSE; - inParamBlock = FALSE; - inRetValBlock = FALSE; - inExceptionBlock = FALSE; - inSeeBlock = FALSE; - inReturnBlock = FALSE; - inAuthorBlock = FALSE; - inDeprecatedBlock = FALSE; - inVersionBlock = FALSE; - inDateBlock = FALSE; - inBugBlock = FALSE; - inPreBlock = FALSE; - inPostBlock = FALSE; - inInvarBlock = FALSE; - inWarningBlock = FALSE; - inParBlock = FALSE; - firstSeeArg = FALSE; -} - -//----------------------------------------------------------------------------- - -void scanString(const char *s); - -//----------------------------------------------------------------------------- - -class TableElem -{ - public: - TableElem(int r,int c); - ~TableElem(); - int getRow() { return row; } - int getCol() { return col; } - OutputList *outputList() { return ol; } - - private: - OutputList *ol; - int row; - int col; -}; - -TableElem::TableElem(int r,int c) -{ - //printf("TableElem::TableElem(%d,%d)\n",r,c); - ol=new OutputList(outDoc); - outDoc=ol; - row=r; - col=c; -} - -TableElem::~TableElem() -{ - //printf("TableElem::~TableElem(%d,%d)\n",row,col); - delete ol; ol=0; -} - -class Table -{ - public: - Table(); - ~Table(); - void newRow(); - void newElem(); - - private: - OutputList *parentDoc; - QList *elemList; - int curRow; - int curCol; - int rows; - int cols; -}; - -Table::Table() -{ - parentDoc=outDoc; - elemList=new QList; - elemList->setAutoDelete(TRUE); - curRow=curCol=rows=cols=0; -} - -Table::~Table() -{ - //printf("Table::~Table()\n"); - // use elemList & cols & rows - if (cols>0 && rows>0) - { - parentDoc->startTable(cols); - TableElem *e=elemList->first(); - while (e) - { - if (e->getRow()>0) - { - if (e->getCol()==0) - { - if (e->getRow()>1) parentDoc->endTableRow(); - parentDoc->nextTableRow(); - } - else - { - parentDoc->nextTableColumn(); - } - *parentDoc+=*e->outputList(); - parentDoc->endTableColumn(); - } - e=elemList->next(); - } - parentDoc->endTable(); - } - delete elemList; elemList=0; - outDoc=parentDoc; -} - -void Table::newRow() -{ - //printf("Table::newRow()\n"); - curRow++; - if (curRow>rows) rows=curRow; - curCol=0; -} - -void Table::newElem() -{ - //printf("Table::newElem(%d,%d)\n",curRow,curCol); - TableElem *te = new TableElem(curRow,curCol); - elemList->append(te); - - curCol++; - if (curCol>cols) cols=curCol; -} - -static QStack tableStack; -static Table *curTable; - -static void startTable() -{ - //printf("startTable()\n"); - curTable=new Table; - tableStack.push(curTable); -} - -static void endTable() -{ - //printf("endTable()\n"); - delete tableStack.pop(); // the destructor adds the table to the stream! - curTable=tableStack.top(); -} - -//----------------------------------------------------------------------------- - -static void lineCount() -{ - for( const char* c = yytext ; *c ; ++c ) - yyLineNr += (*c == '\n') ; -} - -static void endArgumentList() -{ - if (insideArgumentList) - { - insideArgumentList=FALSE; - outDoc->endItemList(); - } -} - -static void addType( Entry* current ) -{ - if( current->type.length() ) - current->type += ' ' ; - current->type += current->name ; - current->name.resize(0) ; - if( current->type.length() ) - current->type += ' ' ; - current->type += current->args ; - current->args.resize(0) ; - current->argList->clear(); -} - -static void includeFile(OutputList &ol,const char *fileName,bool quiet) -{ - //FileInfo *f; - bool ambig; - FileDef *fd; - if ((fd=findFileDef(&exampleNameDict,fileName,ambig))) - { - currentIncludeFile=fileToString(fd->absFilePath()); - includeFileOffset=0; - includeFileLength=currentIncludeFile.length(); - OutputList codeFrag(&ol); - parseCode(codeFrag,0,currentIncludeFile,exampleDoc,exampleName); - if (!quiet) - { - ol.startCodeFragment(); - ol+=codeFrag; - ol.endCodeFragment(); - } - } - else if (ambig) - { - warn("Include file name %s is ambigious.\n",fileName); - warn("Possible candidates:\n"); - //includeFileList.writeMatches(fileName); - showFileDefMatches(&exampleNameDict,fileName); - } - else - { - warn("Warning: example file %s is not found. ",fileName); - warn("Check your EXAMPLE_PATH\n"); - } -} - -static void verbIncludeFile(OutputList &ol,const char *name) -{ - //FileInfo *f; - bool ambig; - FileDef *fd; - if ((fd=findFileDef(&exampleNameDict,name,ambig))) - { - ol.startCodeFragment(); - ol.codify(fileToString(fd->absFilePath())); - ol.endCodeFragment(); - } - else if (ambig) - { - warn("Include file name %s is ambigious.\n",name); - warn("Possible candidates:\n"); - showFileDefMatches(&exampleNameDict,name); - } - else - { - warn("Warning: example file %s is not found. ",name); - warn("Check your EXAMPLE_PATH\n"); - } -} - - -static QCString stripQuotes(const char *s) -{ - QCString name; - if (s==0 || *s==0) return name; - name=s; - if (name.at(0)=='"' && name.at(name.length()-1)=='"') - { - name=name.mid(1,name.length()-2); - } - return name; -} - -static QCString stripKnownExtensions(const char *text) -{ - QCString result=text; - if (result.right(4)==".tex") result=result.left(result.length()-4); - else if (result.right(5)==".html") result=result.left(result.length()-5); - //printf("%s stripKnowExtensions(%s)\n",result.data(),text); - return result; -} - -static void skipLine(OutputList &ol,const char *key) -{ - bool found=FALSE; - while (!found) - { - QCString s; - char c; - while ( includeFileOffset listIndentStack; -static bool insideItemList = FALSE; - -static void addListItemMarker(const char *marker) -{ - // find the actual position at which the bullet was found - int indent=0; - const char *p=marker; - char c; - while ((c=*p++)) - { - if (c=='\t') - { - indent+=Config::tabSize - (indent%Config::tabSize); - } - else - { - indent++; - } - } - //printf("list marker found at column %d\n",indent); - if (!insideItemList) - { - outDoc->startItemList(); - outDoc->writeListItem(); - listIndentStack.push(new int(indent)); - insideItemList=TRUE; - } - else - { - int *pPrevIndent = listIndentStack.top(); - if (*pPrevIndent==indent) // new item at the same indent level - { - outDoc->writeListItem(); - } - else if (*pPrevIndentstartItemList(); - outDoc->writeListItem(); - listIndentStack.push(new int(indent)); - } - else // end sub item list - { - listIndentStack.pop(); - delete pPrevIndent; - outDoc->endItemList(); - // safe guard against wrong indenting - if (listIndentStack.isEmpty()) - { - insideItemList=FALSE; - warn("Warning: list item with invalid indent found!\n"); - } - else - { - outDoc->writeListItem(); - } - } - } -} - -static void forceEndItemList() -{ - int *indent; - while ((indent=listIndentStack.pop())!=0) - { - outDoc->endItemList(); - delete indent; - } - insideItemList=FALSE; -} - -#if 0 -static void tryEndItemList() -{ - if (listIndentStack.count()==1) // no subitems => end list - { - outDoc->endItemList(); - delete listIndentStack.pop(); - insideItemList=FALSE; - } -} -#endif - -//----------------------------------------------------------------- - -static bool inBlock() -{ - return inParamBlock || inRetValBlock || inSeeBlock || inReturnBlock || inAuthorBlock || - inVersionBlock || inDateBlock || inWarningBlock || inBugBlock || - inParBlock || inExceptionBlock || inDeprecatedBlock || inPreBlock || - inPostBlock || inInvarBlock; -} - -static void endBlock() -{ - if (inParamBlock || inRetValBlock || inExceptionBlock) - { - outDoc->endDescTableData(); - outDoc->endDescTable(); - } - outDoc->endDescList(); - inParamBlock=inRetValBlock=inSeeBlock=inReturnBlock=inAuthorBlock= - inVersionBlock=inDateBlock=inBugBlock=inWarningBlock= - inParBlock=inExceptionBlock=inDeprecatedBlock=inPreBlock=inPostBlock= - inInvarBlock=FALSE; -} - -static void addSection() -{ - //printf("New section pageName=%s label=%s title=%s\n", - // current->name.data(),sectionLabel.data(),sectionTitle.data()); - if (sectionLabel.isEmpty()) return; - if (sectionDict[sectionLabel]==0) - { - SectionInfo *si=new SectionInfo(sectionLabel,sectionTitle,sectionType); - //printf("Adding section addr=%p label=`%s' sectionTitle=`%s' fileName=%s\n",si,sectionLabel.data(),sectionTitle.data(),si->fileName.data()); - sectionDict.insert(sectionLabel,si); - current->anchors->append(new QCString(sectionLabel)); - } - else - { - warn("Warning: Duplicate label %s found!\n",sectionLabel.data()); - } -} - -// Adds a formula text to the list/dictionary of formulas if it was -// not already added. Returns the label of the formula. -static QCString addFormula() -{ - QCString formLabel; - QCString fText=formulaText.simplifyWhiteSpace(); - Formula *f=0; - if ((f=formulaDict[fText])==0) - { - f = new Formula(fText); - formulaList.append(f); - formulaDict.insert(fText,f); - formLabel.sprintf("\\form#%d",f->getId()); - formulaNameDict.insert(formLabel,f); - } - else - { - formLabel.sprintf("\\form#%d",f->getId()); - } - return formLabel; -} - -static bool nameIsOperator(QCString &name) -{ - return name.right(8)=="operator" && - (name.length()==8 || !isId(name.at(name.length()-9))); -} - -static void checkDocs() -{ - if ((current->brief.length()>2 && - current->brief.at(0)=='<' && current->brief.at(1)==' ') || - (current->doc.length()>2 && - current->doc.at(0)=='<' && current->doc.at(1)==' ') - ) - { - warn("Warning: Found lonely '<' symbol at the start of the documentation " - "at line %d of %s\n",yyLineNr,yyFileName); - - } -} - -//static bool curLatexState; -//static bool curManState; -//static bool curHtmlState; -// -//static void storeOutputListState() -//{ -// curLatexState = outDoc->isEnabled(OutputGenerator::Latex); -// curHtmlState = outDoc->isEnabled(OutputGenerator::Html); -// curManState = outDoc->isEnabled(OutputGenerator::Man); -//} -// -//static void restoreOutputListState() -//{ -// if (curLatexState) -// outDoc->enable(OutputGenerator::Latex); -// else -// outDoc->disable(OutputGenerator::Latex); -// if (curHtmlState) -// outDoc->enable(OutputGenerator::Html); -// else -// outDoc->disable(OutputGenerator::Html); -// if (curManState) -// outDoc->enable(OutputGenerator::Man); -// else -// outDoc->disable(OutputGenerator::Man); -//} - -enum ImageTypes -{ - IT_Html, - IT_Latex -}; - -// search for an image in the imageNameDict and if found -// copies the image to the output directory (which is the -// html directory if type==0 or the latex directory if type==1) -static QCString findAndCopyImage(const char *fileName,ImageTypes type) -{ - QCString result; - bool ambig; - FileDef *fd; - if ((fd=findFileDef(&imageNameDict,fileName,ambig))) - { - QFile inImage(fd->absFilePath()); - if (inImage.open(IO_ReadOnly)) - { - result = fileName; - int i; - if ((i=result.findRev('/'))!=-1 || (i=result.findRev('\\'))!=-1) - { - result.right(result.length()-i-1); - } - QCString outputDir; - switch(type) - { - case IT_Html: - outputDir = Config::htmlOutputDir; - break; - case IT_Latex: - outputDir = Config::latexOutputDir; - break; - } - QCString outputFile = outputDir+"/"+result; - QFile outImage(outputFile); - if (outImage.open(IO_WriteOnly)) // copy the image - { - char *buffer = new char[inImage.size()]; - inImage.readBlock(buffer,inImage.size()); - outImage.writeBlock(buffer,inImage.size()); - outImage.flush(); - delete buffer; - } - else - { - warn("Warning: could not write output image %s\n",outputFile.data()); - } - } - else - { - warn("Warning: could not open image %s\n",fileName); - } - } - else if (ambig) - { - warn("Warning: image file name %s is ambigious.\n",fileName); - warn("Possible candidates:\n"); - //includeFileList.writeMatches(fileName); - showFileDefMatches(&imageNameDict,fileName); - } - else - { - result=fileName; - if (result.left(5)!="http:") - { - warn("Warning: image file %s is not found in IMAGE_PATH: " - "assuming external image. ",fileName); - } - } - return result; -} - -/* ----------------------------------------------------------------- */ - -//static void addToBody(const char *text); -//static void addToBodyCond(const char *text); -/* ----------------------------------------------------------------- */ -#undef YY_INPUT -#define YY_INPUT(buf,result,max_size) result=yyread(buf,max_size); - -static int yyread(char *buf,int max_size) -{ - int c=0; - while( c < max_size && inputString[inputPosition] ) - { - *buf = inputString[inputPosition++] ; - //printf("%d (%c)\n",*buf,*buf); - c++; buf++; - } - return c; -} - -//ATTR ((({BN}+[^\>]+)/">")?) -#define Define 1 - -#define DefineArg 2 - -#define DefineEnd 3 - -#define Include 4 - -#define ClassName 5 - -#define ClassVar 6 - -#define ClassTemplSpec 7 - -#define Bases 8 - -#define BasesProt 9 - -#define NextSemi 10 - -#define FindMembers 11 - -#define FindMemberName 12 - -#define FindFields 13 - -#define FindFieldArg 14 - -#define Function 15 - -#define FuncRound 16 - -#define ExcpRound 17 - -#define FuncQual 18 - -#define Operator 19 - -#define Array 20 - -#define Curly 21 - -#define Using 22 - -#define UsingDirective 23 - -#define NameSpaceDocArg1 24 - -#define SkipCurly 25 - -#define SkipCurlyCpp 26 - -#define SkipCurlyEndDoc 27 - -#define SkipString 28 - -#define SkipInits 29 - -#define SkipCPP 30 - -#define SkipCPPBlock 31 - -#define SkipComment 32 - -#define SkipCxxComment 33 - -#define SkipCurlyBlock 34 - -#define SkipRoundBlock 35 - -#define SkipCode 36 - -#define Sharp 37 - -#define SkipSharp 38 - -#define SkipRound 39 - -#define SkipSquare 40 - -#define TypedefName 41 - -#define Comment 42 - -#define Doc 43 - -#define JavaDoc 44 - -#define ClassDoc 45 - -#define LineDoc 46 - -#define DefLineDoc 47 - -#define ClassDocArg1 48 - -#define ClassDocArg2 49 - -#define ClassDocArg3 50 - -#define ClassDocFunc 51 - -#define ClassDocFuncPtr 52 - -#define ClassDocFuncQual 53 - -#define ClassDocFuncSkipLine 54 - -#define ClassDocFuncExc 55 - -#define ClassDocDefine 56 - -#define ClassDocRelates 57 - -#define ClassDocBrief 58 - -#define ClassDocOverload 59 - -#define ClassDefineArgs 60 - -#define GroupDocArg1 61 - -#define GroupDocArg2 62 - -#define GroupName 63 - -#define GroupHeader 64 - -#define AfterDoc 65 - -#define AfterDocBrief 66 - -#define AfterDocLine 67 - -#define PageDoc 68 - -#define PageDocTitle 69 - -#define PageDocArg1 70 - -#define PageDocArg2 71 - -#define FileDocArg1 72 - -#define FileDocArg2 73 - -#define ExampleDoc 74 - -#define ExampleDocArg1 75 - -#define EnumDoc 76 - -#define EnumDocArg1 77 - -#define FuncPtr 78 - -#define EndFuncPtr 79 - -#define FuncFunc 80 - -#define FuncFuncEnd 81 - -#define FuncFuncType 82 - -#define MemberSpec 83 - -#define MemberSpecSkip 84 - -#define SkipVerbatim 85 - -#define Text 86 - -#define DocScan 87 - -#define DocParam 88 - -#define DocException 89 - -#define DocHtmlScan 90 - -#define DocLatexScan 91 - -#define DocEmphasis 92 - -#define DocBold 93 - -#define DocCode 94 - -#define DocCodeBlock 95 - -#define DocInternal 96 - -#define DocLink 97 - -#define DocLinkText 98 - -#define DocSkipWord 99 - -#define DocInclude 100 - -#define DocDontInclude 101 - -#define DocDescItem 102 - -#define DocHtmlLink 103 - -#define DocHtmlAnchor 104 - -#define DocHtmlHref1 105 - -#define DocHtmlHref2 106 - -#define DocBaseClass 107 - -#define DocSkiplineKey 108 - -#define DocSkipKey 109 - -#define DocLineKey 110 - -#define DocUntilKey 111 - -#define DocKeyEnd 112 - -#define DocPar 113 - -#define DocRefName 114 - -#define DocVerbatim 115 - -#define DocVerbInc 116 - -#define DocIndexWord 117 - -#define DocRef 118 - -#define DocRefArg 119 - -#define DocRefArgStart 120 - -#define DocRefItem 121 - -#define DocRefItemName 122 - -#define DocImage 123 - -#define DocHtmlImageName 124 - -#define DocLatexImageName 125 - -#define DocLatexImageWidth 126 - -#define SectionLabel 127 - -#define SectionTitle 128 - -#define SkipTemplate 129 - -#define EndTemplate 130 - -#define CopyArgString 131 - -#define CopyArgRound 132 - -#define CopyArgSharp 133 - -#define CopyArgComment 134 - -#define CopyArgCommentLine 135 - -#define ReadFuncArgType 136 - -#define ReadTempArgs 137 - -#define Specialization 138 - -#define DocSkipHtmlComment 139 - -#define ReadFormulaShort 140 - -#define ReadFormulaLong 141 - -#define AnchorLabel 142 - -#define ReadInitializer 143 - -#define CopyString 144 - -#define CopyRound 145 - -#define CopyCurly 146 - - -/* Macros after this point can all be overridden by user definitions in - * section 1. - */ - -#ifndef YY_SKIP_YYWRAP -#ifdef __cplusplus -extern "C" int yywrap YY_PROTO(( void )); -#else -extern int yywrap YY_PROTO(( void )); -#endif -#endif - -#ifndef YY_NO_UNPUT -static void yyunput YY_PROTO(( int c, char *buf_ptr )); -#endif - -#ifndef yytext_ptr -static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int )); -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen YY_PROTO(( yyconst char * )); -#endif - -#ifndef YY_NO_INPUT -#ifdef __cplusplus -static int yyinput YY_PROTO(( void )); -#else -static int input YY_PROTO(( void )); -#endif -#endif - -#if YY_STACK_USED -static int yy_start_stack_ptr = 0; -static int yy_start_stack_depth = 0; -static int *yy_start_stack = 0; -#ifndef YY_NO_PUSH_STATE -static void yy_push_state YY_PROTO(( int new_state )); -#endif -#ifndef YY_NO_POP_STATE -static void yy_pop_state YY_PROTO(( void )); -#endif -#ifndef YY_NO_TOP_STATE -static int yy_top_state YY_PROTO(( void )); -#endif - -#else -#define YY_NO_PUSH_STATE 1 -#define YY_NO_POP_STATE 1 -#define YY_NO_TOP_STATE 1 -#endif - -#ifdef YY_MALLOC_DECL -YY_MALLOC_DECL -#else -#if __STDC__ -#ifndef __cplusplus -#include -#endif -#else -/* Just try to get by without declaring the routines. This will fail - * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int) - * or sizeof(void*) != sizeof(int). - */ -#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 (void) fwrite( yytext, yyleng, 1, yyout ) -#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->yy_is_interactive ) \ - { \ - int c = '*', n; \ - for ( n = 0; n < max_size && \ - (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ - buf[n] = (char) c; \ - if ( c == '\n' ) \ - buf[n++] = (char) c; \ - if ( c == EOF && ferror( yyin ) ) \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - result = n; \ - } \ - else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \ - && ferror( yyin ) ) \ - YY_FATAL_ERROR( "input in flex scanner failed" ); -#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 - -/* Default declaration of generated scanner - a define so the user can - * easily add parameters. - */ -#ifndef YY_DECL -#define YY_DECL int yylex YY_PROTO(( void )) -#endif - -/* Code executed at the beginning of each rule, after yytext and yyleng - * have been set up. - */ -#ifndef YY_USER_ACTION -#define YY_USER_ACTION -#endif - -/* Code executed at the end of each rule. */ -#ifndef YY_BREAK -#define YY_BREAK break; -#endif - -#define YY_RULE_SETUP \ - if ( yyleng > 0 ) \ - yy_current_buffer->yy_at_bol = \ - (yytext[yyleng - 1] == '\n'); \ - YY_USER_ACTION - -YY_DECL - { - register yy_state_type yy_current_state; - register char *yy_cp, *yy_bp; - register int yy_act; - -#line 1050 "scanner.l" - - - - if ( yy_init ) - { - yy_init = 0; - -#ifdef YY_USER_INIT - YY_USER_INIT; -#endif - - if ( ! yy_start ) - yy_start = 1; /* first start state */ - - if ( ! yyin ) - yyin = stdin; - - if ( ! yyout ) - yyout = stdout; - - if ( ! yy_current_buffer ) - yy_current_buffer = - yy_create_buffer( yyin, YY_BUF_SIZE ); - - yy_load_buffer_state(); - } - - while ( 1 ) /* loops until end-of-file is reached */ - { - yy_cp = yy_c_buf_p; - - /* Support of yytext. */ - *yy_cp = yy_hold_char; - - /* yy_bp points to the position in yy_ch_buf of the start of - * the current run. - */ - yy_bp = yy_cp; - - yy_current_state = yy_start; - yy_current_state += YY_AT_BOL(); - yy_state_ptr = yy_state_buf; - *yy_state_ptr++ = yy_current_state; -yy_match: - do - { - register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 4126 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - *yy_state_ptr++ = yy_current_state; - ++yy_cp; - } - while ( yy_base[yy_current_state] != 33836 ); - -yy_find_action: - yy_current_state = *--yy_state_ptr; - yy_lp = yy_accept[yy_current_state]; -find_rule: /* we branch to this label when backing up */ - for ( ; ; ) /* until we find what rule we matched */ - { - if ( yy_lp && yy_lp < yy_accept[yy_current_state + 1] ) - { - yy_act = yy_acclist[yy_lp]; - if ( yy_act & YY_TRAILING_HEAD_MASK || - yy_looking_for_trail_begin ) - { - if ( yy_act == yy_looking_for_trail_begin ) - { - yy_looking_for_trail_begin = 0; - yy_act &= ~YY_TRAILING_HEAD_MASK; - break; - } - } - else if ( yy_act & YY_TRAILING_MASK ) - { - yy_looking_for_trail_begin = yy_act & ~YY_TRAILING_MASK; - yy_looking_for_trail_begin |= YY_TRAILING_HEAD_MASK; - } - else - { - yy_full_match = yy_cp; - yy_full_state = yy_state_ptr; - yy_full_lp = yy_lp; - break; - } - ++yy_lp; - goto find_rule; - } - --yy_cp; - yy_current_state = *--yy_state_ptr; - yy_lp = yy_accept[yy_current_state]; - } - - YY_DO_BEFORE_ACTION; - - -do_action: /* This label is used only to access EOF actions. */ - - - switch ( yy_act ) - { /* beginning of action switch */ -case 1: -YY_RULE_SETUP -#line 1052 "scanner.l" -{ // new file - if (memberGroupId!=-1) - { - warn("Warning: Missing \\endmgroup in file %s\n",yyFileName); - memberGroupId=-1; - } - yyLineNr= 0 ; // there is always an extra newline at the start of the file - int i; - for( i = 0 ; yytext[i+1] != 6 ; i++ ) - yyFileName[i] = yytext[i+1] ; - yyFileName[i] = 0 ; - msg("Parsing file %s...\n",yyFileName); - current_root = global_root ; - initParser(); - current->reset(); - int sec=guessSection(yyFileName); - if (sec) - { - current->name = yyFileName; - current->name = current->name; - current->section = sec; - current_root->addSubEntry(current); - current = new Entry; - } - BEGIN( FindMembers ); - } - YY_BREAK -case 2: -YY_RULE_SETUP -#line 1078 "scanner.l" - - YY_BREAK -/* -^{BL} { - if (insideArgumentList) - { - insideArgumentList=FALSE; - outDoc->endItemList(); - } - else - { - outDoc->newParagraph(); - } - if (inBlock()) endBlock(); - } - */ -case 3: -YY_RULE_SETUP -#line 1093 "scanner.l" -{ /* found list item marker */ - addListItemMarker(yytext); - } - YY_BREAK -case 4: -YY_RULE_SETUP -#line 1096 "scanner.l" -{ BEGIN(DocSkipHtmlComment); } - YY_BREAK -case 5: -YY_RULE_SETUP -#line 1097 "scanner.l" -{ BEGIN(DocScan); } - YY_BREAK -case 6: -YY_RULE_SETUP -#line 1098 "scanner.l" - - YY_BREAK -case 7: -YY_RULE_SETUP -#line 1099 "scanner.l" -{ outDoc->writeCopyright(); } - YY_BREAK -case 8: -YY_RULE_SETUP -#line 1100 "scanner.l" -{ outDoc->writeQuote(); } - YY_BREAK -case 9: -YY_RULE_SETUP -#line 1101 "scanner.l" -{ outDoc->writeUmlaut(yytext[1]); } - YY_BREAK -case 10: -YY_RULE_SETUP -#line 1102 "scanner.l" -{ outDoc->writeAcute(yytext[1]); } - YY_BREAK -case 11: -YY_RULE_SETUP -#line 1103 "scanner.l" -{ outDoc->writeGrave(yytext[1]); } - YY_BREAK -case 12: -YY_RULE_SETUP -#line 1104 "scanner.l" -{ outDoc->writeCirc(yytext[1]); } - YY_BREAK -case 13: -YY_RULE_SETUP -#line 1105 "scanner.l" -{ outDoc->writeTilde(yytext[1]); } - YY_BREAK -case 14: -YY_RULE_SETUP -#line 1106 "scanner.l" -{ outDoc->writeSharpS(); } - YY_BREAK -case 15: -YY_RULE_SETUP -#line 1107 "scanner.l" -{ outDoc->writeRing(yytext[1]); } - YY_BREAK -case 16: -YY_RULE_SETUP -#line 1108 "scanner.l" -{ - QCString envvar=&yytext[2]; - envvar=envvar.left(envvar.length()-1); - outDoc->docify(getenv(envvar)); - } - YY_BREAK -case 17: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 1113 "scanner.l" -{ - outDoc->pushGeneratorState(); /*storeOutputListState();*/ - outDoc->disableAllBut(OutputGenerator::Html); - BEGIN(DocHtmlScan); - } - YY_BREAK -case 18: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 1118 "scanner.l" -{ - /*restoreOutputListState();*/ - outDoc->popGeneratorState(); - BEGIN(DocScan); - } - YY_BREAK -case 19: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 1123 "scanner.l" -{ - /*storeOutputListState();*/ - outDoc->pushGeneratorState(); - outDoc->disableAllBut(OutputGenerator::Latex); - BEGIN(DocLatexScan); - } - YY_BREAK -case 20: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 1129 "scanner.l" -{ - /*restoreOutputListState();*/ - outDoc->popGeneratorState(); - BEGIN(DocScan); - } - YY_BREAK -case 21: -YY_RULE_SETUP -#line 1134 "scanner.l" -{ - outDoc->writeString(yytext); - } - YY_BREAK -case 22: -YY_RULE_SETUP -#line 1137 "scanner.l" -{ - char c[2]; - c[0]=*yytext;c[1]='\0'; - outDoc->writeString(c); - } - YY_BREAK -case 23: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp = yy_bp + 11; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 1142 "scanner.l" - - YY_BREAK -case 24: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp = yy_bp + 14; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 1143 "scanner.l" -{ writeMemberList(*outDoc); } - YY_BREAK -case 25: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp = yy_bp + 15; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 1144 "scanner.l" -{ writeClassHierarchy(*outDoc); } - YY_BREAK -case 26: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp = yy_bp + 19; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 1145 "scanner.l" -{ writeAnnotatedClassList(*outDoc); } - YY_BREAK -case 27: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp = yy_bp + 15; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 1146 "scanner.l" -{ /*TODO: fix this writeHeaderFileList(*outDoc); */ } - YY_BREAK -case 28: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp = yy_bp + 7; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 1147 "scanner.l" -{ BEGIN( DocSkipWord ); } - YY_BREAK -case 29: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp = yy_bp + 7; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 1148 "scanner.l" -{ BEGIN( DocSkipWord ); } - YY_BREAK -case 30: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 1149 "scanner.l" -{ BEGIN( DocVerbInc ); } - YY_BREAK -case 31: -YY_RULE_SETUP -#line 1150 "scanner.l" -{ - verbIncludeFile(*outDoc,stripQuotes(yytext)); - BEGIN( DocScan ); - } - YY_BREAK -case 32: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 1154 "scanner.l" -{ - outDoc->startCodeFragment(); - BEGIN(DocVerbatim); - } - YY_BREAK -case 33: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 1158 "scanner.l" -{ - outDoc->endCodeFragment(); - BEGIN(DocScan); - } - YY_BREAK -case 34: -YY_RULE_SETUP -#line 1162 "scanner.l" -{ - //printf("docifying: %s\n",yytext); - outDoc->codify(yytext); - } - YY_BREAK -case 35: -YY_RULE_SETUP -#line 1166 "scanner.l" -{ - outDoc->codify(yytext); - } - YY_BREAK -case 36: -YY_RULE_SETUP -#line 1169 "scanner.l" -{ - //printf("char %c\n",*yytext); - char c[2];c[0]=*yytext;c[1]='\0'; - outDoc->codify(c); - } - YY_BREAK -case 37: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 1174 "scanner.l" -{ - if (!Config::internalDocsFlag) - { - outDoc->newParagraph(); - scanString(theTranslator->trForInternalUseOnly()+"\n"); - //outDoc->writeString("For internal use only.\n"); - BEGIN( DocInternal ); - } - } - YY_BREAK -case 38: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp = yy_bp + 6; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 1183 "scanner.l" -{ - outDoc->newParagraph(); - scanString(theTranslator->trReimplementedForInternalReasons()+"\n"); - } - YY_BREAK -case 39: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 1187 "scanner.l" -{ BEGIN( DocLink ); } - YY_BREAK -case 40: -YY_RULE_SETUP -#line 1188 "scanner.l" -{ BEGIN( DocScan ); } - YY_BREAK -case 41: -YY_RULE_SETUP -#line 1189 "scanner.l" -{ - linkRef = stripKnownExtensions(yytext); - linkText = ""; - BEGIN( DocLinkText ); - } - YY_BREAK -case 42: -YY_RULE_SETUP -#line 1194 "scanner.l" -{ linkText += *yytext; } - YY_BREAK -case 43: -YY_RULE_SETUP -#line 1195 "scanner.l" -{ linkText += " "; } - YY_BREAK -case 44: -YY_RULE_SETUP -#line 1196 "scanner.l" -{ // <- needed for things like \endlink. - //printf("GenerateLink className=`%s' linkRef=`%s' linkText=`%s'\n", - // className.data(),linkRef.data(),linkText.data()); - generateLink(*outDoc,className,linkRef,inSeeBlock,linkText.stripWhiteSpace()); - BEGIN( DocScan ); - } - YY_BREAK -/* -"@ref"{B}+ { - BEGIN(DocRef); - } -{SCOPENAME} { - generateLink(*outDoc,className,yytext,TRUE,0); - BEGIN( DocScan ); - } - */ -case 45: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 1211 "scanner.l" -{ warn("Warning: \\endlink without \\link " - "in documentation of %s\n", refName.data()); - } - YY_BREAK -case 46: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 1214 "scanner.l" -{ - BEGIN(DocIndexWord); - } - YY_BREAK -case 47: -YY_RULE_SETUP -#line 1217 "scanner.l" -{ - Formula *formula=formulaNameDict[yytext]; - if (formula) - { - QCString formName; - formName.sprintf("form-%d.gif",formula->getId()); - outDoc->writeFormula(formName,formula->getFormulaText()); - } - } - YY_BREAK -case 48: -YY_RULE_SETUP -#line 1226 "scanner.l" -{ - //printf("Adding %s to index\n",yytext); - outDoc->addToIndex(yytext,0); - BEGIN(DocScan); - } - YY_BREAK -case 49: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 1231 "scanner.l" -{ - if (insideArgumentList) - { - outDoc->writeListItem(); - } - else - { - outDoc->startItemList(); - outDoc->writeListItem(); - insideArgumentList=TRUE; - } - } - YY_BREAK -case 50: -YY_RULE_SETUP -#line 1243 "scanner.l" -{ - BEGIN(DocPar); - } - YY_BREAK -case 51: -YY_RULE_SETUP -#line 1246 "scanner.l" -{ - endArgumentList(); - if (inBlock()) endBlock(); - inParBlock=TRUE; - outDoc->startDescList(); - outDoc->startBold(); - outDoc->docify(((QCString)yytext).stripWhiteSpace()); - outDoc->endBold(); - outDoc->endDescTitle(); - outDoc->writeDescItem(); - BEGIN(DocScan); - } - YY_BREAK -case 52: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 1258 "scanner.l" -{ - endArgumentList(); - if (!inWarningBlock) - { - if (inBlock()) endBlock(); - inWarningBlock=TRUE; - outDoc->startDescList(); - //outDoc->writeBoldString("Warning: "); - outDoc->startBold(); - scanString(theTranslator->trWarning()+": "); - outDoc->endBold(); - outDoc->endDescTitle(); - outDoc->writeDescItem(); - } - else - { - outDoc->writeDescItem(); - } - } - YY_BREAK -case 53: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 1277 "scanner.l" -{ - endArgumentList(); - if (!inBugBlock) - { - if (inBlock()) endBlock(); - inBugBlock=TRUE; - outDoc->startDescList(); - outDoc->startBold(); - scanString(theTranslator->trBugsAndLimitations()+": "); - outDoc->endBold(); - outDoc->endDescTitle(); - outDoc->writeDescItem(); - } - else - { - outDoc->writeDescItem(); - } - } - YY_BREAK -case 54: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 1295 "scanner.l" -{ - endArgumentList(); - if (!inPreBlock) - { - if (inBlock()) endBlock(); - inPreBlock=TRUE; - outDoc->startDescList(); - outDoc->startBold(); - scanString(theTranslator->trPrecondition()+": "); - outDoc->endBold(); - outDoc->endDescTitle(); - outDoc->writeDescItem(); - } - else - { - outDoc->writeDescItem(); - } - } - YY_BREAK -case 55: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 1313 "scanner.l" -{ - endArgumentList(); - if (!inPostBlock) - { - if (inBlock()) endBlock(); - inPostBlock=TRUE; - outDoc->startDescList(); - outDoc->startBold(); - scanString(theTranslator->trPostcondition()+": "); - outDoc->endBold(); - outDoc->endDescTitle(); - outDoc->writeDescItem(); - } - else - { - outDoc->writeDescItem(); - } - } - YY_BREAK -case 56: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 1331 "scanner.l" -{ - endArgumentList(); - if (!inInvarBlock) - { - if (inBlock()) endBlock(); - inInvarBlock=TRUE; - outDoc->startDescList(); - outDoc->startBold(); - scanString(theTranslator->trInvariant()+": "); - outDoc->endBold(); - outDoc->endDescTitle(); - outDoc->writeDescItem(); - } - else - { - outDoc->writeDescItem(); - } - } - YY_BREAK -case 57: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 1349 "scanner.l" -{ - endArgumentList(); - if (!inVersionBlock) - { - if (inBlock()) endBlock(); - inVersionBlock=TRUE; - outDoc->startDescList(); - outDoc->startBold(); - scanString(theTranslator->trVersion()+": "); - outDoc->endBold(); - outDoc->endDescTitle(); - outDoc->writeDescItem(); - } - else - { - outDoc->writeDescItem(); - } - } - YY_BREAK -case 58: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 1367 "scanner.l" -{ - endArgumentList(); - if (!inDateBlock) - { - if (inBlock()) endBlock(); - inDateBlock=TRUE; - outDoc->startDescList(); - outDoc->startBold(); - scanString(theTranslator->trDate()+": "); - outDoc->endBold(); - outDoc->endDescTitle(); - outDoc->writeDescItem(); - } - else - { - outDoc->writeDescItem(); - } - } - YY_BREAK -case 59: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 1385 "scanner.l" -{ - endArgumentList(); - if (!inDeprecatedBlock) - { - if (inBlock()) endBlock(); - inDeprecatedBlock=TRUE; - outDoc->startDescList(); - outDoc->startBold(); - scanString(theTranslator->trDeprecated()+": "); - outDoc->endBold(); - outDoc->endDescTitle(); - outDoc->writeDescItem(); - } - else - { - outDoc->writeDescItem(); - } - } - YY_BREAK -case 60: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 1403 "scanner.l" -{ - endArgumentList(); - if (!inAuthorBlock) - { - if (inBlock()) endBlock(); - inAuthorBlock=TRUE; - outDoc->startDescList(); - outDoc->startBold(); - scanString(theTranslator->trAuthors()+": "); - outDoc->endBold(); - outDoc->endDescTitle(); - outDoc->writeDescItem(); - } - else - { - outDoc->docify(", "); - } - } - YY_BREAK -case 61: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 1421 "scanner.l" -{ - endArgumentList(); - if (!inReturnBlock) - { - if (inBlock()) endBlock(); - inReturnBlock=TRUE; - outDoc->startDescList(); - outDoc->startBold(); - scanString(theTranslator->trReturns()+": "); - outDoc->endBold(); - outDoc->endDescTitle(); - outDoc->writeDescItem(); - } - } - YY_BREAK -case 62: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 1435 "scanner.l" -{ - endArgumentList(); - if (!inSeeBlock) - { - if (inBlock()) endBlock(); - inSeeBlock=TRUE; - outDoc->startDescList(); - outDoc->startBold(); - scanString(theTranslator->trSeeAlso()+": "); - outDoc->endBold(); - outDoc->endDescTitle(); - outDoc->writeDescItem(); - } - else - { - outDoc->docify(", "); - } - } - YY_BREAK -case 63: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 1453 "scanner.l" -{ - endArgumentList(); - if (!inParamBlock) - { - if (inBlock()) endBlock(); - inParamBlock=TRUE; - outDoc->startDescList(); - outDoc->startBold(); - scanString(theTranslator->trParameters()+": "); - outDoc->endBold(); - outDoc->endDescTitle(); - outDoc->writeDescItem(); - outDoc->startDescTable(); - } - else - { - outDoc->endDescTableData(); - } - BEGIN(DocParam); - } - YY_BREAK -case 64: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 1473 "scanner.l" -{ - endArgumentList(); - if (!inRetValBlock) - { - if (inBlock()) endBlock(); - inRetValBlock=TRUE; - outDoc->startDescList(); - outDoc->startBold(); - scanString(theTranslator->trReturnValues()+": "); - outDoc->endBold(); - outDoc->endDescTitle(); - outDoc->writeDescItem(); - outDoc->startDescTable(); - } - else - { - outDoc->endDescTableData(); - } - BEGIN(DocParam); - } - YY_BREAK -case 65: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 1493 "scanner.l" -{ - endArgumentList(); - if (!inExceptionBlock) - { - if (inBlock()) endBlock(); - inExceptionBlock=TRUE; - outDoc->startDescList(); - outDoc->startBold(); - scanString(theTranslator->trExceptions()+": "); - outDoc->endBold(); - outDoc->endDescTitle(); - outDoc->writeDescItem(); - outDoc->startDescTable(); - } - else - { - outDoc->endDescTableData(); - } - BEGIN(DocException); - } - YY_BREAK -case 66: -YY_RULE_SETUP -#line 1513 "scanner.l" - - YY_BREAK -case 67: -YY_RULE_SETUP -#line 1514 "scanner.l" -{ - outDoc->startDescTableTitle(); - outDoc->startEmphasis(); - outDoc->docify(yytext); - outDoc->endEmphasis(); - outDoc->endDescTableTitle(); - outDoc->startDescTableData(); - BEGIN(DocScan); - } - YY_BREAK -case 68: -YY_RULE_SETUP -#line 1523 "scanner.l" -{ - outDoc->startDescTableTitle(); - outDoc->startEmphasis(); - outDoc->docify(yytext); - outDoc->endEmphasis(); - outDoc->endDescTableTitle(); - outDoc->startDescTableData(); - BEGIN(DocScan); - } - YY_BREAK -case 69: -YY_RULE_SETUP -#line 1532 "scanner.l" -{ - QCString secName=&yytext[9]; // skip "\section " - secName=secName.left(secName.length()-1); // remove \n - //printf("SectionName %s found\n",secName.data()); - SectionInfo *sec; - if ((sec=sectionDict[secName])) - { - //printf("Title %s\n",sec->title.data()); - outDoc->writeSection(sec->label,sec->title, - sec->type==SectionInfo::Subsection); - } - } - YY_BREAK -case 70: -YY_RULE_SETUP -#line 1544 "scanner.l" -{ - QCString secName=&yytext[8]; - secName=secName.left(secName.length()-1); - SectionInfo *sec; - if ((sec=sectionDict[secName])) - { - outDoc->writeAnchor(sec->label); - } - } - YY_BREAK -case 71: -YY_RULE_SETUP -#line 1553 "scanner.l" -{ - BEGIN(DocRefName); - } - YY_BREAK -case 72: -YY_RULE_SETUP -#line 1556 "scanner.l" -{ - BEGIN(DocRefItem); - } - YY_BREAK -case 73: -YY_RULE_SETUP -#line 1559 "scanner.l" -{ - QCString ref=yytext; - SectionInfo *sec; - if ((sec=sectionDict[ref])) - { - QCString text; - if (sec->title.isEmpty()) - text=sec->label; - else - text=sec->title; - if (sec->type==SectionInfo::Anchor) - { - outDoc->writeSectionRefAnchor(sec->fileName,sec->label,text); - } - else - { - //printf(" ref sec=%p sec->fileName=%s\n",sec,sec->fileName.data()); - outDoc->writeSectionRef(sec->fileName,sec->label,text); - } - } - else if (!generateLink(*outDoc,className,yytext,TRUE,0)) - { - warn("Warning: reference to unknown section %s!\n",yytext); - outDoc->writeBoldString(" unknown reference!"); - } - BEGIN(DocScan); - } - YY_BREAK -case 74: -YY_RULE_SETUP -#line 1586 "scanner.l" -{ - sectionRef=yytext; - BEGIN(DocRefArgStart); - } - YY_BREAK -case 75: -YY_RULE_SETUP -#line 1590 "scanner.l" -{ - BEGIN(DocRefArg); - } - YY_BREAK -case 76: -YY_RULE_SETUP -#line 1593 "scanner.l" -{ - yytext[yyleng-1]='\0'; - QCString text=substitute(yytext,"\\\\","\\"); - SectionInfo *sec; - if ((sec=sectionDict[sectionRef])) - { - if (sec->type==SectionInfo::Anchor) - { - outDoc->writeSectionRefAnchor(sec->fileName,sec->label,text); - } - else - { - outDoc->writeSectionRef(sec->fileName,sec->label,text); - } - } - else if (!generateLink(*outDoc,className,sectionRef,TRUE,text)) - { - warn("Warning: reference to unknown section %s!\n",sectionRef.data()); - outDoc->writeBoldString("unknown reference!"); - } - BEGIN(DocScan); - } - YY_BREAK -case 77: -YY_RULE_SETUP -#line 1615 "scanner.l" -{ - sectionRef=yytext; - BEGIN(DocRefItemName); - } - YY_BREAK -case 78: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 1619 "scanner.l" -{ - SectionInfo *sec; - QCString text=yytext; - if ((sec=sectionDict[sectionRef])) - { - outDoc->writeSectionRefItem(sec->fileName,sec->label,text.stripWhiteSpace()); - } - else - { - warn("Warning: reference to unknown section %s!\n",sectionRef.data()); - outDoc->writeBoldString("unknown reference!"); - } - BEGIN(DocScan); - } - YY_BREAK -case 79: -YY_RULE_SETUP -#line 1633 "scanner.l" -{ - BEGIN(DocImage); - } - YY_BREAK -case 80: -YY_RULE_SETUP -#line 1636 "scanner.l" -{ - BEGIN(DocHtmlImageName); - } - YY_BREAK -case 81: -YY_RULE_SETUP -#line 1639 "scanner.l" -{ - BEGIN(DocLatexImageName); - } - YY_BREAK -case 82: -YY_RULE_SETUP -#line 1642 "scanner.l" -{ - curImageName = findAndCopyImage(stripQuotes(yytext),IT_Html); - if (!curImageName.isEmpty()) - { - /*storeOutputListState();*/ - outDoc->pushGeneratorState(); - outDoc->disableAllBut(OutputGenerator::Html); - outDoc->writeImage(curImageName,0,0); - /*restoreOutputListState();*/ - outDoc->popGeneratorState(); - } - BEGIN(DocScan); - } - YY_BREAK -case 83: -YY_RULE_SETUP -#line 1655 "scanner.l" -{ - curImageName = findAndCopyImage(stripQuotes(yytext),IT_Latex); - if (curImageName.isEmpty()) - BEGIN(DocScan); - else - BEGIN(DocLatexImageWidth); - } - YY_BREAK -case 84: -YY_RULE_SETUP -#line 1662 "scanner.l" -{ // no width specified - /*storeOutputListState();*/ - outDoc->pushGeneratorState(); - outDoc->disableAllBut(OutputGenerator::Latex); - outDoc->writeImage(curImageName,0,0); - /*restoreOutputListState();*/ - outDoc->popGeneratorState(); - BEGIN(DocScan); - } - YY_BREAK -case 85: -YY_RULE_SETUP -#line 1671 "scanner.l" -{ - /*storeOutputListState();*/ - outDoc->pushGeneratorState(); - outDoc->disableAllBut(OutputGenerator::Latex); - outDoc->writeImage(curImageName,yytext,0); - /*restoreOutputListState();*/ - outDoc->popGeneratorState(); - BEGIN(DocScan); - } - YY_BREAK -case 86: -YY_RULE_SETUP -#line 1680 "scanner.l" -{ - /*storeOutputListState();*/ - outDoc->pushGeneratorState(); - outDoc->disableAllBut(OutputGenerator::Latex); - outDoc->writeImage(curImageName,0,yytext); - /*restoreOutputListState();*/ - outDoc->popGeneratorState(); - BEGIN(DocScan); - } - YY_BREAK -case 87: -YY_RULE_SETUP -#line 1689 "scanner.l" -{ - warn("Warning: %s is an unsupported output format for \\image\n",yytext); - } - YY_BREAK -case 88: -YY_RULE_SETUP -#line 1692 "scanner.l" -{ - warn("Warning: invalid \\image command found!\n"); - outDoc->enableAll(); - BEGIN(DocScan); - } - YY_BREAK -case 89: -YY_RULE_SETUP -#line 1697 "scanner.l" -{ - outDoc->startCodeFragment(); - codeBlock.resize(0); - BEGIN( DocCodeBlock ); - } - YY_BREAK -case 90: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 1702 "scanner.l" -{ - warn("Warning: \\endcode without
 or \\code "
-    					       "in the documentation of %s\n",refName.data()); 
-					}
-	YY_BREAK
-case 91:
-YY_RULE_SETUP
-#line 1706 "scanner.l"
-{
-  					  generateRef(*outDoc,className,yytext,inSeeBlock);
-  					}
-	YY_BREAK
-case 92:
-YY_RULE_SETUP
-#line 1709 "scanner.l"
-{ 
-					  generateRef(*outDoc,className,yytext,inSeeBlock);
-					} 
-	YY_BREAK
-case 93:
-YY_RULE_SETUP
-#line 1712 "scanner.l"
-{ 
-				          QCString oName=yytext;
-					  generateRef(*outDoc,className,
-					              removeRedundantWhiteSpace(oName),inSeeBlock);
-					}
-	YY_BREAK
-case 94:
-YY_RULE_SETUP
-#line 1717 "scanner.l"
-{ 
-    					  QCString oName=yytext;
-					  generateRef(*outDoc,className,
-					              removeRedundantWhiteSpace(oName),inSeeBlock);
-					}
-	YY_BREAK
-case 95:
-YY_RULE_SETUP
-#line 1722 "scanner.l"
-{ outDoc->writeHtmlLink(yytext,yytext); }
-	YY_BREAK
-case 96:
-YY_RULE_SETUP
-#line 1723 "scanner.l"
-{ outDoc->writeMailLink(yytext); }
-	YY_BREAK
-case 97:
-YY_RULE_SETUP
-#line 1724 "scanner.l"
-{
-					  generateFileRef(*outDoc,yytext);
-					}
-	YY_BREAK
-case 98:
-*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
-yy_c_buf_p = yy_cp -= 1;
-YY_DO_BEFORE_ACTION; /* set up yytext again */
-YY_RULE_SETUP
-#line 1727 "scanner.l"
-{ // needed to match things like \endcode. (note the dot)
-				          parseCode(*outDoc,className,codeBlock,exampleDoc,exampleName);
-					  //printf("Code block\n-------------\n%s\n--------------\n",codeBlock.data());
-					  outDoc->endCodeFragment();
-					  BEGIN( DocScan ); 
-					}
-	YY_BREAK
-case 99:
-YY_RULE_SETUP
-#line 1733 "scanner.l"
-{ 
-				          parseCode(*outDoc,className,codeBlock,exampleDoc,exampleName);
-					  //printf("Code block\n-------------\n%s\n--------------\n",codeBlock.data());
-					  outDoc->endCodeFragment();
-					  BEGIN( DocScan ); 
-					}
-	YY_BREAK
-case 100:
-YY_RULE_SETUP
-#line 1739 "scanner.l"
-{ BEGIN( DocEmphasis ); }
-	YY_BREAK
-case 101:
-YY_RULE_SETUP
-#line 1740 "scanner.l"
-{ BEGIN( DocEmphasis ); }
-	YY_BREAK
-case 102:
-YY_RULE_SETUP
-#line 1741 "scanner.l"
-{ BEGIN( DocBold ); }
-	YY_BREAK
-case 103:
-YY_RULE_SETUP
-#line 1742 "scanner.l"
-{ BEGIN( DocCode ); }
-	YY_BREAK
-case 104:
-YY_RULE_SETUP
-#line 1743 "scanner.l"
-
-	YY_BREAK
-case 105:
-YY_RULE_SETUP
-#line 1744 "scanner.l"
-{ outDoc->lineBreak(); }
-	YY_BREAK
-case 106:
-YY_RULE_SETUP
-#line 1745 "scanner.l"
-{ BEGIN( DocInclude ); }
-	YY_BREAK
-case 107:
-YY_RULE_SETUP
-#line 1746 "scanner.l"
-{ BEGIN( DocDontInclude ); }
-	YY_BREAK
-case 108:
-YY_RULE_SETUP
-#line 1747 "scanner.l"
-{ BEGIN( DocSkipKey ); }	
-	YY_BREAK
-case 109:
-YY_RULE_SETUP
-#line 1748 "scanner.l"
-{ BEGIN( DocSkiplineKey ); firstLine=TRUE; }
-	YY_BREAK
-case 110:
-YY_RULE_SETUP
-#line 1749 "scanner.l"
-{ BEGIN( DocLineKey ); firstLine=TRUE; }
-	YY_BREAK
-case 111:
-YY_RULE_SETUP
-#line 1750 "scanner.l"
-{ BEGIN( DocUntilKey ); firstLine=TRUE; }
-	YY_BREAK
-case 112:
-YY_RULE_SETUP
-#line 1751 "scanner.l"
-{ 
-  					  if (includeFileLength>0) 
-					    skipUntil(yytext); 
-  					  BEGIN( DocScan );
-					}
-	YY_BREAK
-case 113:
-YY_RULE_SETUP
-#line 1756 "scanner.l"
-{ 
-  					  if (includeFileLength>0) 
-					  {
-					    if (firstLine) outDoc->startCodeFragment();
-					    firstLine=FALSE;
-					    showLine(*outDoc,yytext); 
-					    BEGIN( DocKeyEnd );
-					  }
-					  else
-					  {
-  					    BEGIN( DocScan );
-					  }
-					}
-	YY_BREAK
-case 114:
-YY_RULE_SETUP
-#line 1769 "scanner.l"
-{ 
-  					  if (includeFileLength>0) 
-					  {
-					    if (firstLine) outDoc->startCodeFragment();
-					    firstLine=FALSE;
-					    skipLine(*outDoc,yytext); 
-					    BEGIN( DocKeyEnd );
-					  }
-					  else
-					  {
-  					    BEGIN( DocScan );
-					  }
-					}
-	YY_BREAK
-case 115:
-YY_RULE_SETUP
-#line 1782 "scanner.l"
-{ 
-  					  if (includeFileLength>0) 
-					  {
-					    if (firstLine) outDoc->startCodeFragment();
-					    firstLine=FALSE;
-					    showUntil(*outDoc,yytext); 
-					    BEGIN( DocKeyEnd );
-					  }
-					  else
-					  {
-  					    BEGIN( DocScan );
-					  }
-					}
-	YY_BREAK
-case 116:
-YY_RULE_SETUP
-#line 1795 "scanner.l"
-{ BEGIN(DocLineKey); }
-	YY_BREAK
-case 117:
-YY_RULE_SETUP
-#line 1796 "scanner.l"
-{ BEGIN(DocUntilKey); }
-	YY_BREAK
-case 118:
-YY_RULE_SETUP
-#line 1797 "scanner.l"
-{ BEGIN(DocSkiplineKey); }
-	YY_BREAK
-case 119:
-YY_RULE_SETUP
-#line 1798 "scanner.l"
-
-	YY_BREAK
-case YY_STATE_EOF(DocKeyEnd):
-#line 1799 "scanner.l"
-{
-  					  if (!firstLine) outDoc->endCodeFragment();
-					  yyterminate();
-  					}
-	YY_BREAK
-case 120:
-YY_RULE_SETUP
-#line 1803 "scanner.l"
-{
-  					  unput(*yytext);
-  					  if (!firstLine) outDoc->endCodeFragment();
-					  BEGIN( DocScan );
-  					}
-	YY_BREAK
-case 121:
-YY_RULE_SETUP
-#line 1808 "scanner.l"
-
-	YY_BREAK
-case 122:
-YY_RULE_SETUP
-#line 1809 "scanner.l"
-
-	YY_BREAK
-case 123:
-YY_RULE_SETUP
-#line 1810 "scanner.l"
-{ outDoc->startBold(); }
-	YY_BREAK
-case 124:
-YY_RULE_SETUP
-#line 1811 "scanner.l"
-{ outDoc->endBold(); }
-	YY_BREAK
-case 125:
-YY_RULE_SETUP
-#line 1812 "scanner.l"
-{ outDoc->startCenter(); }
-	YY_BREAK
-case 126:
-YY_RULE_SETUP
-#line 1813 "scanner.l"
-{ outDoc->endCenter(); }
-	YY_BREAK
-case 127:
-YY_RULE_SETUP
-#line 1814 "scanner.l"
-{ 
-  					  startTable();
-  					  /*outDoc->startTable();*/ }
-	YY_BREAK
-case 128:
-YY_RULE_SETUP
-#line 1817 "scanner.l"
-{
- 					  endTable(); 
-  					  /*outDoc->endTable();*/ 
-					}
-	YY_BREAK
-case 129:
-YY_RULE_SETUP
-#line 1821 "scanner.l"
-
-	YY_BREAK
-case 130:
-YY_RULE_SETUP
-#line 1822 "scanner.l"
-{ outDoc->startSmall(); }
-	YY_BREAK
-case 131:
-YY_RULE_SETUP
-#line 1823 "scanner.l"
-{ outDoc->endSmall(); }
-	YY_BREAK
-case 132:
-YY_RULE_SETUP
-#line 1824 "scanner.l"
-
-	YY_BREAK
-case 133:
-YY_RULE_SETUP
-#line 1825 "scanner.l"
-
-	YY_BREAK
-case 134:
-YY_RULE_SETUP
-#line 1826 "scanner.l"
-
-	YY_BREAK
-case 135:
-YY_RULE_SETUP
-#line 1827 "scanner.l"
-
-	YY_BREAK
-case 136:
-YY_RULE_SETUP
-#line 1828 "scanner.l"
-
-	YY_BREAK
-case 137:
-YY_RULE_SETUP
-#line 1829 "scanner.l"
-
-	YY_BREAK
-case 138:
-YY_RULE_SETUP
-#line 1830 "scanner.l"
-
-	YY_BREAK
-case 139:
-YY_RULE_SETUP
-#line 1831 "scanner.l"
-{ outDoc->startTypewriter(); }
-	YY_BREAK
-case 140:
-YY_RULE_SETUP
-#line 1832 "scanner.l"
-{ outDoc->endTypewriter(); }
-	YY_BREAK
-case 141:
-YY_RULE_SETUP
-#line 1833 "scanner.l"
-{ outDoc->startTypewriter(); }
-	YY_BREAK
-case 142:
-YY_RULE_SETUP
-#line 1834 "scanner.l"
-{ outDoc->endTypewriter(); }
-	YY_BREAK
-case 143:
-YY_RULE_SETUP
-#line 1835 "scanner.l"
-{ outDoc->startEmphasis(); }
-	YY_BREAK
-case 144:
-YY_RULE_SETUP
-#line 1836 "scanner.l"
-{ outDoc->endEmphasis(); }
-	YY_BREAK
-case 145:
-YY_RULE_SETUP
-#line 1837 "scanner.l"
-{ 
-                                          /*storeOutputListState();*/
-  					  outDoc->pushGeneratorState();
-                                          outDoc->disableAllBut(OutputGenerator::Html);
-					  outDoc->writeString(yytext); 
-                                          /*restoreOutputListState();*/
-					  outDoc->popGeneratorState();
-					}
-	YY_BREAK
-case 146:
-YY_RULE_SETUP
-#line 1845 "scanner.l"
-{ 
-  					  outDoc->startCodeFragment();
-  					  codeBlock.resize(0);
-					  BEGIN( DocCodeBlock ); 
-					}
-	YY_BREAK
-case 147:
-YY_RULE_SETUP
-#line 1850 "scanner.l"
-{ 
-  					  warn("Warning: 
without
 or \\code"
-    					         "in the documentation of %s\n",refName.data()); 
-					}
-	YY_BREAK
-case 148:
-YY_RULE_SETUP
-#line 1854 "scanner.l"
-{ outDoc->startSubscript(); }
-	YY_BREAK
-case 149:
-YY_RULE_SETUP
-#line 1855 "scanner.l"
-{ outDoc->endSubscript(); }
-	YY_BREAK
-case 150:
-YY_RULE_SETUP
-#line 1856 "scanner.l"
-{ outDoc->startSuperscript(); }
-	YY_BREAK
-case 151:
-YY_RULE_SETUP
-#line 1857 "scanner.l"
-{ outDoc->endSuperscript(); }
-	YY_BREAK
-case 152:
-YY_RULE_SETUP
-#line 1858 "scanner.l"
-{ if (curTable) curTable->newRow(); }
-	YY_BREAK
-case 153:
-YY_RULE_SETUP
-#line 1859 "scanner.l"
-
-	YY_BREAK
-case 154:
-YY_RULE_SETUP
-#line 1860 "scanner.l"
-{ if (curTable) curTable->newElem(); }
-	YY_BREAK
-case 155:
-YY_RULE_SETUP
-#line 1861 "scanner.l"
-
-	YY_BREAK
-case 156:
-YY_RULE_SETUP
-#line 1862 "scanner.l"
-{ outDoc->startEnumList(); 
-  					  currentListIndentLevel++;
-					}
-	YY_BREAK
-case 157:
-YY_RULE_SETUP
-#line 1865 "scanner.l"
-{ outDoc->endEnumList(); 
-  					  currentListIndentLevel--;
-					}
-	YY_BREAK
-case 158:
-YY_RULE_SETUP
-#line 1868 "scanner.l"
-{ outDoc->startItemList(); 
-					  currentListIndentLevel++;
-					}
-	YY_BREAK
-case 159:
-YY_RULE_SETUP
-#line 1871 "scanner.l"
-{ outDoc->endItemList(); 
-  					  currentListIndentLevel--;
-					}
-	YY_BREAK
-case 160:
-YY_RULE_SETUP
-#line 1874 "scanner.l"
-{ outDoc->writeListItem(); }
-	YY_BREAK
-case 161:
-YY_RULE_SETUP
-#line 1875 "scanner.l"
-
-	YY_BREAK
-case 162:
-YY_RULE_SETUP
-#line 1876 "scanner.l"
-{ outDoc->startTypewriter(); }
-	YY_BREAK
-case 163:
-YY_RULE_SETUP
-#line 1877 "scanner.l"
-{ outDoc->endTypewriter(); }
-	YY_BREAK
-case 164:
-YY_RULE_SETUP
-#line 1878 "scanner.l"
-{ outDoc->startEmphasis(); }
-	YY_BREAK
-case 165:
-YY_RULE_SETUP
-#line 1879 "scanner.l"
-{ outDoc->endEmphasis(); }
-	YY_BREAK
-case 166:
-YY_RULE_SETUP
-#line 1880 "scanner.l"
-{ outDoc->writeRuler(); }
-	YY_BREAK
-case 167:
-YY_RULE_SETUP
-#line 1881 "scanner.l"
-{ outDoc->startDescription(); 
-					  currentListIndentLevel++;
-					}
-	YY_BREAK
-case 168:
-YY_RULE_SETUP
-#line 1884 "scanner.l"
-{ outDoc->endDescription(); 
-  					  currentListIndentLevel--;
-					}
-	YY_BREAK
-case 169:
-YY_RULE_SETUP
-#line 1887 "scanner.l"
-{ outDoc->startDescItem(); }
-	YY_BREAK
-case 170:
-YY_RULE_SETUP
-#line 1888 "scanner.l"
-
-	YY_BREAK
-case 171:
-YY_RULE_SETUP
-#line 1889 "scanner.l"
-{ outDoc->endDescItem(); }
-	YY_BREAK
-case 172:
-YY_RULE_SETUP
-#line 1890 "scanner.l"
-
-	YY_BREAK
-case 173:
-YY_RULE_SETUP
-#line 1891 "scanner.l"
-{ outDoc->lineBreak(); }
-	YY_BREAK
-case 174:
-YY_RULE_SETUP
-#line 1892 "scanner.l"
-{ outDoc->startEmphasis(); }
-	YY_BREAK
-case 175:
-YY_RULE_SETUP
-#line 1893 "scanner.l"
-{ outDoc->endEmphasis(); }
-	YY_BREAK
-case 176:
-YY_RULE_SETUP
-#line 1894 "scanner.l"
-
-	YY_BREAK
-case 177:
-YY_RULE_SETUP
-#line 1895 "scanner.l"
-{ BEGIN(DocHtmlLink); }
-	YY_BREAK
-case 178:
-YY_RULE_SETUP
-#line 1896 "scanner.l"
-{ outDoc->startBold(); }
-	YY_BREAK
-case 179:
-YY_RULE_SETUP
-#line 1897 "scanner.l"
-{ outDoc->endBold(); }
-	YY_BREAK
-case 180:
-YY_RULE_SETUP
-#line 1898 "scanner.l"
-{ 
-  					  if (inBlock()) endBlock();
-  					  outDoc->newParagraph(); }
-	YY_BREAK
-case 181:
-YY_RULE_SETUP
-#line 1901 "scanner.l"
-
-	YY_BREAK
-case 182:
-YY_RULE_SETUP
-#line 1902 "scanner.l"
-{ outDoc->startTitle(); }
-	YY_BREAK
-case 183:
-YY_RULE_SETUP
-#line 1903 "scanner.l"
-{ outDoc->endTitle(); }
-	YY_BREAK
-case 184:
-YY_RULE_SETUP
-#line 1904 "scanner.l"
-{ outDoc->startSubsection(); }
-	YY_BREAK
-case 185:
-YY_RULE_SETUP
-#line 1905 "scanner.l"
-{ outDoc->endSubsection(); }
-	YY_BREAK
-case 186:
-YY_RULE_SETUP
-#line 1906 "scanner.l"
-{ outDoc->startSubsubsection(); }
-	YY_BREAK
-case 187:
-YY_RULE_SETUP
-#line 1907 "scanner.l"
-{ outDoc->endSubsubsection(); }
-	YY_BREAK
-case 188:
-YY_RULE_SETUP
-#line 1908 "scanner.l"
-{ BEGIN(DocHtmlAnchor); }
-	YY_BREAK
-case 189:
-YY_RULE_SETUP
-#line 1909 "scanner.l"
-{ outDoc->writeAnchor(yytext); } 
-	YY_BREAK
-case 190:
-YY_RULE_SETUP
-#line 1910 "scanner.l"
-{ 
-  					  htmlUrl.resize(0);
-					  htmlText.resize(0);
-  					  BEGIN(DocHtmlHref1); }
-	YY_BREAK
-case 191:
-YY_RULE_SETUP
-#line 1914 "scanner.l"
-{ 
-  					  htmlUrl=yytext; 
-					}
-	YY_BREAK
-case 192:
-YY_RULE_SETUP
-#line 1917 "scanner.l"
-{ BEGIN(DocHtmlHref2); }
-	YY_BREAK
-case 193:
-YY_RULE_SETUP
-#line 1918 "scanner.l"
-{ htmlText+=yytext; }
-	YY_BREAK
-/*
-\n			{ htmlText+='\n'; }
-  */
-case 194:
-YY_RULE_SETUP
-#line 1922 "scanner.l"
-{ 
-  					  outDoc->writeHtmlLink(htmlUrl,htmlText);
-  					  unput(*yytext); 
-					  BEGIN(DocScan); 
-					}
-	YY_BREAK
-case 195:
-YY_RULE_SETUP
-#line 1927 "scanner.l"
-{ BEGIN(DocScan); }
-	YY_BREAK
-case 196:
-YY_RULE_SETUP
-#line 1928 "scanner.l"
-{
-  					  outDoc->docify(&yytext[1]);
-  					}
-	YY_BREAK
-case 197:
-YY_RULE_SETUP
-#line 1931 "scanner.l"
-{
-  					  outDoc->docify(yytext+1);
-  					}
-	YY_BREAK
-case 198:
-YY_RULE_SETUP
-#line 1934 "scanner.l"
-{ 
-  					  outDoc->startEmphasis();
-  					  linkifyText(*outDoc,className,0,yytext);
-					  outDoc->endEmphasis();
-					  BEGIN( DocScan );
-					}
-	YY_BREAK
-case 199:
-YY_RULE_SETUP
-#line 1940 "scanner.l"
-{
-  					  outDoc->startEmphasis();
-  					  generateRef(*outDoc,className,yytext,inSeeBlock);
-					  outDoc->endEmphasis();
-					  BEGIN( DocScan );
-  					}
-	YY_BREAK
-case 200:
-YY_RULE_SETUP
-#line 1946 "scanner.l"
-{ 
-  					  outDoc->startBold();
-  					  linkifyText(*outDoc,className,0,yytext);
-					  outDoc->endBold();
-					  BEGIN( DocScan );
-					}
-	YY_BREAK
-case 201:
-YY_RULE_SETUP
-#line 1952 "scanner.l"
-{
-  					  outDoc->startBold();
-  					  generateRef(*outDoc,className,yytext,inSeeBlock);
-					  outDoc->endBold();
-					  BEGIN( DocScan );
-  					}
-	YY_BREAK
-case 202:
-YY_RULE_SETUP
-#line 1958 "scanner.l"
-{ 
-  					  outDoc->startTypewriter();
-  					  linkifyText(*outDoc,className,0,yytext);
-					  outDoc->endTypewriter();
-					  BEGIN( DocScan );
-					}
-	YY_BREAK
-case 203:
-YY_RULE_SETUP
-#line 1964 "scanner.l"
-{
-  					  outDoc->startTypewriter();
-  					  generateRef(*outDoc,className,yytext,inSeeBlock);
-					  outDoc->endTypewriter();
-					  BEGIN( DocScan );
-  					}
-	YY_BREAK
-case 204:
-YY_RULE_SETUP
-#line 1970 "scanner.l"
-{
-					  includeFile(*outDoc,stripQuotes(yytext),FALSE); 
-					  BEGIN( DocScan );
-  					}
-	YY_BREAK
-case 205:
-YY_RULE_SETUP
-#line 1974 "scanner.l"
-{
-  					  includeFile(*outDoc,stripQuotes(yytext),TRUE);
-					  BEGIN( DocScan );
-  					}
-	YY_BREAK
-case 206:
-YY_RULE_SETUP
-#line 1978 "scanner.l"
-{ codeBlock += yytext; }
-	YY_BREAK
-case 207:
-YY_RULE_SETUP
-#line 1979 "scanner.l"
-{ codeBlock += yytext; }
-	YY_BREAK
-case 208:
-YY_RULE_SETUP
-#line 1980 "scanner.l"
-{ codeBlock += '\n'; }
-	YY_BREAK
-case 209:
-YY_RULE_SETUP
-#line 1981 "scanner.l"
-{ codeBlock += yytext; }
-	YY_BREAK
-case 210:
-YY_RULE_SETUP
-#line 1982 "scanner.l"
-{ codeBlock += *yytext; }
-	YY_BREAK
-case 211:
-YY_RULE_SETUP
-#line 1983 "scanner.l"
-{ 
-					  outDoc->docify(yytext);
-					}
-	YY_BREAK
-case 212:
-YY_RULE_SETUP
-#line 1986 "scanner.l"
-{ 
-  					  outDoc->docify(yytext);
-					}
-	YY_BREAK
-case 213:
-YY_RULE_SETUP
-#line 1989 "scanner.l"
-{ outDoc->writeChar('\n'); }
-	YY_BREAK
-case 214:
-YY_RULE_SETUP
-#line 1990 "scanner.l"
-{ // new paragraph & start of a list
-  					  if (insideArgumentList)
-					  {
-					    insideArgumentList=FALSE;
-					    outDoc->endItemList();
-					  }
-					  else if (insideItemList)
-					  {
-					    forceEndItemList();
-					  }
-					  else
-					  {
-					    outDoc->newParagraph(); 
-					  }
-					  if (inBlock()) endBlock();
-  					  addListItemMarker(strrchr(yytext,'\n')+1);
-					}
-	YY_BREAK
-case 215:
-YY_RULE_SETUP
-#line 2007 "scanner.l"
-{ // new paragraph
-  					  if (insideArgumentList)
-					  {
-					    insideArgumentList=FALSE;
-					    outDoc->endItemList();
-					  }
-					  else if (insideItemList)
-					  {
-					    forceEndItemList();
-					  }
-					  else
-					  {
-					    outDoc->newParagraph(); 
-					  }
-					  if (inBlock()) endBlock();
-					}
-	YY_BREAK
-case 216:
-*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
-yy_c_buf_p = yy_cp -= 1;
-YY_DO_BEFORE_ACTION; /* set up yytext again */
-YY_RULE_SETUP
-#line 2023 "scanner.l"
-{ 
-  					  outDoc->writeChar(' '); 
-					}
-	YY_BREAK
-case 217:
-YY_RULE_SETUP
-#line 2026 "scanner.l"
-{
-  					  outDoc->writeChar(' '); 
-  					}
-	YY_BREAK
-case 218:
-YY_RULE_SETUP
-#line 2029 "scanner.l"
-{
-  					  outDoc->writeChar('\n'); 
-  					}
-	YY_BREAK
-case 219:
-YY_RULE_SETUP
-#line 2032 "scanner.l"
-{ 
-					  outDoc->docify(yytext);
-					}
-	YY_BREAK
-case 220:
-YY_RULE_SETUP
-#line 2035 "scanner.l"
-{ 
-					  outDoc->writeChar(*yytext);
-					}
-	YY_BREAK
-case 221:
-YY_RULE_SETUP
-#line 2038 "scanner.l"
-{
-  					  curlyCount=0;
-  					  BEGIN(SkipCurlyBlock); 
-					}
-	YY_BREAK
-case 222:
-YY_RULE_SETUP
-#line 2042 "scanner.l"
-{
-  				 	  roundCount=0;
-  					  BEGIN(SkipRoundBlock);
-  					}
-	YY_BREAK
-case 223:
-YY_RULE_SETUP
-#line 2046 "scanner.l"
-{
-					  ++roundCount;
-  					}
-	YY_BREAK
-case 224:
-YY_RULE_SETUP
-#line 2049 "scanner.l"
-{
-  					  if (roundCount )
-					    --roundCount ;
-					  else
-					    BEGIN( NextSemi ) ;
-  					}
-	YY_BREAK
-case 225:
-YY_RULE_SETUP
-#line 2055 "scanner.l"
-{
-  					  ++curlyCount ; 
-					}
-	YY_BREAK
-case 226:
-YY_RULE_SETUP
-#line 2058 "scanner.l"
-{ 
-  				          if( curlyCount )
-					  {
-					    --curlyCount ;
-					  }
-					  else
-					    BEGIN( NextSemi ) ;
-					}
-	YY_BREAK
-case 227:
-YY_RULE_SETUP
-#line 2066 "scanner.l"
-
-	YY_BREAK
-case 228:
-YY_RULE_SETUP
-#line 2067 "scanner.l"
-
-	YY_BREAK
-case 229:
-YY_RULE_SETUP
-#line 2068 "scanner.l"
-
-	YY_BREAK
-case 230:
-YY_RULE_SETUP
-#line 2069 "scanner.l"
-{
-  					  lastStringContext=NextSemi;
-					  BEGIN(SkipString);
-  					}
-	YY_BREAK
-case 231:
-YY_RULE_SETUP
-#line 2073 "scanner.l"
-{ 
-  					  unput(*yytext);
-  					  BEGIN( FindMembers ) ; 
-					}
-	YY_BREAK
-case 232:
-YY_RULE_SETUP
-#line 2077 "scanner.l"
-{ current->sig = sig = TRUE;
-					  current->slot = slot = FALSE;
-					  current->protection = protection = Public ;
-					  current->type.resize(0); 
-					  current->name.resize(0); 
-					  current->args.resize(0);
-					  current->argList->clear();
-					  lineCount() ;
-					}
-	YY_BREAK
-case 233:
-YY_RULE_SETUP
-#line 2087 "scanner.l"
-{
-					  current->protection = protection = Public ;
-					  current->slot = slot = TRUE;
-					  current->sig = sig = FALSE;
-					  current->type.resize(0); 
-					  current->name.resize(0); 
-					  current->args.resize(0);
-					  current->argList->clear();
-					  lineCount();
-					}
-	YY_BREAK
-case 234:
-YY_RULE_SETUP
-#line 2098 "scanner.l"
-{
-					  current->protection = protection = Protected ;
-					  current->slot = slot = TRUE;
-					  current->sig = sig = FALSE;
-					  current->type.resize(0); 
-					  current->name.resize(0); 
-					  current->args.resize(0);
-					  current->argList->clear();
-					  lineCount();
-					}
-	YY_BREAK
-case 235:
-YY_RULE_SETUP
-#line 2109 "scanner.l"
-{
-					  current->protection = protection = Private ;
-					  current->slot = slot = TRUE;
-					  current->sig = sig = FALSE;
-					  current->type.resize(0); 
-					  current->name.resize(0); 
-					  current->args.resize(0);
-					  current->argList->clear();
-					  lineCount();
-					}
-	YY_BREAK
-case 236:
-YY_RULE_SETUP
-#line 2120 "scanner.l"
-{ 
-					  current->protection = protection = Public ;
-					  current->slot = slot = FALSE;
-					  current->sig = sig = FALSE;
-					  current->type.resize(0); 
-					  current->name.resize(0); 
-					  current->args.resize(0);
-					  current->argList->clear();
-					  lineCount() ;
-					}
-	YY_BREAK
-case 237:
-YY_RULE_SETUP
-#line 2130 "scanner.l"
-{ 
-  					  current->protection = protection = Protected ;
-					  current->slot = slot = FALSE;
-					  current->sig = sig = FALSE;
-					  current->type.resize(0); 
-					  current->name.resize(0); 
-					  current->args.resize(0);
-					  current->argList->clear();
-					  lineCount() ;
-					}
-	YY_BREAK
-case 238:
-YY_RULE_SETUP
-#line 2140 "scanner.l"
-{ 
-  					  current->protection = protection = Private ;
-					  current->slot = slot = FALSE;
-					  current->sig = sig = FALSE;
-					  current->type.resize(0); 
-					  current->name.resize(0); 
-					  current->args.resize(0);
-					  current->argList->clear();
-					  lineCount() ;
-					}
-	YY_BREAK
-case 239:
-YY_RULE_SETUP
-#line 2150 "scanner.l"
-{
-  					  lineCount();
-  					}
-	YY_BREAK
-case 240:
-YY_RULE_SETUP
-#line 2153 "scanner.l"
-{ //current->type += " static ";
-  					  current->stat = TRUE;
-					  lineCount();
-					}
-	YY_BREAK
-case 241:
-YY_RULE_SETUP
-#line 2157 "scanner.l"
-{
-  					  current->stat = FALSE;
-					  lineCount();
-  					}
-	YY_BREAK
-case 242:
-YY_RULE_SETUP
-#line 2161 "scanner.l"
-{ current->type += " virtual ";
-					  current->virt = Virtual;
-					  lineCount();
-					}
-	YY_BREAK
-case 243:
-YY_RULE_SETUP
-#line 2165 "scanner.l"
-{ current->inLine = TRUE;
-                                          lineCount(); 
-                                        }
-	YY_BREAK
-case 244:
-YY_RULE_SETUP
-#line 2168 "scanner.l"
-{ // IDL import keyword
-  					  BEGIN( NextSemi );
-  					}
-	YY_BREAK
-case 245:
-YY_RULE_SETUP
-#line 2171 "scanner.l"
-{ lineCount(); }
-	YY_BREAK
-case 246:
-YY_RULE_SETUP
-#line 2172 "scanner.l"
-{ 
-  					  isTypedef=FALSE;
-					  current->section = Entry::NAMESPACE_SEC;
-					  current->type = "namespace" ;
-					  current->fileName  = yyFileName;
-					  current->startLine = yyLineNr;
-					  current->bodyLine  = yyLineNr;
-					  lineCount();
-  					  BEGIN( ClassName ); 
-					}
-	YY_BREAK
-case 247:
-YY_RULE_SETUP
-#line 2182 "scanner.l"
-{ 
-  					  isTypedef=FALSE;
-					  current->section = Entry::NAMESPACE_SEC;
-					  current->type = "module" ;
-					  current->fileName  = yyFileName;
-					  current->startLine = yyLineNr;
-					  current->bodyLine  = yyLineNr;
-					  lineCount();
-  					  BEGIN( ClassName ); 
-					}
-	YY_BREAK
-case 248:
-YY_RULE_SETUP
-#line 2192 "scanner.l"
-{ // M$/Corba IDL interface
-  					  isTypedef=FALSE;
-					  current->section = Entry::INTERFACE_SEC;
-					  addType( current ) ;
-					  current->type += " interface" ;
-					  current->fileName  = yyFileName;
-					  current->startLine = yyLineNr;
-					  current->bodyLine  = yyLineNr;
-					  lineCount();
-					  BEGIN( ClassName );
-  					}
-	YY_BREAK
-case 249:
-YY_RULE_SETUP
-#line 2203 "scanner.l"
-{ // Corba IDL exception
-  					  isTypedef=FALSE;
-					  current->section = Entry::EXCEPTION_SEC;
-					  addType( current ) ;
-					  current->type += " exception" ;
-					  current->fileName  = yyFileName;
-					  current->startLine = yyLineNr;
-					  current->bodyLine  = yyLineNr;
-					  lineCount();
-					  BEGIN( ClassName );
-  					}
-	YY_BREAK
-case 250:
-YY_RULE_SETUP
-#line 2214 "scanner.l"
-{ 
-					  isTypedef=((QCString)yytext).find("typedef")!=-1;
-  					  current->section = Entry::CLASS_SEC;
-					  addType( current ) ;
-					  current->type += " class" ;
-					  current->fileName  = yyFileName;
-					  current->startLine = yyLineNr;
-					  current->bodyLine  = yyLineNr;
-					  lineCount() ;
-					  BEGIN( ClassName ) ;
-					}
-	YY_BREAK
-case 251:
-YY_RULE_SETUP
-#line 2225 "scanner.l"
-{ 
-					  isTypedef=((QCString)yytext).find("typedef")!=-1;
-  					  current->section = Entry::STRUCT_SEC ;
-					  addType( current ) ;
-					  current->type += " struct" ;
-					  current->fileName  = yyFileName;
-					  current->startLine = yyLineNr;
-					  current->bodyLine  = yyLineNr;
-					  lineCount() ;
-					  BEGIN( ClassName ) ;
-					}
-	YY_BREAK
-case 252:
-YY_RULE_SETUP
-#line 2236 "scanner.l"
-{ 
-					  isTypedef=((QCString)yytext).find("typedef")!=-1;
-  					  current->section = Entry::UNION_SEC ;
-					  addType( current ) ;
-					  current->type += " union" ;
-					  current->fileName  = yyFileName;
-					  current->startLine = yyLineNr;
-					  current->bodyLine  = yyLineNr;
-					  lineCount() ;
-					  BEGIN( ClassName ) ;
-					}
-	YY_BREAK
-case 253:
-YY_RULE_SETUP
-#line 2247 "scanner.l"
-{ 
-					  isTypedef=((QCString)yytext).find("typedef")!=-1;
-  					  current->section = Entry::ENUM_SEC ;
-					  addType( current ) ;
-					  current->type += " enum" ;
-					  current->fileName  = yyFileName;
-					  current->startLine = yyLineNr;
-					  current->bodyLine  = yyLineNr;
-					  lineCount() ;
-					  BEGIN( ClassName ) ;
-					}
-	YY_BREAK
-case 254:
-*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
-yy_c_buf_p = yy_cp -= 1;
-YY_DO_BEFORE_ACTION; /* set up yytext again */
-YY_RULE_SETUP
-#line 2258 "scanner.l"
-{
-  					  lineCount();
-    					  current->name += yytext ;
-					  current->name = current->name.simplifyWhiteSpace();
-					  BEGIN( FindMembers ) ;
-  					}
-	YY_BREAK
-case 255:
-YY_RULE_SETUP
-#line 2264 "scanner.l"
-{ 
-    					  current->name += *yytext ;
-					}
-	YY_BREAK
-case 256:
-YY_RULE_SETUP
-#line 2267 "scanner.l"
-{ /* skip guided templ specifiers */ }
-	YY_BREAK
-case 257:
-YY_RULE_SETUP
-#line 2268 "scanner.l"
-{
-					  current->name = current->name.simplifyWhiteSpace();
-					  unput(*yytext);
-					  BEGIN( FindMembers ) ;
-					}
-	YY_BREAK
-case 258:
-YY_RULE_SETUP
-#line 2273 "scanner.l"
-{ 
-  					  lineCount();
-					  // class template specifier already found => member template specifier
-					  // already inside class => member template specifier
-					  if (current->tArgList || (current_root->section&Entry::COMPOUND_MASK))
-					  {
-					    //printf("-------> member template\n");
-					    if (current->mtArgList)
-					    {
-					      current->mtArgList->clear();
-                                            }
-					    else
-					    {
-					      current->mtArgList = new ArgumentList;
-					      current->mtArgList->setAutoDelete(TRUE);
-					    }
-					    currentArgumentList = current->mtArgList;
-					  }
-					  else // class template specifier
-					  {
-					    //printf("-------> class template\n");
-					    if (current->tArgList)
-					    {
-					      current->tArgList->clear();
-                                            }
-					    else
-					    {
-					      current->tArgList = new ArgumentList;
-					      current->tArgList->setAutoDelete(TRUE);
-					    }
-					    currentArgumentList = current->tArgList;
-					  }
-					  templateStr="<";
-					  fullArgString = templateStr.copy();
-					  copyArgString = &templateStr;
-					  currentArgumentContext = FindMembers;
-					  //printf("Start template list\n");
-					  BEGIN( ReadTempArgs );
-  					}
-	YY_BREAK
-case 259:
-YY_RULE_SETUP
-#line 2312 "scanner.l"
-{ 
-					  current->startLine=yyLineNr; 
-                                          lineCount(); 
-                                          BEGIN(Using); 
-                                        }
-	YY_BREAK
-case 260:
-YY_RULE_SETUP
-#line 2317 "scanner.l"
-{ lineCount(); BEGIN(UsingDirective); }
-	YY_BREAK
-case 261:
-YY_RULE_SETUP
-#line 2318 "scanner.l"
-{ BEGIN(FindMembers); }
-	YY_BREAK
-case 262:
-YY_RULE_SETUP
-#line 2319 "scanner.l"
-{ current->name=yytext;
-                                          current->fileName = yyFileName; 
-  					  current->section=Entry::USINGDIR_SEC;
-					  //printf("Found using directive %s\n",yytext);
-					  current_root->addSubEntry(current);
-					  current             = new Entry ;
-					  current->protection = protection ;
-				          current->sig        = sig;
-					  current->virt       = virt;
-					  current->stat       = gstat;
-					  current->slot       = slot;
-					  BEGIN(Using);
-  					}
-	YY_BREAK
-case 263:
-YY_RULE_SETUP
-#line 2332 "scanner.l"
-{ // guided template decl
-					  QCString n=yytext;
-					  addType( current );
-					  current->name=n.left(n.length()-2);
-					}
-	YY_BREAK
-case 264:
-*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
-yy_c_buf_p = yy_cp -= 1;
-YY_DO_BEFORE_ACTION; /* set up yytext again */
-YY_RULE_SETUP
-#line 2337 "scanner.l"
-{
-  					  sharpCount=0;
-					  lineCount();
-					  addType( current );
-  					  current->name=yytext;
-					  current->name=current->name.stripWhiteSpace();
-					  current->scopeSpec.resize(0);
-					  currentTemplateSpec = ¤t->scopeSpec;
-					  if (nameIsOperator(current->name))
-					    BEGIN( Operator );
-					  else
-					    BEGIN( EndTemplate );
-					}
-	YY_BREAK
-case 265:
-*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
-yy_c_buf_p = yy_cp -= 1;
-YY_DO_BEFORE_ACTION; /* set up yytext again */
-YY_RULE_SETUP
-#line 2350 "scanner.l"
-{
-  					  sharpCount=0;
-					  lineCount();
-  					  current->name+=((QCString)yytext).stripWhiteSpace();
-					  current->memberSpec.resize(0);
-					  currentTemplateSpec = ¤t->memberSpec;
-					  if (nameIsOperator(current->name))
-					    BEGIN( Operator );
-					  else
-					    BEGIN( EndTemplate );
-  					}
-	YY_BREAK
-/*
-"<"			{
-					  sharpCount++; 
-  					}
-">"			{
-  					  if (--sharpCount<=0)
-					  {
-					    BEGIN(FindMembers);
-					  }
-  					}
-.
-  */
-case 266:
-YY_RULE_SETUP
-#line 2374 "scanner.l"
-{ 
-  					  current->name+='<';
-  					  *currentTemplateSpec+='<'; 
-					  sharpCount++; 
-					}
-	YY_BREAK
-case 267:
-YY_RULE_SETUP
-#line 2379 "scanner.l"
-{
-  					  current->name+='>';
-					  *currentTemplateSpec+='>';
-					  if (--sharpCount<=0)
-					  {  
-					    //printf("Found %s\n",current->name.data());
-					    BEGIN(FindMembers);
-					  }
-					}
-	YY_BREAK
-case 268:
-YY_RULE_SETUP
-#line 2388 "scanner.l"
-{ 
-  					  lineCount();
-  					  current->name+='>';
-					  *currentTemplateSpec+='>';
-					  if (--sharpCount<=0)
-					  {
-					    current->args = "(";
-					    currentArgumentContext = FuncQual;
-					    fullArgString = current->args.copy();
-					    copyArgString = ¤t->args;
-					    //printf("Found %s\n",current->name.data());
-					    BEGIN( ReadFuncArgType ) ;
-					  }
-					}
-	YY_BREAK
-case 269:
-*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
-yy_c_buf_p = yy_cp -= 2;
-YY_DO_BEFORE_ACTION; /* set up yytext again */
-YY_RULE_SETUP
-#line 2402 "scanner.l"
-{
-  					  lineCount();
-  					  current->name+='>';
-  					  *currentTemplateSpec+='>';
-					  if (--sharpCount<=0)
-					  {
-					    BEGIN(FindMemberName);
-					  }
-  					}
-	YY_BREAK
-case 270:
-YY_RULE_SETUP
-#line 2411 "scanner.l"
-{ 
-  					  current->name+=*yytext;
-  					  *currentTemplateSpec+=*yytext; 
-					}
-	YY_BREAK
-case 271:
-YY_RULE_SETUP
-#line 2415 "scanner.l"
-{ 
-					  lineCount();
-					  if (YY_START==FindMembers)
-					  {
-					    addType( current ) ;
-					    current->name  = yytext;
-					  }
-					  else
-					  {
-					    current->name += yytext;
-					  }
-				          QCString tmp=yytext;
-					  if (nameIsOperator(tmp)) 
-					    BEGIN( Operator );
-					  else
-					    BEGIN(FindMembers);
-					}
-	YY_BREAK
-case 272:
-YY_RULE_SETUP
-#line 2432 "scanner.l"
-{ lastCPPContext = YY_START; 
-					  BEGIN( SkipCPP ) ; 
-					}
-	YY_BREAK
-case 273:
-YY_RULE_SETUP
-#line 2435 "scanner.l"
-{
-  					  current->bodyLine = yyLineNr;
-  					  BEGIN( Define );
-  					}
-	YY_BREAK
-case 274:
-YY_RULE_SETUP
-#line 2439 "scanner.l"
-
-	YY_BREAK
-case 275:
-YY_RULE_SETUP
-#line 2440 "scanner.l"
-{ yyLineNr++ ; }
-	YY_BREAK
-case 276:
-YY_RULE_SETUP
-#line 2441 "scanner.l"
-{ yyLineNr++ ;
-					  BEGIN( lastCPPContext) ;
-					}
-	YY_BREAK
-case 277:
-*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
-yy_c_buf_p = yy_cp -= 1;
-YY_DO_BEFORE_ACTION; /* set up yytext again */
-YY_RULE_SETUP
-#line 2444 "scanner.l"
-{
-  					  current->bodyLine = yyLineNr;
-  					  current->name = yytext;
-					  BEGIN( DefineArg );
-  					}
-	YY_BREAK
-case 278:
-YY_RULE_SETUP
-#line 2449 "scanner.l"
-{
-  					  //printf("Define with args\n");
-  					  current->args += ')';
-  					  BEGIN( DefineEnd );
-  					}
-	YY_BREAK
-case 279:
-YY_RULE_SETUP
-#line 2454 "scanner.l"
-{
-  					  current->args += *yytext;
-  					}
-	YY_BREAK
-case 280:
-YY_RULE_SETUP
-#line 2457 "scanner.l"
-{
-  					  //printf("Define `%s' without args\n",yytext);
-  					  current->bodyLine = yyLineNr;
-  					  current->name = yytext;
-					  BEGIN(DefineEnd);
-  					}
-	YY_BREAK
-case 281:
-YY_RULE_SETUP
-#line 2463 "scanner.l"
-{
-  					  //printf("End define\n");
-					  yyLineNr++;
-					  current->fileName   = yyFileName;
-					  current->startLine  = yyLineNr;
-					  current->type.resize(0);
-  					  current->args       = current->args.simplifyWhiteSpace();
-  					  current->name       = current->name.stripWhiteSpace();
-					  current->section    = Entry::DEFINE_SEC;
-					  current_root->addSubEntry(current);
-					  current             = new Entry ;
-					  current->protection = protection ;
-				          current->sig        = sig;
-					  current->virt       = virt;
-					  current->stat       = gstat;
-					  current->slot       = slot;
-					  BEGIN(FindMembers);
-  					}
-	YY_BREAK
-case 282:
-YY_RULE_SETUP
-#line 2481 "scanner.l"
-{
-  					  yyLineNr++;
-  					}
-	YY_BREAK
-case 283:
-YY_RULE_SETUP
-#line 2484 "scanner.l"
-{
-					  lastStringContext=DefineEnd;
-					  BEGIN(SkipString);
-  					}
-	YY_BREAK
-case 284:
-YY_RULE_SETUP
-#line 2488 "scanner.l"
-
-	YY_BREAK
-case 285:
-YY_RULE_SETUP
-#line 2490 "scanner.l"
-{ current->name += yytext ; }
-	YY_BREAK
-case 286:
-YY_RULE_SETUP
-#line 2491 "scanner.l"
-{
-  					  lineCount();
-					  if (current->bodyLine==-1)
-					    current->bodyLine=yyLineNr;
-					  lastAfterDocContext = YY_START;
-					  afterDocTerminator = ';';
-					  if (yytext[yyleng-3]=='/')
-					  {
-					    current->brief.resize(0);
-					    BEGIN(AfterDocLine);
-					  }
-					  else if (yytext[yyleng-2]=='*' && Config::autoBriefFlag)
-					  {
-					    current->brief.resize(0);
-					    BEGIN(AfterDocBrief);
-					  }
-					  else
-					  {
-					    current->doc.resize(0);
-					    BEGIN(AfterDoc);
-					  }
-  					}
-	YY_BREAK
-case 287:
-YY_RULE_SETUP
-#line 2513 "scanner.l"
-{
-  					  lineCount();
-					  lastAfterDocContext = YY_START;
-					  afterDocTerminator = ',';
-					  if (yytext[yyleng-3]=='/')
-					  {
-					    current->brief.resize(0);
-					    BEGIN(AfterDocLine);
-					  }
-					  else if (yytext[yyleng-2]=='*' && Config::autoBriefFlag)
-					  {
-					    current->brief.resize(0);
-					    BEGIN(AfterDocBrief);
-					  }
-					  else
-					  {
-					    current->doc.resize(0);
-					    BEGIN(AfterDoc);
-					  }
-  					}
-	YY_BREAK
-case 288:
-YY_RULE_SETUP
-#line 2533 "scanner.l"
-{
-  					  lineCount();
-					  lastAfterDocContext = YY_START;
-					  if (YY_START==DefineEnd)
-					    afterDocTerminator = '\n';
-					  else
-					    afterDocTerminator = 0;
-					  if (yytext[yyleng-3]=='/')
-					  {
-					    current->brief.resize(0);
-					    BEGIN(AfterDocLine);
-					  }
-					  else if (yytext[yyleng-2]=='*' && Config::autoBriefFlag)
-					  {
-					    current->brief.resize(0);
-					    BEGIN(AfterDocBrief);
-					  }
-					  else
-					  {
-					    current->doc.resize(0);
-					    BEGIN(AfterDoc);
-					  }
-  					}
-	YY_BREAK
-case 289:
-YY_RULE_SETUP
-#line 2556 "scanner.l"
-{
-  					  current->bodyLine = yyLineNr;
-					  lastInitializerContext = YY_START;
-					  BEGIN(ReadInitializer);
-  					}
-	YY_BREAK
-/* Read initializer rules */
-case 290:
-YY_RULE_SETUP
-#line 2562 "scanner.l"
-{
-  					  lastRoundContext=YY_START;
-  					  pCopyRoundString=¤t->initializer;
-					  roundCount=0;
-  					  current->initializer+=*yytext; 
-  					  BEGIN(CopyRound);
-  					}
-	YY_BREAK
-case 291:
-YY_RULE_SETUP
-#line 2569 "scanner.l"
-{
-  					  lastCurlyContext=YY_START;
-  					  pCopyCurlyString=¤t->initializer;
-					  curlyCount=0;
-  					  current->initializer+=*yytext; 
-  					  BEGIN(CopyCurly);
-  					}
-	YY_BREAK
-case 292:
-YY_RULE_SETUP
-#line 2576 "scanner.l"
-{
-  					  //printf(">> initializer `%s' <<\n",current->initializer.data());
-  					  unput(*yytext);
-  					  BEGIN(lastInitializerContext);
-  					}
-	YY_BREAK
-case 293:
-YY_RULE_SETUP
-#line 2581 "scanner.l"
-{
-                                          lastStringContext=YY_START;
-  					  current->initializer+=*yytext; 
-  					  pCopyQuotedString=¤t->initializer;
-					  BEGIN(CopyString);
-					}
-	YY_BREAK
-case 294:
-YY_RULE_SETUP
-#line 2587 "scanner.l"
-
-	YY_BREAK
-case 295:
-YY_RULE_SETUP
-#line 2588 "scanner.l"
-
-	YY_BREAK
-case 296:
-YY_RULE_SETUP
-#line 2589 "scanner.l"
-
-	YY_BREAK
-case 297:
-YY_RULE_SETUP
-#line 2590 "scanner.l"
-{
-  					  current->initializer+=*yytext;
-					  yyLineNr++;
-  					}
-	YY_BREAK
-case 298:
-YY_RULE_SETUP
-#line 2594 "scanner.l"
-{ 
-  					  current->initializer+=*yytext; 
-					}
-	YY_BREAK
-/* generic quoted string copy rules */
-case 299:
-YY_RULE_SETUP
-#line 2599 "scanner.l"
-{
-  					  *pCopyQuotedString+=yytext;
-  					}
-	YY_BREAK
-case 300:
-YY_RULE_SETUP
-#line 2602 "scanner.l"
-{ 
-  					  *pCopyQuotedString+=*yytext;
-  					  BEGIN( lastStringContext ); 
-					}
-	YY_BREAK
-case 301:
-YY_RULE_SETUP
-#line 2606 "scanner.l"
-{
-  					  *pCopyQuotedString+=yytext;
-  					}
-	YY_BREAK
-case 302:
-YY_RULE_SETUP
-#line 2609 "scanner.l"
-{
-  					  *pCopyQuotedString+=*yytext;
-  					  yyLineNr++;
-  					}
-	YY_BREAK
-case 303:
-YY_RULE_SETUP
-#line 2613 "scanner.l"
-{
-  					  *pCopyQuotedString+=*yytext;
-  					}
-	YY_BREAK
-/* generic round bracket list copy rules */
-case 304:
-YY_RULE_SETUP
-#line 2618 "scanner.l"
-{
-					  *pCopyRoundString+=*yytext;
-  					  pCopyQuotedString=pCopyRoundString;
-					  lastStringContext=YY_START;
-					  BEGIN(CopyString);
-					}
-	YY_BREAK
-case 305:
-YY_RULE_SETUP
-#line 2624 "scanner.l"
-{
-  					  *pCopyRoundString+=*yytext;
-  					  roundCount++;
-  					}
-	YY_BREAK
-case 306:
-YY_RULE_SETUP
-#line 2628 "scanner.l"
-{
-  					  *pCopyRoundString+=*yytext;
-					  if (--roundCount<0)
-					    BEGIN(lastRoundContext);
-  					}
-	YY_BREAK
-case 307:
-YY_RULE_SETUP
-#line 2633 "scanner.l"
-{
-  					  yyLineNr++;
-  					  *pCopyRoundString+=*yytext;
-  					}
-	YY_BREAK
-case 308:
-YY_RULE_SETUP
-#line 2637 "scanner.l"
-{ *pCopyRoundString+=yytext; }
-	YY_BREAK
-case 309:
-YY_RULE_SETUP
-#line 2638 "scanner.l"
-{ *pCopyRoundString+=yytext; }
-	YY_BREAK
-case 310:
-YY_RULE_SETUP
-#line 2639 "scanner.l"
-{ *pCopyRoundString+=yytext; }
-	YY_BREAK
-case 311:
-YY_RULE_SETUP
-#line 2640 "scanner.l"
-{
-  					  *pCopyRoundString+=yytext;
-  					}
-	YY_BREAK
-/* generic curly bracket list copy rules */
-case 312:
-YY_RULE_SETUP
-#line 2645 "scanner.l"
-{
-					  *pCopyCurlyString+=*yytext;
-  					  pCopyQuotedString=pCopyCurlyString;
-					  lastStringContext=YY_START;
-					  BEGIN(CopyString);
-					}
-	YY_BREAK
-case 313:
-YY_RULE_SETUP
-#line 2651 "scanner.l"
-{
-  					  *pCopyCurlyString+=*yytext;
-					  curlyCount++;
-  					}
-	YY_BREAK
-case 314:
-YY_RULE_SETUP
-#line 2655 "scanner.l"
-{
-					  *pCopyCurlyString+=*yytext;
-					  if (--curlyCount<0)
-					    BEGIN(lastCurlyContext); 
-  					}
-	YY_BREAK
-case 315:
-YY_RULE_SETUP
-#line 2660 "scanner.l"
-{ *pCopyCurlyString+=yytext; }
-	YY_BREAK
-case 316:
-YY_RULE_SETUP
-#line 2661 "scanner.l"
-{ *pCopyCurlyString+=yytext; }
-	YY_BREAK
-case 317:
-YY_RULE_SETUP
-#line 2662 "scanner.l"
-{ *pCopyCurlyString+=yytext; }
-	YY_BREAK
-case 318:
-YY_RULE_SETUP
-#line 2663 "scanner.l"
-{
-  					  *pCopyCurlyString+=yytext;
-  					}
-	YY_BREAK
-case 319:
-YY_RULE_SETUP
-#line 2666 "scanner.l"
-{
-  					  yyLineNr++;
-					  *pCopyCurlyString+=*yytext;
-  					}
-	YY_BREAK
-case 320:
-YY_RULE_SETUP
-#line 2671 "scanner.l"
-{ 
-  					  QCString oldType = current->type.copy();
-					  QCString oldDocs = current->doc.copy();
-  					  if ( *yytext != ':')
-					  {
-					    if (current->bodyLine==-1)
-					    {
-					      current->bodyLine = yyLineNr;
-					    }
-					    current->type=current->type.simplifyWhiteSpace();
-					    current->args=current->args.simplifyWhiteSpace();
-					    current->name=current->name.stripWhiteSpace();
-					    current->section = Entry::VARIABLE_SEC ;
-					    current->fileName = yyFileName;
-					    current->startLine = yyLineNr;
-					    current_root->addSubEntry( current ) ;
-					    current = new Entry ;
-					    // variable found 
-					    current->section = Entry::EMPTY_SEC ;
-					    current->protection = protection;
-					    current->slot = slot = FALSE;
-					    current->sig = sig = FALSE;
-					    current->virt = Normal; 
-					    current->stat = gstat;
-					  }
-					  // skip expression or bitfield if needed
-					  if ( *yytext == ':') 
-					  {
-					    BEGIN( NextSemi );
-					  }
-					  else 
-					  {
-					    if ( *yytext == ',' )
-					    {
-					      int i=oldType.length(); 
-					      while (i>0 && (oldType[i-1]=='*' || oldType[i-1]==' ')) i--;
-					      current->type = oldType.left(i);
-					      current->doc  = oldDocs;
-					    }
-					    BEGIN( FindMembers ) ;
-					  }
-					}
-	YY_BREAK
-case 321:
-YY_RULE_SETUP
-#line 2714 "scanner.l"
-{ 
-					  if (current->name.isEmpty()) // IDL function property
-					  {
-					    squareCount=1;
-					    lastSquareContext = YY_START;
-					    BEGIN(SkipSquare);
-					  }
-					  else
-					  {
-  					    current->args += yytext ;
-					    squareCount=1;
-					    BEGIN( Array ) ;
-					  }
-					}
-	YY_BREAK
-case 322:
-YY_RULE_SETUP
-#line 2728 "scanner.l"
-{ current->args += *yytext ;
-					  if (--squareCount<=0)
-	                                     BEGIN( FindMembers ) ;
-					}
-	YY_BREAK
-case 323:
-YY_RULE_SETUP
-#line 2732 "scanner.l"
-{ current->args += *yytext ;
-					  squareCount++;	
-					}
-	YY_BREAK
-case 324:
-YY_RULE_SETUP
-#line 2735 "scanner.l"
-{ current->args += *yytext ; }
-	YY_BREAK
-case 325:
-YY_RULE_SETUP
-#line 2736 "scanner.l"
-{ squareCount++; }
-	YY_BREAK
-case 326:
-YY_RULE_SETUP
-#line 2737 "scanner.l"
-{
-  					  if (--squareCount<=0)
-					    BEGIN( lastSquareContext );
-  					}
-	YY_BREAK
-case 327:
-YY_RULE_SETUP
-#line 2741 "scanner.l"
-{
-  					  lastStringContext=YY_START;
-  				          BEGIN( SkipString ); 
-					}
-	YY_BREAK
-case 328:
-YY_RULE_SETUP
-#line 2745 "scanner.l"
-
-	YY_BREAK
-case 329:
-YY_RULE_SETUP
-#line 2746 "scanner.l"
-{ addType( current ) ;
-					  current->type += yytext ;
-					  BEGIN( Sharp ) ;
-					}
-	YY_BREAK
-case 330:
-YY_RULE_SETUP
-#line 2750 "scanner.l"
-{ current->type += *yytext ;
-					  if (--sharpCount<=0)
-	                                     BEGIN( FindMembers ) ;
-					}
-	YY_BREAK
-case 331:
-YY_RULE_SETUP
-#line 2754 "scanner.l"
-{ current->type += *yytext ;
-					  sharpCount++;	
-					}
-	YY_BREAK
-case 332:
-YY_RULE_SETUP
-#line 2757 "scanner.l"
-{
-  					  lineCount();
-					}
-	YY_BREAK
-case 333:
-YY_RULE_SETUP
-#line 2760 "scanner.l"
-{ current->type += *yytext ; }
-	YY_BREAK
-case 334:
-YY_RULE_SETUP
-#line 2761 "scanner.l"
-{
-  					  current->name = yytext;
-					}
-	YY_BREAK
-case 335:
-YY_RULE_SETUP
-#line 2764 "scanner.l"
-{
-  					  lastInitializerContext = YY_START;
-  					  BEGIN(ReadInitializer);
-  					}
-	YY_BREAK
-case 336:
-YY_RULE_SETUP
-#line 2768 "scanner.l"
-{
-					  //printf("adding `%s' `%s' `%s' to enum `%s'\n",
-					  //     current->type.data(), current->name.data(),
-					  //     current->args.data(), current_root->name.data());
-					  current->fileName   = yyFileName;
-					  current->startLine  = yyLineNr;
-					  current->type       = "@"; // enum marker
-  					  current->args       = current->args.simplifyWhiteSpace();
-  					  current->name       = current->name.stripWhiteSpace();
-					  current->section    = Entry::VARIABLE_SEC;
-					  // add to the scope of the enum
-					  current_root->addSubEntry(current);
-					  current             = new Entry(*current);
-					  // add to the scope surrounding the enum (copy!)
-					  current_root->parent->addSubEntry(current);
-					  current             = new Entry ;
-					  current->protection = protection ;
-				          current->sig        = sig;
-					  current->virt       = virt;
-					  current->stat       = gstat;
-					  current->slot       = slot;
-  					}
-	YY_BREAK
-/*
-","			{ unput(*yytext); BEGIN(FindFields); }
-  */
-case 337:
-YY_RULE_SETUP
-#line 2793 "scanner.l"
-{ current->program += yytext ; }
-	YY_BREAK
-case 338:
-YY_RULE_SETUP
-#line 2794 "scanner.l"
-{ current->program += yytext ; }
-	YY_BREAK
-case 339:
-YY_RULE_SETUP
-#line 2795 "scanner.l"
-{ current->program += yytext ; }
-	YY_BREAK
-case 340:
-YY_RULE_SETUP
-#line 2796 "scanner.l"
-{ current->program += yytext ;
-					  lastContext = Curly ;
-					  BEGIN( Comment ) ;
-					}
-	YY_BREAK
-case 341:
-YY_RULE_SETUP
-#line 2800 "scanner.l"
-{ current->program += yytext ;
-					  ++yyLineNr ;
-					  lastContext = Curly ;
-					  BEGIN( Comment ) ;
-					}
-	YY_BREAK
-case 342:
-YY_RULE_SETUP
-#line 2805 "scanner.l"
-{ current->program += yytext; }
-	YY_BREAK
-case 343:
-YY_RULE_SETUP
-#line 2806 "scanner.l"
-{ current->program += yytext; }
-	YY_BREAK
-case 344:
-YY_RULE_SETUP
-#line 2807 "scanner.l"
-{ current->program += yytext; }
-	YY_BREAK
-case 345:
-YY_RULE_SETUP
-#line 2808 "scanner.l"
-{ current->program += yytext ;
-					  ++curlyCount ;
-					}
-	YY_BREAK
-case 346:
-YY_RULE_SETUP
-#line 2811 "scanner.l"
-{ //err("Curly count=%d\n",curlyCount);
-  					  if ( curlyCount>0 )
-					  {
-					    current->program += yytext ;
-					    --curlyCount ;
-					  }
-					  else
-					  {
-					    current->endBodyLine = yyLineNr;
-					    QCString &cn = current->name;
-					    //QCString rn = stripAnnonymousScope(current_root->name);
-					    QCString rn = current_root->name.copy();
-					    //printf("cn=`%s' rn=`%s'\n",cn.data(),rn.data());
-					    if (!cn.isEmpty() && !rn.isEmpty() && 
-					      (current_root->section & Entry::SCOPE_MASK))
-					    {
-					      cn.prepend(rn+"::");
-					    }
-					    if (isTypedef && cn.isEmpty())
-					    {
-					      //printf("Typedef Name\n");
-					      BEGIN( TypedefName );
-					    }
-					    else
-					    {
-					      if (current->section == Entry::ENUM_SEC)
-					      {
-					        current->program+=','; // add field terminator
-					      }
-					      // add compound definition to the tree
-  					      current->args = current->args.simplifyWhiteSpace();
-  					      current->type = current->type.simplifyWhiteSpace();
-  					      current->name = current->name.stripWhiteSpace();
-					      //printf("adding `%s' `%s' `%s' brief=%s\n",current->type.data(),current->name.data(),current->args.data(),current->brief.data());
-					      current_root->addSubEntry( current ) ;
-					      current = new Entry(*current);
-					      if (current->section==Entry::NAMESPACE_SEC || 
-						  current->section==Entry::INTERFACE_SEC
-						 )
-					      { // namespaces and interfaces ends with a closing bracket without semicolon
-						current->reset();
-						current->protection = protection ;
-						current->sig = sig;
-						current->virt = virt;
-						current->stat = gstat;
-						current->slot = slot;
-						BEGIN( FindMembers ) ;
-					      }
-					      else
-						BEGIN( MemberSpec ) ;
-					    }
-					  }
-					}
-	YY_BREAK
-case 347:
-YY_RULE_SETUP
-#line 2864 "scanner.l"
-{
-  					  if (current->section == Entry::ENUM_SEC)
-					  {
-					    current->program+=","; // add field terminator
-					  }
-  				          current->name=yytext;
-					  if (current_root->section & Entry::SCOPE_MASK)
-					  {
-					    current->name.prepend(current_root->name+"::");
-					  }
-  					  current->args = current->args.simplifyWhiteSpace();
-  					  current->type = current->type.simplifyWhiteSpace();
-					  //printf("Adding compound %s %s %s\n",current->type.data(),current->name.data(),current->args.data());
-					  current_root->addSubEntry( current ) ;
-					  current = new Entry;
-					  current->protection = protection ;
-					  current->sig = sig;
-					  current->virt = virt;
-					  current->stat = gstat;
-					  current->slot = slot;
-  					  BEGIN(MemberSpecSkip); 
-  					}
-	YY_BREAK
-case 348:
-YY_RULE_SETUP
-#line 2886 "scanner.l"
-{ // the [] part could be improved.
-  					  lineCount();
-  					  int i=0,l=yyleng,j;
-					  while (iname.isEmpty())
-					   /* && (current->section & Entry::COMPOUND_MASK)) */
-					  { 
-					    // see if the compound does not have a name or is inside another
-					    // annonymous compound. If so we insert a 
-					    // special `annonymous' variable.
-					    Entry *p=current_root;
-					    while (p)
-					    {
-					      // only look for class scopes, not namespace scopes
-					      if ((p->section & Entry::COMPOUND_MASK) && !p->name.isEmpty())
-					      {
-						//printf("Trying scope `%s'\n",p->name.data());
-						int i=p->name.findRev("::");
-						int pi = (i==-1) ? 0 : i+2;
-						if (p->name.at(pi)=='@')
-						{
-						  // annonymous compound inside -> insert dummy variable name
-						  //printf("Adding annonymous variable for scope %s\n",p->name.data());
-						  msName.sprintf("@%d",anonCount++); 
-						  break;
-						}
-					      }
-					      p=p->parent;
-					    }
-					  }
-					  if (!msName.isEmpty())
-					  {
-  					    Entry *varEntry=new Entry;
-					    varEntry->protection = current->protection ;
-					    varEntry->sig = current->sig;
-					    varEntry->virt = current->virt;
-					    varEntry->stat = current->stat;
-					    varEntry->slot = current->slot;
-					    varEntry->section = Entry::VARIABLE_SEC;
-					    varEntry->name = msName.stripWhiteSpace();
-					    varEntry->type = current->type.simplifyWhiteSpace()+" ";
-					    varEntry->args = msArgs; //current->args.simplifyWhiteSpace();
-					    //if (!current->name.isEmpty() && current->name[0]!='@' && 
-					    //    current->parent->section & Entry::COMPOUND_MASK)
-					    //  varEntry->type+=current->parent->name+"::";
-					    if (isTypedef)
-					      varEntry->type.prepend("typedef ");
-					    varEntry->type+=current->name+msType;
-					    varEntry->fileName = yyFileName;
-					    varEntry->startLine = yyLineNr;
-					    varEntry->doc = current->doc.copy();
-					    varEntry->brief = current->brief.copy();
-					    //printf("Add: type=`%s',name=`%s',args=`%s'\n",
-					    //      varEntry->type.data(),varEntry->name.data(),varEntry->args.data());
-					    current_root->addSubEntry(varEntry);
-					  }
-					  if (*yytext==';')
-					  {
-					    msType.resize(0);
-					    msName.resize(0);
-					    msArgs.resize(0);
-					    isTypedef=FALSE;
-					    current->reset();
-					    current->protection = protection ;
-					    current->sig = sig;
-					    current->virt = virt;
-					    current->stat = gstat;
-					    current->slot = slot;
-					    BEGIN( FindMembers );
-					  }
-  					}					
-	YY_BREAK
-case 350:
-YY_RULE_SETUP
-#line 2968 "scanner.l"
-{ 
-  					  lastInitializerContext=YY_START;
-  					  BEGIN(ReadInitializer);
-  					  /* BEGIN(MemberSpecSkip); */
-					}
-	YY_BREAK
-/*
-"{"			{
-  					  curlyCount=0;
-					  lastCurlyContext = MemberSpecSkip;
-					  previous = current;
-  					  BEGIN(SkipCurly);
-  					}
-  */
-case 351:
-YY_RULE_SETUP
-#line 2981 "scanner.l"
-{ BEGIN(MemberSpec); }
-	YY_BREAK
-case 352:
-YY_RULE_SETUP
-#line 2982 "scanner.l"
-{ unput(';'); BEGIN(MemberSpec); }
-	YY_BREAK
-case 353:
-YY_RULE_SETUP
-#line 2983 "scanner.l"
-{ current->program += yytext ;
-					  lineCount() ;
-					}
-	YY_BREAK
-case 354:
-YY_RULE_SETUP
-#line 2986 "scanner.l"
-{ current->program += yytext ; }
-	YY_BREAK
-case 355:
-YY_RULE_SETUP
-#line 2988 "scanner.l"
-{
-  					  current->bodyLine = yyLineNr;
-  					  lineCount();
-  					  addType(current);
-					  funcPtrType=yytext;
-					  //current->type += yytext;
-					  BEGIN( FuncPtr );
-  					}
-	YY_BREAK
-case 356:
-YY_RULE_SETUP
-#line 2996 "scanner.l"
-{
-  					  current->name = yytext;
-					  BEGIN( EndFuncPtr );
-  					}
-	YY_BREAK
-case 357:
-YY_RULE_SETUP
-#line 3000 "scanner.l"
-{
-  					  //printf("Error: FuncPtr `%c' unexpected at line %d of %s\n",*yytext,yyLineNr,yyFileName);
-  					}
-	YY_BREAK
-case 358:
-*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
-yy_c_buf_p = yy_cp -= 1;
-YY_DO_BEFORE_ACTION; /* set up yytext again */
-YY_RULE_SETUP
-#line 3003 "scanner.l"
-{ // a variable with extra braces
- 					  lineCount();
-					  current->type+=funcPtrType.data()+1;
-  					  BEGIN(FindMembers);
-  					}
-	YY_BREAK
-case 359:
-*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
-yy_c_buf_p = yy_cp -= 1;
-YY_DO_BEFORE_ACTION; /* set up yytext again */
-YY_RULE_SETUP
-#line 3008 "scanner.l"
-{ // a variable function
-  					  lineCount();
-					  current->type+=funcPtrType+")";
-					  BEGIN(FindMembers);
-  					}
-	YY_BREAK
-case 360:
-*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
-yy_c_buf_p = yy_cp -= 1;
-YY_DO_BEFORE_ACTION; /* set up yytext again */
-YY_RULE_SETUP
-#line 3013 "scanner.l"
-{
-  					  lineCount();
-					  current->type+=funcPtrType.data();
-					  current->args += ")";
-					  BEGIN(FindMembers);
-  					}
-	YY_BREAK
-case 361:
-YY_RULE_SETUP
-#line 3019 "scanner.l"
-{ // a function returning a function
-  					  current->args += *yytext ;
-					  roundCount=0;
-					  BEGIN( FuncFunc );
-  					}
-	YY_BREAK
-case 362:
-YY_RULE_SETUP
-#line 3024 "scanner.l"
-{
-  					  BEGIN(FindMembers);
-  					}
-	YY_BREAK
-case 363:
-YY_RULE_SETUP
-#line 3027 "scanner.l"
-{
-  					  current->args += *yytext ;
-  					  ++roundCount;
-					}
-	YY_BREAK
-case 364:
-YY_RULE_SETUP
-#line 3031 "scanner.l"
-{
-  					  current->args += *yytext ;
-  					  if ( roundCount )
-					    --roundCount;
-					  else
-					  {
-					    BEGIN(FuncFuncEnd);
-					  }
-  					}
-	YY_BREAK
-case 365:
-YY_RULE_SETUP
-#line 3040 "scanner.l"
-{
-  					  lineCount();
-					  current->type+=funcPtrType+")(";
-					  BEGIN(FuncFuncType);
-  					}
-	YY_BREAK
-case 366:
-*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
-yy_c_buf_p = yy_cp -= 1;
-YY_DO_BEFORE_ACTION; /* set up yytext again */
-YY_RULE_SETUP
-#line 3045 "scanner.l"
-{
-  					  lineCount();
-					  current->type+=funcPtrType.data()+1;
-  					  BEGIN(Function);
-  					}
-	YY_BREAK
-case 367:
-YY_RULE_SETUP
-#line 3050 "scanner.l"
-{
-  					  current->args += *yytext;
-  					}
-	YY_BREAK
-case 368:
-YY_RULE_SETUP
-#line 3053 "scanner.l"
-{
-  					  current->type += *yytext;
-					  roundCount++;
-  					}
-	YY_BREAK
-case 369:
-YY_RULE_SETUP
-#line 3057 "scanner.l"
-{
-  					  current->type += *yytext;
-  					  if (roundCount)
-					    --roundCount;
-					  else
-					    BEGIN(Function);
-					}
-	YY_BREAK
-case 370:
-YY_RULE_SETUP
-#line 3064 "scanner.l"
-{ lineCount() ; current->type += ", " ; }
-	YY_BREAK
-case 371:
-YY_RULE_SETUP
-#line 3065 "scanner.l"
-{ lineCount() ; current->type += ' ' ; }
-	YY_BREAK
-case 372:
-YY_RULE_SETUP
-#line 3066 "scanner.l"
-{
-  					  current->type += *yytext;
-  					}
-	YY_BREAK
-case 373:
-YY_RULE_SETUP
-#line 3069 "scanner.l"
-{ current->args = yytext;
-  					  current->bodyLine = yyLineNr;
-					  currentArgumentContext = FuncQual;
-					  fullArgString=current->args.copy();
-					  copyArgString=¤t->args;
-					  BEGIN( ReadFuncArgType ) ;
-					  //printf(">>> Read function arguments!\n");
-					}
-	YY_BREAK
-/*
-"("{BN}*("void"{BN}*)?")"	{
-  					  lineCount();
-  					  current->args = "()"; 
-  					  BEGIN( FuncQual );
-  					}
-  */
-/*- Function argument reading rules ---------------------------------------*/
-case 374:
-YY_RULE_SETUP
-#line 3087 "scanner.l"
-{ *copyArgString+=yytext; 
-  					  fullArgString+=yytext;
-  					}
-	YY_BREAK
-case 375:
-YY_RULE_SETUP
-#line 3090 "scanner.l"
-{ *copyArgString+=yytext; 
-					  fullArgString+=yytext;
-					}
-	YY_BREAK
-case 376:
-YY_RULE_SETUP
-#line 3093 "scanner.l"
-{ 
-  					  *copyArgString+=yytext; 
-  					  fullArgString+=yytext;
-  					}
-	YY_BREAK
-case 377:
-YY_RULE_SETUP
-#line 3097 "scanner.l"
-{
-  					  *copyArgString+=" ";
-  					  fullArgString+=" ";
-  					  lineCount();
-  					}
-	YY_BREAK
-case 378:
-YY_RULE_SETUP
-#line 3102 "scanner.l"
-{
-  					  *copyArgString+=*yytext;
-  					  fullArgString+=*yytext;
-					  lastCopyArgStringContext = YY_START;
-  					  BEGIN( CopyArgString );
-  					}
-	YY_BREAK
-case 379:
-YY_RULE_SETUP
-#line 3108 "scanner.l"
-{
-  					  *copyArgString+=*yytext;
-  					  fullArgString+=*yytext;
-  					  argRoundCount=0; 
-					  lastCopyArgContext = YY_START;
-					  BEGIN( CopyArgRound ); 
-  					}
-	YY_BREAK
-case 380:
-YY_RULE_SETUP
-#line 3115 "scanner.l"
-{ 
-  					  *copyArgString+=*yytext;
-  					  fullArgString+=*yytext;
-					  stringToArgumentList(fullArgString,current->argList);
-					  BEGIN( currentArgumentContext );
-					}
-	YY_BREAK
-/* a special comment */
-case 381:
-YY_RULE_SETUP
-#line 3122 "scanner.l"
-{ 
-  					  fullArgString+=yytext;
-  					  lastCopyArgChar=0;
-					  if (yytext[1]=='/')
-					    BEGIN( CopyArgCommentLine );
-					  else
-  					    BEGIN( CopyArgComment );
-  					}
-	YY_BREAK
-/* `)' followed by a special comment */
-case 382:
-YY_RULE_SETUP
-#line 3131 "scanner.l"
-{
-  					  lineCount();
-					  lastCopyArgChar=*yytext;
-					  QCString text=&yytext[1];
-					  text=text.stripWhiteSpace();
-					  fullArgString+=text;
-					  if (text.find("//")!=-1)
-					    BEGIN( CopyArgCommentLine );
-					  else
-					    BEGIN( CopyArgComment );
-  					}
-	YY_BREAK
-case 383:
-YY_RULE_SETUP
-#line 3142 "scanner.l"
-{ fullArgString+=yytext; }
-	YY_BREAK
-case 384:
-YY_RULE_SETUP
-#line 3143 "scanner.l"
-{ fullArgString+=yytext; 
-  					  if (lastCopyArgChar!=0)
-					    unput(lastCopyArgChar); 
-                                          BEGIN( ReadFuncArgType ); 
-					}
-	YY_BREAK
-case 385:
-YY_RULE_SETUP
-#line 3148 "scanner.l"
-{ fullArgString+=yytext;
-  					  if (lastCopyArgChar!=0)
-					    unput(lastCopyArgChar);
-					  BEGIN( ReadFuncArgType );
-  					}
-	YY_BREAK
-case 386:
-YY_RULE_SETUP
-#line 3153 "scanner.l"
-{ fullArgString+=yytext; }
-	YY_BREAK
-case 387:
-YY_RULE_SETUP
-#line 3154 "scanner.l"
-{ fullArgString+=*yytext; yyLineNr++; }
-	YY_BREAK
-case 388:
-YY_RULE_SETUP
-#line 3155 "scanner.l"
-{ fullArgString+=*yytext; }
-	YY_BREAK
-case 389:
-YY_RULE_SETUP
-#line 3156 "scanner.l"
-{
-					  *copyArgString+=*yytext;
-					  fullArgString+=*yytext;
-					  argSharpCount=0;
-					  BEGIN( CopyArgSharp );
-					}
-	YY_BREAK
-case 390:
-YY_RULE_SETUP
-#line 3162 "scanner.l"
-{
-					  *copyArgString+=*yytext;
-					  fullArgString+=*yytext;
-					  //printf("end template list %s\n",copyArgString->data());
-					  stringToArgumentList(fullArgString,currentArgumentList);
-					  BEGIN( currentArgumentContext );
-					}
-	YY_BREAK
-case 391:
-YY_RULE_SETUP
-#line 3169 "scanner.l"
-{
-  					  argRoundCount++;
-					  *copyArgString+=*yytext;
-					  fullArgString+=*yytext;
-  					}
-	YY_BREAK
-case 392:
-YY_RULE_SETUP
-#line 3174 "scanner.l"
-{
-					  *copyArgString+=*yytext;
-					  fullArgString+=*yytext;
-					  if (argRoundCount>0) 
-					    argRoundCount--;
-					  else 
-					    BEGIN( lastCopyArgContext );
-  					}
-	YY_BREAK
-case 393:
-YY_RULE_SETUP
-#line 3182 "scanner.l"
-{
-  					  argSharpCount++;
-					  *copyArgString+=*yytext;
-					  fullArgString+=*yytext;
-  					}
-	YY_BREAK
-case 394:
-YY_RULE_SETUP
-#line 3187 "scanner.l"
-{
-  					  *copyArgString+=*yytext;
-  					  fullArgString+=*yytext;
-					  if (argRoundCount>0)
-					    argRoundCount--;
-					  else
-					    BEGIN( ReadTempArgs );
-  					}
-	YY_BREAK
-case 395:
-YY_RULE_SETUP
-#line 3195 "scanner.l"
-{
-  					  *copyArgString+=yytext;
-  					  fullArgString+=yytext;
-  					}
-	YY_BREAK
-case 396:
-YY_RULE_SETUP
-#line 3199 "scanner.l"
-{
-  					  *copyArgString+=*yytext;
-  					  fullArgString+=*yytext;
-					  BEGIN( lastCopyArgStringContext );
-  					}
-	YY_BREAK
-case 397:
-YY_RULE_SETUP
-#line 3204 "scanner.l"
-{ 
-                                          *copyArgString+=yytext; 
-                                          fullArgString+=yytext; 
-					}
-	YY_BREAK
-case 398:
-YY_RULE_SETUP
-#line 3208 "scanner.l"
-{ 
-  					  *copyArgString+=yytext; 
-  					  fullArgString+=yytext; 
-					}
-	YY_BREAK
-case 399:
-YY_RULE_SETUP
-#line 3212 "scanner.l"
-{ 
-  					  *copyArgString+=yytext; 
-  					  fullArgString+=yytext; 
-					}
-	YY_BREAK
-case 400:
-YY_RULE_SETUP
-#line 3216 "scanner.l"
-{ 
-  					  yyLineNr++; 
-					  *copyArgString+=*yytext; 
-					  fullArgString+=*yytext; 
-					}
-	YY_BREAK
-case 401:
-YY_RULE_SETUP
-#line 3221 "scanner.l"
-{ 
-  					  *copyArgString+=*yytext; 
-  					  fullArgString+=*yytext; 
-					}
-	YY_BREAK
-/*------------------------------------------------------------------------*/
-case 402:
-YY_RULE_SETUP
-#line 3231 "scanner.l"
-{ current->args += *yytext ;
-					  ++roundCount ;
-					}
-	YY_BREAK
-case 403:
-YY_RULE_SETUP
-#line 3234 "scanner.l"
-{ current->args += *yytext ; 
-					  if ( roundCount )
-					    --roundCount ;
-				          else
-					    BEGIN( FuncQual ) ;
-					}
-	YY_BREAK
-/*
-"#"				{ lastCPPContext = YY_START;
-  					  BEGIN(SkipCPP);
-					}
-  */
-case 404:
-YY_RULE_SETUP
-#line 3245 "scanner.l"
-{ unput(*yytext); BEGIN( Function ); }
-	YY_BREAK
-case 405:
-YY_RULE_SETUP
-#line 3246 "scanner.l"
-{ 
-  					  lineCount() ; 
-  					  current->args += " const "; 
-					  current->argList->constSpecifier=TRUE;
-					}
-	YY_BREAK
-case 406:
-YY_RULE_SETUP
-#line 3251 "scanner.l"
-{ 
-  					  lineCount() ; 
-  					  current->args += " volatile "; 
-					  current->argList->volatileSpecifier=TRUE;
-					}
-	YY_BREAK
-case 407:
-YY_RULE_SETUP
-#line 3256 "scanner.l"
-{ 
-  					  lineCount() ; 
-					  current->args += " = 0"; 
-					  current->virt = Pure; 
-					  current->argList->pureSpecifier=TRUE;
-					}
-	YY_BREAK
-case 408:
-YY_RULE_SETUP
-#line 3262 "scanner.l"
-{ 
-  					  lineCount() ; 
-					  current->args += ", " ; 
-					}
-	YY_BREAK
-case 409:
-YY_RULE_SETUP
-#line 3266 "scanner.l"
-{ 
-  					  lineCount() ; 
-					  current->args += ' ' ; 
-					}
-	YY_BREAK
-case 410:
-YY_RULE_SETUP
-#line 3270 "scanner.l"
-{ current->args += *yytext; }
-	YY_BREAK
-case 411:
-YY_RULE_SETUP
-#line 3271 "scanner.l"
-{ 
-  					  current->exception = " throw (" ;
-					  lineCount() ;
-					  BEGIN( ExcpRound ) ;
-					}
-	YY_BREAK
-case 412:
-YY_RULE_SETUP
-#line 3276 "scanner.l"
-{
-  					  current->exception = " raises (" ;
-					  lineCount() ;
-					  BEGIN( ExcpRound ) ;
-  					}
-	YY_BREAK
-case 413:
-YY_RULE_SETUP
-#line 3281 "scanner.l"
-{ current->exception += *yytext ;
-					  ++roundCount ;
-					}
-	YY_BREAK
-case 414:
-YY_RULE_SETUP
-#line 3284 "scanner.l"
-{ current->exception += *yytext ; 
-					  if ( roundCount )
-					    --roundCount ;
-				          else
-					    BEGIN( FuncQual ) ;
-					}
-	YY_BREAK
-case 415:
-YY_RULE_SETUP
-#line 3290 "scanner.l"
-{
-  					  current->exception += yytext;
-  					}
-	YY_BREAK
-case 416:
-YY_RULE_SETUP
-#line 3293 "scanner.l"
-{ current->type += current->name ;
-					  current->name  = current->args ;
-					  current->args  = yytext ;
-					  BEGIN( FuncRound ) ;
-					}
-	YY_BREAK
-case 417:
-YY_RULE_SETUP
-#line 3298 "scanner.l"
-{ lastCPPContext = YY_START;
-  					  BEGIN(SkipCPP);
-					}	
-	YY_BREAK
-case 418:
-YY_RULE_SETUP
-#line 3301 "scanner.l"
-{ 
-					  current->name=current->name.simplifyWhiteSpace();
-  					  current->type=current->type.simplifyWhiteSpace();
-  					  current->args=current->args.simplifyWhiteSpace();
-					  QCString &cn=current->name;
-					  QCString &rn=current_root->name;
-					  //printf("current_root->name=`%s'\n",rn.data());
-  					  //printf("Function: `%s' `%s' `%s'\n",current->type.data(),cn.data(),current->args.data());
-					  int i;
-					  if ((i=cn.findRev("::"))!=-1) // name contains scope
-					  {
-					    if (cn.left(i)==rn.right(i)) // scope name is redundant
-					    {
-                                              cn=cn.right(cn.length()-i-2); // strip scope
-					      //printf("new name=`%s'\n",cn.data());
-					    }
-					  }
-					  //if (cname.left(current_root->name.length()+2)==current_root->name+"::") 
-					  //{ // strip redundant scope
-					  //  current->name=current->name.right(current->name.length()-current_root->name.length()-2);
-					  //  printf("new name=`%s'\n",current->name.data());
-					  //}
-					  current->fileName = yyFileName;
-					  current->startLine = yyLineNr;
-					  if (*yytext!=';' || (current_root->section&Entry::SCOPE_MASK) )
-					  {
-					    int tempArg=current->name.find('<');
-					    QCString tempName;
-					    if (tempArg==-1) 
-					      tempName=current->name;
-					    else
-					      tempName=current->name.left(tempArg);
-					    if (current->type.isEmpty() && tempName.find("operator")==-1 && 
-						(tempName.find('*')!=-1 || tempName.find('&')!=-1))
-					    {
-					      //printf("Scanner.l: found in class variable: `%s' `%s' `%s'\n",
-					      //   current->type.data(),current->name.data(),current->args.data());
-					      current->section = Entry::VARIABLE_SEC ;
-					    }
-					    else	      
-					    {
-					      //printf("Scanner.l: found in class function: `%s' `%s' `%s'\n",
-					      //   current->type.data(),current->name.data(),current->args.data());
-					      current->section = Entry::FUNCTION_SEC ;
-					    }
-					  }
-					  else // a global function prototype or function variable
-					  {
-					    //printf("Scanner.l: prototype? type=`%s' name=`%s' args=`%s'\n",current->type.data(),current->name.data(),current->args.data());
-					    QRegExp re("([^)]*)");
-					    if (!current->type.isEmpty() && 
-						(current->type.find(re,0)!=-1 || current->type.left(8)=="typedef "))
-					    {
-					      //printf("Scanner.l: found function variable!\n");
-					      current->section = Entry::VARIABLE_SEC;
-					    }
-					    else
-					    {
-					      //printf("Scanner.l: found prototype\n");
-  					      current->section = Entry::FUNCTION_SEC;
-					      current->proto = TRUE;
-					    }
-					  }
-					  //printf("Adding entry `%s' inLine`%d' bodyLine=`%d'\n",
-					  //    current->name.data(),current->inLine,current->bodyLine);
-					  previous = current;
-					  current_root->addSubEntry(current);
-					  current = new Entry ;
-					  current->protection = protection;
-				          current->sig = sig;
-					  current->virt = virt;
-					  current->stat = gstat;
-					  current->slot = slot;
-					  current->mGrpId = memberGroupId;
-					  lastCurlyContext = FindMembers;
-					  if( *yytext == '{' )
-					  {
-					    if (current_root->section & Entry::COMPOUND_MASK)
-					      previous->inLine = TRUE;
-					    //addToBody(yytext);
-					    curlyCount=0;
-					    BEGIN( SkipCurly ) ;
-					  }
-					  else if( *yytext == ':' )
-					  {
-					    //addToBody(yytext);
-					    BEGIN( SkipInits ) ;
-					  }
-					  else
-					  {
-					    if (previous->section!=Entry::VARIABLE_SEC)
-					      previous->bodyLine=-1; // a function/member declaration
-					    BEGIN( FindMembers ) ;
-					  }
-					}
-	YY_BREAK
-case 419:
-YY_RULE_SETUP
-#line 3397 "scanner.l"
-{ 
-  				          //addToBody(yytext);
-  				          lastCurlyContext = FindMembers;
-					  curlyCount=0;
-  					  BEGIN( SkipCurly ) ; 
-					}
-	YY_BREAK
-case 420:
-YY_RULE_SETUP
-#line 3403 "scanner.l"
-{ 
-  				          //addToBody(yytext);
-  					  ++curlyCount ; 
-					}
-	YY_BREAK
-case 421:
-YY_RULE_SETUP
-#line 3407 "scanner.l"
-{ 
-  				          //addToBody(yytext);
-  					  if( curlyCount )
-					  {
-					    --curlyCount ;
-					  }
-					  else
-					  {
-					    previous->endBodyLine=yyLineNr;
-					    BEGIN( lastCurlyContext ) ;
-					  }
-					}
-	YY_BREAK
-case 422:
-YY_RULE_SETUP
-#line 3419 "scanner.l"
-{ 
-  					  if ( curlyCount )
-					  {
-					    //addToBody(yytext);
-					    --curlyCount ;
-					  }
-					  else
-					  {
-					    current->endBodyLine=yyLineNr;
-					    lineCount();
-					    tempEntry = current; // temporarily switch to the previous entry
-					    current = previous;
-					    current->doc.resize(0);
-					    current->brief.resize(0);
-					    lastAfterDocContext = SkipCurlyEndDoc;
-					    afterDocTerminator = '}';
-					    if (yytext[yyleng-3]=='/')
-					      BEGIN(AfterDocLine);
-					    else if (yytext[yyleng-2]=='*' && Config::autoBriefFlag)
-					      BEGIN(AfterDocBrief);
-					    else
-					      BEGIN(AfterDoc);
-					  }
-					}
-	YY_BREAK
-case 423:
-YY_RULE_SETUP
-#line 3443 "scanner.l"
-{
-  				          //addToBody("}");
-					  current = tempEntry;
-  					  BEGIN( lastCurlyContext );
-  					}
-	YY_BREAK
-case 424:
-YY_RULE_SETUP
-#line 3448 "scanner.l"
-{
-  				          //addToBody(yytext);
-  					}
-	YY_BREAK
-case 425:
-YY_RULE_SETUP
-#line 3451 "scanner.l"
-{
-  				          //addToBody(yytext);
-  					}
-	YY_BREAK
-case 426:
-YY_RULE_SETUP
-#line 3454 "scanner.l"
-{
-  				          //addToBody(yytext);
-  					}
-	YY_BREAK
-case 427:
-YY_RULE_SETUP
-#line 3457 "scanner.l"
-{ 
-  				          //addToBody(yytext);
-  					  lastStringContext=SkipCurly;
-  				          BEGIN( SkipString ); 
-					}
-	YY_BREAK
-case 428:
-YY_RULE_SETUP
-#line 3462 "scanner.l"
-{ 
-  				          //addToBody(yytext);
-  					  BEGIN( SkipCurlyCpp ); 
-					}
-	YY_BREAK
-case 429:
-YY_RULE_SETUP
-#line 3466 "scanner.l"
-{
-  					  yyLineNr++;
-  				          //addToBody(yytext);
-  					}
-	YY_BREAK
-case 430:
-YY_RULE_SETUP
-#line 3470 "scanner.l"
-{
-  				          //addToBody(yytext);
-  					}
-	YY_BREAK
-case 431:
-YY_RULE_SETUP
-#line 3473 "scanner.l"
-{ 
-  				          //addToBody(yytext);
-  					  yyLineNr++; 
-  					  lastCurlyContext = FindMembers;
-  					  BEGIN( SkipCurly ); 
-					}
-	YY_BREAK
-case 432:
-YY_RULE_SETUP
-#line 3479 "scanner.l"
-{ 
-  				          //addToBody(yytext);
-  					  yyLineNr++; 
-					}
-	YY_BREAK
-case 433:
-YY_RULE_SETUP
-#line 3483 "scanner.l"
-{
-  				          //addToBody(yytext);
-  					  lastCContext = YY_START;
-					  BEGIN(SkipComment);
-  					}
-	YY_BREAK
-case 434:
-YY_RULE_SETUP
-#line 3488 "scanner.l"
-{
-  				          //addToBody(yytext);
-  					  lastCContext = YY_START;
-					  BEGIN(SkipCxxComment);
-  					}
-	YY_BREAK
-case 435:
-YY_RULE_SETUP
-#line 3493 "scanner.l"
-{
-  				          //addToBody(yytext);
-  					}
-	YY_BREAK
-case 436:
-YY_RULE_SETUP
-#line 3496 "scanner.l"
-{
-  				          //addToBodyCond(yytext);
-  					}
-	YY_BREAK
-case 437:
-YY_RULE_SETUP
-#line 3499 "scanner.l"
-{ 
-  				          //addToBodyCond(yytext);
-  					  BEGIN( lastStringContext ); 
-					}
-	YY_BREAK
-case 438:
-YY_RULE_SETUP
-#line 3503 "scanner.l"
-{
-  				          //addToBodyCond(yytext);
-  					}
-	YY_BREAK
-case 439:
-YY_RULE_SETUP
-#line 3506 "scanner.l"
-{
-  					  yyLineNr++;
-  				          //addToBodyCond(yytext);
-  					}
-	YY_BREAK
-case 440:
-YY_RULE_SETUP
-#line 3510 "scanner.l"
-{
-  				          //addToBodyCond(yytext);
-  					}
-	YY_BREAK
-case 441:
-YY_RULE_SETUP
-#line 3513 "scanner.l"
-{ 
-					  current->section = Entry::EMPTY_SEC ;
-					  current->type.resize(0) ;
-					  current->name.resize(0) ;
-					  current->args.resize(0) ;
-					  current->argList->clear();
-					  BEGIN( FindMembers ) ;
-					}
-	YY_BREAK
-case 442:
-*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
-yy_c_buf_p = yy_cp -= 1;
-YY_DO_BEFORE_ACTION; /* set up yytext again */
-YY_RULE_SETUP
-#line 3521 "scanner.l"
-{
-  					  sharpCount = 0;
-  					  current->name = yytext ;
-					  lineCount();
-					  lastClassTemplSpecContext = ClassVar;
-					  BEGIN( ClassTemplSpec );
-					}
-	YY_BREAK
-case 443:
-YY_RULE_SETUP
-#line 3528 "scanner.l"
-{
-					  current->name += yytext;
-					  lineCount();
-  					  if (--sharpCount<=0)
-					  {
-					    current->name = removeRedundantWhiteSpace(current->name);
-					    BEGIN( lastClassTemplSpecContext );
-					  }
-					}
-	YY_BREAK
-case 444:
-YY_RULE_SETUP
-#line 3537 "scanner.l"
-{
-  					  current->name += yytext;
-  					  sharpCount++;
-  					}
-	YY_BREAK
-case 445:
-YY_RULE_SETUP
-#line 3541 "scanner.l"
-{
-  					  current->name += yytext;
-					}
-	YY_BREAK
-case 446:
-YY_RULE_SETUP
-#line 3544 "scanner.l"
-{ 
-					  current->name = yytext ;
-					  lineCount();
-					  BEGIN( ClassVar );
-					}
-	YY_BREAK
-case 447:
-YY_RULE_SETUP
-#line 3549 "scanner.l"
-{
-					  if (isTypedef)
-					  {
-					  //  typedefDict.insert(yytext,new QCString(current->name));
-					  //  current->type.prepend("typedef ");
-					  //  current->extends
-					    current->extends->append(
-					      new BaseInfo(yytext,Public,Normal)
-					    );
-					  }
-  					  current->type += ' ' ;
-					  current->type += current->name ;
-					  current->name = yytext ;
-					  //BEGIN( FindMembers );
-  					}
-	YY_BREAK
-case 448:
-YY_RULE_SETUP
-#line 3564 "scanner.l"
-{
-                                          // probably a function anyway
-                                          unput(*yytext);
-					  BEGIN( FindMembers );
-					}
-	YY_BREAK
-case 449:
-YY_RULE_SETUP
-#line 3569 "scanner.l"
-{ 
-  					  current->type.resize(0);
-					  if (current->section == Entry::INTERFACE_SEC)
-					    baseProt=Public;
-					  else  
-					    baseProt=Private;
-                                          baseVirt=Normal;
-					  baseName.resize(0);
-					  BEGIN( BasesProt ) ;
-					}
-	YY_BREAK
-case 450:
-YY_RULE_SETUP
-#line 3579 "scanner.l"
-{
-    					  unput(*yytext);
-					  BEGIN( FindMembers );
-    					}
-	YY_BREAK
-case 451:
-YY_RULE_SETUP
-#line 3583 "scanner.l"
-{ current->fileName = yyFileName ;
-					  current->startLine = yyLineNr ;
-					  current->name = removeRedundantWhiteSpace(current->name);
-					  if (current->name.isEmpty() && !isTypedef) // anonymous compound
-					    current->name.sprintf("@%d",anonCount++);
-					  curlyCount=0;
-					  BEGIN( Curly ) ;
-					}
-	YY_BREAK
-case 452:
-YY_RULE_SETUP
-#line 3591 "scanner.l"
-{ baseVirt = Virtual; }
-	YY_BREAK
-case 453:
-YY_RULE_SETUP
-#line 3592 "scanner.l"
-{ baseProt = Public; }
-	YY_BREAK
-case 454:
-YY_RULE_SETUP
-#line 3593 "scanner.l"
-{ baseProt = Protected; }
-	YY_BREAK
-case 455:
-YY_RULE_SETUP
-#line 3594 "scanner.l"
-{ baseProt = Private; }
-	YY_BREAK
-case 456:
-YY_RULE_SETUP
-#line 3595 "scanner.l"
-{ lineCount(); }
-	YY_BREAK
-case 457:
-YY_RULE_SETUP
-#line 3596 "scanner.l"
-{ unput(*yytext); BEGIN(Bases); }
-	YY_BREAK
-case 458:
-YY_RULE_SETUP
-#line 3597 "scanner.l"
-{ 
-  					  //current->extends->append(
-					  //  new BaseInfo(yytext,baseProt,baseVirt)
-					  //) ;
-  					  if (*yytext != ':')
-  					    baseName += yytext;
-					  else
-					    baseName += (yytext+2);
-					  current->args += ' ';
-					  if (*yytext != ':')
-					    current->args += yytext;
-					  else
-					    current->args += (yytext+2);
-					}
-	YY_BREAK
-case 459:
-YY_RULE_SETUP
-#line 3611 "scanner.l"
-{ current->name += *yytext;
-  					  sharpCount=1; 
-					  lastSkipSharpContext = YY_START;
-					  specName = ¤t->name;
-					  BEGIN ( Specialization );
-					}
-	YY_BREAK
-case 460:
-YY_RULE_SETUP
-#line 3617 "scanner.l"
-{ baseName += *yytext;
-  					  sharpCount=1; 
-					  lastSkipSharpContext = YY_START;
-					  specName = &baseName;
-					  BEGIN ( Specialization );
-					}
-	YY_BREAK
-case 461:
-YY_RULE_SETUP
-#line 3623 "scanner.l"
-{ *specName += *yytext;
-  					  sharpCount++;
-  					}
-	YY_BREAK
-case 462:
-YY_RULE_SETUP
-#line 3626 "scanner.l"
-{
-  					  *specName += *yytext;
-  					  if (--sharpCount<=0)
-					    BEGIN(lastSkipSharpContext);
-  					}
-	YY_BREAK
-case 463:
-YY_RULE_SETUP
-#line 3631 "scanner.l"
-{ lineCount(); *specName +=' '; }
-	YY_BREAK
-case 464:
-YY_RULE_SETUP
-#line 3632 "scanner.l"
-{
-  					  *specName += *yytext;
-  					}
-	YY_BREAK
-case 465:
-YY_RULE_SETUP
-#line 3635 "scanner.l"
-{ ++sharpCount; }
-	YY_BREAK
-case 466:
-YY_RULE_SETUP
-#line 3636 "scanner.l"
-{ if (--sharpCount<=0)
-					    BEGIN ( lastSkipSharpContext );
-					}
-	YY_BREAK
-case 467:
-YY_RULE_SETUP
-#line 3639 "scanner.l"
-{ ++roundCount; }
-	YY_BREAK
-case 468:
-YY_RULE_SETUP
-#line 3640 "scanner.l"
-{ if (--roundCount<=0)
-					    BEGIN ( lastSkipRoundContext );
-					}
-	YY_BREAK
-case 469:
-YY_RULE_SETUP
-#line 3643 "scanner.l"
-{ current->args += ',' ; 
-					  current->name = removeRedundantWhiteSpace(current->name);
-  					  if (!baseName.isEmpty())
-  					    current->extends->append(
-					      new BaseInfo(baseName,baseProt,baseVirt)
-					    );
-					  if (current->section == Entry::INTERFACE_SEC)
-					    baseProt=Public;
-					  else
-					    baseProt=Private;
-					  baseVirt=Normal;
-					  baseName.resize(0);
-					  BEGIN(BasesProt);
-					}
-	YY_BREAK
-case 470:
-YY_RULE_SETUP
-#line 3657 "scanner.l"
-{ current->fileName = yyFileName ;
-					  current->startLine = yyLineNr ;
-					  current->name = removeRedundantWhiteSpace(current->name);
-  					  if (!baseName.isEmpty())
-  					    current->extends->append(
-					      new BaseInfo(baseName,baseProt,baseVirt)
-					    );
-					  curlyCount=0;
-					  BEGIN( Curly ) ;
-					}
-	YY_BREAK
-case 471:
-YY_RULE_SETUP
-#line 3667 "scanner.l"
-{ current->program += yytext ;
-					  lineCount() ;
-					}
-	YY_BREAK
-case 472:
-YY_RULE_SETUP
-#line 3670 "scanner.l"
-{ current->program += yytext ; } 
-	YY_BREAK
-case 473:
-YY_RULE_SETUP
-#line 3671 "scanner.l"
-{ current->program += yytext ; }
-	YY_BREAK
-case 474:
-YY_RULE_SETUP
-#line 3672 "scanner.l"
-{ current->program += yytext ; }
-	YY_BREAK
-case 475:
-YY_RULE_SETUP
-#line 3673 "scanner.l"
-{ current->program += yytext ;
-					  BEGIN( lastContext ) ;
-					}
-	YY_BREAK
-case 476:
-YY_RULE_SETUP
-#line 3676 "scanner.l"
-{ current->program += *yytext ; }
-	YY_BREAK
-case 477:
-YY_RULE_SETUP
-#line 3678 "scanner.l"
-{ 
-  					  //printf("Start doc block at %d\n",yyLineNr);
-					  removeSlashes=(yytext[1]=='/');
-					  tmpDocType=-1;
-					  if (YY_START==Curly)
-					    current->doc+="\n\n";
-					  else
-  					    current->doc.resize(0);
-					  lastDocContext = YY_START;
-					  if (current_root->section & Entry::SCOPE_MASK)
-					    current->inside = current_root->name+"::";
-					  BEGIN( Doc );
-					}
-	YY_BREAK
-case 478:
-*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
-yy_c_buf_p = yy_cp -= 1;
-YY_DO_BEFORE_ACTION; /* set up yytext again */
-YY_RULE_SETUP
-#line 3691 "scanner.l"
-{
-  					  removeSlashes=(yytext[1]=='/');
-					  lastDocContext = YY_START;
-					  if (current_root->section & Entry::SCOPE_MASK)
-					    current->inside = current_root->name+"::";
-					  if (!Config::autoBriefFlag) // use the Qt style
-					  {
-					    tmpDocType=-1;
-					    if (YY_START==Curly)
-					      current->doc+="\n\n";
-					    else
-  					      current->doc.resize(0);
-					    BEGIN( Doc );
-					  }
-					  else // Use the javadoc style
-					  {
-					    if (YY_START==Curly)
-					    {
-					      tmpDocType=-1;
-					      current->doc+="\n\n";
-					      lastDocContext = Curly;
-					      BEGIN( Doc );
-					    }
-					    else
-					    {  
-					      tmpDocType=Doc;
-					      current->doc.resize(0);
-					      current->brief.resize(0);
-					      BEGIN( JavaDoc );
-					    }
-					  }
-  					}
-	YY_BREAK
-case 479:
-YY_RULE_SETUP
-#line 3723 "scanner.l"
-{ 
-  					  current->brief.resize(0);
-					  tmpDocType=-1;
-					  lastDocContext = YY_START;
-					  if (current_root->section & Entry::SCOPE_MASK)
-					    current->inside = current_root->name+"::";
-					  BEGIN( LineDoc );
-					}
-	YY_BREAK
-case 480:
-*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
-yy_c_buf_p = yy_cp = yy_bp + 3;
-YY_DO_BEFORE_ACTION; /* set up yytext again */
-YY_RULE_SETUP
-#line 3731 "scanner.l"
-{ 
-  					  current->brief.resize(0);
-					  tmpDocType=-1;
-					  lastDocContext = YY_START;
-					  if (current_root->section & Entry::SCOPE_MASK)
-					    current->inside = current_root->name+"::";
-					  BEGIN( LineDoc );
-					}
-	YY_BREAK
-case 481:
-YY_RULE_SETUP
-#line 3739 "scanner.l"
-
-	YY_BREAK
-case 482:
-YY_RULE_SETUP
-#line 3740 "scanner.l"
-{
-  					  current->type.resize(0);
-  					  current->name.resize(0);
-  					  current->args.resize(0);
-					  current->argList->clear();
-					  curlyCount=0;
-					  BEGIN( SkipCurlyBlock );
-					  	
-  					}
-	YY_BREAK
-case 483:
-YY_RULE_SETUP
-#line 3749 "scanner.l"
-{
-  					  lastBriefContext=tmpDocType;
-  					  BEGIN( ClassDocBrief ); 
-					}
-	YY_BREAK
-case 484:
-YY_RULE_SETUP
-#line 3753 "scanner.l"
-{
-					  lineCount();
-					  if (!current->brief.stripWhiteSpace().isEmpty())
-					  {
-					    BEGIN( tmpDocType );
-					  }
- 					} 
-	YY_BREAK
-case 485:
-YY_RULE_SETUP
-#line 3760 "scanner.l"
-{
-  					  unput(*yytext);
-					  BEGIN(Doc);
-  					}
-	YY_BREAK
-case 486:
-*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
-yy_c_buf_p = yy_cp -= 1;
-YY_DO_BEFORE_ACTION; /* set up yytext again */
-YY_RULE_SETUP
-#line 3764 "scanner.l"
-{
-  					  //printf("---> removing %s\n",yytext);
-  					}
-	YY_BREAK
-/*
-[^\n\@\*\.\\]+			{
-  					  current->brief+=yytext;
-  					}
-  */
-case 487:
-YY_RULE_SETUP
-#line 3772 "scanner.l"
-{
-  				          //printf("---> copy %c\n",*yytext);
-  					  current->brief+=*yytext;
-  					}
-	YY_BREAK
-case 488:
-YY_RULE_SETUP
-#line 3776 "scanner.l"
-{
-  					  current->brief+=' ';
-					  lineCount();
-  					}
-	YY_BREAK
-case 489:
-YY_RULE_SETUP
-#line 3780 "scanner.l"
-{
-  					  lineCount();
-					  current->brief+=".";
-					  BEGIN( tmpDocType );
-					}
-	YY_BREAK
-case 490:
-YY_RULE_SETUP
-#line 3785 "scanner.l"
-{ 
-  					  current->doc+=yytext;
-					  BEGIN( tmpDocType );
-  					}
-	YY_BREAK
-case 491:
-YY_RULE_SETUP
-#line 3789 "scanner.l"
-{
-					  current->section = Entry::MEMBERDOC_SEC;
-					  current->fileName = yyFileName;
-					  current->startLine = yyLineNr;
-  					  BEGIN( ClassDocFunc ); 
-					}
-	YY_BREAK
-case 492:
-YY_RULE_SETUP
-#line 3795 "scanner.l"
-{
-  					  nextDefContext = YY_START==LineDoc ? DefLineDoc : ClassDoc;
-  					  current->section = Entry::DEFINEDOC_SEC;
-					  current->fileName = yyFileName;
-					  current->startLine = yyLineNr;
-  					  BEGIN( ClassDocDefine );
-  					}
-	YY_BREAK
-case 493:
-YY_RULE_SETUP
-#line 3802 "scanner.l"
-{ 
-  					  overloadContext = YY_START;
-  					  BEGIN( ClassDocOverload ); 
-					}
-	YY_BREAK
-case 494:
-*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
-yy_c_buf_p = yy_cp -= 1;
-YY_DO_BEFORE_ACTION; /* set up yytext again */
-YY_RULE_SETUP
-#line 3806 "scanner.l"
-{
-					  QCString orgDoc = current->doc;
-					  current->doc = getOverloadDocs();
-					  current->doc += "\n\n";
-					  current->doc += orgDoc;
-  					  BEGIN( overloadContext  );
-  				        }
-	YY_BREAK
-case 495:
-*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
-yy_c_buf_p = yy_cp -= 2;
-YY_DO_BEFORE_ACTION; /* set up yytext again */
-YY_RULE_SETUP
-#line 3813 "scanner.l"
-{
-					  QCString orgDoc = current->doc;
-					  current->doc = getOverloadDocs();
-					  current->doc += "\n\n";
-					  current->doc += orgDoc;
-  					  BEGIN( overloadContext );
-  					}
-	YY_BREAK
-case 496:
-YY_RULE_SETUP
-#line 3820 "scanner.l"
-{ unput(*yytext);
-  					  current->section = Entry::OVERLOADDOC_SEC;
-					  current->fileName = yyFileName;
-					  current->startLine = yyLineNr;
-					  BEGIN( ClassDocFunc ); 
-					}
-	YY_BREAK
-case 497:
-YY_RULE_SETUP
-#line 3826 "scanner.l"
-{
-  					  current->section = Entry::ENUMDOC_SEC;
-					  current->fileName = yyFileName;
-					  current->startLine = yyLineNr;
-					  BEGIN( EnumDocArg1 );
-  					}
-	YY_BREAK
-case 498:
-YY_RULE_SETUP
-#line 3832 "scanner.l"
-{
-  					  current->section = Entry::GROUPDOC_SEC;
-					  current->fileName = yyFileName;
-					  current->startLine = yyLineNr;
-					  BEGIN( GroupDocArg1 );
-  					}
-	YY_BREAK
-case 499:
-YY_RULE_SETUP
-#line 3838 "scanner.l"
-{
-  					  current->section = Entry::NAMESPACEDOC_SEC;
-					  current->fileName = yyFileName;
-					  current->startLine = yyLineNr;
-  					  BEGIN( NameSpaceDocArg1 );
-  					}
-	YY_BREAK
-case 500:
-YY_RULE_SETUP
-#line 3844 "scanner.l"
-{
-  					  current->section = Entry::CLASSDOC_SEC;
-					  current->fileName = yyFileName;
-					  current->startLine = yyLineNr;
-					  BEGIN( ClassDocArg1 ); 
-					}
-	YY_BREAK
-case 501:
-YY_RULE_SETUP
-#line 3850 "scanner.l"
-{
-  					  current->section = Entry::UNIONDOC_SEC;
-					  current->fileName = yyFileName;
-					  current->startLine = yyLineNr;
-					  BEGIN( ClassDocArg1 ); 
-					}
-	YY_BREAK
-case 502:
-YY_RULE_SETUP
-#line 3856 "scanner.l"
-{
-  					  current->section = Entry::STRUCTDOC_SEC;
-					  current->fileName = yyFileName;
-					  current->startLine = yyLineNr;
-					  BEGIN( ClassDocArg1 ); 
-					}
-	YY_BREAK
-case 503:
-YY_RULE_SETUP
-#line 3862 "scanner.l"
-{
-  					  current->section = Entry::INTERFACEDOC_SEC;
-					  current->fileName = yyFileName;
-					  current->startLine = yyLineNr;
-					  BEGIN( ClassDocArg1 ); 
-					}
-	YY_BREAK
-case 504:
-YY_RULE_SETUP
-#line 3868 "scanner.l"
-{
-  					  current->section = Entry::EXCEPTIONDOC_SEC;
-					  current->fileName = yyFileName;
-					  current->startLine = yyLineNr;
-					  BEGIN( ClassDocArg1 ); 
-					}
-	YY_BREAK
-case 505:
-YY_RULE_SETUP
-#line 3874 "scanner.l"
-{
-  					  current->section = Entry::PAGEDOC_SEC;
-					  current->fileName = yyFileName;
-					  current->startLine = yyLineNr;
-					  BEGIN( PageDocArg1 );
-  					}
-	YY_BREAK
-case 506:
-YY_RULE_SETUP
-#line 3880 "scanner.l"
-{
-  					  current->section = Entry::MAINPAGEDOC_SEC;
-					  current->fileName = yyFileName;
-					  current->startLine = yyLineNr;
-					  BEGIN( PageDocArg2 );
-  					}
-	YY_BREAK
-case 507:
-YY_RULE_SETUP
-#line 3886 "scanner.l"
-{
-  					  current->section = Entry::FILEDOC_SEC;
-					  current->fileName = yyFileName;
-					  current->startLine = yyLineNr;
-					  BEGIN( FileDocArg1 );
-  					}
-	YY_BREAK
-case 508:
-YY_RULE_SETUP
-#line 3892 "scanner.l"
-{
- 					  current->section = Entry::EXAMPLE_SEC;
-					  current->fileName = yyFileName;
-					  current->startLine = yyLineNr;
- 					  BEGIN( ExampleDocArg1 );
-					}
-	YY_BREAK
-case 509:
-YY_RULE_SETUP
-#line 3898 "scanner.l"
-{
-				          current->name = stripQuotes(yytext);	
-					  BEGIN( ExampleDoc );
-					}
-	YY_BREAK
-case 510:
-YY_RULE_SETUP
-#line 3902 "scanner.l"
-{ 
-  					  lastDocRelContext = YY_START;
-  					  BEGIN( ClassDocRelates ); 
-					}
-	YY_BREAK
-case 511:
-YY_RULE_SETUP
-#line 3906 "scanner.l"
-{ 
-  					  current->relates = yytext;
-					  BEGIN( lastDocRelContext );
-					}
-	YY_BREAK
-case 512:
-YY_RULE_SETUP
-#line 3910 "scanner.l"
-{
-  					  current->name = yytext;
-					  newDocState();
-  					}
-	YY_BREAK
-case 513:
-YY_RULE_SETUP
-#line 3914 "scanner.l"
-{
-  					  warn("Warning: missing argument after "
-					       "\\namespace at line %d of %s.\n",yyLineNr,yyFileName);
-  					  yyLineNr++;
-  					}
-	YY_BREAK
-case 514:
-*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
-yy_c_buf_p = yy_cp -= 1;
-YY_DO_BEFORE_ACTION; /* set up yytext again */
-YY_RULE_SETUP
-#line 3919 "scanner.l"
-{
-					  current->name = yytext;
-					  // prepend outer scope name 
-					  if (current_root->section & Entry::SCOPE_MASK)
-					  {
-					    current->name.prepend(current_root->name+"::");
-					  }
-					  lastClassTemplSpecContext = ClassDocArg2;
-					  BEGIN( ClassTemplSpec );
-  					}
-	YY_BREAK
-case 515:
-YY_RULE_SETUP
-#line 3929 "scanner.l"
-{
-					  current->name = yytext;
-					  // prepend outer scope name 
-					  if (current_root->section & Entry::SCOPE_MASK)
-					  {
-					    current->name.prepend(current_root->name+"::");
-					  }
-					  BEGIN( ClassDocArg2 );
-					}
-	YY_BREAK
-case 516:
-YY_RULE_SETUP
-#line 3938 "scanner.l"
-{
-  					  warn("Warning: missing argument after "
-					       "\\class at line %d of %s.\n",yyLineNr,yyFileName);
-  					  yyLineNr++;
-					  
-  					}
-	YY_BREAK
-case 517:
-YY_RULE_SETUP
-#line 3944 "scanner.l"
-{
-  					  current->name = yytext;
-					  if (current->name.right(5)==".html") 
-					    current->name=current->name.left(current->name.length()-5);
-					  BEGIN(GroupDocArg2);
-  					}
-	YY_BREAK
-case 518:
-YY_RULE_SETUP
-#line 3950 "scanner.l"
-{
-  					  warn("Warning: missing argument after "
-					       "\\defgroup at line %d of %s.\n",yyLineNr,yyFileName);
-					  yyLineNr++;
-					  BEGIN( Doc );
-  					}
-	YY_BREAK
-case 519:
-YY_RULE_SETUP
-#line 3956 "scanner.l"
-{
-					  current->type = yytext;
-					  current->type = current->type.stripWhiteSpace();
-					  newDocState();
-  					}
-	YY_BREAK
-case 520:
-YY_RULE_SETUP
-#line 3961 "scanner.l"
-{
- 					  newDocState();
-  					}
-	YY_BREAK
-case 521:
-YY_RULE_SETUP
-#line 3964 "scanner.l"
-{
-  					  //printf("ClassDocArg2=%s\n",yytext);
-					  current->includeFile = stripQuotes(yytext);
-					  BEGIN( ClassDocArg3 );
-					}
-	YY_BREAK
-case 522:
-YY_RULE_SETUP
-#line 3969 "scanner.l"
-{ yyLineNr++; 
-					  newDocState();
-					}
-	YY_BREAK
-case 523:
-YY_RULE_SETUP
-#line 3972 "scanner.l"
-{
-  					  //printf("ClassDocArg3=%s\n",yytext);
- 					  current->includeName = yytext;
-  					  newDocState();
-					}
-	YY_BREAK
-case 524:
-YY_RULE_SETUP
-#line 3977 "scanner.l"
-{ yyLineNr++; 
-  					  newDocState();
-					}
-	YY_BREAK
-case 525:
-YY_RULE_SETUP
-#line 3980 "scanner.l"
-{
-  					  current->name = stripQuotes(yytext);
-					  newDocState();
-  				        }
-	YY_BREAK
-case 526:
-YY_RULE_SETUP
-#line 3984 "scanner.l"
-{
-  					  current->name = yyFileName;
-  					  yyLineNr++;
-					  newDocState();
-  					}
-	YY_BREAK
-case 527:
-YY_RULE_SETUP
-#line 3989 "scanner.l"
-{
-					  current->name = stripQuotes(yytext);
-					  BEGIN( PageDocArg2 ); 
-					}
-	YY_BREAK
-case 528:
-YY_RULE_SETUP
-#line 3993 "scanner.l"
-{
-  					  warn("Warning: missing argument after "
-					       "\\page at line %d of %s.\n",yyLineNr,yyFileName);
-  					  yyLineNr++;
-					  BEGIN( Doc );
-  					}
-	YY_BREAK
-case 529:
-YY_RULE_SETUP
-#line 3999 "scanner.l"
-{
-  				          yyLineNr++;
-					  current->args = yytext;
-					  BEGIN( PageDoc );
-					}
-	YY_BREAK
-case 530:
-YY_RULE_SETUP
-#line 4004 "scanner.l"
-{
-  					  current->name = yytext;
-					  if (current_root->section & Entry::SCOPE_MASK)
-					  {
-					    current->name.prepend(current_root->name+"::");
-					  }
-  					  newDocState();
-  					}
-	YY_BREAK
-case 531:
-YY_RULE_SETUP
-#line 4012 "scanner.l"
-{
-  					  warn("Warning: missing argument after "
-					       "\\enum at line %d of %s.\n",yyLineNr,yyFileName);
-  					  yyLineNr++;
-					  BEGIN( Doc );
-  					}
-	YY_BREAK
-case 532:
-YY_RULE_SETUP
-#line 4018 "scanner.l"
-{
-  					  current->doc+=yytext;
-  					}
-	YY_BREAK
-case 533:
-YY_RULE_SETUP
-#line 4021 "scanner.l"
-{
-  					  sectionType=SectionInfo::Section;
-  					  BEGIN(SectionLabel);
-  					}
-	YY_BREAK
-case 534:
-YY_RULE_SETUP
-#line 4025 "scanner.l"
-{
-  					  sectionType=SectionInfo::Subsection;
-  					  BEGIN(SectionLabel);
-  					}
-	YY_BREAK
-case 535:
-YY_RULE_SETUP
-#line 4029 "scanner.l"
-{
-  					  //printf("--> mgroup found!\n");
-  					  lastMemberGroupContext = YY_START;
-					  if (memberGroupId!=-1)
-					  {
-  					    warn("Warning: ignoring nested mgroup command "
-					         "at line %d of %s. Previous command was found at line %d\n",
-						 yyLineNr,yyFileName,lastMemberGroupLine);
-					  }
-					  else
-					  {
-					    memberGroupId   = newMemberGroupId();
-					    current->mGrpId = memberGroupId;
-					    lastMemberGroupLine = yyLineNr;
-					  }
-					  BEGIN(GroupHeader);
-  					}
-	YY_BREAK
-case 536:
-*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
-yy_c_buf_p = yy_cp -= 1;
-YY_DO_BEFORE_ACTION; /* set up yytext again */
-YY_RULE_SETUP
-#line 4046 "scanner.l"
-{
-  					  //printf("--> endmgroup found!\n");
-  					  memberGroupId = -1;
-					  current->mGrpId = -1;
-  					}
-	YY_BREAK
-case 537:
-*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
-yy_c_buf_p = yy_cp -= 1;
-YY_DO_BEFORE_ACTION; /* set up yytext again */
-YY_RULE_SETUP
-#line 4051 "scanner.l"
-{
-					  QCString header = ((QCString)yytext).stripWhiteSpace();
-  					  memberGroupDict.insert(memberGroupId,
-					                         new MemberGroup(memberGroupId,header)
-								);
-  					  BEGIN(lastMemberGroupContext);
-  					}
-	YY_BREAK
-case 538:
-YY_RULE_SETUP
-#line 4058 "scanner.l"
-{
-  					  lastAnchorContext = YY_START;
-  					  sectionType=SectionInfo::Anchor;
-					  BEGIN(AnchorLabel);
-  					}
-	YY_BREAK
-case 539:
-*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
-yy_c_buf_p = yy_cp -= 1;
-YY_DO_BEFORE_ACTION; /* set up yytext again */
-YY_RULE_SETUP
-#line 4063 "scanner.l"
-{
-					  current->doc+="\\\\verbatim";
-					}
-	YY_BREAK
-case 540:
-*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
-yy_c_buf_p = yy_cp -= 1;
-YY_DO_BEFORE_ACTION; /* set up yytext again */
-YY_RULE_SETUP
-#line 4066 "scanner.l"
-{
-					  lastVerbState=YY_START;
-					  current->doc+="\\verbatim";
-  					  BEGIN(SkipVerbatim);
-  					}
-	YY_BREAK
-case 541:
-YY_RULE_SETUP
-#line 4071 "scanner.l"
-{
-  					  current->doc+=yytext;
-  					}
-	YY_BREAK
-case 542:
-*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
-yy_c_buf_p = yy_cp -= 1;
-YY_DO_BEFORE_ACTION; /* set up yytext again */
-YY_RULE_SETUP
-#line 4074 "scanner.l"
-{
-  					  current->doc+="\\\\code";
-  					}
-	YY_BREAK
-case 543:
-*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
-yy_c_buf_p = yy_cp -= 1;
-YY_DO_BEFORE_ACTION; /* set up yytext again */
-YY_RULE_SETUP
-#line 4077 "scanner.l"
-{
-  					  lastCodeState=YY_START;
-					  current->doc+="\\code";
-					  BEGIN(SkipCode);
-					}
-	YY_BREAK
-case 544:
-YY_RULE_SETUP
-#line 4082 "scanner.l"
-{
-  					  lastCodeState=YY_START;
-					  current->doc+="
";
-					  BEGIN(SkipCode);
-  					}
-	YY_BREAK
-case 545:
-*yy_cp = yy_hold_char; /* undo effects of setting up yytext */
-yy_c_buf_p = yy_cp -= 1;
-YY_DO_BEFORE_ACTION; /* set up yytext again */
-YY_RULE_SETUP
-#line 4087 "scanner.l"
-{
-  					  current->doc+=yytext;
-  					  BEGIN(lastVerbState);
-  					}
-	YY_BREAK
-case 546:
-YY_RULE_SETUP
-#line 4091 "scanner.l"
-{
-  					  current->doc+=yytext;
-  					}
-	YY_BREAK
-case 547:
-YY_RULE_SETUP
-#line 4094 "scanner.l"
-{
-  					  if (!removeSlashes)
-					    current->doc+=yytext;
-  					}
-	YY_BREAK
-/*
-^"//"({B}*"*"+)?		{
-  					  if (!removeSlashes)
-					    current->doc+=yytext;
-  					}
-^{B}*"*"+			
-  */
-case 548:
-YY_RULE_SETUP
-#line 4105 "scanner.l"
-{ 
-  					  current->doc+=yytext; 
-  					}
-	YY_BREAK
-case 549:
-YY_RULE_SETUP
-#line 4108 "scanner.l"
-{
-  					  yyLineNr++;
-					  current->doc+=*yytext;
-  					}
-	YY_BREAK
-case 550:
-YY_RULE_SETUP
-#line 4112 "scanner.l"
-{
-  					  current->doc+=*yytext;
-  					}
-	YY_BREAK
-case 551:
-YY_RULE_SETUP
-#line 4115 "scanner.l"
-{
-  					  current->doc+="\\endcode";
-					  BEGIN(lastCodeState);
-  					}
-	YY_BREAK
-case 552:
-YY_RULE_SETUP
-#line 4119 "scanner.l"
-{
-  					  current->doc+="
"; - BEGIN(lastCodeState); - } - YY_BREAK -case 553: -YY_RULE_SETUP -#line 4123 "scanner.l" -{ - if (!removeSlashes) - current->doc+=yytext; - } - YY_BREAK -case 554: -YY_RULE_SETUP -#line 4127 "scanner.l" - - YY_BREAK -case 555: -YY_RULE_SETUP -#line 4128 "scanner.l" -{ - current->doc+=yytext; - } - YY_BREAK -case 556: -YY_RULE_SETUP -#line 4131 "scanner.l" -{ - current->doc+=yytext; - } - YY_BREAK -case 557: -YY_RULE_SETUP -#line 4134 "scanner.l" -{ - yyLineNr++; - current->doc+=*yytext; - } - YY_BREAK -case 558: -YY_RULE_SETUP -#line 4138 "scanner.l" -{ - current->doc+=*yytext; - } - YY_BREAK -case 559: -YY_RULE_SETUP -#line 4141 "scanner.l" -{ - sectionLabel=yytext; - addSection(); - current->doc += "\\anchor "+sectionLabel+"\n"; - BEGIN(lastAnchorContext); - } - YY_BREAK -case 560: -YY_RULE_SETUP -#line 4147 "scanner.l" -{ - sectionLabel=yytext; - sectionTitle.resize(0); - BEGIN(SectionTitle); - } - YY_BREAK -case 561: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 4152 "scanner.l" -{ - sectionTitle+=yytext; - sectionTitle=sectionTitle.stripWhiteSpace(); - addSection(); - current->doc += "\\section "+sectionLabel+"\n"; - BEGIN(PageDoc); - } - YY_BREAK -case 562: -YY_RULE_SETUP -#line 4159 "scanner.l" -{ - sectionTitle+=yytext; - } - YY_BREAK -case 563: -YY_RULE_SETUP -#line 4162 "scanner.l" -{ yyLineNr++ ; current->doc+=yytext; } - YY_BREAK -case 564: -YY_RULE_SETUP -#line 4163 "scanner.l" -{ current->doc += yytext; } - YY_BREAK -case 565: -YY_RULE_SETUP -#line 4164 "scanner.l" -{ current->doc += yytext; } - YY_BREAK -case 566: -YY_RULE_SETUP -#line 4165 "scanner.l" - - YY_BREAK -case 567: -YY_RULE_SETUP -#line 4166 "scanner.l" -{ current->doc += yytext; } - YY_BREAK -case 568: -YY_RULE_SETUP -#line 4167 "scanner.l" -{ - current->doc += &yytext[1]; - } - YY_BREAK -case 569: -YY_RULE_SETUP -#line 4170 "scanner.l" -{ - lastFormulaContext = YY_START; - formulaText="$"; - BEGIN(ReadFormulaShort); - } - YY_BREAK -case 570: -YY_RULE_SETUP -#line 4175 "scanner.l" -{ - lastFormulaContext = YY_START; - formulaText="\\["; - BEGIN(ReadFormulaLong); - } - YY_BREAK -case 571: -YY_RULE_SETUP -#line 4180 "scanner.l" -{ - formulaText+="$"; - if (lastFormulaContext==ClassDocBrief || - lastFormulaContext==LineDoc || - lastFormulaContext==JavaDoc - ) - current->brief += addFormula(); - else - current->doc += addFormula(); - BEGIN(lastFormulaContext); - } - YY_BREAK -case 572: -YY_RULE_SETUP -#line 4191 "scanner.l" -{ - formulaText+="\\]"; - if (lastFormulaContext==ClassDocBrief || - lastFormulaContext==LineDoc || - lastFormulaContext==JavaDoc - ) - current->brief += addFormula(); - else - current->doc += addFormula(); - BEGIN(lastFormulaContext); - } - YY_BREAK -case 573: -YY_RULE_SETUP -#line 4202 "scanner.l" -{ formulaText+=*yytext; } - YY_BREAK -case 574: -YY_RULE_SETUP -#line 4203 "scanner.l" -{ - checkDocs(); - if (YY_START==SkipCode) // premature end of code block - { - err("Error: comment block ended inside \\code ... \\endcode block at line %d in %s!\n", - yyLineNr,yyFileName); - current->doc += "\\endcode\n\n"; - BEGIN( lastDocContext ); - } - else if (YY_START==ClassDocBrief && - lastBriefContext==Doc) - { - current->doc += "\n\n"; - BEGIN( lastDocContext ); - } - else - { - current->doc += "\n\n"; - //printf("Add docs for class %s\n",current->name.data()); - current_root->addSubEntry(current); - current = new Entry ; - current->protection = protection ; - current->sig = sig; - current->virt = virt; - current->stat = gstat; - current->slot = slot; - } - BEGIN( FindMembers ); - } - YY_BREAK -case 575: -YY_RULE_SETUP -#line 4232 "scanner.l" -{ - current->args.resize(0); - current->argList->clear(); - BEGIN( PageDocTitle); - } - YY_BREAK -case 576: -YY_RULE_SETUP -#line 4237 "scanner.l" -{ yyLineNr++; current->args+=" "; } - YY_BREAK -case 577: -YY_RULE_SETUP -#line 4238 "scanner.l" -{ current->args+=yytext; } - YY_BREAK -case 578: -YY_RULE_SETUP -#line 4239 "scanner.l" -{ BEGIN( PageDoc ); } - YY_BREAK -case 579: -YY_RULE_SETUP -#line 4240 "scanner.l" -{ - lastGroupContext = YY_START; - lineCount(); - BEGIN( GroupName ); - } - YY_BREAK -case 580: -YY_RULE_SETUP -#line 4245 "scanner.l" -{ - current->groups->append( - new QCString(yytext) - ); - } - YY_BREAK -case 581: -YY_RULE_SETUP -#line 4250 "scanner.l" -{ - yyLineNr++; BEGIN( lastGroupContext ); - } - YY_BREAK -case 582: -YY_RULE_SETUP -#line 4253 "scanner.l" -{ - lastBriefContext=YY_START; - BEGIN( ClassDocBrief ); - } - YY_BREAK -case 583: -YY_RULE_SETUP -#line 4257 "scanner.l" -{ BEGIN( DocBaseClass ); } - YY_BREAK -case 584: -YY_RULE_SETUP -#line 4258 "scanner.l" -{ - //printf("Adding base class %s\n",yytext); - current->extends->append( - new BaseInfo(yytext,Public,Normal) - ); - } - YY_BREAK -case 585: -YY_RULE_SETUP -#line 4264 "scanner.l" -{ yyLineNr++; BEGIN( ClassDoc ); } - YY_BREAK -case 586: -YY_RULE_SETUP -#line 4265 "scanner.l" -{ - current->brief=current->brief.stripWhiteSpace(); - if (!current->doc.isEmpty()) current->doc+="

"; - yyLineNr++; - BEGIN( lastBriefContext ); - } - YY_BREAK -case 587: -YY_RULE_SETUP -#line 4271 "scanner.l" -{ yyLineNr++ ; current->brief += " "; } - YY_BREAK -case 588: -YY_RULE_SETUP -#line 4272 "scanner.l" - - YY_BREAK -case 589: -YY_RULE_SETUP -#line 4273 "scanner.l" -{ - current->brief=current->brief.stripWhiteSpace(); - BEGIN( lastBriefContext ); - } - YY_BREAK -case 590: -YY_RULE_SETUP -#line 4277 "scanner.l" -{ - BEGIN( lastBriefContext ); - } - YY_BREAK -case 591: -YY_RULE_SETUP -#line 4280 "scanner.l" -{ - lastBriefContext=YY_START; - BEGIN( ClassDocBrief ); - } - YY_BREAK -case 592: -YY_RULE_SETUP -#line 4284 "scanner.l" -{ current->brief += *yytext; } - YY_BREAK -case 593: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 4285 "scanner.l" -{ - current->name = yytext; - BEGIN( ClassDefineArgs ); - } - YY_BREAK -case 594: -YY_RULE_SETUP -#line 4289 "scanner.l" -{ - current->name = yytext; - if (nextDefContext==ClassDoc) - newDocState(); - else - BEGIN( nextDefContext ); - } - YY_BREAK -case 595: -YY_RULE_SETUP -#line 4296 "scanner.l" -{ - current->args+=")"; - if (nextDefContext==ClassDoc) - newDocState(); - else - BEGIN( nextDefContext ); - } - YY_BREAK -case 596: -YY_RULE_SETUP -#line 4303 "scanner.l" -{ - current->args+= yytext; - } - YY_BREAK -case 597: -YY_RULE_SETUP -#line 4306 "scanner.l" -{ - yyLineNr++; - current->name = current->name.stripWhiteSpace(); - if (current->section == Entry::MEMBERDOC_SEC && current->args.isEmpty()) - current->section = Entry::VARIABLEDOC_SEC; - newDocState(); - } - YY_BREAK -case 598: -YY_RULE_SETUP -#line 4313 "scanner.l" -{ - current->name+=yytext; - } - YY_BREAK -case 599: -YY_RULE_SETUP -#line 4316 "scanner.l" -{ - current->args+=*yytext; - currentArgumentContext = ClassDocFuncQual; - fullArgString = current->args.copy(); - copyArgString = ¤t->args; - BEGIN( ReadFuncArgType ) ; - } - YY_BREAK -case 600: -YY_RULE_SETUP -#line 4323 "scanner.l" -{ - current->name+="(*"; - BEGIN( ClassDocFuncPtr ); - } - YY_BREAK -case 601: -YY_RULE_SETUP -#line 4327 "scanner.l" -{ - current->name+=yytext; - } - YY_BREAK -case 602: -YY_RULE_SETUP -#line 4330 "scanner.l" -{ - current->name+=')'; - BEGIN( ClassDocFunc ); - } - YY_BREAK -case 603: -YY_RULE_SETUP -#line 4334 "scanner.l" -{ - BEGIN( ClassDocFuncSkipLine); - } - YY_BREAK -case 604: -YY_RULE_SETUP -#line 4337 "scanner.l" -{ - current->args += " const "; - current->argList->constSpecifier=TRUE; - } - YY_BREAK -case 605: -YY_RULE_SETUP -#line 4341 "scanner.l" -{ - current->args += " volatile "; - current->argList->volatileSpecifier=TRUE; - } - YY_BREAK -case 606: -YY_RULE_SETUP -#line 4345 "scanner.l" -{ - current->args += " = 0"; - current->virt = Pure; - current->argList->pureSpecifier=TRUE; - } - YY_BREAK -case 607: -YY_RULE_SETUP -#line 4350 "scanner.l" -{ - current->exception = "throw("; - BEGIN(ClassDocFuncExc); - } - YY_BREAK -case 608: -YY_RULE_SETUP -#line 4354 "scanner.l" -{ - current->exception += ')'; - BEGIN(ClassDocFuncQual); - } - YY_BREAK -case 609: -YY_RULE_SETUP -#line 4358 "scanner.l" -{ - current->exception += *yytext; - } - YY_BREAK -case 610: -YY_RULE_SETUP -#line 4361 "scanner.l" -{ - current->name += *yytext; - } - YY_BREAK -case 611: -YY_RULE_SETUP -#line 4364 "scanner.l" -{ - yyLineNr++; - current->name = current->name.stripWhiteSpace(); - newDocState(); - } - YY_BREAK -case 612: -YY_RULE_SETUP -#line 4369 "scanner.l" -{ current->doc += yytext; } - YY_BREAK -case 613: -YY_RULE_SETUP -#line 4370 "scanner.l" -{ current->doc += yytext; } - YY_BREAK -case 614: -YY_RULE_SETUP -#line 4371 "scanner.l" -{ current->doc += *yytext; } - YY_BREAK -case 615: -YY_RULE_SETUP -#line 4372 "scanner.l" -{ current->brief += *yytext; } - YY_BREAK -case 616: -YY_RULE_SETUP -#line 4373 "scanner.l" -{ yyLineNr++; current->doc += *yytext; } - YY_BREAK -case 617: -YY_RULE_SETUP -#line 4374 "scanner.l" -{ lineCount(); } - YY_BREAK -case 618: -YY_RULE_SETUP -#line 4375 "scanner.l" -{ - yyLineNr++; - BEGIN( lastDocContext ); - } - YY_BREAK -case 619: -YY_RULE_SETUP -#line 4379 "scanner.l" -{ - yyLineNr++; - unput('/');unput('*'); - BEGIN( ClassDoc ); - } - YY_BREAK -case 620: -YY_RULE_SETUP -#line 4385 "scanner.l" -{ current->brief+=yytext; } - YY_BREAK -case 621: -YY_RULE_SETUP -#line 4386 "scanner.l" -{ - yyLineNr++; - if (afterDocTerminator!=0) - unput(afterDocTerminator); - BEGIN(lastAfterDocContext); - } - YY_BREAK -case 622: -YY_RULE_SETUP -#line 4392 "scanner.l" -{ current->brief+=yytext; } - YY_BREAK -case 623: -YY_RULE_SETUP -#line 4393 "scanner.l" -{ current->brief+=yytext; } - YY_BREAK -case 624: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 4394 "scanner.l" - - YY_BREAK -case 625: -YY_RULE_SETUP -#line 4395 "scanner.l" -{ current->brief+=yytext; yyLineNr++; } - YY_BREAK -case 626: -YY_RULE_SETUP -#line 4396 "scanner.l" -{ current->brief+=*yytext; } - YY_BREAK -case 627: -YY_RULE_SETUP -#line 4397 "scanner.l" -{ yyLineNr++; - if (!current->brief.stripWhiteSpace().isEmpty()) - BEGIN(AfterDoc); - } - YY_BREAK -case 628: -YY_RULE_SETUP -#line 4401 "scanner.l" -{ - if (afterDocTerminator!=0) - unput(afterDocTerminator); - BEGIN(lastAfterDocContext); - } - YY_BREAK -case 629: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp = yy_bp + 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 4406 "scanner.l" -{ BEGIN(AfterDoc); } - YY_BREAK -case 630: -YY_RULE_SETUP -#line 4407 "scanner.l" -{ - current->brief+="\\internal"; - } - YY_BREAK -case 631: -YY_RULE_SETUP -#line 4410 "scanner.l" -{ - current->doc+="\\internal"; - } - YY_BREAK -case 632: -YY_RULE_SETUP -#line 4413 "scanner.l" -{ BEGIN(AfterDocBrief); } - YY_BREAK -case 633: -YY_RULE_SETUP -#line 4414 "scanner.l" -{ current->doc+=yytext; } - YY_BREAK -case 634: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 4415 "scanner.l" - - YY_BREAK -case 635: -YY_RULE_SETUP -#line 4416 "scanner.l" -{ current->doc+=yytext; yyLineNr++; } - YY_BREAK -case 636: -YY_RULE_SETUP -#line 4417 "scanner.l" -{ current->doc+=*yytext; } - YY_BREAK -case 637: -YY_RULE_SETUP -#line 4418 "scanner.l" -{ - if (afterDocTerminator!=0) - unput(afterDocTerminator); - BEGIN(lastAfterDocContext); - } - YY_BREAK -case 638: -YY_RULE_SETUP -#line 4423 "scanner.l" -{ - current->doc += "\n\n"; - err("Warning: unexpected end of " - "documentation block found in " - "file %s at line %d\n",yyFileName,yyLineNr); - BEGIN( lastDocContext ); - } - YY_BREAK -case 639: -YY_RULE_SETUP -#line 4430 "scanner.l" -{ - checkDocs(); - current->doc += "\n\n"; - //printf("End of docs at line %d\n",yyLineNr); - BEGIN( lastDocContext ); - } - YY_BREAK -case 640: -YY_RULE_SETUP -#line 4436 "scanner.l" -{ - unput('/');unput('*'); - BEGIN( tmpDocType ); - } - YY_BREAK -case 641: -YY_RULE_SETUP -#line 4440 "scanner.l" -{ - current->doc += yytext; - } - YY_BREAK -case 642: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 4443 "scanner.l" - - YY_BREAK -case 643: -YY_RULE_SETUP -#line 4444 "scanner.l" -{ - current->doc+=' '; - } - YY_BREAK -case 644: -YY_RULE_SETUP -#line 4447 "scanner.l" -{ current->doc += yytext; } - YY_BREAK -case 645: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 4448 "scanner.l" -{ - BEGIN( lastCContext ) ; - } - YY_BREAK -case 646: -YY_RULE_SETUP -#line 4451 "scanner.l" - - YY_BREAK -case 647: -YY_RULE_SETUP -#line 4452 "scanner.l" -{ yyLineNr++ ; } - YY_BREAK -case 648: -YY_RULE_SETUP -#line 4453 "scanner.l" - - YY_BREAK -case 649: -YY_RULE_SETUP -#line 4454 "scanner.l" - - YY_BREAK -case 650: -YY_RULE_SETUP -#line 4455 "scanner.l" -{ lastCContext = YY_START ; - BEGIN( SkipComment ) ; - } - YY_BREAK -case 651: -YY_RULE_SETUP -#line 4458 "scanner.l" -{ BEGIN( lastCContext ) ; } - YY_BREAK -case 652: -YY_RULE_SETUP -#line 4459 "scanner.l" -{ - lastCContext = YY_START ; - BEGIN( SkipCxxComment ) ; - } - YY_BREAK -case 653: -YY_RULE_SETUP -#line 4463 "scanner.l" -ECHO; - YY_BREAK - case YY_STATE_EOF(INITIAL): - case YY_STATE_EOF(Define): - case YY_STATE_EOF(DefineArg): - case YY_STATE_EOF(DefineEnd): - case YY_STATE_EOF(Include): - case YY_STATE_EOF(ClassName): - case YY_STATE_EOF(ClassVar): - case YY_STATE_EOF(ClassTemplSpec): - case YY_STATE_EOF(Bases): - case YY_STATE_EOF(BasesProt): - case YY_STATE_EOF(NextSemi): - case YY_STATE_EOF(FindMembers): - case YY_STATE_EOF(FindMemberName): - case YY_STATE_EOF(FindFields): - case YY_STATE_EOF(FindFieldArg): - case YY_STATE_EOF(Function): - case YY_STATE_EOF(FuncRound): - case YY_STATE_EOF(ExcpRound): - case YY_STATE_EOF(FuncQual): - case YY_STATE_EOF(Operator): - case YY_STATE_EOF(Array): - case YY_STATE_EOF(Curly): - case YY_STATE_EOF(Using): - case YY_STATE_EOF(UsingDirective): - case YY_STATE_EOF(NameSpaceDocArg1): - case YY_STATE_EOF(SkipCurly): - case YY_STATE_EOF(SkipCurlyCpp): - case YY_STATE_EOF(SkipCurlyEndDoc): - case YY_STATE_EOF(SkipString): - case YY_STATE_EOF(SkipInits): - case YY_STATE_EOF(SkipCPP): - case YY_STATE_EOF(SkipCPPBlock): - case YY_STATE_EOF(SkipComment): - case YY_STATE_EOF(SkipCxxComment): - case YY_STATE_EOF(SkipCurlyBlock): - case YY_STATE_EOF(SkipRoundBlock): - case YY_STATE_EOF(SkipCode): - case YY_STATE_EOF(Sharp): - case YY_STATE_EOF(SkipSharp): - case YY_STATE_EOF(SkipRound): - case YY_STATE_EOF(SkipSquare): - case YY_STATE_EOF(TypedefName): - case YY_STATE_EOF(Comment): - case YY_STATE_EOF(Doc): - case YY_STATE_EOF(JavaDoc): - case YY_STATE_EOF(ClassDoc): - case YY_STATE_EOF(LineDoc): - case YY_STATE_EOF(DefLineDoc): - case YY_STATE_EOF(ClassDocArg1): - case YY_STATE_EOF(ClassDocArg2): - case YY_STATE_EOF(ClassDocArg3): - case YY_STATE_EOF(ClassDocFunc): - case YY_STATE_EOF(ClassDocFuncPtr): - case YY_STATE_EOF(ClassDocFuncQual): - case YY_STATE_EOF(ClassDocFuncSkipLine): - case YY_STATE_EOF(ClassDocFuncExc): - case YY_STATE_EOF(ClassDocDefine): - case YY_STATE_EOF(ClassDocRelates): - case YY_STATE_EOF(ClassDocBrief): - case YY_STATE_EOF(ClassDocOverload): - case YY_STATE_EOF(ClassDefineArgs): - case YY_STATE_EOF(GroupDocArg1): - case YY_STATE_EOF(GroupDocArg2): - case YY_STATE_EOF(GroupName): - case YY_STATE_EOF(GroupHeader): - case YY_STATE_EOF(AfterDoc): - case YY_STATE_EOF(AfterDocBrief): - case YY_STATE_EOF(AfterDocLine): - case YY_STATE_EOF(PageDoc): - case YY_STATE_EOF(PageDocTitle): - case YY_STATE_EOF(PageDocArg1): - case YY_STATE_EOF(PageDocArg2): - case YY_STATE_EOF(FileDocArg1): - case YY_STATE_EOF(FileDocArg2): - case YY_STATE_EOF(ExampleDoc): - case YY_STATE_EOF(ExampleDocArg1): - case YY_STATE_EOF(EnumDoc): - case YY_STATE_EOF(EnumDocArg1): - case YY_STATE_EOF(FuncPtr): - case YY_STATE_EOF(EndFuncPtr): - case YY_STATE_EOF(FuncFunc): - case YY_STATE_EOF(FuncFuncEnd): - case YY_STATE_EOF(FuncFuncType): - case YY_STATE_EOF(MemberSpec): - case YY_STATE_EOF(MemberSpecSkip): - case YY_STATE_EOF(SkipVerbatim): - case YY_STATE_EOF(Text): - case YY_STATE_EOF(DocScan): - case YY_STATE_EOF(DocParam): - case YY_STATE_EOF(DocException): - case YY_STATE_EOF(DocHtmlScan): - case YY_STATE_EOF(DocLatexScan): - case YY_STATE_EOF(DocEmphasis): - case YY_STATE_EOF(DocBold): - case YY_STATE_EOF(DocCode): - case YY_STATE_EOF(DocCodeBlock): - case YY_STATE_EOF(DocInternal): - case YY_STATE_EOF(DocLink): - case YY_STATE_EOF(DocLinkText): - case YY_STATE_EOF(DocSkipWord): - case YY_STATE_EOF(DocInclude): - case YY_STATE_EOF(DocDontInclude): - case YY_STATE_EOF(DocDescItem): - case YY_STATE_EOF(DocHtmlLink): - case YY_STATE_EOF(DocHtmlAnchor): - case YY_STATE_EOF(DocHtmlHref1): - case YY_STATE_EOF(DocHtmlHref2): - case YY_STATE_EOF(DocBaseClass): - case YY_STATE_EOF(DocSkiplineKey): - case YY_STATE_EOF(DocSkipKey): - case YY_STATE_EOF(DocLineKey): - case YY_STATE_EOF(DocUntilKey): - case YY_STATE_EOF(DocPar): - case YY_STATE_EOF(DocRefName): - case YY_STATE_EOF(DocVerbatim): - case YY_STATE_EOF(DocVerbInc): - case YY_STATE_EOF(DocIndexWord): - case YY_STATE_EOF(DocRef): - case YY_STATE_EOF(DocRefArg): - case YY_STATE_EOF(DocRefArgStart): - case YY_STATE_EOF(DocRefItem): - case YY_STATE_EOF(DocRefItemName): - case YY_STATE_EOF(DocImage): - case YY_STATE_EOF(DocHtmlImageName): - case YY_STATE_EOF(DocLatexImageName): - case YY_STATE_EOF(DocLatexImageWidth): - case YY_STATE_EOF(SectionLabel): - case YY_STATE_EOF(SectionTitle): - case YY_STATE_EOF(SkipTemplate): - case YY_STATE_EOF(EndTemplate): - case YY_STATE_EOF(CopyArgString): - case YY_STATE_EOF(CopyArgRound): - case YY_STATE_EOF(CopyArgSharp): - case YY_STATE_EOF(CopyArgComment): - case YY_STATE_EOF(CopyArgCommentLine): - case YY_STATE_EOF(ReadFuncArgType): - case YY_STATE_EOF(ReadTempArgs): - case YY_STATE_EOF(Specialization): - case YY_STATE_EOF(DocSkipHtmlComment): - case YY_STATE_EOF(ReadFormulaShort): - case YY_STATE_EOF(ReadFormulaLong): - case YY_STATE_EOF(AnchorLabel): - case YY_STATE_EOF(ReadInitializer): - case YY_STATE_EOF(CopyString): - case YY_STATE_EOF(CopyRound): - case YY_STATE_EOF(CopyCurly): - 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->yy_buffer_status == YY_BUFFER_NEW ) - { - /* We're scanning a new file or input source. It's - * possible that this happened because the user - * just pointed yyin at a new source and called - * yylex(). If so, then we have to assure - * consistency between yy_current_buffer and our - * globals. Here is the right place to do so, because - * this is the first action (other than possibly a - * back-up) that will match for the new input source. - */ - yy_n_chars = yy_current_buffer->yy_n_chars; - yy_current_buffer->yy_input_file = yyin; - yy_current_buffer->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->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 ( yywrap() ) - { - /* Note: because we've taken care in - * yy_get_next_buffer() to have set up - * yytext, we can now set up - * yy_c_buf_p so that if some total - * hoser (like flex itself) wants to - * call the scanner after we return the - * YY_NULL, it'll still work - another - * YY_NULL will get returned. - */ - yy_c_buf_p = yytext_ptr + YY_MORE_ADJ; - - yy_act = YY_STATE_EOF(YY_START); - goto do_action; - } - - else - { - if ( ! yy_did_buffer_switch_on_eof ) - YY_NEW_FILE; - } - break; - } - - case EOB_ACT_CONTINUE_SCAN: - yy_c_buf_p = - yytext_ptr + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state(); - - yy_cp = yy_c_buf_p; - yy_bp = yytext_ptr + YY_MORE_ADJ; - goto yy_match; - - case EOB_ACT_LAST_MATCH: - yy_c_buf_p = - &yy_current_buffer->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 yylex */ - - -/* yy_get_next_buffer - try to read in a new buffer - * - * Returns a code representing an action: - * EOB_ACT_LAST_MATCH - - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position - * EOB_ACT_END_OF_FILE - end of file - */ - -static int yy_get_next_buffer() - { - register char *dest = yy_current_buffer->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->yy_ch_buf[yy_n_chars + 1] ) - YY_FATAL_ERROR( - "fatal flex scanner internal error--end of buffer missed" ); - - if ( yy_current_buffer->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->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->yy_n_chars = yy_n_chars = 0; - - else - { - int num_to_read = - yy_current_buffer->yy_buf_size - number_to_move - 1; - - while ( num_to_read <= 0 ) - { /* Not enough room in the buffer - grow it. */ -#ifdef YY_USES_REJECT - YY_FATAL_ERROR( -"input buffer overflow, can't enlarge buffer because scanner uses REJECT" ); -#else - - /* 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. */ - yy_flex_realloc( (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->yy_buf_size - - number_to_move - 1; -#endif - } - - if ( num_to_read > YY_READ_BUF_SIZE ) - num_to_read = YY_READ_BUF_SIZE; - - /* Read in more data. */ - YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]), - yy_n_chars, num_to_read ); - - yy_current_buffer->yy_n_chars = yy_n_chars; - } - - if ( yy_n_chars == 0 ) - { - if ( number_to_move == YY_MORE_ADJ ) - { - ret_val = EOB_ACT_END_OF_FILE; - yyrestart( yyin ); - } - - else - { - ret_val = EOB_ACT_LAST_MATCH; - yy_current_buffer->yy_buffer_status = - YY_BUFFER_EOF_PENDING; - } - } - - else - ret_val = EOB_ACT_CONTINUE_SCAN; - - yy_n_chars += number_to_move; - yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR; - yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; - - yytext_ptr = &yy_current_buffer->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() - { - register yy_state_type yy_current_state; - register char *yy_cp; - - yy_current_state = yy_start; - yy_current_state += YY_AT_BOL(); - yy_state_ptr = yy_state_buf; - *yy_state_ptr++ = yy_current_state; - - for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp ) - { - register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 4126 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - *yy_state_ptr++ = yy_current_state; - } - - return yy_current_state; - } - - -/* yy_try_NUL_trans - try to make a transition on the NUL character - * - * synopsis - * next_state = yy_try_NUL_trans( current_state ); - */ - -#ifdef YY_USE_PROTOS -static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state ) -#else -static yy_state_type yy_try_NUL_trans( yy_current_state ) -yy_state_type yy_current_state; -#endif - { - register int yy_is_jam; - - register YY_CHAR yy_c = 1; - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 4126 ) - 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 == 4125); - if ( ! yy_is_jam ) - *yy_state_ptr++ = yy_current_state; - - return yy_is_jam ? 0 : yy_current_state; - } - - -#ifndef YY_NO_UNPUT -#ifdef YY_USE_PROTOS -static void yyunput( int c, register char *yy_bp ) -#else -static void yyunput( c, yy_bp ) -int c; -register char *yy_bp; -#endif - { - register char *yy_cp = yy_c_buf_p; - - /* undo effects of setting up yytext */ - *yy_cp = yy_hold_char; - - if ( yy_cp < yy_current_buffer->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->yy_ch_buf[ - yy_current_buffer->yy_buf_size + 2]; - register char *source = - &yy_current_buffer->yy_ch_buf[number_to_move]; - - while ( source > yy_current_buffer->yy_ch_buf ) - *--dest = *--source; - - yy_cp += (int) (dest - source); - yy_bp += (int) (dest - source); - yy_current_buffer->yy_n_chars = - yy_n_chars = yy_current_buffer->yy_buf_size; - - if ( yy_cp < yy_current_buffer->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; - } -#endif /* ifndef YY_NO_UNPUT */ - - -#ifdef __cplusplus -static int yyinput() -#else -static int input() -#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->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. */ - yyrestart( yyin ); - - /* fall through */ - - case EOB_ACT_END_OF_FILE: - { - if ( yywrap() ) - 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 yytext */ - yy_hold_char = *++yy_c_buf_p; - - yy_current_buffer->yy_at_bol = (c == '\n'); - - return c; - } - - -#ifdef YY_USE_PROTOS -void yyrestart( FILE *input_file ) -#else -void yyrestart( input_file ) -FILE *input_file; -#endif - { - if ( ! yy_current_buffer ) - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); - - yy_init_buffer( yy_current_buffer, input_file ); - yy_load_buffer_state(); - } - - -#ifdef YY_USE_PROTOS -void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer ) -#else -void yy_switch_to_buffer( new_buffer ) -YY_BUFFER_STATE new_buffer; -#endif - { - 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->yy_buf_pos = yy_c_buf_p; - yy_current_buffer->yy_n_chars = yy_n_chars; - } - - yy_current_buffer = new_buffer; - yy_load_buffer_state(); - - /* We don't actually know whether we did this switch during - * EOF (yywrap()) processing, but the only time this flag - * is looked at is after yywrap() is called, so it's safe - * to go ahead and always set it. - */ - yy_did_buffer_switch_on_eof = 1; - } - - -#ifdef YY_USE_PROTOS -void yy_load_buffer_state( void ) -#else -void yy_load_buffer_state() -#endif - { - yy_n_chars = yy_current_buffer->yy_n_chars; - yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos; - yyin = yy_current_buffer->yy_input_file; - yy_hold_char = *yy_c_buf_p; - } - - -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_create_buffer( FILE *file, int size ) -#else -YY_BUFFER_STATE yy_create_buffer( file, size ) -FILE *file; -int size; -#endif - { - YY_BUFFER_STATE b; - - b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_buf_size = size; - - /* yy_ch_buf has to be 2 characters longer than the size given because - * we need to put in 2 end-of-buffer characters. - */ - b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 ); - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_is_our_buffer = 1; - - yy_init_buffer( b, file ); - - return b; - } - - -#ifdef YY_USE_PROTOS -void yy_delete_buffer( YY_BUFFER_STATE b ) -#else -void yy_delete_buffer( b ) -YY_BUFFER_STATE b; -#endif - { - if ( ! b ) - return; - - if ( b == yy_current_buffer ) - yy_current_buffer = (YY_BUFFER_STATE) 0; - - if ( b->yy_is_our_buffer ) - yy_flex_free( (void *) b->yy_ch_buf ); - - yy_flex_free( (void *) b ); - } - - -#ifndef YY_ALWAYS_INTERACTIVE -#ifndef YY_NEVER_INTERACTIVE -extern int isatty YY_PROTO(( int )); -#endif -#endif - -#ifdef YY_USE_PROTOS -void yy_init_buffer( YY_BUFFER_STATE b, FILE *file ) -#else -void yy_init_buffer( b, file ) -YY_BUFFER_STATE b; -FILE *file; -#endif - - - { - yy_flush_buffer( b ); - - b->yy_input_file = file; - b->yy_fill_buffer = 1; - -#if YY_ALWAYS_INTERACTIVE - b->yy_is_interactive = 1; -#else -#if YY_NEVER_INTERACTIVE - b->yy_is_interactive = 0; -#else - b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; -#endif -#endif - } - - -#ifdef YY_USE_PROTOS -void yy_flush_buffer( YY_BUFFER_STATE b ) -#else -void yy_flush_buffer( b ) -YY_BUFFER_STATE b; -#endif - - { - if ( ! b ) - return; - - b->yy_n_chars = 0; - - /* We always need two end-of-buffer characters. The first causes - * a transition to the end-of-buffer state. The second causes - * a jam in that state. - */ - b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; - b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; - - b->yy_buf_pos = &b->yy_ch_buf[0]; - - b->yy_at_bol = 1; - b->yy_buffer_status = YY_BUFFER_NEW; - - if ( b == yy_current_buffer ) - yy_load_buffer_state(); - } - - -#ifndef YY_NO_SCAN_BUFFER -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size ) -#else -YY_BUFFER_STATE yy_scan_buffer( base, size ) -char *base; -yy_size_t size; -#endif - { - 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) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_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; - - yy_switch_to_buffer( b ); - - return b; - } -#endif - - -#ifndef YY_NO_SCAN_STRING -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str ) -#else -YY_BUFFER_STATE yy_scan_string( yy_str ) -yyconst char *yy_str; -#endif - { - int len; - for ( len = 0; yy_str[len]; ++len ) - ; - - return yy_scan_bytes( yy_str, len ); - } -#endif - - -#ifndef YY_NO_SCAN_BYTES -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len ) -#else -YY_BUFFER_STATE yy_scan_bytes( bytes, len ) -yyconst char *bytes; -int len; -#endif - { - YY_BUFFER_STATE b; - char *buf; - yy_size_t n; - int i; - - /* Get memory for full buffer, including space for trailing EOB's. */ - n = len + 2; - buf = (char *) yy_flex_alloc( n ); - if ( ! buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); - - for ( i = 0; i < len; ++i ) - buf[i] = bytes[i]; - - buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR; - - b = yy_scan_buffer( buf, n ); - if ( ! b ) - YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); - - /* It's okay to grow etc. this buffer, and we should throw it - * away when we're done. - */ - b->yy_is_our_buffer = 1; - - return b; - } -#endif - - -#ifndef YY_NO_PUSH_STATE -#ifdef YY_USE_PROTOS -static void yy_push_state( int new_state ) -#else -static void yy_push_state( new_state ) -int new_state; -#endif - { - if ( yy_start_stack_ptr >= yy_start_stack_depth ) - { - yy_size_t new_size; - - yy_start_stack_depth += YY_START_STACK_INCR; - new_size = yy_start_stack_depth * sizeof( int ); - - if ( ! yy_start_stack ) - yy_start_stack = (int *) yy_flex_alloc( new_size ); - - else - yy_start_stack = (int *) yy_flex_realloc( - (void *) yy_start_stack, new_size ); - - if ( ! yy_start_stack ) - YY_FATAL_ERROR( - "out of memory expanding start-condition stack" ); - } - - yy_start_stack[yy_start_stack_ptr++] = YY_START; - - BEGIN(new_state); - } -#endif - - -#ifndef YY_NO_POP_STATE -static void yy_pop_state() - { - if ( --yy_start_stack_ptr < 0 ) - YY_FATAL_ERROR( "start-condition stack underflow" ); - - BEGIN(yy_start_stack[yy_start_stack_ptr]); - } -#endif - - -#ifndef YY_NO_TOP_STATE -static int yy_top_state() - { - return yy_start_stack[yy_start_stack_ptr - 1]; - } -#endif - -#ifndef YY_EXIT_FAILURE -#define YY_EXIT_FAILURE 2 -#endif - -#ifdef YY_USE_PROTOS -static void yy_fatal_error( yyconst char msg[] ) -#else -static void yy_fatal_error( msg ) -char msg[]; -#endif - { - (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 yytext. */ \ - yytext[yyleng] = yy_hold_char; \ - yy_c_buf_p = yytext + n; \ - yy_hold_char = *yy_c_buf_p; \ - *yy_c_buf_p = '\0'; \ - yyleng = n; \ - } \ - while ( 0 ) - - -/* Internal utility routines. */ - -#ifndef yytext_ptr -#ifdef YY_USE_PROTOS -static void yy_flex_strncpy( char *s1, yyconst char *s2, int n ) -#else -static void yy_flex_strncpy( s1, s2, n ) -char *s1; -yyconst char *s2; -int n; -#endif - { - register int i; - for ( i = 0; i < n; ++i ) - s1[i] = s2[i]; - } -#endif - -#ifdef YY_NEED_STRLEN -#ifdef YY_USE_PROTOS -static int yy_flex_strlen( yyconst char *s ) -#else -static int yy_flex_strlen( s ) -yyconst char *s; -#endif - { - register int n; - for ( n = 0; s[n]; ++n ) - ; - - return n; - } -#endif - - -#ifdef YY_USE_PROTOS -static void *yy_flex_alloc( yy_size_t size ) -#else -static void *yy_flex_alloc( size ) -yy_size_t size; -#endif - { - return (void *) malloc( size ); - } - -#ifdef YY_USE_PROTOS -static void *yy_flex_realloc( void *ptr, yy_size_t size ) -#else -static void *yy_flex_realloc( ptr, size ) -void *ptr; -yy_size_t size; -#endif - { - /* 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 ); - } - -#ifdef YY_USE_PROTOS -static void yy_flex_free( void *ptr ) -#else -static void yy_flex_free( ptr ) -void *ptr; -#endif - { - free( ptr ); - } - -#if YY_MAIN -int main() - { - yylex(); - return 0; - } -#endif -#line 4463 "scanner.l" - - -//---------------------------------------------------------------------------- - -//static void addToBody(const char *text) -//{ -// if (Config::includeSourceFlag) -// previous->body+=text; -//} - -//static void addToBodyCond(const char *text) -//{ -// if (Config::includeSourceFlag && lastStringContext==SkipCurly) -// previous->body+=text; -//} - -//---------------------------------------------------------------------------- - -void scanString(const char *s) -{ - const char *oldInputString = inputString; - int oldInputPosition = inputPosition; - int oldRule = YY_START; - YY_BUFFER_STATE oldBuffer = YY_CURRENT_BUFFER; - yy_switch_to_buffer(yy_create_buffer(scanYYin, YY_BUF_SIZE)); - inputString = s; - inputPosition = 0; - BEGIN( Text ); - scanYYlex(); - yy_delete_buffer(YY_CURRENT_BUFFER); - yy_switch_to_buffer(oldBuffer); - inputString = oldInputString; - inputPosition = oldInputPosition; - BEGIN( oldRule ); -} - -//---------------------------------------------------------------------------- - -static void newDocState() -{ - if (tmpDocType!=-1) - { - tmpDocType=ClassDoc; - BEGIN(JavaDoc); - } - else - { - BEGIN(ClassDoc); - } -} - -//---------------------------------------------------------------------------- - -void parseCompounds(Entry *rt) -{ - //printf("parseCompounds(%s)\n",rt->name.data()); - EntryListIterator eli(*rt->sublist); - Entry *ce; - for (;(ce=eli.current());++eli) - { - if (!ce->program.isEmpty()) - { - //printf("-- %s ---------\n%s\n---------------\n", - // ce->name.data(),ce->program.data()); - // init scanner state - inputString = ce->program; - inputPosition = 0; - scanYYrestart( scanYYin ) ; - if (ce->section==Entry::ENUM_SEC) - BEGIN( FindFields ) ; - else - BEGIN( FindMembers ) ; - current_root = ce ; - strcpy( yyFileName, ce->fileName ) ; - yyLineNr = ce->startLine ; - //printf("---> Inner block starts at line %d\n",yyLineNr); - //current->reset(); - current = new Entry; - // set default protection based on the compound type - if( ce->section==Entry::CLASS_SEC ) // class - current->protection = protection = Private ; - else if (ce->section == Entry::ENUM_SEC ) // enum - current->protection = protection = ce->protection; - else if (!ce->name.isEmpty() && ce->name.at(0)=='@') // anonymous union - current->protection = protection = ce->protection; - else // named struct, union, or interface - current->protection = protection = Public ; - sig = FALSE; - slot = FALSE; - gstat = FALSE; - virt = Normal; - scanYYlex() ; - delete current; current=0; - ce->program.resize(0); - } - parseCompounds(ce); - } -} - -//---------------------------------------------------------------------------- - -void parseMain(Entry *rt) -{ - initParser(); - anonCount = 0; - protection = Public; - sig = FALSE; - slot = FALSE; - gstat = FALSE; - virt = Normal; - current_root = rt; - global_root = rt; - current = new Entry; - inputString = rt->program; - inputPosition = 0; - ifCount=0; - scanYYrestart( scanYYin ); - BEGIN( FindMembers ); - scanYYlex(); - rt->program.resize(0); - delete current; current=0; - parseCompounds(rt); -} - -//---------------------------------------------------------------------------- - -void parseDocument(OutputList &ol,const QCString &docString) -{ - //inParamBlock=inSeeBlock=inReturnBlock=FALSE; - curTable = 0; - outDoc = new OutputList(&ol); - currentIncludeFile.resize(0); - includeFileOffset=0; - includeFileLength=0; - currentListIndentLevel=0; - if (!docString) return; - linkRef = ""; - linkText = ""; - inputString = docString; - inputPosition = 0; - scanYYrestart( scanYYin ); - BEGIN( DocScan ); - insideArgumentList = FALSE; - scanYYlex(); - if (insideArgumentList) { insideArgumentList=FALSE; outDoc->endItemList(); } - if (insideItemList) { forceEndItemList(); } - if (inBlock()) endBlock(); - if (currentListIndentLevel!=0) - { - if (!refName.isEmpty()) - { - warn("Warning: Documentation block of %s ended in the middle " - "of a list (indent level %d)!\n",refName.data(), - currentListIndentLevel); - } - else if (!exampleName.isEmpty()) - { - warn("Warning: Documentation block of %s ended in the middle " - "of a list (indent level %d)!\n",exampleName.data(), - currentListIndentLevel); - } - else - { - warn("Warning: Documentation block ended in the middle " - "of a list (indent level %d)!\n",currentListIndentLevel); - } - } - ol+=*outDoc; - delete outDoc; outDoc=0; - return; -} - -//---------------------------------------------------------------------------- - -void parseDoc(OutputList &ol,const char *clName, - const char *memName,const QCString &docString) -{ - //printf("Doc---------\n%s\n---------\n",docString.data()); - initParser(); - initParseCodeContext(); - exampleDoc=FALSE; // do not cross reference with member docs - className=clName; - memberName=memName; - if (memName) - { - refName=className+"::"+memberName; - } - else if (clName) - { - refName=className; - } - else - { - refName=""; - } - parseDocument(ol,docString); -} - -//---------------------------------------------------------------------------- - -void parseText(OutputList &ol,const QCString &txtString) -{ - if (txtString.isEmpty()) return; - inputString = txtString; - outDoc = new OutputList(&ol); - inputPosition = 0; - scanYYrestart( scanYYin ); - BEGIN( Text ); - scanYYlex(); - if (memberGroupId!=-1) - { - warn("Warning: Missing \\endmgroup in file %s\n",yyFileName); - memberGroupId=-1; - } - ol+=*outDoc; - delete outDoc; outDoc=0; - return; -} - -//---------------------------------------------------------------------------- - -void parseExample(OutputList &ol,const QCString &docString, - const char *fileName) -{ - initParser(); - initParseCodeContext(); - exampleDoc=TRUE; // cross reference with member docs - exampleName=fileName; - refName="example "+exampleName; - parseDocument(ol,docString); -} - -//---------------------------------------------------------------------------- -extern "C" { // some bogus code to keep the compiler happy - void scannerYYdummy() { yy_flex_realloc(0,0); } -} diff --git a/src/scanner.l b/src/scanner.l index f784656..55d2fcd 100644 --- a/src/scanner.l +++ b/src/scanner.l @@ -148,6 +148,8 @@ static QCString baseName; static QCString *specName; static QCString formulaText; static QCString sectionRef; +static bool insideIDL = FALSE; +static bool insideCppQuote = FALSE; // state variable for reading the argument list of a function static int argRoundCount; @@ -960,6 +962,8 @@ VAR [vV][aA][rR] %x ClassDocBrief %x ClassDocOverload %x ClassDefineArgs +%x CppQuote +%x EndCppQuote %x GroupDocArg1 %x GroupDocArg2 %x GroupName @@ -1060,6 +1064,7 @@ VAR [vV][aA][rR] for( i = 0 ; yytext[i+1] != 6 ; i++ ) yyFileName[i] = yytext[i+1] ; yyFileName[i] = 0 ; + insideIDL = i>4 && strcmp(&yyFileName[i-4],".idl")==0; msg("Parsing file %s...\n",yyFileName); current_root = global_root ; initParser(); @@ -1719,7 +1724,7 @@ VAR [vV][aA][rR] generateRef(*outDoc,className, removeRedundantWhiteSpace(oName),inSeeBlock); } -("http:"|"ftp:"){URLMASK} { outDoc->writeHtmlLink(yytext,yytext); } +("http:"|"ftp:"|"file:"){URLMASK} { outDoc->writeHtmlLink(yytext,yytext); } [a-zA-Z_0-9\.\-]+"@"[0-9a-z_A-Z\.\-]+ { outDoc->writeMailLink(yytext); } {FILEMASK} { generateFileRef(*outDoc,yytext); @@ -2413,22 +2418,37 @@ VAR [vV][aA][rR] *currentTemplateSpec+=*yytext; } {SCOPENAME} { - lineCount(); - if (YY_START==FindMembers) + if (insideIDL && yyleng==9 && strcmp(yytext,"cpp_quote")==0) { - addType( current ) ; - current->name = yytext; + BEGIN(CppQuote); } else { - current->name += yytext; + lineCount(); + if (YY_START==FindMembers) + { + addType( current ) ; + current->name = yytext; + } + else + { + current->name += yytext; + } + QCString tmp=yytext; + if (nameIsOperator(tmp)) + BEGIN( Operator ); + else + BEGIN(FindMembers); } - QCString tmp=yytext; - if (nameIsOperator(tmp)) - BEGIN( Operator ); - else - BEGIN(FindMembers); } +"("{B}*"\"" { + insideCppQuote=TRUE; + BEGIN(FindMembers); + } +")" { + insideCppQuote=FALSE; + BEGIN(FindMembers); + } {B}*"#" { lastCPPContext = YY_START; BEGIN( SkipCPP ) ; } @@ -2482,8 +2502,15 @@ VAR [vV][aA][rR] yyLineNr++; } \" { - lastStringContext=DefineEnd; - BEGIN(SkipString); + if (insideIDL && insideCppQuote) + { + BEGIN(EndCppQuote); + } + else + { + lastStringContext=DefineEnd; + BEGIN(SkipString); + } } . @@ -2579,10 +2606,17 @@ VAR [vV][aA][rR] BEGIN(lastInitializerContext); } \" { - lastStringContext=YY_START; - current->initializer+=*yytext; - pCopyQuotedString=¤t->initializer; - BEGIN(CopyString); + if (insideIDL && insideCppQuote) + { + BEGIN(EndCppQuote); + } + else + { + lastStringContext=YY_START; + current->initializer+=*yytext; + pCopyQuotedString=¤t->initializer; + BEGIN(CopyString); + } } "'"\\[0-7]{1,3}"'" "'"\\."'" @@ -3578,6 +3612,10 @@ VAR [vV][aA][rR] } [;=*&] { unput(*yytext); + if (isTypedef) // typedef of a class, put typedef keyword back + { + current->type.prepend("typedef"); + } BEGIN( FindMembers ); } {B}*"{"{B}* { current->fileName = yyFileName ; @@ -3911,6 +3949,7 @@ VAR [vV][aA][rR] current->name = yytext; newDocState(); } +"\\"{B}*"\n" { yyLineNr++; } "\n" { warn("Warning: missing argument after " "\\namespace at line %d of %s.\n",yyLineNr,yyFileName); @@ -3935,6 +3974,7 @@ VAR [vV][aA][rR] } BEGIN( ClassDocArg2 ); } +"\\"{B}*"\n" { yyLineNr++; } "\n" { warn("Warning: missing argument after " "\\class at line %d of %s.\n",yyLineNr,yyFileName); @@ -3947,6 +3987,7 @@ VAR [vV][aA][rR] current->name=current->name.left(current->name.length()-5); BEGIN(GroupDocArg2); } +"\\"{B}*"\n" { yyLineNr++; } "\n" { warn("Warning: missing argument after " "\\defgroup at line %d of %s.\n",yyLineNr,yyFileName); @@ -3958,6 +3999,7 @@ VAR [vV][aA][rR] current->type = current->type.stripWhiteSpace(); newDocState(); } +"\\"{B}*"\n" { yyLineNr++; } "\n" { newDocState(); } @@ -3966,7 +4008,8 @@ VAR [vV][aA][rR] current->includeFile = stripQuotes(yytext); BEGIN( ClassDocArg3 ); } -{BL} { yyLineNr++; +"\\"{B}*"\n" { yyLineNr++; } +"\n" { yyLineNr++; newDocState(); } [<]?{FILE}[>]? { @@ -3974,13 +4017,15 @@ VAR [vV][aA][rR] current->includeName = yytext; newDocState(); } -{BL} { yyLineNr++; +"\\"{B}*"\n" { yyLineNr++; } +"\n" { yyLineNr++; newDocState(); } {FILE} { current->name = stripQuotes(yytext); newDocState(); } +"\\"{B}*"\n" { yyLineNr++; } "\n" { current->name = yyFileName; yyLineNr++; @@ -3990,6 +4035,7 @@ VAR [vV][aA][rR] current->name = stripQuotes(yytext); BEGIN( PageDocArg2 ); } +"\\"{B}*"\n" { yyLineNr++; } "\n" { warn("Warning: missing argument after " "\\page at line %d of %s.\n",yyLineNr,yyFileName); @@ -4009,6 +4055,7 @@ VAR [vV][aA][rR] } newDocState(); } +"\\"{B}*"\n" { yyLineNr++; } "\n" { warn("Warning: missing argument after " "\\enum at line %d of %s.\n",yyLineNr,yyFileName); @@ -4303,6 +4350,7 @@ VAR [vV][aA][rR] . { current->args+= yytext; } +"\\"{B}*"\n" { yyLineNr++; } "\n" { yyLineNr++; current->name = current->name.stripWhiteSpace(); @@ -4450,6 +4498,12 @@ VAR [vV][aA][rR] } [^\*\n]+ <*>\n { yyLineNr++ ; } +<*>\" { + if (insideIDL && insideCppQuote) + { + BEGIN(EndCppQuote); + } + } <*>. "//"|"/*" <*>"/*" { lastCContext = YY_START ; diff --git a/src/tag.cpp b/src/tag.cpp deleted file mode 100644 index 40c82f5..0000000 --- a/src/tag.cpp +++ /dev/null @@ -1,1968 +0,0 @@ -#define yy_create_buffer tagYY_create_buffer -#define yy_delete_buffer tagYY_delete_buffer -#define yy_scan_buffer tagYY_scan_buffer -#define yy_scan_string tagYY_scan_string -#define yy_scan_bytes tagYY_scan_bytes -#define yy_flex_debug tagYY_flex_debug -#define yy_init_buffer tagYY_init_buffer -#define yy_flush_buffer tagYY_flush_buffer -#define yy_load_buffer_state tagYY_load_buffer_state -#define yy_switch_to_buffer tagYY_switch_to_buffer -#define yyin tagYYin -#define yyleng tagYYleng -#define yylex tagYYlex -#define yyout tagYYout -#define yyrestart tagYYrestart -#define yytext tagYYtext - -/* A lexical scanner generated by flex */ - -/* Scanner skeleton version: - * $Header$ - */ - -#define FLEX_SCANNER -#define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 5 - -#include - - -/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */ -#ifdef c_plusplus -#ifndef __cplusplus -#define __cplusplus -#endif -#endif - - -#ifdef __cplusplus - -#include -#include - -/* Use prototypes in function declarations. */ -#define YY_USE_PROTOS - -/* The "const" storage-class-modifier is valid. */ -#define YY_USE_CONST - -#else /* ! __cplusplus */ - -#if __STDC__ - -#define YY_USE_PROTOS -#define YY_USE_CONST - -#endif /* __STDC__ */ -#endif /* ! __cplusplus */ - -#ifdef __TURBOC__ - #pragma warn -rch - #pragma warn -use -#include -#include -#define YY_USE_CONST -#define YY_USE_PROTOS -#endif - -#ifdef YY_USE_CONST -#define yyconst const -#else -#define yyconst -#endif - - -#ifdef YY_USE_PROTOS -#define YY_PROTO(proto) proto -#else -#define YY_PROTO(proto) () -#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 yyrestart( yyin ) - -#define YY_END_OF_BUFFER_CHAR 0 - -/* Size of default input buffer. */ -#define YY_BUF_SIZE 16384 - -typedef struct yy_buffer_state *YY_BUFFER_STATE; - -extern int yyleng; -extern FILE *yyin, *yyout; - -#define EOB_ACT_CONTINUE_SCAN 0 -#define EOB_ACT_END_OF_FILE 1 -#define EOB_ACT_LAST_MATCH 2 - -/* The funky do-while in the following #define is used to turn the definition - * int a single C statement (which needs a semi-colon terminator). This - * avoids problems with code like: - * - * if ( condition_holds ) - * yyless( 5 ); - * else - * do_something_else(); - * - * Prior to using the do-while the compiler would get upset at the - * "else" because it interpreted the "if" statement as being all - * done when it reached the ';' after the yyless() call. - */ - -/* Return all but the first 'n' matched characters back to the input stream. */ - -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - *yy_cp = yy_hold_char; \ - YY_RESTORE_YY_MORE_OFFSET \ - yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \ - YY_DO_BEFORE_ACTION; /* set up yytext again */ \ - } \ - while ( 0 ) - -#define unput(c) yyunput( c, yytext_ptr ) - -/* The following is because we cannot portably get our hands on size_t - * (without autoconf's help, which isn't available because we want - * flex-generated scanners to compile on their own). - */ -typedef unsigned int yy_size_t; - - -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; - - /* Whether to try to fill the input buffer when we reach the - * end of it. - */ - int yy_fill_buffer; - - int yy_buffer_status; -#define YY_BUFFER_NEW 0 -#define YY_BUFFER_NORMAL 1 - /* When an EOF's been seen but there's still some text to process - * then we mark the buffer as YY_EOF_PENDING, to indicate that we - * shouldn't try reading from the input source any more. We might - * still have a bunch of tokens to match, though, because of - * possible backing-up. - * - * When we actually see the EOF, we change the status to "new" - * (via yyrestart()), so that the user can continue scanning by - * just pointing yyin at a new input file. - */ -#define YY_BUFFER_EOF_PENDING 2 - }; - -static YY_BUFFER_STATE yy_current_buffer = 0; - -/* 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". - */ -#define YY_CURRENT_BUFFER yy_current_buffer - - -/* yy_hold_char holds the character lost when yytext is formed. */ -static char yy_hold_char; - -static int yy_n_chars; /* number of characters read into yy_ch_buf */ - - -int yyleng; - -/* Points to current character in buffer. */ -static char *yy_c_buf_p = (char *) 0; -static int yy_init = 1; /* whether we need to initialize */ -static int yy_start = 0; /* start state number */ - -/* Flag which is used to allow yywrap()'s to do buffer switches - * instead of setting up a fresh yyin. A bit of a hack ... - */ -static int yy_did_buffer_switch_on_eof; - -void yyrestart YY_PROTO(( FILE *input_file )); - -void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer )); -void yy_load_buffer_state YY_PROTO(( void )); -YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size )); -void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b )); -void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file )); -void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b )); -#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer ) - -YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size )); -YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str )); -YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len )); - -static void *yy_flex_alloc YY_PROTO(( yy_size_t )); -static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t )); -static void yy_flex_free YY_PROTO(( void * )); - -#define yy_new_buffer yy_create_buffer - -#define yy_set_interactive(is_interactive) \ - { \ - if ( ! yy_current_buffer ) \ - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ - yy_current_buffer->yy_is_interactive = is_interactive; \ - } - -#define yy_set_bol(at_bol) \ - { \ - if ( ! yy_current_buffer ) \ - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ - yy_current_buffer->yy_at_bol = at_bol; \ - } - -#define YY_AT_BOL() (yy_current_buffer->yy_at_bol) - - -#define yywrap() 1 -#define YY_SKIP_YYWRAP -typedef unsigned char YY_CHAR; -FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; -typedef int yy_state_type; -extern char *yytext; -#define yytext_ptr yytext - -static yy_state_type yy_get_previous_state YY_PROTO(( void )); -static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state )); -static int yy_get_next_buffer YY_PROTO(( void )); -static void yy_fatal_error YY_PROTO(( yyconst char msg[] )); - -/* Done after the current pattern has been matched and before the - * corresponding action - sets up yytext. - */ -#define YY_DO_BEFORE_ACTION \ - yytext_ptr = yy_bp; \ - yyleng = (int) (yy_cp - yy_bp); \ - yy_hold_char = *yy_cp; \ - *yy_cp = '\0'; \ - yy_c_buf_p = yy_cp; - -#define YY_NUM_RULES 20 -#define YY_END_OF_BUFFER 21 -static yyconst short int yy_accept[69] = - { 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, 21, 18, 19, 3, - 2, 1, 18, 5, 6, 7, 18, 8, 18, 18, - 18, 18, 17, 18, 12, 18, 14, 13, 0, 4, - 6, 0, 8, 0, 11, 0, 15, 0, 9, 0, - 10, 0, 16, 0, 13, 0, 0, 0 - } ; - -static yyconst int yy_ec[256] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 3, 1, 4, 1, 1, 5, 6, 1, 1, - 1, 1, 7, 1, 7, 7, 7, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 9, 1, 1, - 1, 10, 11, 1, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 1, 7, 1, 1, 12, 1, 12, 12, 12, 12, - - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 1, 1, 1, 13, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1 - } ; - -static yyconst int yy_meta[14] = - { 0, - 1, 2, 1, 1, 1, 1, 3, 4, 5, 1, - 6, 4, 1 - } ; - -static yyconst short int yy_base[81] = - { 0, - 51, 50, 47, 0, 46, 12, 21, 0, 32, 35, - 38, 41, 38, 43, 48, 53, 59, 0, 64, 69, - 80, 0, 91, 94, 97, 100, 47, 153, 153, 153, - 153, 153, 41, 153, 0, 153, 37, 153, 29, 26, - 23, 22, 153, 19, 153, 24, 23, 153, 23, 153, - 0, 21, 153, 15, 12, 11, 153, 10, 0, 9, - 8, 5, 153, 11, 153, 2, 0, 153, 104, 110, - 116, 122, 0, 128, 131, 133, 136, 138, 140, 146 - } ; - -static yyconst short int yy_def[81] = - { 0, - 69, 69, 69, 69, 69, 69, 69, 7, 69, 69, - 70, 70, 7, 7, 7, 7, 7, 17, 7, 7, - 7, 21, 69, 69, 71, 71, 68, 68, 68, 68, - 68, 68, 72, 68, 73, 68, 74, 68, 75, 76, - 77, 78, 68, 79, 68, 80, 80, 68, 72, 68, - 73, 74, 68, 75, 68, 76, 68, 77, 58, 78, - 68, 79, 68, 80, 68, 75, 78, 0, 68, 68, - 68, 68, 68, 68, 68, 68, 68, 68, 68, 68 - } ; - -static yyconst short int yy_nxt[167] = - { 0, - 68, 29, 68, 51, 30, 31, 68, 68, 68, 32, - 68, 33, 33, 29, 65, 63, 67, 61, 59, 57, - 66, 34, 29, 55, 53, 50, 65, 65, 35, 63, - 61, 59, 35, 29, 57, 36, 29, 55, 36, 29, - 53, 38, 29, 50, 38, 39, 68, 29, 29, 39, - 39, 29, 29, 68, 39, 40, 68, 68, 68, 40, - 40, 68, 68, 68, 40, 41, 41, 41, 68, 68, - 41, 42, 68, 68, 68, 42, 42, 68, 68, 68, - 42, 43, 68, 68, 68, 68, 68, 44, 68, 68, - 68, 44, 29, 68, 45, 29, 68, 45, 47, 68, - - 48, 47, 68, 48, 28, 28, 28, 28, 28, 28, - 37, 37, 37, 37, 37, 37, 46, 46, 46, 46, - 46, 46, 49, 68, 49, 49, 49, 49, 52, 68, - 52, 52, 52, 52, 54, 54, 56, 56, 58, 58, - 58, 60, 60, 62, 68, 62, 64, 64, 64, 64, - 64, 64, 27, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68 - } ; - -static yyconst short int yy_chk[167] = - { 0, - 0, 4, 0, 73, 4, 4, 0, 0, 67, 4, - 66, 4, 4, 6, 64, 62, 61, 60, 58, 56, - 55, 6, 7, 54, 52, 49, 47, 46, 7, 44, - 42, 41, 7, 9, 40, 9, 10, 39, 10, 11, - 37, 11, 12, 33, 12, 13, 27, 5, 3, 13, - 14, 2, 1, 0, 14, 15, 0, 0, 0, 15, - 16, 0, 0, 0, 16, 17, 17, 17, 0, 0, - 17, 19, 0, 0, 0, 19, 20, 0, 0, 0, - 20, 21, 0, 0, 0, 0, 0, 21, 0, 0, - 0, 21, 23, 0, 23, 24, 0, 24, 25, 0, - - 25, 26, 0, 26, 69, 69, 69, 69, 69, 69, - 70, 70, 70, 70, 70, 70, 71, 71, 71, 71, - 71, 71, 72, 0, 72, 72, 72, 72, 74, 0, - 74, 74, 74, 74, 75, 75, 76, 76, 77, 77, - 77, 78, 78, 79, 0, 79, 80, 80, 80, 80, - 80, 80, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 68 - } ; - -static yy_state_type yy_last_accepting_state; -static char *yy_last_accepting_cpos; - -/* The intent behind this definition is that it'll catch - * any uses of REJECT which flex missed. - */ -#define REJECT reject_used_but_not_detected -#define yymore() yymore_used_but_not_detected -#define YY_MORE_ADJ 0 -#define YY_RESTORE_YY_MORE_OFFSET -char *yytext; -#line 1 "tag.l" -#define INITIAL 0 -/****************************************************************************** - * - * $Id$ - * - * Copyright (C) 1997-2000 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - * All output generated with Doxygen is not covered by this license. - * - */ -#line 18 "tag.l" - -/* - * includes - */ -#include - -#include "qtbc.h" -#include - -#include "classdef.h" -#include "filedef.h" -#include "namespacedef.h" -#include "memberdef.h" -#include "doxygen.h" -#include "util.h" -#include "message.h" -#include "defargs.h" - -#define YY_NO_UNPUT -#define YY_NEVER_INTERACTIVE 1 - -static int yyLineNr; -static QCString className; -static QCString fileName; -static QCString namespaceName; -static QCString tagName; -static QCString memberName; -static QCString anchorName; -static QCString argString; -static ClassDef *cd; -static FileDef *fd; -static NamespaceDef *nd; - -static void addClass(const char *name,const char *fileName) -{ - //printf("adding class %s\n",name); - if (name!=0 && strlen(name)>0 && classDict[name]==0) - { - cd = new ClassDef(name,ClassDef::Class,tagName,fileName); - fd = 0; - nd = 0; - classList.inSort(cd); - classDict.insert(className,cd); - } -} - -static void addFile(const char *name) -{ - //printf("adding file %s tagName=`%s'\n",name,tagName.data()); - fd = new FileDef(0,name,tagName); - FileName *mn; - if ((mn=inputNameDict[name])) - { - mn->append(fd); - } - else - { - mn = new FileName(name,name); - mn->append(fd); - inputNameList.inSort(mn); - inputNameDict.insert(name,mn); - } - cd = 0; - nd = 0; - //fileList.inSort(fd); - //fileDict.insert(fileName,fd); -} - -static void addNamespace(const char *name) -{ - if ((nd=namespaceDict[name])==0) - { - // TODO: we assume that each namespace is limited to a single tagfile. - // since namespace are open, this need not to be the case. As a result - // namespace may contain members that are located in - // different namespaces! - nd = new NamespaceDef(name,tagName); - namespaceList.inSort(nd); - namespaceDict.insert(name,nd); - } - cd = 0; - fd = 0; -} - -static void addMember(const char *name,const char *anchor,const char *args) -{ - //printf("adding member `%s' `%s'\n",name,anchor); - if (cd || fd) - { - MemberNameDict *mnd=0; - MemberNameList *mnl=0; - MemberDef *md; - ArgumentList *argList = new ArgumentList; - stringToArgumentList(args,argList); - md=new MemberDef(0,name,args,0,Public,Normal,FALSE,FALSE, - MemberDef::Function,0,argList); - delete argList; - md->setAnchor(anchor); - md->setReference(tagName); - if (cd) // member of a class - { - md->setMemberClass(cd); - cd->insertMember(md); - mnd=&memberNameDict; - mnl=&memberNameList; - } - else if (nd) // member of a namespace - { - md->setNamespace(nd); - nd->insertMember(md); - mnd=&functionNameDict; - mnl=&functionNameList; - } - else // member of a file - { - md->setFileDef(fd); - fd->insertMember(md); - mnd=&functionNameDict; - mnl=&functionNameList; - } - MemberName *mn = 0; - if ((mn=(*mnd)[memberName])) - { - //printf("mn->inSort()\n"); - mn->append(md); - } - else - { - //printf("mn->append()\n"); - mn=new MemberName(memberName); - mn->append(md); - //printf("Adding memberName=%s\n",mn->memberName()); - mnl->inSort(mn); - mnd->insert(memberName,mn); - } - } -} - -/* ----------------------------------------------------------------- - */ - -#define Pass1 1 - -#define Pass2 2 - -#define AnchorName 3 - -#define ArgString1 4 - -#define ArgString2 5 - -#define ClassName1 6 - -#define ClassName2 7 - -#define FileName 8 - -#define NamespaceName 9 - -#define BaseClasses 10 - -#define ClassFile1 11 - -#define ClassFile2 12 - - -/* Macros after this point can all be overridden by user definitions in - * section 1. - */ - -#ifndef YY_SKIP_YYWRAP -#ifdef __cplusplus -extern "C" int yywrap YY_PROTO(( void )); -#else -extern int yywrap YY_PROTO(( void )); -#endif -#endif - -#ifndef YY_NO_UNPUT -static void yyunput YY_PROTO(( int c, char *buf_ptr )); -#endif - -#ifndef yytext_ptr -static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int )); -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen YY_PROTO(( yyconst char * )); -#endif - -#ifndef YY_NO_INPUT -#ifdef __cplusplus -static int yyinput YY_PROTO(( void )); -#else -static int input YY_PROTO(( void )); -#endif -#endif - -#if YY_STACK_USED -static int yy_start_stack_ptr = 0; -static int yy_start_stack_depth = 0; -static int *yy_start_stack = 0; -#ifndef YY_NO_PUSH_STATE -static void yy_push_state YY_PROTO(( int new_state )); -#endif -#ifndef YY_NO_POP_STATE -static void yy_pop_state YY_PROTO(( void )); -#endif -#ifndef YY_NO_TOP_STATE -static int yy_top_state YY_PROTO(( void )); -#endif - -#else -#define YY_NO_PUSH_STATE 1 -#define YY_NO_POP_STATE 1 -#define YY_NO_TOP_STATE 1 -#endif - -#ifdef YY_MALLOC_DECL -YY_MALLOC_DECL -#else -#if __STDC__ -#ifndef __cplusplus -#include -#endif -#else -/* Just try to get by without declaring the routines. This will fail - * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int) - * or sizeof(void*) != sizeof(int). - */ -#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 (void) fwrite( yytext, yyleng, 1, yyout ) -#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->yy_is_interactive ) \ - { \ - int c = '*', n; \ - for ( n = 0; n < max_size && \ - (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ - buf[n] = (char) c; \ - if ( c == '\n' ) \ - buf[n++] = (char) c; \ - if ( c == EOF && ferror( yyin ) ) \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - result = n; \ - } \ - else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \ - && ferror( yyin ) ) \ - YY_FATAL_ERROR( "input in flex scanner failed" ); -#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 - -/* Default declaration of generated scanner - a define so the user can - * easily add parameters. - */ -#ifndef YY_DECL -#define YY_DECL int yylex YY_PROTO(( void )) -#endif - -/* Code executed at the beginning of each rule, after yytext and yyleng - * have been set up. - */ -#ifndef YY_USER_ACTION -#define YY_USER_ACTION -#endif - -/* Code executed at the end of each rule. */ -#ifndef YY_BREAK -#define YY_BREAK break; -#endif - -#define YY_RULE_SETUP \ - if ( yyleng > 0 ) \ - yy_current_buffer->yy_at_bol = \ - (yytext[yyleng - 1] == '\n'); \ - YY_USER_ACTION - -YY_DECL - { - register yy_state_type yy_current_state; - register char *yy_cp, *yy_bp; - register int yy_act; - -#line 180 "tag.l" - - - - if ( yy_init ) - { - yy_init = 0; - -#ifdef YY_USER_INIT - YY_USER_INIT; -#endif - - if ( ! yy_start ) - yy_start = 1; /* first start state */ - - if ( ! yyin ) - yyin = stdin; - - if ( ! yyout ) - yyout = stdout; - - if ( ! yy_current_buffer ) - yy_current_buffer = - yy_create_buffer( yyin, YY_BUF_SIZE ); - - yy_load_buffer_state(); - } - - while ( 1 ) /* loops until end-of-file is reached */ - { - yy_cp = yy_c_buf_p; - - /* Support of yytext. */ - *yy_cp = yy_hold_char; - - /* yy_bp points to the position in yy_ch_buf of the start of - * the current run. - */ - yy_bp = yy_cp; - - yy_current_state = yy_start; - yy_current_state += YY_AT_BOL(); -yy_match: - do - { - 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 >= 69 ) - 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] != 153 ); - -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: -YY_RULE_SETUP -#line 182 "tag.l" -{ // start of a class - BEGIN(ClassName1); - } - YY_BREAK -case 2: -YY_RULE_SETUP -#line 185 "tag.l" -{ // start of a file - BEGIN(FileName); - } - YY_BREAK -case 3: -YY_RULE_SETUP -#line 188 "tag.l" -{ // start of a namespace - BEGIN(NamespaceName); - } - YY_BREAK -case 4: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 191 "tag.l" -{ - memberName=yytext; - BEGIN(AnchorName); - } - YY_BREAK -case 5: -YY_RULE_SETUP -#line 195 "tag.l" -{ - BEGIN(ClassName2); - } - YY_BREAK -case 6: -YY_RULE_SETUP -#line 198 "tag.l" -{ - anchorName=yytext; - BEGIN(ArgString1); - } - YY_BREAK -case 7: -YY_RULE_SETUP -#line 202 "tag.l" -{ - BEGIN(ArgString2); - } - YY_BREAK -case 8: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 205 "tag.l" -{ - argString=yytext; - addMember(memberName,anchorName,argString); - BEGIN(Pass1); - } - YY_BREAK -case 9: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 210 "tag.l" -{ - fileName=yytext; - addFile(yytext); - BEGIN(Pass1); - } - YY_BREAK -case 10: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 215 "tag.l" -{ - namespaceName=yytext; - addNamespace(yytext); - BEGIN(Pass1); - } - YY_BREAK -case 11: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 220 "tag.l" -{ - className=yytext; - BEGIN(ClassFile1); - } - YY_BREAK -case 12: -YY_RULE_SETUP -#line 224 "tag.l" -{ - BEGIN(ClassFile2); - } - YY_BREAK -case 13: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 227 "tag.l" -{ - addClass(className,yytext); - BEGIN(Pass1); - } - YY_BREAK -case 14: -YY_RULE_SETUP -#line 231 "tag.l" -{ - yyLineNr++; - BEGIN(Pass1); - } - YY_BREAK -case 15: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 235 "tag.l" -{ - cd=getClass(yytext); - BEGIN(BaseClasses); - } - YY_BREAK -case 16: -*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ -yy_c_buf_p = yy_cp -= 1; -YY_DO_BEFORE_ACTION; /* set up yytext again */ -YY_RULE_SETUP -#line 239 "tag.l" -{ - ClassDef *bcd=getClass(yytext); - if (cd && bcd) - { - cd->insertBaseClass(bcd,Public,Normal); - bcd->insertSuperClass(cd,Public,Normal); - } - } - YY_BREAK -case 17: -YY_RULE_SETUP -#line 247 "tag.l" -{ - yyLineNr++; - BEGIN(Pass2); - } - YY_BREAK -case 18: -YY_RULE_SETUP -#line 251 "tag.l" - - YY_BREAK -case 19: -YY_RULE_SETUP -#line 252 "tag.l" -{ yyLineNr++ ; } - YY_BREAK -case 20: -YY_RULE_SETUP -#line 254 "tag.l" -ECHO; - YY_BREAK -case YY_STATE_EOF(INITIAL): -case YY_STATE_EOF(Pass1): -case YY_STATE_EOF(Pass2): -case YY_STATE_EOF(AnchorName): -case YY_STATE_EOF(ArgString1): -case YY_STATE_EOF(ArgString2): -case YY_STATE_EOF(ClassName1): -case YY_STATE_EOF(ClassName2): -case YY_STATE_EOF(FileName): -case YY_STATE_EOF(NamespaceName): -case YY_STATE_EOF(BaseClasses): -case YY_STATE_EOF(ClassFile1): -case YY_STATE_EOF(ClassFile2): - 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->yy_buffer_status == YY_BUFFER_NEW ) - { - /* We're scanning a new file or input source. It's - * possible that this happened because the user - * just pointed yyin at a new source and called - * yylex(). If so, then we have to assure - * consistency between yy_current_buffer and our - * globals. Here is the right place to do so, because - * this is the first action (other than possibly a - * back-up) that will match for the new input source. - */ - yy_n_chars = yy_current_buffer->yy_n_chars; - yy_current_buffer->yy_input_file = yyin; - yy_current_buffer->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->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 ( yywrap() ) - { - /* Note: because we've taken care in - * yy_get_next_buffer() to have set up - * yytext, we can now set up - * yy_c_buf_p so that if some total - * hoser (like flex itself) wants to - * call the scanner after we return the - * YY_NULL, it'll still work - another - * YY_NULL will get returned. - */ - yy_c_buf_p = yytext_ptr + YY_MORE_ADJ; - - yy_act = YY_STATE_EOF(YY_START); - goto do_action; - } - - else - { - if ( ! yy_did_buffer_switch_on_eof ) - YY_NEW_FILE; - } - break; - } - - case EOB_ACT_CONTINUE_SCAN: - yy_c_buf_p = - yytext_ptr + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state(); - - yy_cp = yy_c_buf_p; - yy_bp = yytext_ptr + YY_MORE_ADJ; - goto yy_match; - - case EOB_ACT_LAST_MATCH: - yy_c_buf_p = - &yy_current_buffer->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 yylex */ - - -/* yy_get_next_buffer - try to read in a new buffer - * - * Returns a code representing an action: - * EOB_ACT_LAST_MATCH - - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position - * EOB_ACT_END_OF_FILE - end of file - */ - -static int yy_get_next_buffer() - { - register char *dest = yy_current_buffer->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->yy_ch_buf[yy_n_chars + 1] ) - YY_FATAL_ERROR( - "fatal flex scanner internal error--end of buffer missed" ); - - if ( yy_current_buffer->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->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->yy_n_chars = yy_n_chars = 0; - - else - { - int num_to_read = - yy_current_buffer->yy_buf_size - number_to_move - 1; - - while ( num_to_read <= 0 ) - { /* Not enough room in the buffer - grow it. */ -#ifdef YY_USES_REJECT - YY_FATAL_ERROR( -"input buffer overflow, can't enlarge buffer because scanner uses REJECT" ); -#else - - /* 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. */ - yy_flex_realloc( (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->yy_buf_size - - number_to_move - 1; -#endif - } - - if ( num_to_read > YY_READ_BUF_SIZE ) - num_to_read = YY_READ_BUF_SIZE; - - /* Read in more data. */ - YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]), - yy_n_chars, num_to_read ); - - yy_current_buffer->yy_n_chars = yy_n_chars; - } - - if ( yy_n_chars == 0 ) - { - if ( number_to_move == YY_MORE_ADJ ) - { - ret_val = EOB_ACT_END_OF_FILE; - yyrestart( yyin ); - } - - else - { - ret_val = EOB_ACT_LAST_MATCH; - yy_current_buffer->yy_buffer_status = - YY_BUFFER_EOF_PENDING; - } - } - - else - ret_val = EOB_ACT_CONTINUE_SCAN; - - yy_n_chars += number_to_move; - yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR; - yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; - - yytext_ptr = &yy_current_buffer->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() - { - register yy_state_type yy_current_state; - register char *yy_cp; - - yy_current_state = yy_start; - yy_current_state += YY_AT_BOL(); - - for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp ) - { - 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 >= 69 ) - 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 ); - */ - -#ifdef YY_USE_PROTOS -static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state ) -#else -static yy_state_type yy_try_NUL_trans( yy_current_state ) -yy_state_type yy_current_state; -#endif - { - 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 >= 69 ) - 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 == 68); - - return yy_is_jam ? 0 : yy_current_state; - } - - -#ifndef YY_NO_UNPUT -#ifdef YY_USE_PROTOS -static void yyunput( int c, register char *yy_bp ) -#else -static void yyunput( c, yy_bp ) -int c; -register char *yy_bp; -#endif - { - register char *yy_cp = yy_c_buf_p; - - /* undo effects of setting up yytext */ - *yy_cp = yy_hold_char; - - if ( yy_cp < yy_current_buffer->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->yy_ch_buf[ - yy_current_buffer->yy_buf_size + 2]; - register char *source = - &yy_current_buffer->yy_ch_buf[number_to_move]; - - while ( source > yy_current_buffer->yy_ch_buf ) - *--dest = *--source; - - yy_cp += (int) (dest - source); - yy_bp += (int) (dest - source); - yy_current_buffer->yy_n_chars = - yy_n_chars = yy_current_buffer->yy_buf_size; - - if ( yy_cp < yy_current_buffer->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; - } -#endif /* ifndef YY_NO_UNPUT */ - - -#ifdef __cplusplus -static int yyinput() -#else -static int input() -#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->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. */ - yyrestart( yyin ); - - /* fall through */ - - case EOB_ACT_END_OF_FILE: - { - if ( yywrap() ) - 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 yytext */ - yy_hold_char = *++yy_c_buf_p; - - yy_current_buffer->yy_at_bol = (c == '\n'); - - return c; - } - - -#ifdef YY_USE_PROTOS -void yyrestart( FILE *input_file ) -#else -void yyrestart( input_file ) -FILE *input_file; -#endif - { - if ( ! yy_current_buffer ) - yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); - - yy_init_buffer( yy_current_buffer, input_file ); - yy_load_buffer_state(); - } - - -#ifdef YY_USE_PROTOS -void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer ) -#else -void yy_switch_to_buffer( new_buffer ) -YY_BUFFER_STATE new_buffer; -#endif - { - 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->yy_buf_pos = yy_c_buf_p; - yy_current_buffer->yy_n_chars = yy_n_chars; - } - - yy_current_buffer = new_buffer; - yy_load_buffer_state(); - - /* We don't actually know whether we did this switch during - * EOF (yywrap()) processing, but the only time this flag - * is looked at is after yywrap() is called, so it's safe - * to go ahead and always set it. - */ - yy_did_buffer_switch_on_eof = 1; - } - - -#ifdef YY_USE_PROTOS -void yy_load_buffer_state( void ) -#else -void yy_load_buffer_state() -#endif - { - yy_n_chars = yy_current_buffer->yy_n_chars; - yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos; - yyin = yy_current_buffer->yy_input_file; - yy_hold_char = *yy_c_buf_p; - } - - -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_create_buffer( FILE *file, int size ) -#else -YY_BUFFER_STATE yy_create_buffer( file, size ) -FILE *file; -int size; -#endif - { - YY_BUFFER_STATE b; - - b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_buf_size = size; - - /* yy_ch_buf has to be 2 characters longer than the size given because - * we need to put in 2 end-of-buffer characters. - */ - b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 ); - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_is_our_buffer = 1; - - yy_init_buffer( b, file ); - - return b; - } - - -#ifdef YY_USE_PROTOS -void yy_delete_buffer( YY_BUFFER_STATE b ) -#else -void yy_delete_buffer( b ) -YY_BUFFER_STATE b; -#endif - { - if ( ! b ) - return; - - if ( b == yy_current_buffer ) - yy_current_buffer = (YY_BUFFER_STATE) 0; - - if ( b->yy_is_our_buffer ) - yy_flex_free( (void *) b->yy_ch_buf ); - - yy_flex_free( (void *) b ); - } - - -#ifndef YY_ALWAYS_INTERACTIVE -#ifndef YY_NEVER_INTERACTIVE -extern int isatty YY_PROTO(( int )); -#endif -#endif - -#ifdef YY_USE_PROTOS -void yy_init_buffer( YY_BUFFER_STATE b, FILE *file ) -#else -void yy_init_buffer( b, file ) -YY_BUFFER_STATE b; -FILE *file; -#endif - - - { - yy_flush_buffer( b ); - - b->yy_input_file = file; - b->yy_fill_buffer = 1; - -#if YY_ALWAYS_INTERACTIVE - b->yy_is_interactive = 1; -#else -#if YY_NEVER_INTERACTIVE - b->yy_is_interactive = 0; -#else - b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; -#endif -#endif - } - - -#ifdef YY_USE_PROTOS -void yy_flush_buffer( YY_BUFFER_STATE b ) -#else -void yy_flush_buffer( b ) -YY_BUFFER_STATE b; -#endif - - { - if ( ! b ) - return; - - b->yy_n_chars = 0; - - /* We always need two end-of-buffer characters. The first causes - * a transition to the end-of-buffer state. The second causes - * a jam in that state. - */ - b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; - b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; - - b->yy_buf_pos = &b->yy_ch_buf[0]; - - b->yy_at_bol = 1; - b->yy_buffer_status = YY_BUFFER_NEW; - - if ( b == yy_current_buffer ) - yy_load_buffer_state(); - } - - -#ifndef YY_NO_SCAN_BUFFER -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size ) -#else -YY_BUFFER_STATE yy_scan_buffer( base, size ) -char *base; -yy_size_t size; -#endif - { - 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) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_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; - - yy_switch_to_buffer( b ); - - return b; - } -#endif - - -#ifndef YY_NO_SCAN_STRING -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str ) -#else -YY_BUFFER_STATE yy_scan_string( yy_str ) -yyconst char *yy_str; -#endif - { - int len; - for ( len = 0; yy_str[len]; ++len ) - ; - - return yy_scan_bytes( yy_str, len ); - } -#endif - - -#ifndef YY_NO_SCAN_BYTES -#ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len ) -#else -YY_BUFFER_STATE yy_scan_bytes( bytes, len ) -yyconst char *bytes; -int len; -#endif - { - YY_BUFFER_STATE b; - char *buf; - yy_size_t n; - int i; - - /* Get memory for full buffer, including space for trailing EOB's. */ - n = len + 2; - buf = (char *) yy_flex_alloc( n ); - if ( ! buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); - - for ( i = 0; i < len; ++i ) - buf[i] = bytes[i]; - - buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR; - - b = yy_scan_buffer( buf, n ); - if ( ! b ) - YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); - - /* It's okay to grow etc. this buffer, and we should throw it - * away when we're done. - */ - b->yy_is_our_buffer = 1; - - return b; - } -#endif - - -#ifndef YY_NO_PUSH_STATE -#ifdef YY_USE_PROTOS -static void yy_push_state( int new_state ) -#else -static void yy_push_state( new_state ) -int new_state; -#endif - { - if ( yy_start_stack_ptr >= yy_start_stack_depth ) - { - yy_size_t new_size; - - yy_start_stack_depth += YY_START_STACK_INCR; - new_size = yy_start_stack_depth * sizeof( int ); - - if ( ! yy_start_stack ) - yy_start_stack = (int *) yy_flex_alloc( new_size ); - - else - yy_start_stack = (int *) yy_flex_realloc( - (void *) yy_start_stack, new_size ); - - if ( ! yy_start_stack ) - YY_FATAL_ERROR( - "out of memory expanding start-condition stack" ); - } - - yy_start_stack[yy_start_stack_ptr++] = YY_START; - - BEGIN(new_state); - } -#endif - - -#ifndef YY_NO_POP_STATE -static void yy_pop_state() - { - if ( --yy_start_stack_ptr < 0 ) - YY_FATAL_ERROR( "start-condition stack underflow" ); - - BEGIN(yy_start_stack[yy_start_stack_ptr]); - } -#endif - - -#ifndef YY_NO_TOP_STATE -static int yy_top_state() - { - return yy_start_stack[yy_start_stack_ptr - 1]; - } -#endif - -#ifndef YY_EXIT_FAILURE -#define YY_EXIT_FAILURE 2 -#endif - -#ifdef YY_USE_PROTOS -static void yy_fatal_error( yyconst char msg[] ) -#else -static void yy_fatal_error( msg ) -char msg[]; -#endif - { - (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 yytext. */ \ - yytext[yyleng] = yy_hold_char; \ - yy_c_buf_p = yytext + n; \ - yy_hold_char = *yy_c_buf_p; \ - *yy_c_buf_p = '\0'; \ - yyleng = n; \ - } \ - while ( 0 ) - - -/* Internal utility routines. */ - -#ifndef yytext_ptr -#ifdef YY_USE_PROTOS -static void yy_flex_strncpy( char *s1, yyconst char *s2, int n ) -#else -static void yy_flex_strncpy( s1, s2, n ) -char *s1; -yyconst char *s2; -int n; -#endif - { - register int i; - for ( i = 0; i < n; ++i ) - s1[i] = s2[i]; - } -#endif - -#ifdef YY_NEED_STRLEN -#ifdef YY_USE_PROTOS -static int yy_flex_strlen( yyconst char *s ) -#else -static int yy_flex_strlen( s ) -yyconst char *s; -#endif - { - register int n; - for ( n = 0; s[n]; ++n ) - ; - - return n; - } -#endif - - -#ifdef YY_USE_PROTOS -static void *yy_flex_alloc( yy_size_t size ) -#else -static void *yy_flex_alloc( size ) -yy_size_t size; -#endif - { - return (void *) malloc( size ); - } - -#ifdef YY_USE_PROTOS -static void *yy_flex_realloc( void *ptr, yy_size_t size ) -#else -static void *yy_flex_realloc( ptr, size ) -void *ptr; -yy_size_t size; -#endif - { - /* 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 ); - } - -#ifdef YY_USE_PROTOS -static void yy_flex_free( void *ptr ) -#else -static void yy_flex_free( ptr ) -void *ptr; -#endif - { - free( ptr ); - } - -#if YY_MAIN -int main() - { - yylex(); - return 0; - } -#endif -#line 254 "tag.l" - - -/*@ ---------------------------------------------------------------------------- - */ - -void parseTagFile(const char *fileName) -{ - FILE *f=fopen(fileName,"r"); - QFileInfo fi(fileName); - if (!f || !fi.exists()) - { - if (f) fclose(f); - return; - } - tagName = fi.fileName(); - tagYYin = f; - - cd=0; - yyLineNr = 1; - tagYYrestart( tagYYin ); - BEGIN(Pass1); - tagYYlex(); - - rewind(f); - cd=0; - yyLineNr = 1; - tagYYrestart( tagYYin ); - BEGIN(Pass2); - tagYYlex(); - - fclose(f); -} - -//extern "C" { // some bogus code to keep the compiler happy -// int tagYYwrap() { return 1 ; } -//} diff --git a/src/translator_nl.h b/src/translator_nl.h index 40efcdd..221cd7f 100644 --- a/src/translator_nl.h +++ b/src/translator_nl.h @@ -442,7 +442,7 @@ class TranslatorDutch : public Translator QCString trSources() { - return "Sources"; + return "Broncode"; } QCString trDefinedAtLineInSourceFile() { @@ -457,10 +457,81 @@ class TranslatorDutch : public Translator // new since 1.0.0 ////////////////////////////////////////////////////////////////////////// - virtual QCString trDeprecated() + QCString trDeprecated() { return "Verouderd"; } + +////////////////////////////////////////////////////////////////////////// +// new since 1.1.0 +////////////////////////////////////////////////////////////////////////// + + /*! this text is put before a collaboration diagram */ + QCString trCollaborationDiagram(const char *clName) + { + return (QCString)"Collaboratie diagram voor "+clName+":"; + } + /*! this text is put before an include dependency graph */ + QCString trInclDepGraph(const char *fName) + { + return (QCString)"Include afhankelijkheidsgraaf voor "+fName+":"; + } + /*! header that is put before the list of constructor/destructors. */ + QCString trConstructorDocumentation() + { + return "Constructor & Destructor Documentatie"; + } + /*! Used in the file documentation to point to the corresponding sources. */ + QCString trGotoSourceCode() + { + return "Ga naar de bron code van deze file."; + } + /*! Used in the file sources to point to the corresponding documentation. */ + QCString trGotoDocumentation() + { + return "Ga naar de documentatie van deze file."; + } + /*! Text for the \pre command */ + QCString trPrecondition() + { + return "Preconditie"; + } + /*! Text for the \post command */ + QCString trPostcondition() + { + return "Postconditie"; + } + /*! Text for the \invariant command */ + QCString trInvariant() + { + return "Invariant"; + } + /*! Text shown before a multi-line variable/enum initialization */ + QCString trInitialValue() + { + return "Initiële waarde:"; + } + /*! Text used the source code in the file index */ + QCString trCode() + { + return "code"; + } + QCString trGraphicalHierarchy() + { + return "Grafische Klasse Hierarchie"; + } + QCString trGotoGraphicalHierarchy() + { + return "Ga naar de grafische klasse hierarchie"; + } + QCString trGotoTextualHierarchy() + { + return "Ga naar de tekstuële klasse hierarchie"; + } + QCString trPageIndex() + { + return "Pagina Index"; + } }; #endif diff --git a/src/util.cpp b/src/util.cpp index b70e3a5..70b8ebc 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -1968,3 +1968,47 @@ int getPrefixIndex(const QCString &name) } return 0; } + +//---------------------------------------------------------------------------- + +static void initBaseClassHierarchy(BaseClassList *bcl) +{ + BaseClassListIterator bcli(*bcl); + for ( ; bcli.current(); ++bcli) + { + ClassDef *cd=bcli.current()->classDef; + if (cd->baseClasses()->count()==0) // no base classes => new root + { + initBaseClassHierarchy(cd->baseClasses()); + } + cd->visited=FALSE; + } +} + +//---------------------------------------------------------------------------- + +void initClassHierarchy(ClassList *cl) +{ + ClassListIterator cli(*cl); + ClassDef *cd; + for ( ; (cd=cli.current()); ++cli) + { + cd->visited=FALSE; + initBaseClassHierarchy(cd->baseClasses()); + } +} + +//---------------------------------------------------------------------------- + +bool hasVisibleRoot(BaseClassList *bcl) +{ + BaseClassListIterator bcli(*bcl); + for ( ; bcli.current(); ++bcli) + { + ClassDef *cd=bcli.current()->classDef; + if (cd->isVisibleInHierarchy()) return TRUE; + hasVisibleRoot(cd->baseClasses()); + } + return FALSE; +} + diff --git a/src/util.h b/src/util.h index bb5896e..72a123f 100644 --- a/src/util.h +++ b/src/util.h @@ -31,6 +31,8 @@ class ArgumentList; class OutputList; class MemberDef; class ExampleList; +class ClassList; +class BaseClassList; extern void setAnchors(char id,MemberList *ml); extern QCString fileToString(const char *name); @@ -80,5 +82,7 @@ void writePageRef(OutputList &ol,const char *cn,const char *mn); QCString substituteKeywords(const QCString &s,const char *title); int getPrefixIndex(const QCString &name); QCString removeAnnonymousScopes(const QCString &s); +void initClassHierarchy(ClassList *cl); +bool hasVisibleRoot(BaseClassList *bcl); #endif -- cgit v0.12