Initial revision
authorJosh Yelon <jyelon@uiuc.edu>
Sun, 4 Aug 1996 22:56:44 +0000 (22:56 +0000)
committerJosh Yelon <jyelon@uiuc.edu>
Sun, 4 Aug 1996 22:56:44 +0000 (22:56 +0000)
12 files changed:
src/xlat++/xp-lexer.c [new file with mode: 0644]
src/xlat++/xp-sfilter.c [new file with mode: 0644]
src/xlat++/xp-t.tab.c [new file with mode: 0644]
src/xlat++/xp-t.tab.h [new file with mode: 0644]
src/xlat-i/xi-parse.tab.C [new file with mode: 0644]
src/xlat-i/xi-parse.tab.h [new file with mode: 0644]
src/xlat-i/xi-scan.C [new file with mode: 0644]
src/xlat/xl-lexsp.c [new file with mode: 0644]
src/xlat/xl-sfspec.c [new file with mode: 0644]
src/xlat/xl-yacc.tab.c [new file with mode: 0644]
src/xlat/xl-yacc.tab.h [new file with mode: 0644]
src/xlatcpm/conv-cpm.c [new file with mode: 0644]

diff --git a/src/xlat++/xp-lexer.c b/src/xlat++/xp-lexer.c
new file mode 100644 (file)
index 0000000..cca9ef3
--- /dev/null
@@ -0,0 +1,2956 @@
+/* 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 <stdio.h>
+
+
+/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
+#ifdef c_plusplus
+#ifndef __cplusplus
+#define __cplusplus
+#endif
+#endif
+
+
+#ifdef __cplusplus
+
+#include <stdlib.h>
+#include <unistd.h>
+
+/* 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 <io.h>
+#include <stdlib.h>
+#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 *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 146
+#define YY_END_OF_BUFFER 147
+static yyconst short int yy_accept[551] =
+    {   0,
+        0,    0,  147,  146,    2,    4,    3,  105,  146,   93,
+      107,  100,  146,   90,   91,  101,  102,   92,  103,   99,
+      106,   85,   84,  113,  114,  108,  115,  109,  112,   83,
+       83,   83,   83,   83,   97,   98,  110,   83,   83,   83,
+       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
+       83,   83,   83,   83,   83,   83,   83,   83,   95,  111,
+       96,  104,    2,    4,    0,    3,  127,    0,   89,    0,
+        0,   94,  142,    0,    0,    0,  132,  128,  137,    0,
+        0,  130,  120,  133,  121,  134,  118,  116,    0,   87,
+        1,  131,   87,   85,    0,    0,   85,   85,    0,   84,
+
+       84,   84,  117,  122,  124,    0,  126,   14,  125,  123,
+       83,   83,   83,    0,    0,   83,   83,  138,   83,   83,
+       83,   83,   83,   83,   83,   83,   83,   32,   83,   83,
+       83,   83,   83,   83,   83,   83,   83,   83,   43,   83,
+       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
+       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
+       83,   83,   83,  139,  129,    0,    0,    0,    0,    0,
+        0,    0,   88,    0,    0,  119,  140,    0,   87,    1,
+        0,   87,   85,   86,   84,  135,   15,  136,   16,   83,
+       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
+
+       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
+       83,   83,   41,   83,   83,   83,   83,   83,   83,   83,
+       83,   47,   83,   83,   83,   83,   74,   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,    0,    0,    0,  141,    0,    0,
+        0,    0,    0,    0,    0,   87,   86,   86,   83,   83,
+       83,   83,   83,   83,   23,   83,   25,   26,   83,   83,
+       83,   83,   83,   83,   83,   34,   35,   83,   83,   37,
+       83,   83,   83,   83,   42,   83,   83,   83,   83,   83,
+
+       83,   48,   49,   83,   83,   83,   83,   83,   83,   83,
+       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
+       83,   83,   83,   83,   83,   80,   83,   83,   83,   83,
+       83,   64,   83,   83,   83,   83,    0,    0,    0,  141,
+        0,    0,  145,    0,    0,    0,    0,   86,   83,   17,
+       83,   83,   83,   83,   24,    5,   69,   27,   83,   83,
+       83,   83,   83,   36,   13,   38,   83,   40,   83,   12,
+       83,   44,   83,   83,   83,   83,   83,   83,   83,   83,
+       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
+       83,   54,   83,   83,   83,   83,   83,   83,   61,   62,
+
+       83,   83,   83,   83,   66,   83,    0,    0,  145,    0,
+        0,   83,   83,   83,   83,   83,   83,   83,   30,   70,
+       33,   39,   71,   11,   45,   83,   72,   83,   83,   83,
+       83,   83,   83,   83,   83,   50,   83,   83,   83,   79,
+       83,   83,   53,   55,   56,   57,   58,   59,   83,   83,
+       83,   83,   83,   83,    0,    0,  144,   83,   18,   83,
+       83,   83,   83,   29,   31,   46,   10,   83,   83,   83,
+       83,   83,   83,   83,   78,   83,   83,   83,   83,   60,
+       83,   81,   83,   67,   83,    0,  144,  144,  144,   83,
+       83,   83,   83,   28,   83,   83,   19,   20,   83,   75,
+
+       76,   83,   83,    8,   52,   63,   65,   83,  144,   83,
+       83,   68,   83,    7,   83,   83,   77,   51,    9,  144,
+       83,   73,   83,   83,   83,  143,   83,    6,   83,   83,
+      143,   83,   83,   22,   83,   83,   83,   21,   83,   83,
+       83,   83,    0,    0,    0,    0,    0,   82,    0,    0
+    } ;
+
+static yyconst int yy_ec[256] =
+    {   0,
+        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
+        4,    5,    6,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    7,    8,    9,   10,    1,   11,   12,   13,   14,
+       15,   16,   17,   18,   19,   20,   21,   22,   23,   23,
+       23,   23,   23,   23,   23,   24,   24,   25,   26,   27,
+       28,   29,   30,    1,   31,   32,   33,   32,   34,   35,
+       36,   36,   37,   36,   36,   38,   36,   39,   40,   36,
+       36,   41,   42,   43,   44,   45,   36,   46,   36,   47,
+       48,   49,   50,   51,   52,    1,   53,   54,   55,   56,
+
+       57,   58,   59,   60,   61,   36,   62,   63,   64,   65,
+       66,   67,   36,   68,   69,   70,   71,   72,   73,   74,
+       75,   76,   77,   78,   79,   80,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    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[81] =
+    {   0,
+        1,    2,    3,    1,    1,    1,    2,    1,    4,    1,
+        1,    1,    5,    1,    6,    1,    1,    1,    1,    1,
+        1,    7,    7,    8,    1,    1,    1,    1,    1,    4,
+        9,    9,    9,    9,    9,   10,   10,   10,   10,   10,
+       10,   10,   10,   10,   10,   11,   10,    1,    4,    1,
+        1,   10,   12,   12,    9,    9,    9,   12,   10,   10,
+       10,   10,   10,   10,   13,   10,   10,   13,   10,   13,
+       10,   13,   10,   13,   10,   10,    1,    1,    1,    1
+    } ;
+
+static yyconst short int yy_base[568] =
+    {   0,
+        0,    0,  968,  969,   79,  969,   85,  939,   84,   92,
+      938,   83,  916,  969,  969,  936,   79,  969,   81,   81,
+       85,   97,  104,  938,  969,   95,  123,  108,  969,  924,
+        0,  926,   99,  929,  969,  969,  931,  906,   63,  889,
+      103,   83,  109,  110,   78,  903,   99,   92,  113,  898,
+      113,  116,  897,  121,   72,  888,  127,  135,  969,  134,
+      969,  969,  194,  969,  202,  211,  969,  180,  969,  188,
+      217,  969,  221,  891,  890,  882,  969,  969,  969,  116,
+      198,  969,  969,  969,  969,  969,  933,  969,  928,  213,
+        0,  969,  230,  235,  277,  272,  178,  164,    0,  285,
+
+      189,  187,  969,  919,  969,  254,  969,  969,  969,  918,
+        0,  907,  873,  183,  894,  909,  900,  969,  165,  885,
+      869,  881,  868,  883,  882,  869,  219,  862,  173,  246,
+      864,  861,  864,  861,  867,  857,  860,  860,  225,  255,
+      859,  858,  853,  856,  847,  862,  861,  260,  849,  862,
+      261,  849,  187,  259,  853,  852,  845,  272,  843,  261,
+      850,  848,  847,  969,  969,  321,    0,  330,  306,  844,
+      841,  852,  969,  323,    0,  969,  969,  330,  969,    0,
+      335,  338,  969,  327,  969,  969,  969,  969,    0,  839,
+      872,  860,  836,  845,  828,  832,  844,  839,  827,  825,
+
+      197,  225,  836,  838,  833,  833,  828,  820,  823,  820,
+      828,  831,    0,  826,  816,  810,  824,  822,  822,  814,
+      815,    0,  818,  815,  804,  806,  322,  803,  802,  810,
+      796,  797,  810,  802,  808,  802,  791,  793,  795,  802,
+      788,  786,  786,  786,  797,  796,  786,  790,  780,  793,
+      795,  794,  783,  775,  357,  398,  329,  361,  328,  787,
+      786,  783,  369,  444,  365,  381,  296,  331,  786,  802,
+      802,  775,  777,  772,    0,  773,    0,  777,  764,  762,
+      770,  759,  764,  758,  764,    0,    0,  768,  750,    0,
+      756,  755,  752,  756,    0,  753,  756,  760,  760,  745,
+
+      750,    0,    0,  761,  743,  757,  751,  742,  743,  755,
+      744,  742,  752,  747,  742,  741,  735,  731,  731,  728,
+      740,  730,  734,  739,  738,    0,  736,  733,  725,  730,
+      717,    0,  717,  718,  728,  727,  386,    0,  436,  439,
+      388,    0,    0,  462,  719,  351,    0,  969,  712,    0,
+      734,  719,  726,  699,    0,    0,    0,    0,  704,  705,
+      704,  703,  702,    0,    0,    0,  693,    0,  701,    0,
+      699,    0,  686,  675,  661,  655,  647,  651,  652,  638,
+      637,  627,  630,  629,  608,  622,  614,  616,  592,  582,
+      586,    0,  594,  591,  592,  572,  581,  583,    0,    0,
+
+      574,  584,  558,  565,    0,  538,  465,  506,    0,  487,
+      542,  533,  559,  527,  523,  527,  518,  518,  531,    0,
+        0,    0,    0,    0,    0,  529,    0,  528,  519,  512,
+      514,  510,  514,  513,  520,    0,  515,  501,  512,    0,
+      506,  511,    0,    0,    0,    0,    0,    0,  500,  500,
+      493,  491,  483,  487,  399,  543,  407,  485,    0,  493,
+      497,  495,  490,    0,    0,    0,    0,  485,  481,  487,
+      476,  472,  468,  479,    0,  477,  480,  452,  458,    0,
+      468,    0,  465,    0,  462,  416,    0,  410,  456,  441,
+      453,  434,  425,    0,  437,  419,    0,    0,  416,    0,
+
+        0,  425,  403,    0,    0,    0,    0,  415,  414,  431,
+      398,    0,  383,    0,  379,  371,    0,    0,    0,  369,
+      374,    0,  358,  371,  354,    0,  349,    0,  329,  338,
+        0,  278,  238,    0,  260,  217,  208,    0,  190,   88,
+       40,  489,  505,  421,  438,  506,  516,  969,  518,  969,
+      601,  614,  621,  631,  641,  654,  661,  667,  679,  686,
+      696,  703,  715,  728,  741,  753,  765
+    } ;
+
+static yyconst short int yy_def[568] =
+    {   0,
+      550,    1,  550,  550,  550,  550,  550,  550,  551,  550,
+      550,  550,  552,  550,  550,  550,  550,  550,  550,  550,
+      550,  550,  550,  550,  550,  550,  550,  550,  550,  553,
+      553,  553,  553,  553,  550,  550,  550,  553,  553,  553,
+      553,  553,  553,  553,  553,  553,  553,  553,  553,  553,
+      553,  553,  553,  553,  553,  553,  553,  553,  550,  550,
+      550,  550,  550,  550,  550,  550,  550,  551,  550,  554,
+      550,  550,  550,  550,  550,  550,  550,  550,  550,  552,
+      555,  550,  550,  550,  550,  550,  550,  550,  550,  550,
+      556,  550,  550,  550,  550,  550,  550,  550,  557,  550,
+
+      550,  550,  550,  550,  550,  550,  550,  550,  550,  550,
+      553,  553,  553,  551,  552,  553,  553,  550,  553,  553,
+      553,  553,  553,  553,  553,  553,  553,  553,  553,  553,
+      553,  553,  553,  553,  553,  553,  553,  553,  553,  553,
+      553,  553,  553,  553,  553,  553,  553,  553,  553,  553,
+      553,  553,  553,  553,  553,  553,  553,  553,  553,  553,
+      553,  553,  553,  550,  550,  551,  558,  550,  559,  550,
+      550,  550,  550,  552,  560,  550,  550,  550,  550,  556,
+      550,  550,  550,  557,  550,  550,  550,  550,  553,  553,
+      553,  553,  553,  553,  553,  553,  553,  553,  553,  553,
+
+      553,  553,  553,  553,  553,  553,  553,  553,  553,  553,
+      553,  553,  553,  553,  553,  553,  553,  553,  553,  553,
+      553,  553,  553,  553,  553,  553,  553,  553,  553,  553,
+      553,  553,  553,  553,  553,  553,  553,  553,  553,  553,
+      553,  553,  553,  553,  553,  553,  553,  553,  553,  553,
+      553,  553,  553,  553,  551,  551,  559,  550,  561,  550,
+      550,  550,  552,  552,  550,  550,  550,  550,  553,  553,
+      553,  553,  553,  553,  553,  553,  553,  553,  553,  553,
+      553,  553,  553,  553,  553,  553,  553,  553,  553,  553,
+      553,  553,  553,  553,  553,  553,  553,  553,  553,  553,
+
+      553,  553,  553,  553,  553,  553,  553,  553,  553,  553,
+      553,  553,  553,  553,  553,  553,  553,  553,  553,  553,
+      553,  553,  553,  553,  553,  553,  553,  553,  553,  553,
+      553,  553,  553,  553,  553,  553,  551,  256,  550,  550,
+      559,  562,  563,  550,  550,  552,  264,  550,  553,  553,
+      553,  553,  553,  553,  553,  553,  553,  553,  553,  553,
+      553,  553,  553,  553,  553,  553,  553,  553,  553,  553,
+      553,  553,  553,  553,  553,  553,  553,  553,  553,  553,
+      553,  553,  553,  553,  553,  553,  553,  553,  553,  553,
+      553,  553,  553,  553,  553,  553,  553,  553,  553,  553,
+
+      553,  553,  553,  553,  553,  553,  559,  559,  563,  550,
+      550,  553,  553,  553,  553,  553,  553,  553,  553,  553,
+      553,  553,  553,  553,  553,  553,  553,  553,  553,  553,
+      553,  553,  553,  553,  553,  553,  553,  553,  553,  553,
+      553,  553,  553,  553,  553,  553,  553,  553,  553,  553,
+      553,  553,  553,  553,  559,  408,  564,  553,  553,  553,
+      553,  553,  553,  553,  553,  553,  553,  553,  553,  553,
+      553,  553,  553,  553,  553,  553,  553,  553,  553,  553,
+      553,  553,  553,  553,  553,  559,  564,  564,  564,  553,
+      553,  553,  553,  553,  553,  553,  553,  553,  553,  553,
+
+      553,  553,  553,  553,  553,  553,  553,  553,  564,  553,
+      553,  553,  553,  553,  553,  553,  553,  553,  553,  564,
+      553,  553,  553,  553,  553,  565,  553,  553,  553,  553,
+      565,  553,  553,  553,  553,  553,  553,  553,  553,  553,
+      553,  553,  550,  566,  566,  567,  550,  550,  567,    0,
+      550,  550,  550,  550,  550,  550,  550,  550,  550,  550,
+      550,  550,  550,  550,  550,  550,  550
+    } ;
+
+static yyconst short int yy_nxt[1050] =
+    {   0,
+        4,    5,    6,    7,    7,    7,    5,    8,    9,   10,
+       11,   12,   13,   14,   15,   16,   17,   18,   19,   20,
+       21,   22,   23,   23,   24,   25,   26,   27,   28,   29,
+       30,   31,   32,   31,   31,   31,   31,   33,   31,   31,
+       31,   31,   31,   31,   34,   31,   31,   35,    4,   36,
+       37,   38,   39,   40,   41,   42,   43,   44,   45,   46,
+       47,   31,   48,   49,   50,   51,   52,   53,   54,   55,
+       56,   57,   58,   31,   31,   31,   59,   60,   61,   62,
+       63,   64,   65,   65,   65,   63,   65,   64,   66,   66,
+       66,   65,   69,   71,   78,   83,   88,  542,   71,   85,
+
+       89,   72,   90,   90,   90,   91,   84,  114,   86,   87,
+       79,  115,   92,   73,   73,   73,   93,  120,   94,   94,
+       95,  104,  105,   93,  106,  100,  100,  100,  173,  106,
+       96,  156,   70,  121,   97,  109,  110,   96,  116,  127,
+       98,  101,   99,  136,  541,  137,  157,  102,  128,   74,
+      107,  108,  141,   96,   75,  123,  139,  142,   76,   97,
+       96,  164,  124,  140,   81,  125,  101,   98,  126,  143,
+       99,  129,  133,  130,  102,  134,  131,  135,  144,  146,
+      152,  153,  132,  148,  147,  149,  150,  159,   69,  161,
+      154,   69,  160,  155,  162,   63,   64,   65,   65,   65,
+
+       63,  183,  163,   65,   64,   65,   65,   65,   65,  166,
+      166,  165,   65,   64,   66,   66,   66,   65,   71,  174,
+      174,  183,  168,   71,  185,  193,  183,  168,   70,  169,
+      540,   70,  185,  205,   90,   90,   90,  194,   73,   73,
+       73,  206,   73,   73,   73,  239,  178,  179,  183,  185,
+      179,   90,   90,   90,   93,  106,   94,   94,   95,  185,
+      106,  167,  240,  178,  179,  280,  281,  179,   96,  178,
+      179,  175,   97,  539,   74,  179,  202,  282,   98,   75,
+      218,  203,  187,   76,  538,  283,  178,  179,  181,  219,
+      181,   96,  179,  182,  182,  182,   93,   97,   95,   95,
+
+       95,  207,  537,  536,   93,   98,  100,  100,  100,  220,
+       96,  241,  230,  235,  258,  208,  209,  221,   96,  236,
+      231,  250,  101,  251,  222,  232,  242,  246,  102,   69,
+      237,  168,  247,   96,  535,  173,  168,  258,  169,  348,
+      248,   96,  255,  255,  263,  263,  265,  101,  265,  341,
+      341,  266,  266,  266,  259,  102,  182,  182,  182,  182,
+      182,  182,  339,  173,  267,   69,  348,  339,  348,   70,
+      268,   81,  179,  342,  306,  179,  307,  259,  337,  337,
+      308,  173,  340,  340,  340,  309,  266,  266,  266,  267,
+      346,  346,  534,  348,   69,  179,  258,  268,  533,   81,
+
+      179,  342,  266,  266,  266,   70,   69,  258,  488,  407,
+      407,  488,  532,  488,  530,  179,  488,   81,  179,  338,
+      338,  338,  545,  529,  258,  528,  527,  545,  338,  338,
+      338,  338,  338,  526,   70,  525,  259,  339,  179,  545,
+      339,  524,  339,  179,  545,  339,   70,  259,  523,  522,
+      338,  338,  338,  338,  338,  338,  173,  340,  340,  340,
+      340,  340,  340,  410,  259,  347,  347,  347,  410,  521,
+      520,  519,  518,  258,  347,  347,  347,  347,  347,  489,
+      517,  516,  489,   73,   73,   73,  455,  455,  410,  515,
+      543,  514,   81,  410,  513,  543,  347,  347,  347,  347,
+
+      347,  347,  544,  512,  511,  510,  543,  547,   73,   73,
+       73,  543,  547,  259,  258,  509,  508,  547,  544,  547,
+      548,  507,  547,  506,  547,  505,  504,  456,  456,  456,
+      548,  503,  548,  502,  501,  500,  456,  456,  456,  456,
+      456,  499,  498,  497,  496,  495,  494,  493,  492,  491,
+      490,  485,  484,  483,  259,  482,  481,  480,  456,  456,
+      456,  456,  456,  456,  486,  486,  486,  479,  478,  477,
+      476,  475,  474,  486,  486,  486,  486,  486,  473,  472,
+      471,  470,  469,  468,  467,  466,  465,  464,  463,  462,
+      461,  460,  459,  458,  457,  486,  486,  486,  486,  486,
+
+      486,   68,   68,  454,   68,   68,   68,   68,   68,   68,
+       68,   68,   68,   68,   80,   80,  453,   80,  452,   80,
+       80,   80,   80,   80,   80,   80,   80,  111,  111,  111,
+      111,  111,  111,  111,   68,   68,  451,   68,  450,  449,
+      448,  447,   68,   68,   80,   80,  446,   80,  445,  444,
+      443,  442,   80,   80,  180,  180,  441,  180,  180,  180,
+      180,  180,  180,  180,  180,  180,  180,  184,  184,  184,
+      440,  439,  184,  256,  256,  256,  438,  437,  256,  257,
+      257,  436,  257,  257,  257,  257,  257,  257,  257,  257,
+      257,  257,  264,  264,  264,  435,  434,  264,  257,  257,
+
+      257,  433,  257,  432,  431,  430,  257,  257,  257,  408,
+      408,  408,  429,  428,  408,  409,  409,  427,  409,  409,
+      409,  409,  409,  409,  409,  409,  409,  409,  487,  487,
+      426,  487,  487,  487,  487,  487,  487,  487,  487,  487,
+      487,  531,  531,  425,  531,  531,  531,  531,  531,  531,
+      531,  531,  531,  531,  546,  424,  423,  422,  421,  420,
+      419,  546,  546,  546,  546,  546,  549,  418,  417,  416,
+      549,  549,  549,  549,  549,  549,  549,  549,  415,  414,
+      413,  412,  411,  406,  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,  351,  350,
+      349,  345,  344,  343,  336,  335,  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,  305,  304,  303,  302,  301,  300,  299,  298,  297,
+      296,  295,  294,  293,  292,  291,  290,  289,  288,  287,
+      286,  285,  284,  279,  278,  277,  276,  275,  274,  273,
+
+      272,  271,  270,  269,  262,  261,  260,  254,  253,  252,
+      249,  245,  244,  243,  238,  234,  233,  229,  228,  227,
+      226,  225,  224,  223,  217,  216,  215,  214,  213,  212,
+      211,  210,  204,  201,  200,  199,  198,  197,  196,  195,
+      192,  191,   81,  190,  189,  188,  186,  177,  176,  172,
+      171,  170,  158,  151,  145,  138,  122,  119,  118,  117,
+      113,  112,  103,   82,   81,   77,   67,  550,    3,  550,
+      550,  550,  550,  550,  550,  550,  550,  550,  550,  550,
+      550,  550,  550,  550,  550,  550,  550,  550,  550,  550,
+      550,  550,  550,  550,  550,  550,  550,  550,  550,  550,
+
+      550,  550,  550,  550,  550,  550,  550,  550,  550,  550,
+      550,  550,  550,  550,  550,  550,  550,  550,  550,  550,
+      550,  550,  550,  550,  550,  550,  550,  550,  550,  550,
+      550,  550,  550,  550,  550,  550,  550,  550,  550,  550,
+      550,  550,  550,  550,  550,  550,  550,  550,  550
+    } ;
+
+static yyconst short int yy_chk[1050] =
+    {   0,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        5,    5,    5,    5,    5,    5,    7,    7,    7,    7,
+        7,    7,    9,   10,   12,   17,   20,  541,   10,   19,
+
+       20,   10,   20,   20,   20,   21,   17,   33,   19,   19,
+       12,   33,   21,   10,   10,   10,   22,   39,   22,   22,
+       22,   26,   26,   23,   27,   23,   23,   23,   80,   27,
+       22,   55,    9,   39,   22,   28,   28,   23,   33,   42,
+       22,   23,   22,   45,  540,   45,   55,   23,   42,   10,
+       27,   27,   48,   22,   10,   41,   47,   48,   10,   22,
+       23,   60,   41,   47,   80,   41,   23,   22,   41,   49,
+       22,   43,   44,   43,   23,   44,   43,   44,   49,   51,
+       54,   54,   43,   52,   51,   52,   52,   57,   68,   58,
+       54,  114,   57,   54,   58,   63,   63,   63,   63,   63,
+
+       63,   98,   58,   65,   65,   65,   65,   65,   65,   70,
+       70,   60,   66,   66,   66,   66,   66,   66,   71,   81,
+       81,   97,   73,   71,  102,  119,   98,   73,   68,   73,
+      539,  114,  101,  129,   90,   90,   90,  119,   71,   71,
+       71,  129,   73,   73,   73,  153,   90,   90,   97,  102,
+       90,   93,   93,   93,   94,  106,   94,   94,   94,  101,
+      106,   70,  153,   93,   93,  201,  201,   93,   94,   90,
+       90,   81,   94,  537,   71,   90,  127,  202,   94,   71,
+      139,  127,  106,   71,  536,  202,   93,   93,   96,  139,
+       96,   94,   93,   96,   96,   96,   95,   94,   95,   95,
+
+       95,  130,  535,  533,  100,   94,  100,  100,  100,  140,
+       95,  154,  148,  151,  169,  130,  130,  140,  100,  151,
+      148,  160,  100,  160,  140,  148,  154,  158,  100,  166,
+      151,  168,  158,   95,  532,  174,  168,  257,  168,  267,
+      158,  100,  166,  166,  174,  174,  178,  100,  178,  259,
+      259,  178,  178,  178,  169,  100,  181,  181,  181,  182,
+      182,  182,  258,  346,  184,  255,  267,  258,  268,  166,
+      184,  174,  182,  259,  227,  182,  227,  257,  255,  255,
+      227,  263,  258,  258,  258,  227,  265,  265,  265,  184,
+      263,  263,  530,  268,  337,  182,  341,  184,  529,  346,
+
+      182,  259,  266,  266,  266,  255,  256,  455,  457,  341,
+      341,  488,  527,  457,  525,  266,  488,  263,  266,  256,
+      256,  256,  544,  524,  486,  523,  521,  544,  256,  256,
+      256,  256,  256,  520,  337,  516,  341,  339,  266,  545,
+      340,  515,  339,  266,  545,  340,  256,  455,  513,  511,
+      256,  256,  256,  256,  256,  256,  264,  339,  339,  339,
+      340,  340,  340,  344,  486,  264,  264,  264,  344,  510,
+      509,  508,  503,  407,  264,  264,  264,  264,  264,  457,
+      502,  499,  488,  344,  344,  344,  407,  407,  410,  496,
+      542,  495,  264,  410,  493,  542,  264,  264,  264,  264,
+
+      264,  264,  542,  492,  491,  490,  543,  546,  410,  410,
+      410,  543,  546,  407,  408,  489,  485,  547,  543,  549,
+      546,  483,  547,  481,  549,  479,  478,  408,  408,  408,
+      547,  477,  549,  476,  474,  473,  408,  408,  408,  408,
+      408,  472,  471,  470,  469,  468,  463,  462,  461,  460,
+      458,  454,  453,  452,  408,  451,  450,  449,  408,  408,
+      408,  408,  408,  408,  456,  456,  456,  442,  441,  439,
+      438,  437,  435,  456,  456,  456,  456,  456,  434,  433,
+      432,  431,  430,  429,  428,  426,  419,  418,  417,  416,
+      415,  414,  413,  412,  411,  456,  456,  456,  456,  456,
+
+      456,  551,  551,  406,  551,  551,  551,  551,  551,  551,
+      551,  551,  551,  551,  552,  552,  404,  552,  403,  552,
+      552,  552,  552,  552,  552,  552,  552,  553,  553,  553,
+      553,  553,  553,  553,  554,  554,  402,  554,  401,  398,
+      397,  396,  554,  554,  555,  555,  395,  555,  394,  393,
+      391,  390,  555,  555,  556,  556,  389,  556,  556,  556,
+      556,  556,  556,  556,  556,  556,  556,  557,  557,  557,
+      388,  387,  557,  558,  558,  558,  386,  385,  558,  559,
+      559,  384,  559,  559,  559,  559,  559,  559,  559,  559,
+      559,  559,  560,  560,  560,  383,  382,  560,  561,  561,
+
+      561,  381,  561,  380,  379,  378,  561,  561,  561,  562,
+      562,  562,  377,  376,  562,  563,  563,  375,  563,  563,
+      563,  563,  563,  563,  563,  563,  563,  563,  564,  564,
+      374,  564,  564,  564,  564,  564,  564,  564,  564,  564,
+      564,  565,  565,  373,  565,  565,  565,  565,  565,  565,
+      565,  565,  565,  565,  566,  371,  369,  367,  363,  362,
+      361,  566,  566,  566,  566,  566,  567,  360,  359,  354,
+      567,  567,  567,  567,  567,  567,  567,  567,  353,  352,
+      351,  349,  345,  336,  335,  334,  333,  331,  330,  329,
+      328,  327,  325,  324,  323,  322,  321,  320,  319,  318,
+
+      317,  316,  315,  314,  313,  312,  311,  310,  309,  308,
+      307,  306,  305,  304,  301,  300,  299,  298,  297,  296,
+      294,  293,  292,  291,  289,  288,  285,  284,  283,  282,
+      281,  280,  279,  278,  276,  274,  273,  272,  271,  270,
+      269,  262,  261,  260,  254,  253,  252,  251,  250,  249,
+      248,  247,  246,  245,  244,  243,  242,  241,  240,  239,
+      238,  237,  236,  235,  234,  233,  232,  231,  230,  229,
+      228,  226,  225,  224,  223,  221,  220,  219,  218,  217,
+      216,  215,  214,  212,  211,  210,  209,  208,  207,  206,
+      205,  204,  203,  200,  199,  198,  197,  196,  195,  194,
+
+      193,  192,  191,  190,  172,  171,  170,  163,  162,  161,
+      159,  157,  156,  155,  152,  150,  149,  147,  146,  145,
+      144,  143,  142,  141,  138,  137,  136,  135,  134,  133,
+      132,  131,  128,  126,  125,  124,  123,  122,  121,  120,
+      117,  116,  115,  113,  112,  110,  104,   89,   87,   76,
+       75,   74,   56,   53,   50,   46,   40,   38,   37,   34,
+       32,   30,   24,   16,   13,   11,    8,    3,  550,  550,
+      550,  550,  550,  550,  550,  550,  550,  550,  550,  550,
+      550,  550,  550,  550,  550,  550,  550,  550,  550,  550,
+      550,  550,  550,  550,  550,  550,  550,  550,  550,  550,
+
+      550,  550,  550,  550,  550,  550,  550,  550,  550,  550,
+      550,  550,  550,  550,  550,  550,  550,  550,  550,  550,
+      550,  550,  550,  550,  550,  550,  550,  550,  550,  550,
+      550,  550,  550,  550,  550,  550,  550,  550,  550,  550,
+      550,  550,  550,  550,  550,  550,  550,  550,  550
+    } ;
+
+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 "xp-lexer.l"
+#define INITIAL 0
+#line 2 "xp-lexer.l"
+
+/*  Copyright (C) 1989-1991 James A. Roskind, All rights reserved.
+    This lexer description was written by James A.  Roskind.  Copying
+    of  this  file, as a whole, is permitted providing this notice is
+    intact  and  applicable   in   all   complete   copies.    Direct
+    translations  as a whole to other lexer generator input languages
+    (or lexical description languages)  is  permitted  provided  that
+    this  notice  is  intact and applicable in all such copies, along
+    with a disclaimer that  the  contents  are  a  translation.   The
+    reproduction  of derived files or text, such as modified versions
+    of this file, or the output of scanner generators, is  permitted,
+    provided   the  resulting  work  includes  the  copyright  notice
+    "Portions Copyright (c) 1989, 1990 James  A.   Roskind".  Derived
+    products  must  also  provide  the notice "Portions Copyright (c)
+    1989, 1990 James A.  Roskind" in  a  manner  appropriate  to  the
+    utility,   and  in  keeping  with  copyright  law  (e.g.:  EITHER
+    displayed when first invoked/executed; OR displayed  continuously
+    on  display terminal; OR via placement in the object code in form
+    readable in a printout, with or near the title of the work, or at
+    the end of the file).  No royalties, licenses or  commissions  of
+    any  kind  are  required  to copy this file, its translations, or
+    derivative products, when the copies are made in compliance  with
+    this  notice.  Persons  or  corporations  that  do make copies in
+    compliance  with  this  notice  may  charge  whatever  price   is
+    agreeable  to  a buyer, for such copies or derivative works. THIS
+    FILE IS PROVIDED ``AS IS'' AND WITHOUT  ANY  EXPRESS  OR  IMPLIED
+    WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES
+    OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+
+    James A. Roskind
+    Independent Consultant
+    516 Latania Palm Drive
+    Indialantic FL, 32903
+    (407)729-4348
+    jar@hq.ileaf.com
+    or ...!uunet!leafusa!jar
+
+    ---end of copyright notice---
+
+*/
+
+/*
+
+Comment  removal  must  be done during the lexing, as context (such as
+enclosure in string literals) must be  observed.   For  this  cut-down
+lexer,  we  will  assume that comments have been removed (don't assume
+this if you are writing a compiler or browser!).
+
+
+For each IDENTIFIER like string that is found,  there  are  several
+distinct interpretations that can be applied:
+
+1)  The  preprocessor  may  interpret  the  string as a "keyword" in a
+directive (eg: "pragma" or "include", "defined").
+
+2) The parser may interpret the string as a keyword. (eg: "int").
+
+3) Both parser and preprocessor may interpret the string as a  keyword
+(eg: "if").
+
+Since  this  file  is based on source that actually lexically analyses
+text for both preprocessing and parsing, macro definitions  were  used
+throughout.   The macro definitions supplied here have been customized
+to a C++ parse only, and  all  preprocessor  keywords  are  passed  as
+IDENTIFIER  or  TYPEDEFname.   Also, since there is no symbol table to
+interrogate to decide whether a string  is  a  TYPEDEFname,  I  simply
+assume  that  any  identifier beginning with an upper case letter is a
+TYPEDEFname.  This hack  should  allow  you  to  check  out  how  code
+segments  are  parsed  using my grammar.  Unfortunately, if you really
+want to parse major league code, you have to write a symbol table, and
+maintain appropriate scoping information.
+
+*/
+
+
+/* Included code before lex code */
+/*************** Includes and Defines *****************************/
+
+
+char *CurrentIdent, *CurrentConst ;
+int FoundLBrace=0, FoundRBrace=0 ;
+
+#define YYSTYPE char *
+#include "xp-t.tab.h" /* YACC generated definitions based on C++ grammar */
+#include "xp-lexer.h"
+#include "xp-extn.h"
+
+
+#define WHITE_RETURN(x) if ( shouldprint ) strcat(OutBuf,prevtoken) ; \
+                       strcpy(prevtoken,x);
+
+/*
+#define NEW_LINE_RETURN() CurrentLine++; \
+                         if ( shouldprint ) strcat(OutBuf,prevtoken); \
+                         strcpy(prevtoken,yytext);
+*/
+                         
+
+#define PA_KEYWORD_RETURN(x)   RETURN_VAL(x)  /* standard C PArser Keyword */
+#define CPP_KEYWORD_RETURN(x)  PA_KEYWORD_RETURN(x)  /* C++ keyword */
+#define PPPA_KEYWORD_RETURN(x) RETURN_VAL(x)  /* both PreProcessor and PArser keyword */
+#define PP_KEYWORD_RETURN(x)   IDENTIFIER_RETURN()
+
+/*
+#define IDENTIFIER_RETURN() RETURN_VAL(isaTYPE(yytext)?TYPEDEFname:IDENTIFIER)
+*/
+
+#define IDENTIFIER_RETURN() CurrentIdent = (char *)malloc((strlen(yytext)+1)*sizeof(char)); \
+                           strcpy(CurrentIdent,yytext);  \
+                           yylval = CurrentIdent ; \
+                           if (shouldprint) strcat(OutBuf,prevtoken); \
+                           strcpy(prevtoken,yytext) ; \
+                           if ( FoundLBrace ) {PushStack() ;FoundLBrace=0;}\
+                           else if ( FoundRBrace ){PopStack();FoundRBrace=0;}\
+                           return(isaTYPE(yytext)?TYPEDEFname:IDENTIFIER);
+
+#define PPOP_RETURN(x)       RETURN_VAL((int)*yytext) /* PreProcess and Parser operator */
+#define NAMED_PPOP_RETURN(x) /* error: PreProcessor ONLY operator;  Do nothing */
+#define ASCIIOP_RETURN(x)    RETURN_VAL((int)*yytext) /* a single character operator */
+#define LBRACE_RETURN(x)     CurrentScope++ ; \
+                            RETURN_VAL((int)*yytext) ;
+#define RBRACE_RETURN(x)     CurrentScope-- ; \
+                            RETURN_VAL((int)*yytext) ;
+
+#define NAMEDOP_RETURN(x)    RETURN_VAL(x)            /* a multichar operator, with a name */
+
+/* #define NUMERICAL_RETURN(x) RETURN_VAL(x)         * some sort of constant */
+
+#define NUMERICAL_RETURN(x) CurrentConst = (char *)malloc((strlen(yytext)+1)*sizeof(char)); \
+                           strcpy(CurrentConst,yytext);  \
+                           yylval = CurrentConst ; \
+                           if (shouldprint) strcat(OutBuf,prevtoken); \
+                           strcpy(prevtoken,yytext) ; \
+                           if ( FoundLBrace ) {PushStack() ;FoundLBrace=0;}\
+                           else if ( FoundRBrace ){PopStack();FoundRBrace=0;}\
+                           return(x);
+                           
+
+#define LITERAL_RETURN(x)   RETURN_VAL(x)            /* a string literal */
+
+#define RETURN_VAL(x)  yylval = yytext; \
+                       if ( shouldprint ) strcat(OutBuf,prevtoken); \
+                       strcpy(prevtoken,yytext) ; \
+                       if ( FoundLBrace ) {PushStack() ;FoundLBrace=0;}\
+                       else if ( FoundRBrace ){PopStack();FoundRBrace=0;}\
+                       if ( prevtoken[0] == '{' ) FoundLBrace=1; \
+                       else if ( prevtoken[0] == '}' ) FoundRBrace=1; \
+                       return(x);
+
+#define RETURN_VAL_NOPRINT(x)  yylval = yytext; return(x);
+
+#define CHARM_KEYWORD_RETURN(x)        RETURN_VAL_NOPRINT(x)
+
+#ifdef yywrap
+#undef yywrap
+#endif
+
+
+/* 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 <stdlib.h>
+#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 "xp-lexer.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 >= 551 )
+                                       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] != 969 );
+
+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 "xp-lexer.l"
+{ }
+       YY_BREAK
+case 2:
+YY_RULE_SETUP
+#line 201 "xp-lexer.l"
+{
+                       WHITE_RETURN(" ");
+                       }
+       YY_BREAK
+case 3:
+YY_RULE_SETUP
+#line 205 "xp-lexer.l"
+{
+                       WHITE_RETURN(" ");
+                       }
+       YY_BREAK
+case 4:
+YY_RULE_SETUP
+#line 210 "xp-lexer.l"
+{
+                       NEW_LINE_RETURN();
+                       }
+       YY_BREAK
+case 5:
+YY_RULE_SETUP
+#line 214 "xp-lexer.l"
+{CHARM_KEYWORD_RETURN(CHARE);}
+       YY_BREAK
+case 6:
+YY_RULE_SETUP
+#line 215 "xp-lexer.l"
+{CHARM_KEYWORD_RETURN(ACCUMULATOR);}
+       YY_BREAK
+case 7:
+YY_RULE_SETUP
+#line 216 "xp-lexer.l"
+{CHARM_KEYWORD_RETURN(MONOTONIC);}
+       YY_BREAK
+case 8:
+YY_RULE_SETUP
+#line 217 "xp-lexer.l"
+{CHARM_KEYWORD_RETURN(READONLY);}
+       YY_BREAK
+case 9:
+YY_RULE_SETUP
+#line 218 "xp-lexer.l"
+{CHARM_KEYWORD_RETURN(WRITEONCE);}
+       YY_BREAK
+case 10:
+YY_RULE_SETUP
+#line 220 "xp-lexer.l"
+{CHARM_KEYWORD_RETURN(MESSAGE);}
+       YY_BREAK
+case 11:
+YY_RULE_SETUP
+#line 221 "xp-lexer.l"
+{      if ( CheckCharmName() ) {
+                               CHARM_KEYWORD_RETURN(HANDLE);
+                       }
+                       else {
+                               IDENTIFIER_RETURN() ;
+                       }
+                   }
+       YY_BREAK
+case 12:
+YY_RULE_SETUP
+#line 228 "xp-lexer.l"
+{      if ( CheckCharmName() ) {
+                               CHARM_KEYWORD_RETURN(GROUP);
+                               /* handle and group are processed same way */
+                       }
+                       else {
+                               IDENTIFIER_RETURN() ;
+                       }
+                   }
+       YY_BREAK
+case 13:
+YY_RULE_SETUP
+#line 236 "xp-lexer.l"
+{if ( shouldprint ) strcat(OutBuf,prevtoken); 
+                    strcpy(prevtoken,"public") ;       
+                    CHARM_KEYWORD_RETURN(ENTRY);}
+       YY_BREAK
+case 14:
+YY_RULE_SETUP
+#line 239 "xp-lexer.l"
+{CHARM_KEYWORD_RETURN(DOUBLEARROW);}
+       YY_BREAK
+case 15:
+YY_RULE_SETUP
+#line 240 "xp-lexer.l"
+{CHARM_KEYWORD_RETURN(DOUBLEARROW);}
+       YY_BREAK
+case 16:
+YY_RULE_SETUP
+#line 241 "xp-lexer.l"
+{CHARM_KEYWORD_RETURN(ALL_NODES);}
+       YY_BREAK
+case 17:
+YY_RULE_SETUP
+#line 242 "xp-lexer.l"
+{CHARM_KEYWORD_RETURN(LOCAL);}
+       YY_BREAK
+case 18:
+YY_RULE_SETUP
+#line 243 "xp-lexer.l"
+{ FoundVarSize = TRUE ; }
+       YY_BREAK
+case 19:
+YY_RULE_SETUP
+#line 244 "xp-lexer.l"
+{CPP_KEYWORD_RETURN(NEWCHARE);}
+       YY_BREAK
+case 20:
+YY_RULE_SETUP
+#line 245 "xp-lexer.l"
+{CPP_KEYWORD_RETURN(NEWGROUP);}
+       YY_BREAK
+case 21:
+YY_RULE_SETUP
+#line 246 "xp-lexer.l"
+{CPP_KEYWORD_RETURN(NEW);}
+       YY_BREAK
+case 22:
+YY_RULE_SETUP
+#line 247 "xp-lexer.l"
+{CPP_KEYWORD_RETURN(NEW);}
+       YY_BREAK
+case 23:
+YY_RULE_SETUP
+#line 250 "xp-lexer.l"
+{PA_KEYWORD_RETURN(AUTO);}
+       YY_BREAK
+case 24:
+YY_RULE_SETUP
+#line 251 "xp-lexer.l"
+{PA_KEYWORD_RETURN(BREAK);}
+       YY_BREAK
+case 25:
+YY_RULE_SETUP
+#line 252 "xp-lexer.l"
+{PA_KEYWORD_RETURN(CASE);}
+       YY_BREAK
+case 26:
+YY_RULE_SETUP
+#line 253 "xp-lexer.l"
+{PA_KEYWORD_RETURN(CHAR);}
+       YY_BREAK
+case 27:
+YY_RULE_SETUP
+#line 254 "xp-lexer.l"
+{PA_KEYWORD_RETURN(CONST);}
+       YY_BREAK
+case 28:
+YY_RULE_SETUP
+#line 255 "xp-lexer.l"
+{PA_KEYWORD_RETURN(CONTINUE);}
+       YY_BREAK
+case 29:
+YY_RULE_SETUP
+#line 256 "xp-lexer.l"
+{PA_KEYWORD_RETURN(DEFAULT);}
+       YY_BREAK
+case 30:
+YY_RULE_SETUP
+#line 257 "xp-lexer.l"
+{PP_KEYWORD_RETURN(DEFINE);}
+       YY_BREAK
+case 31:
+YY_RULE_SETUP
+#line 258 "xp-lexer.l"
+{PP_KEYWORD_RETURN(OPDEFINED);}
+       YY_BREAK
+case 32:
+YY_RULE_SETUP
+#line 259 "xp-lexer.l"
+{PA_KEYWORD_RETURN(DO);}
+       YY_BREAK
+case 33:
+YY_RULE_SETUP
+#line 260 "xp-lexer.l"
+{PA_KEYWORD_RETURN(DOUBLE);}
+       YY_BREAK
+case 34:
+YY_RULE_SETUP
+#line 261 "xp-lexer.l"
+{PP_KEYWORD_RETURN(ELIF);}
+       YY_BREAK
+case 35:
+YY_RULE_SETUP
+#line 262 "xp-lexer.l"
+{PPPA_KEYWORD_RETURN(ELSE);}
+       YY_BREAK
+case 36:
+YY_RULE_SETUP
+#line 263 "xp-lexer.l"
+{PP_KEYWORD_RETURN(ENDIF);}
+       YY_BREAK
+case 37:
+YY_RULE_SETUP
+#line 264 "xp-lexer.l"
+{PA_KEYWORD_RETURN(ENUM);}
+       YY_BREAK
+case 38:
+YY_RULE_SETUP
+#line 265 "xp-lexer.l"
+{PP_KEYWORD_RETURN(ERROR);}
+       YY_BREAK
+case 39:
+YY_RULE_SETUP
+#line 266 "xp-lexer.l"
+{PA_KEYWORD_RETURN(EXTERN);}
+       YY_BREAK
+case 40:
+YY_RULE_SETUP
+#line 267 "xp-lexer.l"
+{PA_KEYWORD_RETURN(FLOAT);}
+       YY_BREAK
+case 41:
+YY_RULE_SETUP
+#line 268 "xp-lexer.l"
+{PA_KEYWORD_RETURN(FOR);}
+       YY_BREAK
+case 42:
+YY_RULE_SETUP
+#line 269 "xp-lexer.l"
+{PA_KEYWORD_RETURN(GOTO);}
+       YY_BREAK
+case 43:
+YY_RULE_SETUP
+#line 270 "xp-lexer.l"
+{PPPA_KEYWORD_RETURN(IF);}
+       YY_BREAK
+case 44:
+YY_RULE_SETUP
+#line 271 "xp-lexer.l"
+{PP_KEYWORD_RETURN(IFDEF);}
+       YY_BREAK
+case 45:
+YY_RULE_SETUP
+#line 272 "xp-lexer.l"
+{PP_KEYWORD_RETURN(IFNDEF);}
+       YY_BREAK
+case 46:
+YY_RULE_SETUP
+#line 273 "xp-lexer.l"
+{PP_KEYWORD_RETURN(INCLUDE); }
+       YY_BREAK
+case 47:
+YY_RULE_SETUP
+#line 274 "xp-lexer.l"
+{PA_KEYWORD_RETURN(INT);}
+       YY_BREAK
+case 48:
+YY_RULE_SETUP
+#line 275 "xp-lexer.l"
+{PP_KEYWORD_RETURN(LINE);}
+       YY_BREAK
+case 49:
+YY_RULE_SETUP
+#line 276 "xp-lexer.l"
+{PA_KEYWORD_RETURN(LONG);}
+       YY_BREAK
+case 50:
+YY_RULE_SETUP
+#line 277 "xp-lexer.l"
+{PP_KEYWORD_RETURN(PRAGMA);}
+       YY_BREAK
+case 51:
+YY_RULE_SETUP
+#line 278 "xp-lexer.l"
+{if (ptrdiff_is_predefined)
+                       { PA_KEYWORD_RETURN(PTRDIFF_TOKEN); }
+                     else { IDENTIFIER_RETURN(); } }
+       YY_BREAK
+case 52:
+YY_RULE_SETUP
+#line 281 "xp-lexer.l"
+{PA_KEYWORD_RETURN(REGISTER);}
+       YY_BREAK
+case 53:
+YY_RULE_SETUP
+#line 282 "xp-lexer.l"
+{PA_KEYWORD_RETURN(RETURN);}
+       YY_BREAK
+case 54:
+YY_RULE_SETUP
+#line 283 "xp-lexer.l"
+{PA_KEYWORD_RETURN(SHORT);}
+       YY_BREAK
+case 55:
+YY_RULE_SETUP
+#line 284 "xp-lexer.l"
+{PA_KEYWORD_RETURN(SIGNED);}
+       YY_BREAK
+case 56:
+YY_RULE_SETUP
+#line 285 "xp-lexer.l"
+{PA_KEYWORD_RETURN(SIZEOF);}
+       YY_BREAK
+case 57:
+YY_RULE_SETUP
+#line 286 "xp-lexer.l"
+{PA_KEYWORD_RETURN(STATIC);}
+       YY_BREAK
+case 58:
+YY_RULE_SETUP
+#line 287 "xp-lexer.l"
+{PA_KEYWORD_RETURN(STRUCT);}
+       YY_BREAK
+case 59:
+YY_RULE_SETUP
+#line 288 "xp-lexer.l"
+{PA_KEYWORD_RETURN(SWITCH);}
+       YY_BREAK
+case 60:
+YY_RULE_SETUP
+#line 289 "xp-lexer.l"
+{PA_KEYWORD_RETURN(TYPEDEF);}
+       YY_BREAK
+case 61:
+YY_RULE_SETUP
+#line 290 "xp-lexer.l"
+{PP_KEYWORD_RETURN(UNDEF);}
+       YY_BREAK
+case 62:
+YY_RULE_SETUP
+#line 291 "xp-lexer.l"
+{PA_KEYWORD_RETURN(UNION);}
+       YY_BREAK
+case 63:
+YY_RULE_SETUP
+#line 292 "xp-lexer.l"
+{PA_KEYWORD_RETURN(UNSIGNED);}
+       YY_BREAK
+case 64:
+YY_RULE_SETUP
+#line 293 "xp-lexer.l"
+{PA_KEYWORD_RETURN(VOID);}
+       YY_BREAK
+case 65:
+YY_RULE_SETUP
+#line 294 "xp-lexer.l"
+{PA_KEYWORD_RETURN(VOLATILE);}
+       YY_BREAK
+case 66:
+YY_RULE_SETUP
+#line 295 "xp-lexer.l"
+{PA_KEYWORD_RETURN(WHILE);}
+       YY_BREAK
+case 67:
+YY_RULE_SETUP
+#line 296 "xp-lexer.l"
+{ if (wchar_is_predefined) {
+                         PA_KEYWORD_RETURN(WCHAR_TOKEN);
+                      } else {
+                         IDENTIFIER_RETURN();
+                    }}
+       YY_BREAK
+case 68:
+YY_RULE_SETUP
+#line 301 "xp-lexer.l"
+{ PA_KEYWORD_RETURN(__WCHAR_TOKEN); }
+       YY_BREAK
+case 69:
+YY_RULE_SETUP
+#line 303 "xp-lexer.l"
+{CPP_KEYWORD_RETURN(CLASS);}
+       YY_BREAK
+case 70:
+YY_RULE_SETUP
+#line 304 "xp-lexer.l"
+{CPP_KEYWORD_RETURN(DELETE);}
+       YY_BREAK
+case 71:
+YY_RULE_SETUP
+#line 305 "xp-lexer.l"
+{CPP_KEYWORD_RETURN(FRIEND);}
+       YY_BREAK
+case 72:
+YY_RULE_SETUP
+#line 306 "xp-lexer.l"
+{CPP_KEYWORD_RETURN(INLINE);}
+       YY_BREAK
+case 73:
+YY_RULE_SETUP
+#line 307 "xp-lexer.l"
+{CPP_KEYWORD_RETURN(UNDERSCORE_INLINE);}
+       YY_BREAK
+case 74:
+YY_RULE_SETUP
+#line 308 "xp-lexer.l"
+{CPP_KEYWORD_RETURN(NEW);}
+       YY_BREAK
+case 75:
+YY_RULE_SETUP
+#line 309 "xp-lexer.l"
+{CPP_KEYWORD_RETURN(OPERATOR);}
+       YY_BREAK
+case 76:
+YY_RULE_SETUP
+#line 310 "xp-lexer.l"
+{CPP_KEYWORD_RETURN(OVERLOAD);}
+       YY_BREAK
+case 77:
+YY_RULE_SETUP
+#line 311 "xp-lexer.l"
+{CPP_KEYWORD_RETURN(PROTECTED);}
+       YY_BREAK
+case 78:
+YY_RULE_SETUP
+#line 312 "xp-lexer.l"
+{CPP_KEYWORD_RETURN(PRIVATE);}
+       YY_BREAK
+case 79:
+YY_RULE_SETUP
+#line 313 "xp-lexer.l"
+{CPP_KEYWORD_RETURN(PUBLIC);}
+       YY_BREAK
+case 80:
+YY_RULE_SETUP
+#line 314 "xp-lexer.l"
+{CPP_KEYWORD_RETURN(THIS);}
+       YY_BREAK
+case 81:
+YY_RULE_SETUP
+#line 315 "xp-lexer.l"
+{CPP_KEYWORD_RETURN(VIRTUAL);}
+       YY_BREAK
+case 82:
+YY_RULE_SETUP
+#line 319 "xp-lexer.l"
+{
+                       /* Find the identifier */
+                       char str[128] ;
+                       char *ident = str ;
+                       char *ptr1 = strchr(yytext,'(') ;
+                       ptr1++ ;
+                       while ( *ptr1==' ' || *ptr1=='\t' )
+                               ptr1++ ;                        
+                       while ( *ptr1!=' ' && *ptr1!='\t' && *ptr1!=')' )
+                               *(ident++) = *(ptr1++) ;
+                       *ident = '\0' ;
+
+                       strcpy(yytext,"_CK_func_") ;
+                       strcat(yytext,str) ;
+
+                       IDENTIFIER_RETURN();
+                       }
+       YY_BREAK
+case 83:
+YY_RULE_SETUP
+#line 339 "xp-lexer.l"
+{ IDENTIFIER_RETURN(); }
+       YY_BREAK
+case 84:
+YY_RULE_SETUP
+#line 341 "xp-lexer.l"
+{NUMERICAL_RETURN(INTEGERconstant);}
+       YY_BREAK
+case 85:
+YY_RULE_SETUP
+#line 342 "xp-lexer.l"
+{NUMERICAL_RETURN(OCTALconstant);}
+       YY_BREAK
+case 86:
+YY_RULE_SETUP
+#line 343 "xp-lexer.l"
+{NUMERICAL_RETURN(HEXconstant);}
+       YY_BREAK
+case 87:
+YY_RULE_SETUP
+#line 344 "xp-lexer.l"
+{NUMERICAL_RETURN(FLOATINGconstant);}
+       YY_BREAK
+case 88:
+YY_RULE_SETUP
+#line 347 "xp-lexer.l"
+{
+                       NUMERICAL_RETURN(CHARACTERconstant);
+                       }
+       YY_BREAK
+case 89:
+YY_RULE_SETUP
+#line 352 "xp-lexer.l"
+{
+                       LITERAL_RETURN(STRINGliteral);}
+       YY_BREAK
+case 90:
+YY_RULE_SETUP
+#line 358 "xp-lexer.l"
+{PPOP_RETURN(LP);}
+       YY_BREAK
+case 91:
+YY_RULE_SETUP
+#line 359 "xp-lexer.l"
+{PPOP_RETURN(RP);}
+       YY_BREAK
+case 92:
+YY_RULE_SETUP
+#line 360 "xp-lexer.l"
+{PPOP_RETURN(COMMA);}
+       YY_BREAK
+case 93:
+YY_RULE_SETUP
+#line 361 "xp-lexer.l"
+{NAMED_PPOP_RETURN('#') ;}
+       YY_BREAK
+case 94:
+YY_RULE_SETUP
+#line 362 "xp-lexer.l"
+{NAMED_PPOP_RETURN(POUNDPOUND);}
+       YY_BREAK
+case 95:
+YY_RULE_SETUP
+#line 364 "xp-lexer.l"
+{ LBRACE_RETURN(LC); }
+       YY_BREAK
+case 96:
+YY_RULE_SETUP
+#line 365 "xp-lexer.l"
+{ RBRACE_RETURN(RC); }
+       YY_BREAK
+case 97:
+YY_RULE_SETUP
+#line 367 "xp-lexer.l"
+{ASCIIOP_RETURN(LB);}
+       YY_BREAK
+case 98:
+YY_RULE_SETUP
+#line 368 "xp-lexer.l"
+{ASCIIOP_RETURN(RB);}
+       YY_BREAK
+case 99:
+YY_RULE_SETUP
+#line 369 "xp-lexer.l"
+{ASCIIOP_RETURN(DOT);}
+       YY_BREAK
+case 100:
+YY_RULE_SETUP
+#line 370 "xp-lexer.l"
+{ASCIIOP_RETURN(AND);}
+       YY_BREAK
+case 101:
+YY_RULE_SETUP
+#line 371 "xp-lexer.l"
+{ASCIIOP_RETURN(STAR);}
+       YY_BREAK
+case 102:
+YY_RULE_SETUP
+#line 372 "xp-lexer.l"
+{ASCIIOP_RETURN(PLUS);}
+       YY_BREAK
+case 103:
+YY_RULE_SETUP
+#line 373 "xp-lexer.l"
+{ASCIIOP_RETURN(MINUS);}
+       YY_BREAK
+case 104:
+YY_RULE_SETUP
+#line 374 "xp-lexer.l"
+{ASCIIOP_RETURN(NEGATE);}
+       YY_BREAK
+case 105:
+YY_RULE_SETUP
+#line 375 "xp-lexer.l"
+{ASCIIOP_RETURN(NOT);}
+       YY_BREAK
+case 106:
+YY_RULE_SETUP
+#line 376 "xp-lexer.l"
+{ASCIIOP_RETURN(DIV);}
+       YY_BREAK
+case 107:
+YY_RULE_SETUP
+#line 377 "xp-lexer.l"
+{ASCIIOP_RETURN(MOD);}
+       YY_BREAK
+case 108:
+YY_RULE_SETUP
+#line 378 "xp-lexer.l"
+{ASCIIOP_RETURN(LT);}
+       YY_BREAK
+case 109:
+YY_RULE_SETUP
+#line 379 "xp-lexer.l"
+{ASCIIOP_RETURN(GT);}
+       YY_BREAK
+case 110:
+YY_RULE_SETUP
+#line 380 "xp-lexer.l"
+{ASCIIOP_RETURN(XOR);}
+       YY_BREAK
+case 111:
+YY_RULE_SETUP
+#line 381 "xp-lexer.l"
+{ASCIIOP_RETURN(PIPE);}
+       YY_BREAK
+case 112:
+YY_RULE_SETUP
+#line 382 "xp-lexer.l"
+{ASCIIOP_RETURN(QUESTION);}
+       YY_BREAK
+case 113:
+YY_RULE_SETUP
+#line 383 "xp-lexer.l"
+{ASCIIOP_RETURN(COLON);}
+       YY_BREAK
+case 114:
+YY_RULE_SETUP
+#line 384 "xp-lexer.l"
+{ASCIIOP_RETURN(SEMICOLON);}
+       YY_BREAK
+case 115:
+YY_RULE_SETUP
+#line 385 "xp-lexer.l"
+{ASCIIOP_RETURN(ASSIGN);}
+       YY_BREAK
+case 116:
+YY_RULE_SETUP
+#line 387 "xp-lexer.l"
+{NAMEDOP_RETURN(DOTstar);}
+       YY_BREAK
+case 117:
+YY_RULE_SETUP
+#line 388 "xp-lexer.l"
+{NAMEDOP_RETURN(CLCL);}
+       YY_BREAK
+case 118:
+YY_RULE_SETUP
+#line 389 "xp-lexer.l"
+{NAMEDOP_RETURN(ARROW);}
+       YY_BREAK
+case 119:
+YY_RULE_SETUP
+#line 390 "xp-lexer.l"
+{NAMEDOP_RETURN(ARROWstar);}
+       YY_BREAK
+case 120:
+YY_RULE_SETUP
+#line 391 "xp-lexer.l"
+{NAMEDOP_RETURN(ICR);}
+       YY_BREAK
+case 121:
+YY_RULE_SETUP
+#line 392 "xp-lexer.l"
+{NAMEDOP_RETURN(DECR);}
+       YY_BREAK
+case 122:
+YY_RULE_SETUP
+#line 393 "xp-lexer.l"
+{NAMEDOP_RETURN(LS);}
+       YY_BREAK
+case 123:
+YY_RULE_SETUP
+#line 394 "xp-lexer.l"
+{NAMEDOP_RETURN(RS);}
+       YY_BREAK
+case 124:
+YY_RULE_SETUP
+#line 395 "xp-lexer.l"
+{NAMEDOP_RETURN(LE);}
+       YY_BREAK
+case 125:
+YY_RULE_SETUP
+#line 396 "xp-lexer.l"
+{NAMEDOP_RETURN(GE);}
+       YY_BREAK
+case 126:
+YY_RULE_SETUP
+#line 397 "xp-lexer.l"
+{NAMEDOP_RETURN(EQ);}
+       YY_BREAK
+case 127:
+YY_RULE_SETUP
+#line 398 "xp-lexer.l"
+{NAMEDOP_RETURN(NE);}
+       YY_BREAK
+case 128:
+YY_RULE_SETUP
+#line 399 "xp-lexer.l"
+{NAMEDOP_RETURN(ANDAND);}
+       YY_BREAK
+case 129:
+YY_RULE_SETUP
+#line 400 "xp-lexer.l"
+{NAMEDOP_RETURN(OROR);}
+       YY_BREAK
+case 130:
+YY_RULE_SETUP
+#line 401 "xp-lexer.l"
+{NAMEDOP_RETURN(MULTassign);}
+       YY_BREAK
+case 131:
+YY_RULE_SETUP
+#line 402 "xp-lexer.l"
+{NAMEDOP_RETURN(DIVassign);}
+       YY_BREAK
+case 132:
+YY_RULE_SETUP
+#line 403 "xp-lexer.l"
+{NAMEDOP_RETURN(MODassign);}
+       YY_BREAK
+case 133:
+YY_RULE_SETUP
+#line 404 "xp-lexer.l"
+{NAMEDOP_RETURN(PLUSassign);}
+       YY_BREAK
+case 134:
+YY_RULE_SETUP
+#line 405 "xp-lexer.l"
+{NAMEDOP_RETURN(MINUSassign);}
+       YY_BREAK
+case 135:
+YY_RULE_SETUP
+#line 406 "xp-lexer.l"
+{NAMEDOP_RETURN(LSassign);}
+       YY_BREAK
+case 136:
+YY_RULE_SETUP
+#line 407 "xp-lexer.l"
+{NAMEDOP_RETURN(RSassign);}
+       YY_BREAK
+case 137:
+YY_RULE_SETUP
+#line 408 "xp-lexer.l"
+{NAMEDOP_RETURN(ANDassign);}
+       YY_BREAK
+case 138:
+YY_RULE_SETUP
+#line 409 "xp-lexer.l"
+{NAMEDOP_RETURN(ERassign);}
+       YY_BREAK
+case 139:
+YY_RULE_SETUP
+#line 410 "xp-lexer.l"
+{NAMEDOP_RETURN(ORassign);}
+       YY_BREAK
+case 140:
+YY_RULE_SETUP
+#line 411 "xp-lexer.l"
+{NAMEDOP_RETURN(ELLIPSIS);}
+       YY_BREAK
+case 141:
+YY_RULE_SETUP
+#line 413 "xp-lexer.l"
+{ int i=0,j=0;
+                                                  char temp[MAX_NAME_LENGTH];
+
+                                                 strcat(OutBuf,prevtoken) ;
+                                                 strcpy(prevtoken,"") ;
+                                                 strcat(OutBuf,yytext) ;
+                                                 FLUSHBUF() ;
+
+                                                  while ((yytext[i]<'0')||
+                                                         (yytext[i]>'9'))
+                                                        i++;
+                                                  while ((yytext[i]>='0') &&
+                                                         (yytext[i]<='9'))
+                                                        temp[j++]=yytext[i++];
+                                                  temp[j]='\0';
+                                                  CurrentLine = atoi(temp)-1;
+                                                  while (yytext[i]!='\"')
+                                                        i++;
+
+                                                 /* remove double quote */
+                                                 j = yyleng-1 ;
+                                                 while ( yytext[j] != '"' )
+                                                       j-- ;
+                                                  yytext[j]='\0';
+                                                  strcpy(CurrentFileName,
+                                                                yytext+i+1);
+                                                }
+       YY_BREAK
+case 142:
+YY_RULE_SETUP
+#line 441 "xp-lexer.l"
+{ /* #line used by SP */
+                                               
+                                               int i=0,j=0;     
+                                                char temp[MAX_NAME_LENGTH];
+                                               
+                                               strcat(OutBuf,prevtoken) ;
+                                               strcpy(prevtoken,"") ;
+                                               strcat(OutBuf,yytext) ;
+                                               FLUSHBUF() ;
+
+                                               /* Skip to the line number */
+                                               while ((yytext[i]<'0')||
+                                                      (yytext[i]>'9'))
+                                                    i++;
+                                               
+                                               /* Copy the line number */
+                                               while ((yytext[i]>='0') &&
+                                                      (yytext[i]<='9'))
+                                                    temp[j++]=yytext[i++];
+                                               temp[j]='\0';
+                                               
+                                               /* Now place it in 
+                                                  'CurrentLine */
+                                               CurrentLine = atoi(temp)-1;
+                                          }
+       YY_BREAK
+case 143:
+YY_RULE_SETUP
+#line 468 "xp-lexer.l"
+{ /* #pragma when ... */
+
+               /* This pragma is used to specify dependences between EPs */
+                   char * rest ;
+                   if ( MakeGraph ) {
+                       rest = strchr(yytext,'n') ;
+                       rest++ ;
+                       fprintf(graphfile,"WHEN %s %s : %s\n",CurrentChare,
+                                               CurrentEP, rest) ;
+                   }
+               }
+       YY_BREAK
+case 144:
+YY_RULE_SETUP
+#line 481 "xp-lexer.l"
+{ /* #pragma used by G++: copy to output */
+                                       strcat(OutBuf,prevtoken) ;
+                                       strcpy(prevtoken,"") ;
+                                       strcat(OutBuf,yytext) ;
+                                       FLUSHBUF() ;
+                               }
+       YY_BREAK
+case 145:
+YY_RULE_SETUP
+#line 488 "xp-lexer.l"
+{ /* #file stuff used in nCUBE CC */
+                                       strcat(OutBuf,prevtoken) ;
+                                       strcpy(prevtoken,"") ;
+                                       strcat(OutBuf,yytext) ;
+                                       FLUSHBUF() ;
+                               }
+       YY_BREAK
+case 146:
+YY_RULE_SETUP
+#line 495 "xp-lexer.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_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 );
+               }
+
+       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 >= 551 )
+                               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 >= 551 )
+                       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 == 550);
+
+       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_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_END_OF_FILE:
+                                       {
+                                       if ( yywrap() )
+                                               {
+                                               yy_c_buf_p = yytext_ptr + offset;
+                                               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;
+
+                               case EOB_ACT_LAST_MATCH:
+#ifdef __cplusplus
+                                       YY_FATAL_ERROR(
+                                       "unexpected last match in yyinput()" );
+#else
+                                       YY_FATAL_ERROR(
+                                       "unexpected last match in input()" );
+#endif
+                               }
+                       }
+               }
+
+       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
+
+       {
+       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 *str )
+#else
+YY_BUFFER_STATE yy_scan_string( str )
+yyconst char *str;
+#endif
+       {
+       int len;
+       for ( len = 0; str[len]; ++len )
+               ;
+
+       return yy_scan_bytes( 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 495 "xp-lexer.l"
+
+
+yywrap() { return(1); }
+
+/* I won't bother to provide any error recovery. I won't  even  handle
+unknown characters */
+
+/*******************************************************************
+int isaTYPE(string)
+char * string;
+{
+    *  We  should  really  be  maintaining  a  symbol  table,  and be
+    carefully keeping track of what the current scope is  (or  in  the
+    case  of  "rescoped"  stuff,  what  scope  to  look in). Since the
+    grammar is not annotated with  actions  to  track  transitions  to
+    various  scopes,  and  there  is no symbol table, we will supply a
+    hack to allow folks to test  the  grammar  out.   THIS  IS  NOT  A
+    COMPLETE IMPLEMENTATION!!!! *
+
+    if ( strncmp(string,"NULL",4) == 0 )
+       return 0 ;
+
+    return ('A' <= string[0] && 'Z' >= string[0]);
+}
+********************************************************************/
+
+int isaTYPE(string)
+char *string ;
+{
+       int i ;
+
+       if ( StructScope )
+               return FALSE ;
+
+       if ( !FoundGlobalScope || GlobalStack == NULL ) {
+               for ( i=TotalSyms-1; i>=0; i-- ) {  /* from inner to outer */
+                       if ( strcmp(string,SymTable[i].name) == 0 ) {
+                               strcpy(CurrentTypedef,string) ;
+                               return TRUE ;
+                       }
+               }
+       }
+       else {
+               for ( i=0; i<GlobalStack->TotalSyms; i++ ) {  
+                       /* search global state */
+                       if ( strcmp(string,SymTable[i].name) == 0 ) {
+                               strcpy(CurrentTypedef,string) ;
+                               return TRUE ;
+                       }
+               }
+                FoundGlobalScope = 0 ;
+       }
+       strcpy(CurrentTypedef,"") ;
+       return FALSE ;
+}
+
+NEW_LINE_RETURN() 
+{
+       CurrentLine++; 
+       if ( shouldprint ) strcat(OutBuf,prevtoken); 
+       strcpy(prevtoken,yytext);
+}
+
+
diff --git a/src/xlat++/xp-sfilter.c b/src/xlat++/xp-sfilter.c
new file mode 100644 (file)
index 0000000..e780f51
--- /dev/null
@@ -0,0 +1,1945 @@
+/* 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 <stdio.h>
+
+
+/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
+#ifdef c_plusplus
+#ifndef __cplusplus
+#define __cplusplus
+#endif
+#endif
+
+
+#ifdef __cplusplus
+
+#include <stdlib.h>
+#include <unistd.h>
+
+/* 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 <io.h>
+#include <stdlib.h>
+#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 *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 27
+#define YY_END_OF_BUFFER 28
+static yyconst short int yy_accept[249] =
+    {   0,
+        0,    0,   28,   26,   27,   26,   26,   26,   26,   26,
+       26,   26,   26,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+       25,    0,    0,   21,    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,   22,    0,    0,    0,    0,    0,
+        0,    0,    0,    9,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   22,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,   23,    0,   22,    0,    0,    0,   18,
+        0,    0,    0,    0,   10,    0,    0,    8,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   23,    0,
+       20,    0,    0,   19,    0,    0,    0,    0,    7,    0,
+        0,    0,    0,    0,    0,    0,    0,   24,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   16,    0,    0,    0,    0,    0,    0,
+        0,   11,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    3,    0,    0,    0,    0,
+
+       17,    0,   14,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   15,    0,    0,
+        0,    0,    0,    5,    0,    0,    0,    4,    0,    0,
+        0,    0,   13,    0,    0,    0,    0,    0,    0,    6,
+        0,    1,    0,    2,    0,    0,   12,    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,    4,    5,    1,    1,    1,    1,    6,
+        1,    1,    1,    1,    1,    1,    1,    7,    7,    7,
+        7,    7,    7,    7,    7,    7,    7,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    8,    9,   10,   11,
+        1,   12,   13,    1,    1,    1,   14,   15,    1,   16,
+        1,   17,   18,   19,   20,   21,    1,    1,    1,    1,
+        1,    1,    1,    1,   22,    1,   23,   24,   25,   26,
+
+       27,   28,   29,   30,   31,    1,   32,   33,   34,   35,
+       36,   37,    1,   38,   39,   40,   41,    1,   42,   43,
+       44,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    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,    1,    2,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1
+    } ;
+
+static yyconst short int yy_base[251] =
+    {   0,
+        0,   33,  380,  381,  381,   12,    4,  352,   17,  343,
+      350,  349,  348,   30,   26,    0,  355,  335,  341,  352,
+      347,  336,  335,  332,  331,  326,  329,  330,  320,   50,
+      381,  357,    8,   60,  329,  328,  324,  326,  318,  322,
+      327,  327,  327,  324,  324,  322,  326,  343,   67,    2,
+      312,  309,  317,  309,  308,  314,  300,   19,  299,  300,
+      323,  296,   52,   76,   77,  308,  296,  295,  305,  321,
+      305,  302,   85,  381,  297,  287,  287,  298,  299,  285,
+      292,   46,   32,   88,   92,  283,  289,   95,  281,  275,
+      277,  100,  280,  102,  286,  292,  288,  289,  288,  271,
+
+      274,  283,  276,  105,  109,  113,  116,  266,  121,  381,
+      123,  274,  283,  128,  381,  268,  130,  381,  135,  268,
+      260,  265,  261,  259,  261,  264,  259,  138,  142,  145,
+      381,  250,  150,  381,  253,  269,  140,  156,  381,  264,
+      256,  264,  261,  264,  246,  261,  262,  156,  267,  162,
+      249,  258,  253,  240,  237,  247,  164,  247,  239,  233,
+      239,  232,  169,  381,  230,  236,  241,  229,  234,  239,
+      171,  381,  238,  229,  235,  235,  223,  233,  232,  239,
+      234,  230,  220,  176,  208,  204,  186,  178,  183,  199,
+      175,  175,  157,  168,  185,  381,  158,  149,  130,  190,
+
+      381,  192,  381,  125,  139,  123,  107,  114,  197,   97,
+      105,  104,   91,  199,   72,   70,  204,  381,  206,   64,
+       58,   38,  211,  381,  213,   43,  218,  381,   33,   28,
+       23,  220,  381,   11,  225,  227,  232,    0,  234,  381,
+      239,  381,  241,  381,  246,  248,  381,  381,  254,    0
+    } ;
+
+static yyconst short int yy_def[251] =
+    {   0,
+      249,  249,  248,  248,  248,  248,  248,  248,  248,  248,
+      248,  248,  248,  248,  248,  248,  248,  248,  248,  248,
+      248,  248,  248,  248,  248,  248,  248,  248,  248,  248,
+      248,  250,  248,  248,  248,  248,  248,  248,  248,  248,
+      248,  248,  248,  248,  248,  248,  248,  250,  250,  248,
+      248,  248,  248,  248,  248,  248,  248,  248,  248,  248,
+      248,  248,  248,  250,  250,  248,  248,  248,  248,  248,
+      248,  248,  248,  248,  248,  248,  248,  248,  248,  248,
+      248,  248,  248,  250,  250,  248,  248,  248,  248,  248,
+      248,  248,  248,  248,  248,  248,  248,  248,  248,  248,
+
+      248,  248,  248,  250,  250,  250,  248,  248,  248,  248,
+      248,  248,  248,  248,  248,  248,  248,  248,  248,  248,
+      248,  248,  248,  248,  248,  248,  248,  250,  250,  248,
+      248,  248,  248,  248,  248,  248,  248,  248,  248,  248,
+      248,  248,  248,  248,  248,  248,  248,  250,  248,  248,
+      248,  248,  248,  248,  248,  248,  248,  248,  248,  248,
+      248,  248,  248,  248,  248,  248,  248,  248,  248,  248,
+      248,  248,  248,  248,  248,  248,  248,  248,  248,  248,
+      248,  248,  248,  248,  248,  248,  248,  248,  248,  248,
+      248,  248,  248,  248,  248,  248,  248,  248,  248,  248,
+
+      248,  248,  248,  248,  248,  248,  248,  248,  248,  248,
+      248,  248,  248,  248,  248,  248,  248,  248,  248,  248,
+      248,  248,  248,  248,  248,  248,  248,  248,  248,  248,
+      248,  248,  248,  248,  248,  248,  248,  248,  248,  248,
+      248,  248,  248,  248,  248,  248,  248,    0,  248,  248
+    } ;
+
+static yyconst short int yy_nxt[426] =
+    {   0,
+       48,   33,    5,   50,    6,   32,   34,    7,    8,   33,
+        9,  248,   10,   14,   34,   17,  248,   11,   15,   18,
+       73,   73,   19,   20,   74,   12,  245,   30,   31,   32,
+      248,   14,   15,   21,   13,    5,   15,    6,   16,   22,
+        7,    8,   16,    9,   16,   10,   16,   24,  238,  237,
+       11,   30,   31,   32,  102,  236,   16,   25,   12,  235,
+       16,   50,   16,   32,   16,  234,   34,   13,   64,  103,
+       49,  231,  100,   65,   79,   80,   81,   64,   84,   49,
+       49,  101,   65,   85,  230,   82,   73,   73,   83,   84,
+       74,   49,  229,  105,  104,   49,  109,  109,  106,  226,
+
+      110,  114,  114,  117,  117,  115,  128,  118,   49,  225,
+      105,  129,   49,  222,  105,  129,   49,  130,  130,  106,
+      221,  131,  109,  109,  133,  133,  110,  220,  134,  114,
+      114,  117,  117,  115,  219,  118,  138,  138,  216,  128,
+      139,   49,  215,  128,  148,   49,  130,  130,  129,  214,
+      131,  133,  133,  213,  152,  134,  153,  138,  138,   49,
+      212,  139,  148,  163,  163,  171,  171,  164,  211,  172,
+      163,  163,  171,  171,  164,  210,  172,  195,  195,  200,
+      200,  196,  209,  201,  202,  202,  195,  195,  203,  208,
+      196,  200,  200,  202,  202,  201,  207,  203,  217,  217,
+
+      223,  223,  218,  206,  224,  217,  217,  227,  227,  218,
+      205,  228,  223,  223,  232,  232,  224,  204,  233,  227,
+      227,  232,  232,  228,  199,  233,  239,  239,  241,  241,
+      240,  198,  242,  243,  243,  239,  239,  244,  197,  240,
+      241,  241,  243,  243,  242,  194,  244,  246,  246,  246,
+      246,  247,  193,  247,    4,    4,  192,  191,  190,  189,
+      188,  187,  186,  185,  184,  183,  182,  181,  180,  179,
+      178,  177,  176,  175,  174,  173,  170,  169,  168,  167,
+      166,  165,  162,  161,  160,  159,  158,  157,  156,  155,
+      154,  151,  150,  149,  147,  146,  145,  144,  143,  142,
+
+      141,  140,  137,  136,  135,  132,  127,  126,  125,  124,
+      123,  122,  121,  120,  119,  116,  113,  112,  111,  108,
+      107,   99,   98,   97,   96,   95,   94,   93,   92,   91,
+       90,   89,   88,   87,   86,   78,   77,   76,   75,   72,
+       71,   70,   69,   68,   67,   66,   49,   63,   62,   61,
+       60,   59,   58,   57,   56,   55,   54,   53,   52,   51,
+       49,   47,   46,   45,   44,   43,   42,   41,   40,   39,
+       38,   37,   36,   35,   29,   28,   27,   26,   23,  248,
+        3,  248,  248,  248,  248,  248,  248,  248,  248,  248,
+      248,  248,  248,  248,  248,  248,  248,  248,  248,  248,
+
+      248,  248,  248,  248,  248,  248,  248,  248,  248,  248,
+      248,  248,  248,  248,  248,  248,  248,  248,  248,  248,
+      248,  248,  248,  248,  248
+    } ;
+
+static yyconst short int yy_chk[426] =
+    {   0,
+      250,   16,    1,   50,    1,   50,   16,    1,    1,   33,
+        1,    0,    1,    6,   33,    7,    0,    1,    6,    7,
+       58,   58,    7,    7,   58,    1,  238,   15,   15,   15,
+        0,   14,   15,    7,    1,    2,   14,    2,    6,    7,
+        2,    2,    6,    2,    6,    2,    6,    9,  234,  231,
+        2,   30,   30,   30,   83,  230,   14,    9,    2,  229,
+       14,   34,   14,   34,   14,  226,   34,    2,   49,   83,
+       49,  222,   82,   49,   63,   63,   63,   64,   65,   64,
+       65,   82,   64,   65,  221,   63,   73,   73,   63,   84,
+       73,   84,  220,   85,   84,   85,   88,   88,   85,  216,
+
+       88,   92,   92,   94,   94,   92,  104,   94,  104,  215,
+      105,  104,  105,  213,  106,  105,  106,  107,  107,  106,
+      212,  107,  109,  109,  111,  111,  109,  211,  111,  114,
+      114,  117,  117,  114,  210,  117,  119,  119,  208,  128,
+      119,  128,  207,  129,  128,  129,  130,  130,  129,  206,
+      130,  133,  133,  205,  137,  133,  137,  138,  138,  148,
+      204,  138,  148,  150,  150,  157,  157,  150,  199,  157,
+      163,  163,  171,  171,  163,  198,  171,  184,  184,  188,
+      188,  184,  197,  188,  189,  189,  195,  195,  189,  194,
+      195,  200,  200,  202,  202,  200,  193,  202,  209,  209,
+
+      214,  214,  209,  192,  214,  217,  217,  219,  219,  217,
+      191,  219,  223,  223,  225,  225,  223,  190,  225,  227,
+      227,  232,  232,  227,  187,  232,  235,  235,  236,  236,
+      235,  186,  236,  237,  237,  239,  239,  237,  185,  239,
+      241,  241,  243,  243,  241,  183,  243,  245,  245,  246,
+      246,  245,  182,  246,  249,  249,  181,  180,  179,  178,
+      177,  176,  175,  174,  173,  170,  169,  168,  167,  166,
+      165,  162,  161,  160,  159,  158,  156,  155,  154,  153,
+      152,  151,  149,  147,  146,  145,  144,  143,  142,  141,
+      140,  136,  135,  132,  127,  126,  125,  124,  123,  122,
+
+      121,  120,  116,  113,  112,  108,  103,  102,  101,  100,
+       99,   98,   97,   96,   95,   93,   91,   90,   89,   87,
+       86,   81,   80,   79,   78,   77,   76,   75,   72,   71,
+       70,   69,   68,   67,   66,   62,   61,   60,   59,   57,
+       56,   55,   54,   53,   52,   51,   48,   47,   46,   45,
+       44,   43,   42,   41,   40,   39,   38,   37,   36,   35,
+       32,   29,   28,   27,   26,   25,   24,   23,   22,   21,
+       20,   19,   18,   17,   13,   12,   11,   10,    8,    3,
+      248,  248,  248,  248,  248,  248,  248,  248,  248,  248,
+      248,  248,  248,  248,  248,  248,  248,  248,  248,  248,
+
+      248,  248,  248,  248,  248,  248,  248,  248,  248,  248,
+      248,  248,  248,  248,  248,  248,  248,  248,  248,  248,
+      248,  248,  248,  248,  248
+    } ;
+
+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 "xp-sfilter.l"
+#define INITIAL 0
+#line 2 "xp-sfilter.l"
+#include <string.h>
+
+char CoreName[256] ;
+int currentline=1;
+#ifdef yywrap
+#undef yywrap
+#endif
+
+/* 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 <stdlib.h>
+#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 19 "xp-sfilter.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 >= 249 )
+                                       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] != 381 );
+
+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 21 "xp-sfilter.l"
+{ CheckReturns(yytext); fprintf(yyout,"FunctionNameToRef("); }
+       YY_BREAK
+case 2:
+YY_RULE_SETUP
+#line 22 "xp-sfilter.l"
+{ CheckReturns(yytext); fprintf(yyout,"FunctionRefToName("); }
+       YY_BREAK
+case 3:
+YY_RULE_SETUP
+#line 23 "xp-sfilter.l"
+{ CheckReturns(yytext); fprintf(yyout,"new_message("); }
+       YY_BREAK
+case 4:
+YY_RULE_SETUP
+#line 24 "xp-sfilter.l"
+{ CheckReturns(yytext); fprintf(yyout,"new_packbuffer("); }
+       YY_BREAK
+case 5:
+YY_RULE_SETUP
+#line 25 "xp-sfilter.l"
+{ CheckReturns(yytext); fprintf(yyout,"delete_message("); }
+       YY_BREAK
+case 6:
+YY_RULE_SETUP
+#line 26 "xp-sfilter.l"
+{ CheckReturns(yytext); fprintf(yyout,"new_prio_message("); }
+       YY_BREAK
+case 7:
+YY_RULE_SETUP
+#line 27 "xp-sfilter.l"
+{ CheckReturns(yytext); fprintf(yyout,"SendMsg("); }
+       YY_BREAK
+case 8:
+YY_RULE_SETUP
+#line 28 "xp-sfilter.l"
+{ CheckReturns(yytext); fprintf(yyout,"Insert("); }
+       YY_BREAK
+case 9:
+YY_RULE_SETUP
+#line 29 "xp-sfilter.l"
+{ CheckReturns(yytext); fprintf(yyout,"Find("); }
+       YY_BREAK
+case 10:
+YY_RULE_SETUP
+#line 30 "xp-sfilter.l"
+{ CheckReturns(yytext); fprintf(yyout,"Delete("); }
+       YY_BREAK
+case 11:
+YY_RULE_SETUP
+#line 32 "xp-sfilter.l"
+{ CheckReturns(yytext); fprintf(yyout,"new_chare("); }
+       YY_BREAK
+case 12:
+YY_RULE_SETUP
+#line 33 "xp-sfilter.l"
+{ CheckReturns(yytext); fprintf(yyout,"new_branched_chare("); }
+       YY_BREAK
+case 13:
+YY_RULE_SETUP
+#line 34 "xp-sfilter.l"
+{ CheckReturns(yytext); fprintf(yyout,"new_accumulator("); }
+       YY_BREAK
+case 14:
+YY_RULE_SETUP
+#line 35 "xp-sfilter.l"
+{ CheckReturns(yytext); fprintf(yyout,"CollectValue(");}
+       YY_BREAK
+case 15:
+YY_RULE_SETUP
+#line 36 "xp-sfilter.l"
+{ CheckReturns(yytext); fprintf(yyout,"new_monotonic("); }
+       YY_BREAK
+case 16:
+YY_RULE_SETUP
+#line 37 "xp-sfilter.l"
+{ CheckReturns(yytext); fprintf(yyout,"CharmExit("); }
+       YY_BREAK
+case 17:
+YY_RULE_SETUP
+#line 38 "xp-sfilter.l"
+{ CheckReturns(yytext); fprintf(yyout,"CPriorityPtr("); }
+       YY_BREAK
+case 18:
+YY_RULE_SETUP
+#line 39 "xp-sfilter.l"
+{ CheckReturns(yytext); fprintf(yyout,"CTimer("); }
+       YY_BREAK
+case 19:
+YY_RULE_SETUP
+#line 40 "xp-sfilter.l"
+{ CheckReturns(yytext); fprintf(yyout,"CUTimer("); }
+       YY_BREAK
+case 20:
+YY_RULE_SETUP
+#line 41 "xp-sfilter.l"
+{ CheckReturns(yytext); fprintf(yyout,"CHTimer("); }
+       YY_BREAK
+case 21:
+YY_RULE_SETUP
+#line 43 "xp-sfilter.l"
+{ currentline=GetLine(yytext); fprintf(yyout,"%s",yytext); }
+       YY_BREAK
+case 22:
+YY_RULE_SETUP
+#line 44 "xp-sfilter.l"
+{ currentline=GetLine(yytext); fprintf(yyout,"%s",yytext); }
+       YY_BREAK
+case 23:
+YY_RULE_SETUP
+#line 45 "xp-sfilter.l"
+{ currentline = GetLine(yytext); fprintf(yyout,"%s",yytext);}
+       YY_BREAK
+case 24:
+YY_RULE_SETUP
+#line 46 "xp-sfilter.l"
+{ currentline = GetLine(yytext); fprintf(yyout,"%s",yytext);}
+       YY_BREAK
+case 25:
+YY_RULE_SETUP
+#line 48 "xp-sfilter.l"
+{ CountReturns(yytext); fprintf(yyout,"\n") ; }
+       YY_BREAK
+case 26:
+YY_RULE_SETUP
+#line 49 "xp-sfilter.l"
+{ CountReturns(yytext); fprintf(yyout,"%s",yytext); }
+       YY_BREAK
+case 27:
+YY_RULE_SETUP
+#line 51 "xp-sfilter.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_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 );
+               }
+
+       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 >= 249 )
+                               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 >= 249 )
+                       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 == 248);
+
+       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_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_END_OF_FILE:
+                                       {
+                                       if ( yywrap() )
+                                               {
+                                               yy_c_buf_p = yytext_ptr + offset;
+                                               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;
+
+                               case EOB_ACT_LAST_MATCH:
+#ifdef __cplusplus
+                                       YY_FATAL_ERROR(
+                                       "unexpected last match in yyinput()" );
+#else
+                                       YY_FATAL_ERROR(
+                                       "unexpected last match in input()" );
+#endif
+                               }
+                       }
+               }
+
+       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
+
+       {
+       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 *str )
+#else
+YY_BUFFER_STATE yy_scan_string( str )
+yyconst char *str;
+#endif
+       {
+       int len;
+       for ( len = 0; str[len]; ++len )
+               ;
+
+       return yy_scan_bytes( 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 51 "xp-sfilter.l"
+
+
+yywrap(){ return(1); }
+
+
+main(argc,argv) 
+int argc ;
+char *argv[] ;
+{ 
+       char pgm[256] ;
+        int len; char *bgn, *end;
+
+       if ( argc != 2 ) {
+               printf("Spacefilter invoked improperly ! Aborting.\n") ;
+               exit(1) ;       
+       }
+/* Find the file name */
+       strcpy(pgm,argv[1]);
+
+        bgn = strrchr(argv[1], '/');
+        if (bgn==0) bgn=argv[1];
+        end = bgn;
+        while (1)
+            {
+            char c = *end;
+            if (!(((c>='a')&&(c<='z'))||
+                  ((c>='A')&&(c<='Z'))||
+                  ((c>='0')&&(c<='9'))||
+                  (c=='_'))) break;
+            end++;
+            }
+       strncpy(CoreName, bgn, end-bgn);
+       CoreName[(end-bgn)] = '\0' ;
+
+       yyin = fopen(argv[1],"r") ;
+
+/* Do the rest of the stuff.. */
+       writem4(); 
+       writeundef(); 
+       yylex(); 
+}
+
+GetLine(string)
+char string[];
+{ int i=0,j;
+  char dummy[10];
+
+  while ((string[i]<'0')||(string[i]>'9')) i++;
+  j=0;
+  while ((string[i]>='0')&&(string[i]<='9')) dummy[j++] = string[i++];
+  dummy[j]='\0';
+  return(atoi(dummy));
+}
+
+output_proper_line(string)
+char string[];
+{
+   int length;
+
+   length=strlen(string)-1;
+   while (string[length-1]!='"') length--;
+   string[length]='\0';
+   fprintf(yyout,"%s",string);
+}
+
+CountReturns(string)
+char *string;
+{
+  while (*string) {
+    if (*string=='\n') currentline++;
+    string++;
+  }
+}
+
+CheckReturns(string)
+char *string;
+{
+  int anyret=0;
+  while (*string) {
+    if (*string=='\n') { currentline++; anyret=1; }
+    string++;
+  }
+  if (anyret)
+    fprintf(yyout,"# line %d\n",currentline);
+}
+
+
+
+
+/* SANJEEV */
+char *ckfreemsg="define(delete_message,`CkFreeMsg((void *)$1)')";
+
+char *charmexit="define(CharmExit,`CkExit()')";
+char *cpriorityptr="define(CPriorityPtr,`CkPriorityPtr($1)')";
+char *ctimer="define(CTimer,`CkTimer()')";
+char *cutimer="define(CUTimer,`CkUTimer()')";
+char *chtimer="define(CHTimer,`CkHTimer()')";
+
+
+char * createchare="define(new_chare,`_CK_CreateChare(_CK_chare_$1,$2,$3,ifelse($4,,NULL_VID,$4),ifelse($5,,CK_PE_ANY,$5))')" ;
+
+char * createboc="define(new_branched_chare,`_CK_CreateBoc(_CK_chare_$1,$2,$3,ifelse($4,,-1`,'NULL,$4`,'$5))')" ;
+
+char * createacc="define(new_accumulator,`_CK_CreateAcc(_CK_acc_$1,$2,ifelse($3,,-1`,'NULL,$3`,'$4))')" ;
+char * createmono="define(new_monotonic,`_CK_CreateMono(_CK_mono_$1,$2,ifelse($3,,-1`,'NULL,$3`,'$4))')" ;
+
+char * functionreftoname="define(FunctionRefToName,`CsvAccess(_CK_9_GlobalFunctionTable)[$1]')" ;
+char * functionnametoref="define(FunctionNameToRef,`_CK_func_$1')" ;
+
+char * ckallocpackbuffer="define(new_packbuffer,`CkAllocPackBuffer($1,$2)')" ;
+
+
+
+writem4()
+{ 
+  char ckallocmsg[256] ;
+  char ckallocpriomsg[256] ;
+
+/* SANJEEV */
+  printf("%s\n",ckfreemsg) ;
+  printf("%s\n%s\n%s\n%s\n%s\n",
+        charmexit,cpriorityptr,ctimer,cutimer,chtimer) ;
+  printf("%s\n%s\n%s\n%s\n",createacc,createmono,createchare, createboc);
+
+sprintf(ckallocmsg,"define(new_message,`ifelse($2,,GenericCkAlloc(_CK_%s._CK_msg_$1`,'sizeof($1)`,'0),((ALLOCFNPTR)(CsvAccess(MsgToStructTable)[_CK_%s._CK_msg_$1].alloc))(_CK_%s._CK_msg_$1`,'sizeof($1)`,'$2`,'0))')", CoreName, CoreName, CoreName );
+
+sprintf(ckallocpriomsg,"define(new_prio_message,`ifelse($3,,GenericCkAlloc(_CK_%s._CK_msg_$1`,'sizeof($1)`,'$2),((ALLOCFNPTR)(CsvAccess(MsgToStructTable)[_CK_%s._CK_msg_$1].alloc))(_CK_%s._CK_msg_$1`,'sizeof($1)`,'$3`,'$2))')", CoreName, CoreName, CoreName ) ;
+
+  printf("%s\n%s\n%s\n%s\n%s\n\n",ckallocmsg, ckallocpriomsg, 
+               functionreftoname, functionnametoref, ckallocpackbuffer );
+}
+
+
+writeundef()
+{ printf("undefine(`changequote')\n");
+  printf("undefine(`divert')\n");
+  printf("undefine(`divnum')\n");
+  printf("undefine(`dnl')\n");
+  printf("undefine(`dumpdef')\n");
+  printf("undefine(`errprint')\n");
+  printf("undefine(`eval')\n");
+  printf("undefine(`ifdef')\n");
+  printf("undefine(`include')\n");
+  printf("undefine(`incr')\n");
+  printf("undefine(`index')\n");
+  printf("undefine(`len')\n");
+  printf("undefine(`maketemp')\n");
+  printf("undefine(`sinclude')\n");
+  printf("undefine(`substr')\n");
+  printf("undefine(`syscmd')\n");
+  printf("undefine(`translit')\n");
+  printf("undefine(`undivert')\n");
+  printf("undefine(`define')\n");
+  printf("undefine(`undefine')\n");
+}
+
diff --git a/src/xlat++/xp-t.tab.c b/src/xlat++/xp-t.tab.c
new file mode 100644 (file)
index 0000000..728df1f
--- /dev/null
@@ -0,0 +1,7635 @@
+
+/*  A Bison parser, made from xp-t.y
+ by  GNU Bison version 1.25
+  */
+
+#define YYBISON 1  /* Identify Bison output.  */
+
+#define        CHARE   258
+#define        BRANCHED        259
+#define        MESSAGE 260
+#define        HANDLE  261
+#define        GROUP   262
+#define        ENTRY   263
+#define        DOUBLEARROW     264
+#define        ALL_NODES       265
+#define        LOCAL   266
+#define        ACCUMULATOR     267
+#define        MONOTONIC       268
+#define        READONLY        269
+#define        WRITEONCE       270
+#define        NEWCHARE        271
+#define        NEWGROUP        272
+#define        AUTO    273
+#define        DOUBLE  274
+#define        INT     275
+#define        STRUCT  276
+#define        BREAK   277
+#define        ELSE    278
+#define        LONG    279
+#define        SWITCH  280
+#define        CASE    281
+#define        ENUM    282
+#define        REGISTER        283
+#define        TYPEDEF 284
+#define        CHAR    285
+#define        EXTERN  286
+#define        RETURN  287
+#define        UNION   288
+#define        CONST   289
+#define        FLOAT   290
+#define        SHORT   291
+#define        UNSIGNED        292
+#define        WCHAR_TOKEN     293
+#define        __WCHAR_TOKEN   294
+#define        PTRDIFF_TOKEN   295
+#define        CONTINUE        296
+#define        FOR     297
+#define        SIGNED  298
+#define        VOID    299
+#define        DEFAULT 300
+#define        GOTO    301
+#define        SIZEOF  302
+#define        VOLATILE        303
+#define        DO      304
+#define        IF      305
+#define        STATIC  306
+#define        WHILE   307
+#define        NEW     308
+#define        DELETE  309
+#define        THIS    310
+#define        OPERATOR        311
+#define        CLASS   312
+#define        PUBLIC  313
+#define        PROTECTED       314
+#define        PRIVATE 315
+#define        VIRTUAL 316
+#define        FRIEND  317
+#define        INLINE  318
+#define        UNDERSCORE_INLINE       319
+#define        OVERLOAD        320
+#define        IDENTIFIER      321
+#define        STRINGliteral   322
+#define        FLOATINGconstant        323
+#define        INTEGERconstant 324
+#define        CHARACTERconstant       325
+#define        OCTALconstant   326
+#define        HEXconstant     327
+#define        TYPEDEFname     328
+#define        ARROW   329
+#define        ICR     330
+#define        DECR    331
+#define        LS      332
+#define        RS      333
+#define        LE      334
+#define        GE      335
+#define        EQ      336
+#define        NE      337
+#define        ANDAND  338
+#define        OROR    339
+#define        ELLIPSIS        340
+#define        CLCL    341
+#define        DOTstar 342
+#define        ARROWstar       343
+#define        MULTassign      344
+#define        DIVassign       345
+#define        MODassign       346
+#define        PLUSassign      347
+#define        MINUSassign     348
+#define        LSassign        349
+#define        RSassign        350
+#define        ANDassign       351
+#define        ERassign        352
+#define        ORassign        353
+
+#line 1 "xp-t.y"
+
+
+/*  Copyright (C) 1989-1991 James A. Roskind, All rights reserved. 
+    This grammar was developed  and  written  by  James  A.  Roskind. 
+    Copying  of  this  grammar  description, as a whole, is permitted 
+    providing this notice is intact and applicable  in  all  complete 
+    copies.   Translations as a whole to other parser generator input 
+    languages  (or  grammar  description  languages)   is   permitted 
+    provided  that  this  notice is intact and applicable in all such 
+    copies,  along  with  a  disclaimer  that  the  contents  are   a 
+    translation.   The reproduction of derived text, such as modified 
+    versions of this grammar, or the output of parser generators,  is 
+    permitted,  provided  the  resulting  work includes the copyright 
+    notice "Portions Copyright (c)  1989,  1990  James  A.  Roskind". 
+    Derived products, such as compilers, translators, browsers, etc., 
+    that  use  this  grammar,  must also provide the notice "Portions 
+    Copyright  (c)  1989,  1990  James  A.  Roskind"  in   a   manner 
+    appropriate  to  the  utility,  and in keeping with copyright law 
+    (e.g.: EITHER displayed when first invoked/executed; OR displayed 
+    continuously on display terminal; OR via placement in the  object 
+    code  in  form  readable in a printout, with or near the title of 
+    the work, or at the end of the file).  No royalties, licenses  or 
+    commissions  of  any  kind are required to copy this grammar, its 
+    translations, or derivative products, when the copies are made in 
+    compliance with this notice. Persons or corporations that do make 
+    copies in compliance with this notice may charge  whatever  price 
+    is  agreeable  to  a  buyer, for such copies or derivative works. 
+    THIS GRAMMAR IS PROVIDED ``AS IS'' AND  WITHOUT  ANY  EXPRESS  OR 
+    IMPLIED  WARRANTIES,  INCLUDING,  WITHOUT LIMITATION, THE IMPLIED 
+    WARRANTIES  OF  MERCHANTABILITY  AND  FITNESS  FOR  A  PARTICULAR 
+    PURPOSE.
+
+    James A. Roskind
+    Independent Consultant
+    516 Latania Palm Drive
+    Indialantic FL, 32903
+    (407)729-4348
+    jar@hq.ileaf.com
+
+
+    ---end of copyright notice---
+*/
+
+/*
+
+1) template support: Not  done:  pending  syntax  specification  from 
+ANSI.  (This looks like a major effort, as ANSI has decided to extend 
+the  "TYPEDEFname"-feedback-to-the-lexer-hack  to  support   template 
+names as a new kind of terminal token.)
+
+2)  exception  handling:  Not done: pending syntax specification from 
+ANSI (but it doesn't look hard)
+
+done: 3) Support nested types, including identifier::name,  where  we 
+realize  that  identifier was a hidden type.  Force the lexer to keep 
+pace in this situation.   This  will  require  an  extension  of  the 
+yacc-lex feedback loop.
+
+done: 4) Support nested types even when derivations are used in class 
+definitions.
+
+done: 6) Allow declaration specifiers to be left out of  declarations 
+at file and structure scope so that operator conversion functions can 
+be  declared and/or defined.  Note that checking to see that it was a 
+function type that does not require declaration_specifiers is  now  a 
+constraint  check,  and  not  a  syntax  issue.  Within function body 
+scopes, declaration specifiers are required, and this is critical  to 
+distinguishing expressions.
+
+*/
+
+#line 151 "xp-t.y"
+
+/*************** Includes and Defines *****************************/
+#define YYDEBUG_LEXER_TEXT (yylval) /* our lexer loads this up each time.
+                                    We are telling the graphical debugger
+                                    where to find the spelling of the 
+                                    tokens.*/
+#define YYDEBUG 1        /* get the pretty debugging code to compile*/
+#define YYSTYPE  char *  /* interface with flex: should be in header file */
+
+
+
+#include "xp-lexer.h" 
+
+StackStruct *StackTop=NULL ;
+StackStruct *GlobalStack=NULL ;
+
+AggState *PermanentAggTable[MAXAGGS] ;  
+int PermanentAggTableSize = 0 ;
+/* this table is only added to, never deleted from. It stores the objects
+   defined in an aggregate type.                                         */
+                                       
+
+/* These tables just hold lists of Chares,BOCs,Accs ... */
+ChareInfo * ChareTable[MAXCHARES] ;
+ChareInfo * BOCTable[MAXCHARES] ;
+MsgStruct MessageTable[MAXMSGS] ;
+AccStruct * AccTable[MAXACCS] ;
+AccStruct * MonoTable[MAXACCS] ;
+char * DTableTable[MAXDTABLES] ;
+char * ReadTable[MAXREADS] ;
+char * ReadMsgTable[MAXREADS] ;
+FunctionStruct FunctionTable[MAX_FUNCTIONS] ;
+int charecount = -1 ;
+int boccount = -1 ;
+int TotalEntries = 0 ;
+int TotalMsgs = 0 ;
+int TotalAccs = 0 ;
+int TotalMonos = 0 ;
+int TotalDTables = 0 ;
+int TotalReadMsgs = 0 ;
+int TotalReads = 0 ;
+int TotalFns = 0 ;
+
+/* This table is used to distinguish between typedefs and idents */
+SymEntry SymTable[MAXSYMBOLS] ;
+int TotalSyms = 0 ;
+
+/* the following three tables store all handle identifiers and their types */
+HandleEntry ChareHandleTable[MAXIDENTS] ;
+HandleEntry BOCHandleTable[MAXIDENTS] ;
+HandleEntry AccHandleTable[MAXIDENTS] ;
+HandleEntry MonoHandleTable[MAXIDENTS] ;
+HandleEntry WrOnHandleTable[MAXIDENTS] ;
+int ChareHandleTableSize = 0 ;
+int BOCHandleTableSize = 0 ;
+int AccHandleTableSize = 0 ;
+int MonoHandleTableSize = 0 ;
+int WrOnHandleTableSize = 0 ;
+
+/* char modname[MAX_NAME_LENGTH] ;  */
+
+char OutBuf[MAX_OUTBUF_SIZE] ;
+
+int CurrentLine=1 ;
+int CurrentScope = 0 ;         /* 1 means file scope, > 1 means inside a block */
+char CurrentFileName[MAX_NAME_LENGTH] = {'\0'} ;
+int CurrentAccess = -1, CurrentAggType = -1, CurrentStorage = -1 ;
+int CurrentCharmType = -1 ;
+int CurrentCharmNameIndex = -1 ;
+char CurrentTypedef[MAX_NAME_LENGTH] = {'\0'} ;
+char CurrentDeclType[MAX_NAME_LENGTH] = {'\0'} ;
+char CurrentAggName[MAX_NAME_LENGTH] = {'\0'} ;
+char CurrentChare[MAX_NAME_LENGTH] = {'\0'} ; 
+char CurrentEP[MAX_NAME_LENGTH] = {'\0'} ;
+char CurrentFn[MAX_NAME_LENGTH] = {'\0'} ;
+char CurrentMsgParm[MAX_NAME_LENGTH] = {'\0'} ;
+char CurrentSharedHandle[MAX_NAME_LENGTH] = {'_','C','K','_','N','O','T','A','C','C','H','A','N','D','L','E'} ;
+AccStruct *CurrentAcc ;
+ChareInfo *CurrentCharePtr ;
+char CurrentAssOp[5] ;
+char CurrentAsterisk[MAX_NAME_LENGTH] ;
+char *EpMsg=NULL ;
+char SendEP[MAX_NAME_LENGTH] ;
+char SendChare[MAX_NAME_LENGTH] ;
+char SendPe[MAX_NAME_LENGTH] ;
+char LastChare[MAX_NAME_LENGTH] ;
+char LastEP[MAX_NAME_LENGTH] ;
+char LastArg[MAX_NAME_LENGTH] ;
+char *ParentArray[MAX_PARENTS] ;
+int SendType = -1 ;
+int main_argc_argv = FALSE ;
+int foundargs = FALSE ;
+int numparents = 0 ;
+int SendMsgBranchPoss = FALSE ;
+int FoundHandle = -1 ;
+int FilledAccMsg = FALSE ;
+int FoundConstructorBody = FALSE ;
+int IsMonoCall = FALSE ;
+int IsAccCall = FALSE ;
+int FoundParms = FALSE ;
+int FoundLocalBranch = FALSE ;
+int AddedScope = 0 ;
+int FoundGlobalScope = 0 ;
+int FoundTable = FALSE ;
+int FoundVarSize = FALSE ;
+int FoundReadOnly = FALSE ;
+int StructScope = FALSE ;
+int AccFnScope = -1 ;
+int FoundAccFnDef = FALSE ;
+int MakeGraph = FALSE ;
+int InsideChareCode = FALSE ;
+int NewOpType = -1 ;
+char *NewType ;
+int FoundDeclarator=FALSE ; 
+int CurrentFnIsInline=FALSE ;
+int FoundChareEPPair=0 ;
+
+int ErrVal = FALSE ;
+
+char CoreName[MAX_NAME_LENGTH] ;
+int shouldprint=1 ;
+char prevtoken[MAX_TOKEN_SIZE] ;
+FILE *outfile, *headerfile, *graphfile ;
+
+extern int FoundLBrace, FoundRBrace ;
+
+extern char *CheckSendError() ;
+extern char *Mystrstr() ;
+extern EP *SearchEPList() ;
+extern char *Concat2() ;
+extern char *Concat3() ;
+
+#ifndef YYSTYPE
+#define YYSTYPE int
+#endif
+#include <stdio.h>
+
+#ifndef __cplusplus
+#ifndef __STDC__
+#define const
+#endif
+#endif
+
+
+
+#define        YYFINAL         1333
+#define        YYFLAG          -32768
+#define        YYNTBASE        123
+
+#define YYTRANSLATE(x) ((unsigned)(x) <= 353 ? yytranslate[x] : 340)
+
+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,   110,     2,     2,     2,   105,   107,     2,    99,
+   100,   103,   101,   116,   102,   113,   104,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,   118,   120,   111,
+   119,   112,   117,     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,
+   114,     2,   115,   106,     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,   121,   108,   122,   109,     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,    32,    33,    34,    35,
+    36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
+    46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
+    56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
+    66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
+    76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
+    86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
+    96,    97,    98
+};
+
+#if YYDEBUG != 0
+static const short yyprhs[] = {     0,
+     0,     2,     4,     6,     8,    10,    12,    15,    17,    19,
+    23,    25,    27,    29,    31,    33,    37,    39,    41,    43,
+    45,    47,    49,    52,    56,    60,    61,    64,    67,    69,
+    71,    73,    75,    77,    79,    81,    83,    85,    87,    89,
+    91,    93,    95,    97,    99,   101,   103,   105,   107,   109,
+   111,   113,   115,   117,   119,   121,   124,   127,   129,   131,
+   133,   134,   136,   138,   143,   147,   152,   153,   158,   159,
+   160,   166,   169,   172,   173,   181,   182,   187,   188,   196,
+   200,   204,   209,   214,   219,   221,   223,   228,   233,   238,
+   240,   244,   246,   249,   252,   255,   258,   261,   264,   267,
+   270,   275,   277,   283,   292,   295,   301,   303,   305,   307,
+   310,   314,   318,   319,   321,   324,   327,   330,   334,   339,
+   340,   343,   347,   349,   354,   356,   359,   365,   370,   372,
+   375,   377,   381,   385,   387,   391,   395,   399,   401,   405,
+   409,   411,   415,   419,   421,   425,   429,   433,   437,   439,
+   443,   447,   449,   453,   455,   459,   461,   465,   467,   471,
+   473,   477,   479,   485,   487,   491,   493,   495,   497,   499,
+   501,   503,   505,   507,   509,   511,   513,   515,   519,   521,
+   522,   524,   527,   530,   533,   536,   539,   542,   543,   548,
+   549,   554,   555,   561,   564,   567,   571,   572,   577,   578,
+   583,   584,   589,   590,   595,   596,   601,   602,   608,   611,
+   614,   617,   620,   623,   627,   629,   631,   636,   642,   644,
+   647,   650,   657,   665,   673,   681,   686,   692,   699,   707,
+   709,   712,   715,   720,   726,   733,   741,   743,   745,   747,
+   749,   751,   753,   755,   757,   760,   763,   765,   768,   770,
+   772,   774,   776,   778,   781,   784,   787,   790,   793,   796,
+   799,   802,   805,   808,   811,   814,   817,   820,   823,   825,
+   828,   831,   833,   836,   839,   842,   845,   848,   851,   854,
+   857,   860,   863,   866,   869,   872,   874,   876,   878,   880,
+   882,   884,   886,   888,   890,   892,   894,   896,   898,   900,
+   902,   904,   906,   908,   910,   912,   914,   916,   918,   920,
+   922,   924,   925,   926,   927,   936,   942,   945,   950,   954,
+   958,   959,   962,   965,   967,   971,   973,   977,   981,   982,
+   984,   985,   987,   989,   991,   993,   995,   997,   999,  1001,
+  1004,  1007,  1010,  1013,  1014,  1017,  1020,  1023,  1026,  1028,
+  1030,  1033,  1036,  1039,  1042,  1045,  1049,  1053,  1058,  1061,
+  1064,  1068,  1072,  1073,  1078,  1082,  1084,  1089,  1092,  1095,
+  1098,  1101,  1104,  1108,  1112,  1116,  1120,  1124,  1128,  1132,
+  1134,  1141,  1148,  1155,  1162,  1167,  1172,  1179,  1186,  1193,
+  1200,  1205,  1210,  1212,  1218,  1225,  1232,  1239,  1245,  1252,
+  1259,  1266,  1267,  1270,  1272,  1273,  1278,  1281,  1282,  1287,
+  1292,  1297,  1300,  1302,  1305,  1307,  1310,  1313,  1318,  1320,
+  1322,  1323,  1326,  1330,  1335,  1341,  1346,  1349,  1353,  1358,
+  1362,  1364,  1367,  1370,  1374,  1376,  1378,  1381,  1383,  1386,
+  1390,  1395,  1399,  1401,  1404,  1406,  1409,  1411,  1414,  1417,
+  1420,  1422,  1425,  1428,  1431,  1434,  1437,  1440,  1443,  1446,
+  1449,  1452,  1455,  1457,  1459,  1461,  1463,  1465,  1468,  1471,
+  1474,  1477,  1480,  1481,  1483,  1486,  1490,  1495,  1497,  1499,
+  1503,  1505,  1507,  1509,  1511,  1513,  1515,  1517,  1521,  1526,
+  1530,  1531,  1532,  1538,  1540,  1543,  1544,  1547,  1550,  1554,
+  1560,  1564,  1568,  1572,  1573,  1580,  1581,  1588,  1596,  1597,
+  1606,  1607,  1618,  1627,  1628,  1635,  1639,  1642,  1645,  1649,
+  1651,  1653,  1654,  1657,  1659,  1661,  1663,  1666,  1669,  1672,
+  1673,  1674,  1681,  1684,  1687,  1690,  1692,  1694,  1696,  1697,
+  1701,  1702,  1707,  1708,  1713,  1714,  1719,  1720,  1725,  1726,
+  1731,  1732,  1737,  1738,  1743,  1744,  1749,  1750,  1755,  1756,
+  1760,  1761,  1766,  1767,  1772,  1773,  1778,  1779,  1784,  1785,
+  1790,  1791,  1796,  1797,  1802,  1805,  1807,  1808,  1814,  1819,
+  1822,  1825,  1828,  1831,  1836,  1843,  1849,  1850,  1857,  1858,
+  1867,  1868,  1876,  1878,  1884,  1890,  1896,  1902,  1908,  1915,
+  1922,  1929,  1936,  1943,  1950,  1957,  1964,  1971,  1979,  1987,
+  1995,  2003,  2005,  2012,  2020,  2027,  2035,  2042,  2050,  2051,
+  2053,  2056,  2060,  2065,  2069,  2074,  2078,  2083,  2087,  2091,
+  2094,  2096,  2098,  2100,  2102,  2104,  2106,  2109,  2111,  2113,
+  2116,  2119,  2123,  2128,  2130,  2135,  2140,  2145,  2150,  2153,
+  2156,  2160,  2165,  2170,  2175,  2179,  2183,  2185,  2187,  2189,
+  2192,  2195,  2198,  2202,  2207,  2209,  2212,  2215,  2220,  2224,
+  2229,  2231,  2233,  2235,  2237,  2239,  2241,  2243,  2246,  2250,
+  2255,  2257,  2259,  2262,  2265,  2269,  2273,  2277,  2282,  2284,
+  2286,  2288,  2290,  2294,  2297,  2299,  2302,  2305,  2309,  2311,
+  2313,  2314,  2317,  2319,  2321,  2324,  2326,  2329,  2331,  2334,
+  2337,  2339,  2342,  2344,  2347,  2349,  2352,  2354,  2357,  2360,
+  2362
+};
+
+static const short yyrhs[] = {    69,
+     0,    68,     0,    71,     0,    72,     0,    70,     0,    67,
+     0,   124,    67,     0,   332,     0,   333,     0,    99,   125,
+   100,     0,   335,     0,   336,     0,    55,     0,   123,     0,
+   124,     0,    99,   165,   100,     0,   195,     0,   192,     0,
+   197,     0,   199,     0,    73,     0,   338,     0,    56,   130,
+     0,    56,   188,   129,     0,    56,   127,   129,     0,     0,
+   325,   129,     0,   324,   129,     0,   101,     0,   102,     0,
+   103,     0,   104,     0,   105,     0,   106,     0,   107,     0,
+   108,     0,   109,     0,   110,     0,   111,     0,   112,     0,
+    77,     0,    78,     0,    83,     0,    84,     0,    74,     0,
+    88,     0,   113,     0,    87,     0,    75,     0,    76,     0,
+    79,     0,    80,     0,    81,     0,    82,     0,   164,     0,
+    99,   100,     0,   114,   115,     0,    53,     0,    54,     0,
+   116,     0,     0,   188,     0,   126,     0,   132,   114,   165,
+   115,     0,   132,    99,   100,     0,   132,    99,   140,   100,
+     0,     0,   132,   133,   113,   139,     0,     0,     0,   132,
+   134,    74,   135,   139,     0,   132,    75,     0,   132,    76,
+     0,     0,   132,   114,    11,   115,   136,    74,   139,     0,
+     0,   132,     9,   137,   139,     0,     0,   132,   114,    10,
+   115,     9,   138,   139,     0,    73,    99,   100,     0,   338,
+    99,   100,     0,    73,    99,   140,   100,     0,   338,    99,
+   140,   100,     0,   199,    99,   163,   100,     0,   332,     0,
+   333,     0,   199,    86,   109,   199,     0,   187,    86,   109,
+   187,     0,   188,    86,   109,   188,     0,   163,     0,   140,
+   116,   163,     0,   132,     0,    75,   141,     0,    76,   141,
+     0,   324,   148,     0,   102,   148,     0,   101,   148,     0,
+   109,   148,     0,   110,   148,     0,    47,   141,     0,    47,
+    99,   241,   100,     0,   142,     0,   143,    99,   241,   100,
+   147,     0,   143,    99,   140,   100,    99,   241,   100,   147,
+     0,   143,   144,     0,   143,    99,   140,   100,   144,     0,
+    53,     0,    16,     0,    17,     0,   331,    53,     0,   188,
+   145,   147,     0,   127,   145,   147,     0,     0,   146,     0,
+   324,   145,     0,   325,   145,     0,   114,   115,     0,   114,
+   165,   115,     0,   146,   114,   165,   115,     0,     0,    99,
+   100,     0,    99,   140,   100,     0,   141,     0,    99,   241,
+   100,   148,     0,   148,     0,   150,   149,     0,   150,   114,
+   165,   115,   149,     0,   150,   114,   115,   149,     0,    54,
+     0,   331,    54,     0,   149,     0,   151,    87,   149,     0,
+   151,    88,   149,     0,   151,     0,   152,   103,   151,     0,
+   152,   104,   151,     0,   152,   105,   151,     0,   152,     0,
+   153,   101,   152,     0,   153,   102,   152,     0,   153,     0,
+   154,    77,   153,     0,   154,    78,   153,     0,   154,     0,
+   155,   111,   154,     0,   155,   112,   154,     0,   155,    79,
+   154,     0,   155,    80,   154,     0,   155,     0,   156,    81,
+   155,     0,   156,    82,   155,     0,   156,     0,   157,   107,
+   156,     0,   157,     0,   158,   106,   157,     0,   158,     0,
+   159,   108,   158,     0,   159,     0,   160,    83,   159,     0,
+   160,     0,   161,    84,   160,     0,   161,     0,   161,   117,
+   165,   118,   162,     0,   162,     0,   141,   164,   163,     0,
+   119,     0,    89,     0,    90,     0,    91,     0,    92,     0,
+    93,     0,    94,     0,    95,     0,    96,     0,    97,     0,
+    98,     0,   163,     0,   165,   116,   163,     0,   162,     0,
+     0,   165,     0,   173,   120,     0,   169,   120,     0,   193,
+   120,     0,   195,   120,     0,   194,   120,     0,     1,   120,
+     0,     0,   187,   313,   170,   242,     0,     0,   188,   313,
+   171,   242,     0,     0,   169,   116,   313,   172,   242,     0,
+   187,   183,     0,   188,   183,     0,   169,   116,   183,     0,
+     0,   185,   305,   174,   242,     0,     0,   186,   305,   175,
+   242,     0,     0,   199,   305,   176,   242,     0,     0,    73,
+   305,   177,   242,     0,     0,   338,   305,   178,   242,     0,
+     0,   173,   116,   305,   179,   242,     0,   185,   180,     0,
+   186,   180,     0,   199,   180,     0,    73,   180,     0,   338,
+   180,     0,   173,   116,   180,     0,   184,     0,   181,     0,
+   312,    99,   140,   100,     0,   312,   320,    99,   140,   100,
+     0,   182,     0,   324,   180,     0,   325,   180,     0,    99,
+   310,   100,    99,   140,   100,     0,    99,   310,   100,   320,
+    99,   140,   100,     0,    99,   312,   320,   100,    99,   140,
+   100,     0,    99,    73,   320,   100,    99,   140,   100,     0,
+    73,    99,   140,   100,     0,    73,   320,    99,   140,   100,
+     0,    99,   308,   100,    99,   140,   100,     0,    99,   308,
+   100,   320,    99,   140,   100,     0,   184,     0,   324,   183,
+     0,   325,   183,     0,   125,    99,   140,   100,     0,   125,
+   320,    99,   140,   100,     0,    99,   314,   100,    99,   140,
+   100,     0,    99,   314,   100,   320,    99,   140,   100,     0,
+   191,     0,   193,     0,   196,     0,   192,     0,   195,     0,
+   194,     0,   197,     0,   198,     0,   188,   198,     0,   187,
+   189,     0,   190,     0,   188,   190,     0,   198,     0,   190,
+     0,    34,     0,    48,     0,    14,     0,   187,   199,     0,
+   192,   198,     0,   199,   198,     0,   191,   189,     0,   191,
+   199,     0,   188,   199,     0,   199,   199,     0,   199,   190,
+     0,   192,   190,     0,   192,   199,     0,   187,   201,     0,
+   187,   200,     0,   195,   198,     0,   194,   198,     0,   193,
+   189,     0,   200,     0,   188,   200,     0,   194,   190,     0,
+   201,     0,   188,   201,     0,   195,   190,     0,   187,    73,
+     0,   187,   338,     0,   197,   198,     0,    73,   198,     0,
+   338,   198,     0,   196,   189,     0,   188,    73,     0,   188,
+   338,     0,    73,   190,     0,   338,   190,     0,   197,   190,
+     0,    31,     0,    29,     0,    51,     0,    18,     0,    28,
+     0,    62,     0,    65,     0,    63,     0,    64,     0,    61,
+     0,    20,     0,    30,     0,    36,     0,    24,     0,    35,
+     0,    40,     0,    38,     0,    39,     0,    19,     0,    43,
+     0,    37,     0,    44,     0,   202,     0,   227,     0,   206,
+     0,   228,     0,     0,     0,     0,   206,   207,   203,   121,
+   204,   214,   205,   122,     0,   213,   207,   121,   214,   122,
+     0,   213,   328,     0,   329,   327,   213,   328,     0,   329,
+   213,   328,     0,   327,   213,   328,     0,     0,   118,   208,
+     0,   118,     1,     0,   209,     0,   208,   116,   209,     0,
+   339,     0,    61,   211,   339,     0,   212,   210,   339,     0,
+     0,    61,     0,     0,   212,     0,    58,     0,    60,     0,
+    59,     0,     8,     0,    21,     0,    33,     0,    57,     0,
+     3,    57,     0,     5,    57,     0,    12,    57,     0,    13,
+    57,     0,     0,   214,   215,     0,   217,   120,     0,   216,
+   120,     0,   212,   118,     0,   271,     0,   295,     0,   195,
+   120,     0,   194,   120,     0,   313,   120,     0,   196,   120,
+     0,   193,   120,     0,   188,   313,   222,     0,   187,   313,
+   222,     0,   216,   116,   313,   222,     0,   188,   225,     0,
+   187,   225,     0,   216,   116,   225,     0,   186,   305,   222,
+     0,     0,   199,   305,   218,   222,     0,   338,   305,   222,
+     0,   219,     0,   217,   116,   305,   222,     0,   186,   223,
+     0,   199,   223,     0,    73,   223,     0,   338,   223,     0,
+   185,   223,     0,   217,   116,   223,     0,    73,   313,   222,
+     0,    73,   307,   222,     0,    73,   312,   222,     0,   185,
+   313,   222,     0,   185,   307,   222,     0,   185,   312,   222,
+     0,   220,     0,    73,   324,    99,   312,   100,   222,     0,
+    73,   325,    99,   312,   100,   222,     0,    73,   324,    99,
+    73,   100,   222,     0,    73,   325,    99,    73,   100,   222,
+     0,    73,   324,   310,   222,     0,    73,   325,   310,   222,
+     0,   185,   324,    99,   312,   100,   222,     0,   185,   325,
+    99,   312,   100,   222,     0,   185,   324,    99,    73,   100,
+   222,     0,   185,   325,    99,    73,   100,   222,     0,   185,
+   324,   310,   222,     0,   185,   325,   310,   222,     0,   221,
+     0,    73,    99,   310,   100,   222,     0,    73,    99,   312,
+   320,   100,   222,     0,    73,    99,    73,   320,   100,   222,
+     0,    73,    99,   310,   100,   320,   222,     0,   185,    99,
+   310,   100,   222,     0,   185,    99,   312,   320,   100,   222,
+     0,   185,    99,    73,   320,   100,   222,     0,   185,    99,
+   310,   100,   320,   222,     0,     0,   119,    71,     0,   225,
+     0,     0,    73,   224,   118,   166,     0,   118,   166,     0,
+     0,   313,   226,   118,   166,     0,   229,   121,   230,   122,
+     0,   228,   121,   230,   122,     0,   229,   328,     0,    27,
+     0,   331,    27,     0,   231,     0,   231,   116,     0,   232,
+   233,     0,   231,   116,   232,   233,     0,    66,     0,    73,
+     0,     0,   119,   166,     0,    99,   100,   131,     0,    99,
+   241,   100,   131,     0,    99,   241,   243,   100,   131,     0,
+    99,   236,   100,   131,     0,    99,   100,     0,    99,   241,
+   100,     0,    99,   241,   243,   100,     0,    99,   236,   100,
+     0,   238,     0,   238,   237,     0,   241,   237,     0,   241,
+   243,   237,     0,    85,     0,    85,     0,   116,    85,     0,
+   240,     0,   240,   243,     0,   241,   116,   239,     0,   241,
+   243,   116,   239,     0,   238,   116,   239,     0,   241,     0,
+   241,   243,     0,   240,     0,   240,   243,     0,   185,     0,
+   185,   319,     0,   185,   313,     0,   185,   307,     0,   187,
+     0,   187,   319,     0,   187,   313,     0,   186,   313,     0,
+   186,   307,     0,   199,   313,     0,   199,   307,     0,    73,
+   313,     0,    73,   307,     0,   338,   313,     0,   338,   307,
+     0,   188,   313,     0,   186,     0,   199,     0,    73,     0,
+   338,     0,   188,     0,   186,   319,     0,   199,   319,     0,
+    73,   319,     0,   338,   319,     0,   188,   319,     0,     0,
+   243,     0,   119,   244,     0,   121,   245,   122,     0,   121,
+   245,   116,   122,     0,   163,     0,   244,     0,   245,   116,
+   244,     0,   247,     0,   248,     0,   253,     0,   254,     0,
+   256,     0,   262,     0,   168,     0,   263,   118,   246,     0,
+    26,   166,   118,   246,     0,    45,   118,   246,     0,     0,
+     0,   121,   249,   252,   250,   122,     0,   168,     0,   251,
+   168,     0,     0,   252,   246,     0,   167,   120,     0,    50,
+   255,   246,     0,    50,   255,   246,    23,   246,     0,    25,
+   255,   246,     0,    99,   165,   100,     0,    99,     1,   100,
+     0,     0,    52,    99,   167,   100,   257,   246,     0,     0,
+    52,    99,     1,   100,   258,   246,     0,    49,   246,    52,
+    99,   165,   100,   120,     0,     0,    49,   246,    52,    99,
+     1,   100,   259,   120,     0,     0,    42,    99,   167,   120,
+   167,   120,   167,   100,   260,   246,     0,    42,    99,   168,
+   167,   120,   167,   100,   246,     0,     0,    42,    99,     1,
+   100,   261,   246,     0,    46,   263,   120,     0,    41,   120,
+     0,    22,   120,     0,    32,   167,   120,     0,    66,     0,
+    73,     0,     0,   264,   265,     0,   269,     0,   270,     0,
+   168,     0,   268,   269,     0,   268,   270,     0,   268,   168,
+     0,     0,     0,   268,   121,   266,   264,   267,   122,     0,
+    31,    67,     0,   313,   120,     0,   294,   120,     0,   271,
+     0,   282,     0,   292,     0,     0,   313,   272,   248,     0,
+     0,   185,   305,   273,   248,     0,     0,   185,     1,   274,
+   248,     0,     0,   186,   305,   275,   248,     0,     0,   199,
+   305,   276,   248,     0,     0,   199,     1,   277,   248,     0,
+     0,    73,   305,   278,   248,     0,     0,   338,   305,   279,
+   248,     0,     0,   187,   313,   280,   248,     0,     0,   188,
+   313,   281,   248,     0,     0,   316,   283,   291,     0,     0,
+   185,   316,   284,   291,     0,     0,   186,   316,   285,   291,
+     0,     0,   199,   316,   286,   291,     0,     0,    73,   316,
+   287,   291,     0,     0,   338,   316,   288,   291,     0,     0,
+   187,   316,   289,   291,     0,     0,   188,   316,   290,   291,
+     0,   251,   248,     0,   248,     0,     0,   338,   234,   302,
+   293,   248,     0,   185,   234,   302,   248,     0,   338,   234,
+     0,   185,   234,     0,   185,   296,     0,    73,   296,     0,
+    99,   100,   131,   120,     0,    99,   241,   243,   100,   131,
+   120,     0,    99,   236,   100,   131,   120,     0,     0,    99,
+   100,   131,   302,   297,   248,     0,     0,    99,   241,   243,
+   100,   131,   302,   298,   248,     0,     0,    99,   236,   100,
+   131,   302,   299,   248,     0,   300,     0,    99,   186,   100,
+   131,   120,     0,    99,   199,   100,   131,   120,     0,    99,
+    73,   100,   131,   120,     0,    99,   338,   100,   131,   120,
+     0,    99,   188,   100,   131,   120,     0,    99,   186,   319,
+   100,   131,   120,     0,    99,   199,   319,   100,   131,   120,
+     0,    99,   338,   319,   100,   131,   120,     0,    99,   188,
+   319,   100,   131,   120,     0,    99,   186,   100,   131,   302,
+   248,     0,    99,   199,   100,   131,   302,   248,     0,    99,
+    73,   100,   131,   302,   248,     0,    99,   338,   100,   131,
+   302,   248,     0,    99,   188,   100,   131,   302,   248,     0,
+    99,   186,   319,   100,   131,   302,   248,     0,    99,   199,
+   319,   100,   131,   302,   248,     0,    99,   338,   319,   100,
+   131,   302,   248,     0,    99,   188,   319,   100,   131,   302,
+   248,     0,   301,     0,    99,    73,   322,   100,   131,   120,
+     0,    99,    73,   322,   100,   131,   302,   248,     0,    99,
+    73,   323,   100,   131,   120,     0,    99,    73,   323,   100,
+   131,   302,   248,     0,    99,    73,   320,   100,   131,   120,
+     0,    99,    73,   320,   100,   131,   302,   248,     0,     0,
+   303,     0,   118,   304,     0,   303,   116,   304,     0,    66,
+    99,   140,   100,     0,    66,    99,   100,     0,    73,    99,
+   140,   100,     0,    73,    99,   100,     0,   338,    99,   140,
+   100,     0,   338,    99,   100,     0,    99,   140,   100,     0,
+    99,   100,     0,   313,     0,   306,     0,   310,     0,   312,
+     0,   307,     0,    73,     0,    73,   320,     0,   308,     0,
+   309,     0,   324,   307,     0,   325,   307,     0,    99,   308,
+   100,     0,    99,   308,   100,   320,     0,   311,     0,   324,
+    99,   312,   100,     0,   325,    99,   312,   100,     0,   324,
+    99,    73,   100,     0,   325,    99,    73,   100,     0,   324,
+   310,     0,   325,   310,     0,    99,   310,   100,     0,    99,
+   312,   320,   100,     0,    99,    73,   320,   100,     0,    99,
+   310,   100,   320,     0,    99,    73,   100,     0,    99,   312,
+   100,     0,   314,     0,   125,     0,   315,     0,   324,   313,
+     0,   325,   313,     0,   125,   320,     0,    99,   314,   100,
+     0,    99,   314,   100,   320,     0,   317,     0,   324,   316,
+     0,   325,   316,     0,   125,    99,   140,   100,     0,    99,
+   316,   100,     0,    99,   316,   100,   318,     0,   321,     0,
+   235,     0,   322,     0,   323,     0,   320,     0,   321,     0,
+   234,     0,   114,   115,     0,   114,   166,   115,     0,   321,
+   114,   166,   115,     0,   324,     0,   325,     0,   324,   319,
+     0,   325,   319,     0,    99,   322,   100,     0,    99,   323,
+   100,     0,    99,   320,   100,     0,    99,   322,   100,   320,
+     0,   103,     0,   107,     0,     6,     0,     7,     0,   327,
+   103,   131,     0,   324,   188,     0,   328,     0,   213,   328,
+     0,   326,    86,     0,   327,   326,    86,     0,    66,     0,
+    73,     0,     0,   330,    86,     0,   329,     0,   327,     0,
+   329,   327,     0,    66,     0,   327,    66,     0,   334,     0,
+   327,   334,     0,   109,    73,     0,   128,     0,   329,   332,
+     0,   332,     0,   329,   333,     0,   333,     0,   327,    73,
+     0,   337,     0,   329,   337,     0,   329,    73,     0,    73,
+     0,   338,     0
+};
+
+#endif
+
+#if YYDEBUG != 0
+static const short yyrline[] = { 0,
+   355,   357,   361,   362,   363,   366,   368,   407,   409,   410,
+   436,   438,   439,   442,   443,   444,   475,   477,   478,   480,
+   481,   482,   490,   495,   496,   510,   512,   513,   518,   520,
+   521,   522,   523,   524,   525,   526,   527,   528,   529,   530,
+   531,   532,   533,   534,   535,   536,   537,   538,   539,   540,
+   541,   542,   543,   544,   545,   546,   547,   548,   549,   550,
+   563,   565,   584,   586,   594,   600,   632,   632,   634,   635,
+   667,   685,   687,   692,   713,   718,   729,   744,   749,   771,
+   773,   775,   780,   785,   807,   820,   821,   823,   824,   827,
+   829,   835,   841,   842,   843,   850,   851,   852,   853,   854,
+   855,   858,   879,   884,   888,   891,   897,   899,   900,   901,
+   904,   908,   921,   923,   925,   927,   931,   933,   934,   937,
+   939,   940,   943,   945,   953,   955,   956,   957,   962,   964,
+   969,   971,   973,   977,   979,   981,   983,   987,   989,   991,
+   995,   997,   999,  1003,  1005,  1007,  1009,  1011,  1015,  1017,
+  1019,  1023,  1025,  1029,  1031,  1035,  1037,  1041,  1043,  1047,
+  1049,  1053,  1056,  1063,  1065,  1069,  1071,  1072,  1073,  1074,
+  1075,  1076,  1077,  1078,  1079,  1080,  1083,  1085,  1089,  1095,
+  1097,  1114,  1121,  1126,  1128,  1129,  1130,  1153,  1155,  1155,
+  1156,  1156,  1158,  1158,  1159,  1160,  1168,  1187,  1187,  1198,
+  1198,  1200,  1200,  1208,  1208,  1210,  1210,  1225,  1225,  1226,
+  1227,  1228,  1229,  1230,  1256,  1258,  1259,  1261,  1264,  1265,
+  1266,  1269,  1273,  1276,  1279,  1284,  1287,  1290,  1293,  1298,
+  1300,  1301,  1310,  1313,  1316,  1319,  1324,  1326,  1330,  1333,
+  1335,  1336,  1337,  1340,  1342,  1343,  1346,  1348,  1351,  1353,
+  1356,  1358,  1359,  1367,  1369,  1370,  1371,  1372,  1375,  1378,
+  1379,  1380,  1381,  1384,  1386,  1387,  1388,  1389,  1392,  1394,
+  1395,  1398,  1400,  1401,  1404,  1406,  1407,  1408,  1409,  1410,
+  1413,  1415,  1417,  1418,  1420,  1448,  1450,  1451,  1452,  1453,
+  1454,  1455,  1456,  1459,  1460,  1463,  1466,  1468,  1470,  1472,
+  1474,  1476,  1478,  1480,  1482,  1484,  1486,  1490,  1492,  1495,
+  1497,  1513,  1544,  1613,  1615,  1694,  1711,  1717,  1726,  1731,
+  1742,  1744,  1745,  1748,  1754,  1761,  1763,  1764,  1767,  1769,
+  1772,  1774,  1777,  1779,  1780,  1781,  1784,  1786,  1787,  1788,
+  1790,  1791,  1793,  1803,  1805,  1809,  1811,  1813,  1815,  1816,
+  1818,  1819,  1820,  1825,  1826,  1829,  1833,  1836,  1839,  1840,
+  1841,  1852,  1860,  1893,  1893,  1900,  1901,  1903,  1904,  1905,
+  1906,  1907,  1908,  1919,  1945,  1947,  1950,  1968,  1970,  1973,
+  1984,  1987,  1989,  1991,  1993,  1995,  1998,  2000,  2002,  2004,
+  2006,  2008,  2011,  2022,  2025,  2027,  2029,  2032,  2034,  2036,
+  2038,  2045,  2047,  2061,  2063,  2063,  2074,  2076,  2076,  2079,
+  2081,  2095,  2099,  2101,  2104,  2106,  2119,  2121,  2124,  2126,
+  2129,  2131,  2139,  2141,  2144,  2145,  2170,  2172,  2173,  2174,
+  2177,  2179,  2180,  2181,  2182,  2185,  2187,  2190,  2192,  2193,
+  2194,  2195,  2207,  2209,  2210,  2211,  2261,  2263,  2264,  2265,
+  2267,  2268,  2269,  2271,  2272,  2274,  2275,  2277,  2281,  2286,
+  2287,  2289,  2292,  2294,  2295,  2296,  2297,  2299,  2300,  2301,
+  2302,  2303,  2306,  2308,  2311,  2315,  2317,  2318,  2321,  2323,
+  2329,  2331,  2332,  2333,  2334,  2335,  2336,  2339,  2341,  2342,
+  2350,  2365,  2375,  2383,  2385,  2388,  2390,  2393,  2397,  2399,
+  2400,  2403,  2405,  2409,  2411,  2411,  2415,  2415,  2416,  2420,
+  2420,  2423,  2423,  2425,  2428,  2430,  2432,  2433,  2434,  2441,
+  2443,  2449,  2451,  2455,  2457,  2458,  2459,  2460,  2461,  2462,
+  2468,  2473,  2475,  2485,  2493,  2496,  2504,  2505,  2526,  2530,
+  2536,  2549,  2553,  2557,  2557,  2560,  2564,  2593,  2598,  2602,
+  2602,  2604,  2607,  2609,  2612,  2614,  2617,  2619,  2631,  2633,
+  2633,  2634,  2634,  2635,  2635,  2636,  2636,  2637,  2637,  2638,
+  2638,  2639,  2639,  2640,  2642,  2644,  2667,  2691,  2695,  2703,
+  2706,  2729,  2732,  2761,  2765,  2768,  2773,  2778,  2780,  2785,
+  2787,  2792,  2795,  2816,  2819,  2822,  2825,  2828,  2832,  2834,
+  2839,  2841,  2845,  2848,  2851,  2854,  2857,  2861,  2864,  2869,
+  2872,  2875,  2889,  2893,  2896,  2899,  2903,  2906,  2911,  2913,
+  2916,  2918,  2921,  2923,  2925,  2926,  2927,  2928,  2930,  2931,
+  2934,  2936,  2939,  2941,  2942,  2945,  2947,  2948,  2959,  2961,
+  2962,  2965,  2967,  2976,  2978,  2979,  2980,  2981,  2982,  2983,
+  2986,  2988,  2989,  2990,  2998,  3000,  3003,  3005,  3015,  3017,
+  3037,  3040,  3043,  3044,  3048,  3050,  3051,  3074,  3076,  3077,
+  3080,  3082,  3085,  3087,  3088,  3091,  3093,  3096,  3098,  3099,
+  3102,  3104,  3105,  3106,  3109,  3111,  3112,  3113,  3116,  3118,
+  3119,  3123,  3129,  3135,  3160,  3165,  3172,  3178,  3196,  3198,
+  3201,  3203,  3205,  3207,  3212,  3226,  3231,  3292,  3294,  3301,
+  3303,  3319,  3321,  3324,  3326,  3336,  3349,  3351,  3356,  3363,
+  3365
+};
+#endif
+
+
+#if YYDEBUG != 0 || defined (YYERROR_VERBOSE)
+
+static const char * const yytname[] = {   "$","error","$undefined.","CHARE",
+"BRANCHED","MESSAGE","HANDLE","GROUP","ENTRY","DOUBLEARROW","ALL_NODES","LOCAL",
+"ACCUMULATOR","MONOTONIC","READONLY","WRITEONCE","NEWCHARE","NEWGROUP","AUTO",
+"DOUBLE","INT","STRUCT","BREAK","ELSE","LONG","SWITCH","CASE","ENUM","REGISTER",
+"TYPEDEF","CHAR","EXTERN","RETURN","UNION","CONST","FLOAT","SHORT","UNSIGNED",
+"WCHAR_TOKEN","__WCHAR_TOKEN","PTRDIFF_TOKEN","CONTINUE","FOR","SIGNED","VOID",
+"DEFAULT","GOTO","SIZEOF","VOLATILE","DO","IF","STATIC","WHILE","NEW","DELETE",
+"THIS","OPERATOR","CLASS","PUBLIC","PROTECTED","PRIVATE","VIRTUAL","FRIEND",
+"INLINE","UNDERSCORE_INLINE","OVERLOAD","IDENTIFIER","STRINGliteral","FLOATINGconstant",
+"INTEGERconstant","CHARACTERconstant","OCTALconstant","HEXconstant","TYPEDEFname",
+"ARROW","ICR","DECR","LS","RS","LE","GE","EQ","NE","ANDAND","OROR","ELLIPSIS",
+"CLCL","DOTstar","ARROWstar","MULTassign","DIVassign","MODassign","PLUSassign",
+"MINUSassign","LSassign","RSassign","ANDassign","ERassign","ORassign","'('",
+"')'","'+'","'-'","'*'","'/'","'%'","'^'","'&'","'|'","'~'","'!'","'<'","'>'",
+"'.'","'['","']'","','","'?'","':'","'='","';'","'{'","'}'","constant","string_literal_list",
+"paren_identifier_declarator","primary_expression","non_elaborating_type_specifier",
+"operator_function_name","operator_function_ptr_opt","any_operator","type_qualifier_list_opt",
+"postfix_expression","@1","@2","@3","@4","@5","@6","member_name","argument_expression_list",
+"unary_expression","allocation_expression","global_opt_scope_opt_operator_new",
+"operator_new_type","operator_new_declarator_opt","operator_new_array_declarator",
+"operator_new_initializer_opt","cast_expression","deallocation_expression","global_opt_scope_opt_delete",
+"point_member_expression","multiplicative_expression","additive_expression",
+"shift_expression","relational_expression","equality_expression","AND_expression",
+"exclusive_OR_expression","inclusive_OR_expression","logical_AND_expression",
+"logical_OR_expression","conditional_expression","assignment_expression","assignment_operator",
+"comma_expression","constant_expression","comma_expression_opt","declaration",
+"default_declaring_list","@7","@8","@9","declaring_list","@10","@11","@12","@13",
+"@14","@15","constructed_declarator","constructed_paren_typedef_declarator",
+"constructed_parameter_typedef_declarator","constructed_identifier_declarator",
+"nonunary_constructed_identifier_declarator","declaration_specifier","type_specifier",
+"declaration_qualifier_list","type_qualifier_list","declaration_qualifier","type_qualifier",
+"basic_declaration_specifier","basic_type_specifier","sue_declaration_specifier",
+"sue_type_specifier_elaboration","sue_type_specifier","typedef_declaration_specifier",
+"typedef_type_specifier","storage_class","basic_type_name","elaborated_type_name_elaboration",
+"elaborated_type_name","aggregate_name_elaboration","@16","@17","@18","aggregate_name",
+"derivation_opt","derivation_list","parent_class","virtual_opt","access_specifier_opt",
+"access_specifier","aggregate_key","member_declaration_list_opt","member_declaration",
+"member_default_declaring_list","member_declaring_list","@19","member_conflict_declaring_item",
+"member_conflict_paren_declaring_item","member_conflict_paren_postfix_declaring_item",
+"member_pure_opt","bit_field_declarator","@20","bit_field_identifier_declarator",
+"@21","enum_name_elaboration","enum_name","global_opt_scope_opt_enum_key","enumerator_list",
+"enumerator_list_no_trailing_comma","enumerator_name","enumerator_value_opt",
+"parameter_type_list","old_parameter_type_list","named_parameter_type_list",
+"comma_opt_ellipsis","parameter_list","parameter_declaration","non_casting_parameter_declaration",
+"type_name","initializer_opt","initializer","initializer_group","initializer_list",
+"statement","labeled_statement","compound_statement","@22","@23","declaration_list",
+"statement_list_opt","expression_statement","selection_statement","if_cond",
+"iteration_statement","@24","@25","@26","@27","@28","jump_statement","label",
+"translation_unit","external_definition","@29","@30","linkage_specifier","function_declaration",
+"function_definition","new_function_definition","@31","@32","@33","@34","@35",
+"@36","@37","@38","@39","@40","old_function_definition","@41","@42","@43","@44",
+"@45","@46","@47","@48","old_function_body","constructor_function_definition",
+"@49","constructor_function_declaration","constructor_function_in_class","constructor_parameter_list_and_body",
+"@50","@51","@52","constructor_conflicting_parameter_list_and_body","constructor_conflicting_typedef_declarator",
+"constructor_init_list_opt","constructor_init_list","constructor_init","declarator",
+"typedef_declarator","parameter_typedef_declarator","clean_typedef_declarator",
+"clean_postfix_typedef_declarator","paren_typedef_declarator","postfix_paren_typedef_declarator",
+"simple_paren_typedef_declarator","identifier_declarator","unary_identifier_declarator",
+"postfix_identifier_declarator","old_function_declarator","postfix_old_function_declarator",
+"old_postfixing_abstract_declarator","abstract_declarator","postfixing_abstract_declarator",
+"array_abstract_declarator","unary_abstract_declarator","postfix_abstract_declarator",
+"asterisk_or_ampersand","unary_modifier","scoping_name","scope","tag_name","global_scope",
+"@53","global_or_scope","scope_opt_identifier","scope_opt_complex_name","complex_name",
+"global_opt_scope_opt_identifier","global_opt_scope_opt_complex_name","scoped_typedefname",
+"global_or_scoped_typedefname","global_opt_scope_opt_typedefname", NULL
+};
+#endif
+
+static const short yyr1[] = {     0,
+   123,   123,   123,   123,   123,   124,   124,   125,   125,   125,
+   126,   126,   126,   126,   126,   126,   127,   127,   127,   127,
+   127,   127,   128,   128,   128,   129,   129,   129,   130,   130,
+   130,   130,   130,   130,   130,   130,   130,   130,   130,   130,
+   130,   130,   130,   130,   130,   130,   130,   130,   130,   130,
+   130,   130,   130,   130,   130,   130,   130,   130,   130,   130,
+   131,   131,   132,   132,   132,   132,   133,   132,   134,   135,
+   132,   132,   132,   136,   132,   137,   132,   138,   132,   132,
+   132,   132,   132,   132,   139,   139,   139,   139,   139,   140,
+   140,   141,   141,   141,   141,   141,   141,   141,   141,   141,
+   141,   141,   142,   142,   142,   142,   143,   143,   143,   143,
+   144,   144,   145,   145,   145,   145,   146,   146,   146,   147,
+   147,   147,   148,   148,   149,   149,   149,   149,   150,   150,
+   151,   151,   151,   152,   152,   152,   152,   153,   153,   153,
+   154,   154,   154,   155,   155,   155,   155,   155,   156,   156,
+   156,   157,   157,   158,   158,   159,   159,   160,   160,   161,
+   161,   162,   162,   163,   163,   164,   164,   164,   164,   164,
+   164,   164,   164,   164,   164,   164,   165,   165,   166,   167,
+   167,   168,   168,   168,   168,   168,   168,   170,   169,   171,
+   169,   172,   169,   169,   169,   169,   174,   173,   175,   173,
+   176,   173,   177,   173,   178,   173,   179,   173,   173,   173,
+   173,   173,   173,   173,   180,   180,   180,   180,   180,   180,
+   180,   181,   181,   181,   181,   182,   182,   182,   182,   183,
+   183,   183,   184,   184,   184,   184,   185,   185,   185,   186,
+   186,   186,   186,   187,   187,   187,   188,   188,   189,   189,
+   190,   190,   190,   191,   191,   191,   191,   191,   192,   192,
+   192,   192,   192,   193,   193,   193,   193,   193,   194,   194,
+   194,   195,   195,   195,   196,   196,   196,   196,   196,   196,
+   197,   197,   197,   197,   197,   198,   198,   198,   198,   198,
+   198,   198,   198,   198,   198,   199,   199,   199,   199,   199,
+   199,   199,   199,   199,   199,   199,   199,   200,   200,   201,
+   201,   203,   204,   205,   202,   202,   206,   206,   206,   206,
+   207,   207,   207,   208,   208,   209,   209,   209,   210,   210,
+   211,   211,   212,   212,   212,   212,   213,   213,   213,   213,
+   213,   213,   213,   214,   214,   215,   215,   215,   215,   215,
+   215,   215,   215,   215,   215,   216,   216,   216,   216,   216,
+   216,   217,   218,   217,   217,   217,   217,   217,   217,   217,
+   217,   217,   217,   219,   219,   219,   219,   219,   219,   219,
+   220,   220,   220,   220,   220,   220,   220,   220,   220,   220,
+   220,   220,   220,   221,   221,   221,   221,   221,   221,   221,
+   221,   222,   222,   223,   224,   223,   225,   226,   225,   227,
+   227,   228,   229,   229,   230,   230,   231,   231,   232,   232,
+   233,   233,   234,   234,   234,   234,   235,   235,   235,   235,
+   236,   236,   236,   236,   236,   237,   237,   238,   238,   238,
+   238,   238,   239,   239,   239,   239,   240,   240,   240,   240,
+   240,   240,   240,   240,   240,   240,   240,   240,   240,   240,
+   240,   240,   241,   241,   241,   241,   241,   241,   241,   241,
+   241,   241,   242,   242,   243,   244,   244,   244,   245,   245,
+   246,   246,   246,   246,   246,   246,   246,   247,   247,   247,
+   249,   250,   248,   251,   251,   252,   252,   253,   254,   254,
+   254,   255,   255,   257,   256,   258,   256,   256,   259,   256,
+   260,   256,   256,   261,   256,   262,   262,   262,   262,   263,
+   263,   264,   264,   265,   265,   265,   265,   265,   265,   266,
+   267,   265,   268,   269,   269,   270,   270,   270,   272,   271,
+   273,   271,   274,   271,   275,   271,   276,   271,   277,   271,
+   278,   271,   279,   271,   280,   271,   281,   271,   283,   282,
+   284,   282,   285,   282,   286,   282,   287,   282,   288,   282,
+   289,   282,   290,   282,   291,   291,   293,   292,   292,   294,
+   294,   295,   295,   296,   296,   296,   297,   296,   298,   296,
+   299,   296,   296,   300,   300,   300,   300,   300,   300,   300,
+   300,   300,   300,   300,   300,   300,   300,   300,   300,   300,
+   300,   300,   301,   301,   301,   301,   301,   301,   302,   302,
+   303,   303,   304,   304,   304,   304,   304,   304,   304,   304,
+   305,   305,   306,   306,   306,   307,   307,   307,   308,   308,
+   308,   309,   309,   310,   310,   310,   310,   310,   310,   310,
+   311,   311,   311,   311,   312,   312,   313,   313,   314,   314,
+   314,   315,   315,   315,   316,   316,   316,   317,   317,   317,
+   318,   318,   319,   319,   319,   320,   320,   321,   321,   321,
+   322,   322,   322,   322,   323,   323,   323,   323,   324,   324,
+   324,   324,   325,   325,   326,   326,   327,   327,   328,   328,
+   330,   329,   331,   331,   331,   332,   332,   333,   333,   334,
+   334,   335,   335,   336,   336,   337,   338,   338,   338,   339,
+   339
+};
+
+static const short yyr2[] = {     0,
+     1,     1,     1,     1,     1,     1,     2,     1,     1,     3,
+     1,     1,     1,     1,     1,     3,     1,     1,     1,     1,
+     1,     1,     2,     3,     3,     0,     2,     2,     1,     1,
+     1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+     1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+     1,     1,     1,     1,     1,     2,     2,     1,     1,     1,
+     0,     1,     1,     4,     3,     4,     0,     4,     0,     0,
+     5,     2,     2,     0,     7,     0,     4,     0,     7,     3,
+     3,     4,     4,     4,     1,     1,     4,     4,     4,     1,
+     3,     1,     2,     2,     2,     2,     2,     2,     2,     2,
+     4,     1,     5,     8,     2,     5,     1,     1,     1,     2,
+     3,     3,     0,     1,     2,     2,     2,     3,     4,     0,
+     2,     3,     1,     4,     1,     2,     5,     4,     1,     2,
+     1,     3,     3,     1,     3,     3,     3,     1,     3,     3,
+     1,     3,     3,     1,     3,     3,     3,     3,     1,     3,
+     3,     1,     3,     1,     3,     1,     3,     1,     3,     1,
+     3,     1,     5,     1,     3,     1,     1,     1,     1,     1,
+     1,     1,     1,     1,     1,     1,     1,     3,     1,     0,
+     1,     2,     2,     2,     2,     2,     2,     0,     4,     0,
+     4,     0,     5,     2,     2,     3,     0,     4,     0,     4,
+     0,     4,     0,     4,     0,     4,     0,     5,     2,     2,
+     2,     2,     2,     3,     1,     1,     4,     5,     1,     2,
+     2,     6,     7,     7,     7,     4,     5,     6,     7,     1,
+     2,     2,     4,     5,     6,     7,     1,     1,     1,     1,
+     1,     1,     1,     1,     2,     2,     1,     2,     1,     1,
+     1,     1,     1,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     2,     2,     2,     1,     2,
+     2,     1,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     2,     2,     2,     1,     1,     1,     1,     1,
+     1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+     1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+     1,     0,     0,     0,     8,     5,     2,     4,     3,     3,
+     0,     2,     2,     1,     3,     1,     3,     3,     0,     1,
+     0,     1,     1,     1,     1,     1,     1,     1,     1,     2,
+     2,     2,     2,     0,     2,     2,     2,     2,     1,     1,
+     2,     2,     2,     2,     2,     3,     3,     4,     2,     2,
+     3,     3,     0,     4,     3,     1,     4,     2,     2,     2,
+     2,     2,     3,     3,     3,     3,     3,     3,     3,     1,
+     6,     6,     6,     6,     4,     4,     6,     6,     6,     6,
+     4,     4,     1,     5,     6,     6,     6,     5,     6,     6,
+     6,     0,     2,     1,     0,     4,     2,     0,     4,     4,
+     4,     2,     1,     2,     1,     2,     2,     4,     1,     1,
+     0,     2,     3,     4,     5,     4,     2,     3,     4,     3,
+     1,     2,     2,     3,     1,     1,     2,     1,     2,     3,
+     4,     3,     1,     2,     1,     2,     1,     2,     2,     2,
+     1,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+     2,     2,     1,     1,     1,     1,     1,     2,     2,     2,
+     2,     2,     0,     1,     2,     3,     4,     1,     1,     3,
+     1,     1,     1,     1,     1,     1,     1,     3,     4,     3,
+     0,     0,     5,     1,     2,     0,     2,     2,     3,     5,
+     3,     3,     3,     0,     6,     0,     6,     7,     0,     8,
+     0,    10,     8,     0,     6,     3,     2,     2,     3,     1,
+     1,     0,     2,     1,     1,     1,     2,     2,     2,     0,
+     0,     6,     2,     2,     2,     1,     1,     1,     0,     3,
+     0,     4,     0,     4,     0,     4,     0,     4,     0,     4,
+     0,     4,     0,     4,     0,     4,     0,     4,     0,     3,
+     0,     4,     0,     4,     0,     4,     0,     4,     0,     4,
+     0,     4,     0,     4,     2,     1,     0,     5,     4,     2,
+     2,     2,     2,     4,     6,     5,     0,     6,     0,     8,
+     0,     7,     1,     5,     5,     5,     5,     5,     6,     6,
+     6,     6,     6,     6,     6,     6,     6,     7,     7,     7,
+     7,     1,     6,     7,     6,     7,     6,     7,     0,     1,
+     2,     3,     4,     3,     4,     3,     4,     3,     3,     2,
+     1,     1,     1,     1,     1,     1,     2,     1,     1,     2,
+     2,     3,     4,     1,     4,     4,     4,     4,     2,     2,
+     3,     4,     4,     4,     3,     3,     1,     1,     1,     2,
+     2,     2,     3,     4,     1,     2,     2,     4,     3,     4,
+     1,     1,     1,     1,     1,     1,     1,     2,     3,     4,
+     1,     1,     2,     2,     3,     3,     3,     4,     1,     1,
+     1,     1,     3,     2,     1,     2,     2,     3,     1,     1,
+     0,     2,     1,     1,     2,     1,     2,     1,     2,     2,
+     1,     2,     1,     2,     1,     2,     1,     2,     2,     1,
+     1
+};
+
+static const short yydefact[] = {   522,
+     0,     0,     0,     0,   691,   692,     0,     0,   253,   289,
+   304,   296,   337,   299,   413,   290,   287,   297,   286,   338,
+   251,   300,   298,   306,   302,   303,   301,   305,   307,   252,
+   288,   701,   339,   295,   291,   293,   294,   292,   706,   700,
+     0,   689,   690,     0,   658,   711,   526,     0,     0,     0,
+     0,   701,   701,   247,   237,   240,   238,   242,   241,   239,
+   243,   244,     0,   269,   272,   308,   310,   321,   309,   311,
+     0,   523,     0,   524,   525,   536,   537,   538,     0,   539,
+   657,   659,   559,   665,     0,     0,     0,   704,   695,   703,
+     0,     0,     8,     9,   708,   717,     0,   187,   340,   341,
+   342,   343,   533,    58,    59,   699,    21,    45,    49,    50,
+    41,    42,    51,    52,    53,    54,    43,    44,    48,    46,
+   167,   168,   169,   170,   171,   172,   173,   174,   175,   176,
+     0,    29,    30,    31,    32,    33,    34,    35,    36,    37,
+    38,    39,    40,    47,     0,    60,   166,    26,    23,    55,
+    26,    18,    17,    19,    20,   310,     0,   311,     0,   704,
+    22,   286,   636,     0,   658,   212,   216,   219,   215,   283,
+   278,     0,   203,   632,   635,   638,   639,   633,   644,   634,
+   631,   567,     0,     0,     0,   700,     0,     0,     0,   710,
+   701,   701,   677,   662,   676,     0,   183,     0,   182,   543,
+   701,   209,   581,   197,   561,   210,   199,   563,   275,     0,
+   194,   230,   246,   250,   249,   254,   265,   264,   188,   571,
+     0,     0,   276,   281,   195,   248,   245,   259,   270,   273,
+   190,   573,   282,   257,   258,   262,   255,   263,   184,   268,
+   186,   271,   267,   185,   274,   266,   280,   285,   277,   549,
+   211,   261,   256,   260,   201,   565,     0,   312,     0,   317,
+     0,     0,   412,   530,   529,   527,   528,   535,   534,     0,
+     0,   694,   660,   666,   661,   667,   697,   707,   716,    61,
+     0,     0,   709,   719,     0,   705,   718,   702,   414,   213,
+   284,   279,   580,   205,   569,    56,    57,    25,    26,    26,
+     0,    24,   704,   701,   637,   700,     0,     0,     0,     0,
+     0,     0,     0,   701,   662,   696,   473,     0,   701,     0,
+     0,     0,   220,   640,   649,     0,     0,   221,   641,   650,
+    10,   663,   669,   108,   109,   701,   107,   129,    13,     6,
+     2,     1,     5,     3,     4,   465,   701,   701,   435,   701,
+    61,   701,   701,   701,   701,    14,    15,    63,    92,     0,
+   123,   102,   701,   125,   131,   701,   134,   138,   141,   144,
+   149,   152,   154,   156,   158,   160,   162,   164,    90,   447,
+   463,   451,   467,   238,   242,   241,   464,     0,   431,   438,
+     0,   701,   704,   703,     0,   713,   715,    11,    12,   466,
+   700,   678,   123,   179,     0,     0,   704,   703,     0,     0,
+   701,     0,   658,   196,   192,     0,     0,     0,   214,   207,
+     0,     0,     0,   465,   464,   466,   701,     0,   620,   473,
+     0,     0,   473,     0,     0,   473,     0,     0,   231,   232,
+   473,     0,     0,     0,   473,     0,     0,   323,   336,   333,
+   335,   334,   331,   720,   322,   324,   329,     0,     0,   721,
+   326,     0,   344,   419,   420,     0,   415,   421,     0,   522,
+   491,   540,   700,   494,     0,     0,   701,   701,     0,   576,
+     0,   560,     0,   693,    62,   320,   698,   319,     0,   577,
+   473,     0,     0,    28,    27,     0,   701,   701,   655,     0,
+   700,     0,     0,     0,   642,   651,   656,     0,   663,   636,
+     0,     0,     0,   701,   701,   204,   474,   552,     0,   701,
+   568,   700,     0,   700,     0,   664,   701,   672,   670,   671,
+   701,   100,     0,   701,   658,   459,   458,   470,   675,   673,
+   674,   681,   682,   701,    93,    94,   465,   177,     0,   463,
+   467,   240,   242,   241,   243,   464,     0,   466,   423,    97,
+    96,   710,    98,    99,     7,    76,    72,    73,   701,   701,
+     0,     0,   668,   701,   701,   701,   113,   105,   113,   701,
+   126,   701,   701,   701,   701,   701,   701,   701,   701,   701,
+   701,   701,   701,   701,   701,   701,   701,   701,   701,   701,
+   701,   701,   701,   450,   449,   448,   455,   454,   468,   701,
+   453,   452,   681,   682,   462,   472,   701,   457,   456,   469,
+    61,   436,   701,   432,   439,    61,   701,   433,     0,    95,
+   705,   712,   714,   110,   130,   701,   461,   460,   471,   701,
+   679,   701,   705,   701,     0,     0,     0,     0,     0,   701,
+   473,     0,     0,     0,   473,     0,     0,   544,   675,   699,
+   700,   701,   621,     0,   579,   701,   198,   542,   562,   200,
+   546,   564,   189,   556,   572,   191,   558,   574,   550,   202,
+   548,   566,   701,   332,   701,   330,   701,   313,   701,   411,
+   416,   701,   417,   410,     0,   496,   203,   197,   199,   188,
+   190,   201,   495,   575,   205,   318,     0,   206,   554,   570,
+   226,     0,   465,   653,     0,   642,   651,     0,   701,   643,
+   701,   654,   652,   701,   664,   637,   700,     0,   700,     0,
+   668,     0,   701,   478,   475,   217,     0,   647,   645,   648,
+   646,   427,     0,     0,     0,   701,    80,     0,     0,     0,
+     0,   681,   713,   715,   683,   684,   701,   681,   682,    16,
+   701,   701,   701,   701,   701,     0,    65,     0,     0,     0,
+     0,     0,    70,    91,   165,     0,     0,   701,   120,   114,
+   113,   113,   120,   701,     0,   132,   133,   135,   136,   137,
+   139,   140,   142,   143,   147,   148,   145,   146,   150,   151,
+   153,   155,   157,   159,   161,     0,     0,   426,   437,   442,
+   445,   443,   424,   440,    61,   701,   434,    81,     0,    80,
+    81,   680,     0,   193,     0,     0,   208,   701,   701,   630,
+     0,   701,   622,   327,   325,   328,   344,   700,   316,     0,
+     0,   701,   701,   238,   242,   241,   239,     0,     0,   345,
+     0,     0,   366,   380,   393,   349,   350,   539,     0,   421,
+   422,     0,     0,   578,   227,   701,   653,   643,   654,   652,
+     0,   701,     0,   701,   701,     0,   701,   647,   645,   648,
+   646,   234,   479,     0,   218,   430,   428,     0,   101,     0,
+    82,   687,   685,   686,   636,   704,   701,   681,   178,   124,
+    77,     0,     0,     0,     0,    85,    86,    66,     0,    74,
+    64,    68,     0,   701,   120,   117,     0,   701,   112,   701,
+   115,   116,   111,   128,   701,   701,    84,   446,   444,   425,
+   441,    83,   233,   624,     0,   626,     0,   629,   628,     0,
+   314,   636,   701,   701,   370,   404,   583,   593,   612,   551,
+   402,   402,   402,     0,     0,   701,   372,   582,   541,   402,
+   402,   402,     0,     0,   368,   402,   634,   631,   360,   402,
+   359,   402,   355,   352,   351,   354,   369,   363,   348,     0,
+   347,     0,   346,   353,   371,   402,   418,   532,     0,     0,
+   701,   180,     0,     0,     0,     0,     0,     0,     0,   706,
+   521,   181,     0,   487,     0,   497,   481,   482,     0,   483,
+   484,   485,   486,     0,     0,     0,   228,     0,   222,     0,
+     0,   235,     0,   701,   476,   429,    61,   688,   701,     0,
+     0,     0,    78,     0,    71,   701,   106,   103,   118,   121,
+     0,     0,   127,   163,   623,   625,   627,     0,     0,   465,
+    61,   463,   467,   464,     0,     0,     0,     0,   466,   407,
+     0,   375,   376,   374,     0,     0,   402,     0,   402,   465,
+     0,     0,   378,   379,   377,     0,   402,     0,   402,   362,
+   357,   356,   402,   361,   402,   373,   402,   365,   518,     0,
+     0,     0,     0,   517,     0,     0,   520,   521,     0,     0,
+     0,     0,   701,   498,   701,   493,     0,   701,   225,   229,
+   223,   224,   236,   477,   480,     0,     0,     0,     0,     0,
+   465,   464,     0,   466,   122,   119,   315,   701,    61,   675,
+   673,   674,   619,    61,   468,    61,   472,    61,   469,    61,
+     0,   402,     0,    61,   471,   403,   701,   700,     0,   385,
+   700,     0,   386,   675,   402,     0,   700,     0,   391,   700,
+     0,   392,   364,   358,   367,     0,     0,   501,     0,   519,
+     0,   700,     0,   180,   490,   516,     0,   499,     0,     0,
+   700,   701,   701,   488,    88,     0,    89,    87,    79,    75,
+   120,   406,   619,    61,    61,    61,   584,   587,   619,    61,
+   619,    61,   619,    61,   619,    61,   394,   402,   402,   619,
+    61,   409,   402,   402,   402,   402,    61,   398,   402,   402,
+   402,   402,   402,   402,   503,   502,   489,   514,   180,     0,
+     0,     0,   506,   504,   700,   701,   104,   596,     0,   619,
+   396,   619,   619,     0,   594,     0,   619,   598,     0,   619,
+   595,     0,   619,   586,   591,   619,   397,   395,   597,     0,
+   619,   383,   381,   384,   382,   400,   401,   399,   389,   387,
+   390,   388,     0,     0,   180,     0,     0,   500,     0,     0,
+     0,   700,   605,   617,     0,   613,     0,   615,     0,   588,
+   603,   599,     0,   607,   602,     0,   604,   600,     0,     0,
+   585,   589,   606,   601,     0,   515,   180,     0,   509,     0,
+   507,   505,   618,   614,   616,   608,   611,   609,   592,     0,
+   610,     0,     0,     0,   508,   590,   511,   513,   510,     0,
+   512,     0,     0
+};
+
+static const short yydefgoto[] = {   356,
+   357,   535,   358,   577,    46,   298,   149,   559,   359,   571,
+   572,   913,  1034,   766,  1119,   901,   748,   361,   362,   363,
+   578,   779,   780,   919,   364,   365,   366,   367,   368,   369,
+   370,   371,   372,   373,   374,   375,   376,   377,   378,   548,
+   150,  1002,   405,  1003,  1004,    48,   436,   441,   651,    49,
+   430,   433,   445,   317,   491,   655,   166,   167,   168,   211,
+   169,   380,   381,   382,   383,   213,    54,    55,    56,   384,
+   385,   386,    60,    61,    62,   406,    64,    65,    66,   462,
+   837,  1048,    67,   258,   455,   456,   687,   683,   457,   172,
+   689,   850,   851,   852,  1083,   853,   854,   855,  1062,   945,
+  1049,   946,  1065,    69,    70,    71,   466,   467,   468,   693,
+   193,   528,   388,   628,   389,   810,   390,   391,   516,   517,
+   735,   884,  1006,  1007,  1008,   696,  1009,   481,   863,  1010,
+  1011,  1091,  1012,  1280,  1279,  1324,  1330,  1273,  1013,  1014,
+     1,    72,   470,   862,    73,    74,    75,    76,   270,   431,
+   423,   434,   446,   444,   318,   492,   437,   442,    77,   271,
+   432,   435,   447,   321,   493,   438,   443,   482,    78,   707,
+    79,   857,   947,  1244,  1320,  1300,   948,   949,   428,   429,
+   663,   697,   174,   175,   176,   177,   178,   179,   180,   181,
+    81,    82,   189,    84,   529,   538,   539,   195,   540,   541,
+   392,   654,    87,   185,    89,   408,    91,   409,   396,   397,
+    95,   398,   399,    96,   410,   461
+};
+
+static const short yypact[] = {-32768,
+ 12729,   -66,    25,    65,-32768,-32768,   136,   179,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   157,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,  9452,-32768,-32768,-32768,-32768,-32768,-32768,   228, 16674,
+  3313,-32768,-32768,   180,   159,-32768,-32768,   -35,   186,  1391,
+  5099, 16023, 16122,-32768,  8650,  8650,  1696,  2455,  2648,  3651,
+  3651,-32768, 12828,-32768,-32768,-32768,    84,   -17,-32768,   198,
+   -16,-32768,  6722,-32768,-32768,-32768,-32768,-32768,   237,   258,
+-32768,-32768,-32768,-32768,  5893,  3313,   300,    83,-32768,  1801,
+   327,   317,-32768,-32768,-32768,-32768, 16738,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,    31,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+   332,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,   338,-32768,-32768,  2624,-32768,-32768,
+ 17173,  3602,    66,    66,  3602,-32768,    68,-32768,    68,  1996,
+    66,-32768,   153,  5516,   183,-32768,-32768,-32768,-32768,-32768,
+-32768,    68,   339,-32768,-32768,-32768,-32768,-32768,-32768,   193,
+-32768,-32768,  5976,  6158,  1318,-32768,   306,   366,   371,-32768,
+ 12927,  9781,-32768,-32768,   433,  6312,-32768,  6528,-32768,-32768,
+ 15726,-32768,   170,   364,-32768,-32768,   377,-32768,   417,  3313,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   440,-32768,
+  6089,  7885,-32768,   417,-32768,-32768,-32768,-32768,-32768,-32768,
+   483,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,   487,-32768,  4799,-32768,   490,   539,
+   137,   137,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   499,
+  6411,    66,-32768,-32768,-32768,-32768,-32768,   228,   417,    66,
+    68,   543,-32768,   417,    68,  1996,-32768,-32768,-32768,-32768,
+-32768,-32768,   170,   513,-32768,-32768,-32768,-32768,  4663,  2624,
+   709,-32768,  1012, 12927,   551,   437,  7914,   556,   563,   463,
+   566,  7500, 10969, 12927,   570,-32768,   554,   499, 12927,   577,
+  6411, 12483,-32768,-32768,-32768,   193, 12593,-32768,-32768,-32768,
+-32768,   350,   425,-32768,-32768, 15195,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768, 11958, 15303, 15303,-32768, 13143,
+    66, 15411, 15411, 15519, 15411,-32768,   618,-32768,   531,   -73,
+  2049,-32768, 17334,-32768,-32768, 10994,    74,   632,   199,   322,
+   167,   343,   606,   591,   620,   636,    29,-32768,-32768,  2346,
+  2346,  7739, 11401,  3651,  3651,  3651, 11698,   644,   -43,   554,
+   -32, 15411,  1304,  1515,   144,-32768,-32768,-32768,-32768, 12150,
+   660,-32768,-32768,-32768,   664,   685,  1304,  1515,   488,   689,
+ 14979, 14090,   445,-32768,-32768,  7613,  6312, 14198,-32768,-32768,
+  8042, 14306,   499,  7107, 11797, 12214,  1167,   499,   679,   554,
+   499,  6411,   554,   499,  6411,   554,   499,  6411,-32768,-32768,
+   554,   499,  6411,   499,   554,   499,  6411,-32768,-32768,-32768,
+-32768,-32768,    52,   417,   682,-32768,   744,  1996,  1801,-32768,
+-32768,   687,-32768,-32768,-32768,   696,   713,   706,   737,-32768,
+-32768,-32768, 16802,-32768,  6528,  6528, 16221, 16320, 16419,-32768,
+  6411,-32768, 16802,-32768,    66,   539,-32768,   539,    68,-32768,
+   554,   499,  6411,-32768,-32768,   -33, 14979,  8859,-32768,   772,
+   437,   775,   785,   463,   532,   584,-32768,   791,   588,   191,
+ 14414, 14522,     2, 14979,  9250,-32768,-32768,-32768,    21, 14979,
+-32768,   466,   518,   528,   537,-32768, 17265,-32768,-32768,   433,
+ 13143,-32768,   841, 10114,   350,-32768,-32768,-32768,-32768,-32768,
+-32768,  2547,  2346, 14979,-32768,-32768,  2408,-32768,    48,  2263,
+ 11896,  3602,    66,    66,    66,  5050,   799,  4875,-32768,-32768,
+-32768,    45,-32768,-32768,-32768,-32768,-32768,-32768, 13791, 13575,
+   796,   849,-32768, 14979, 14979, 13143,  1129,-32768,  7300,  9892,
+-32768, 14979, 14979, 14979, 14979, 14979, 14979, 14979, 14979, 14979,
+ 14979, 14979, 14979, 14979, 14979, 14979, 14979, 14979, 14979, 14979,
+ 14979, 14979, 11104,-32768,-32768,-32768,-32768,-32768,-32768, 11203,
+-32768,-32768,  3234,  3750,-32768,-32768, 10224,-32768,-32768,-32768,
+    66,-32768, 17432,-32768,-32768,    66, 17432,-32768,    51,-32768,
+  1304,-32768,-32768,-32768,-32768, 10334,-32768,-32768,-32768, 13899,
+-32768, 14979,  1304, 14007,   838, 14090,   548,  8218, 14090, 12927,
+   554, 14630, 13766, 14846,   554, 14954, 15062,-32768,   772,   867,
+   870, 14115,-32768,   873,-32768,  1167,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,  2736,-32768,  3165,-32768,  2736,-32768,  9169,-32768,
+   137, 14979,-32768,-32768,  8336,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,   539,   499,-32768,-32768,-32768,
+-32768,   117, 12022,   875,   826,   350,   350,   876, 12927,   878,
+ 12927,   880,   881, 12927,   883,-32768,   578,   581,   590,   617,
+   307,   149,  9250,-32768,-32768,-32768,   150,   594,   611,   594,
+   611,-32768,   886,     7,   887, 10224,   624,   168,   888,   892,
+   893, 10774,   627,   634,-32768,-32768, 10444,  5436,  2263,-32768,
+ 14979, 11500, 10554, 15411, 10664, 16610,-32768,   240,   868,   879,
+   363, 16610,-32768,-32768,-32768,   248,   897, 10003,   899,   885,
+  2198,  1129,   899, 14979,   544,-32768,-32768,    74,    74,    74,
+   632,   632,   199,   199,   322,   322,   322,   322,   167,   167,
+   343,   606,   591,   620,   636,   -54,   900,-32768,-32768,-32768,
+   554,   554,-32768,-32768,    66, 17432,-32768,   624,   292,-32768,
+-32768,-32768,   295,-32768, 15170, 15278,-32768, 14223, 14331,-32768,
+   335, 14439,-32768,-32768,-32768,-32768,-32768,  5775,-32768,  1142,
+  1352,  9567,  9674,  2829,  2929,  3867,  4436,  9360,   884,-32768,
+   418,   444,-32768,-32768,-32768,-32768,-32768,   889,  6984,   706,
+-32768,   891,  8748,-32768,-32768, 14979,-32768,-32768,-32768,-32768,
+   345, 14979,   347, 14979, 14979,   352, 14979,-32768,-32768,-32768,
+-32768,-32768,-32768,    57,-32768,-32768,-32768,    58,-32768,     8,
+-32768,-32768,   350,-32768,   259,    83, 10554, 10884,-32768,-32768,
+-32768,  4258,  4586,   915,  1530,-32768,-32768,-32768,   996,-32768,
+-32768,-32768, 16610, 17382,   899,-32768,   652, 14547,-32768, 14979,
+-32768,-32768,-32768,-32768, 14979, 14979,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,   370,-32768,   372,-32768,-32768,   374,
+ 15627,   269, 15825, 14979,-32768,-32768,-32768,-32768,-32768,-32768,
+    94,   206,   628, 13874, 15386, 15924,-32768,-32768,-32768,    94,
+   206,   628, 13982, 15494,-32768,   451,-32768,   890,-32768,   714,
+-32768,   745,-32768,-32768,-32768,-32768,-32768,   487,-32768,  1776,
+-32768,  1352,-32768,-32768,-32768,   534,-32768,-32768,   896,   904,
+ 14979, 14655,   901,   912,   902,   265,  8936,   904,   919,   -47,
+  8147,   903,   916,-32768, 16518,-32768,-32768,-32768,   917,-32768,
+-32768,-32768,-32768,   920, 16866,   383,-32768,   384,-32768,   389,
+   404,-32768,   411,  8545,-32768,-32768, 13467,-32768, 13035,   913,
+   932,   933,-32768,   969,-32768, 17499,-32768,-32768,-32768,-32768,
+   415,   698,-32768,-32768,-32768,-32768,-32768,   925,   931,  8400,
+    66,  2723, 11302, 11599,   950,    13,   951,   463, 12086,-32768,
+   982,-32768,-32768,-32768,   936, 16994,   657, 17005,   718,  8400,
+   955,   463,-32768,-32768,-32768, 17063,   657, 17074,   718,-32768,
+-32768,-32768,   938,-32768,   587,-32768,   938,-32768,-32768, 12508,
+  8936,   940,   939,-32768,  9060,  8936,-32768,-32768,   941,  1008,
+  8936, 12398, 14763,-32768, 15087,-32768,  8936, 14871,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,  3651,    66,  3007, 16610, 16610,
+  3090, 12313,   963,  5436,-32768,-32768,-32768, 14979,    85,   966,
+   968,   970,   390,    66,   971,    66,   974,    66,   976,    66,
+    96,   298,   979,    66,   980,-32768, 14979,   639,   655,-32768,
+   673,   686,-32768,   986,   298,   991,   690,   692,-32768,   702,
+   722,-32768,-32768,-32768,-32768,   998,   416,-32768,  8936,-32768,
+   -59, 16930,   962, 14655,-32768,-32768,  1000,  1082,  1009,  1010,
+   724, 13251, 13683,-32768,  3651,  3651,    66,-32768,-32768,-32768,
+   899,-32768,   691,   282,    66,    66,-32768,-32768,   740,    66,
+   749,    66,   750,    66,   760,    66,-32768,   763,   779,   761,
+    66,-32768,   801,   811,   815,   816,   282,-32768,   763,   779,
+   801,   811,   815,   816,-32768,-32768,-32768,-32768, 14655,   992,
+ 12618,  8936,-32768,-32768,  4029, 13359,-32768,-32768,   499,   821,
+-32768,   827,   828,   499,-32768,   499,   832,-32768,   499,   839,
+-32768,   499,   840,-32768,-32768,   844,-32768,-32768,-32768,   499,
+   845,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,  8936,   993, 14655,  1011,   429,-32768,  8936,  8936,
+   826,  4335,-32768,-32768,   499,-32768,   499,-32768,   499,-32768,
+-32768,-32768,   499,-32768,-32768,   499,-32768,-32768,   499,   499,
+-32768,-32768,-32768,-32768,   499,-32768, 14655,  1014,-32768,   997,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   499,
+-32768,  1016,  8936,  1002,-32768,-32768,-32768,-32768,-32768,  8936,
+-32768,  1125,-32768
+};
+
+static const short yypgoto[] = {-32768,
+-32768,  7527,-32768,  1096,-32768,  -123,-32768,   898,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,  -735,  2938,  6334,-32768,-32768,
+   215,  -553,-32768,  -770,  -277,  -322,-32768,   268,   257,   313,
+   256,   320,   533,   540,   538,   552,   530,-32768,  -174,  3654,
+   783,  -287,  -321,  -857,     1,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,   192,-32768,-32768,   -13,
+   -37,   408,  1218,  1491,  1804,   -48,  5218,-32768,   -24,  1505,
+   994,  1191,  -670,   -22,  7486,   855,   -49,   -23,-32768,-32768,
+-32768,-32768,   -31,  1083,-32768,   468,-32768,-32768,  -448,  2582,
+   319,-32768,-32768,-32768,-32768,-32768,-32768,-32768,  2516,  -793,
+-32768,  -810,-32768,-32768,   -26,   -21,   895,-32768,   470,   304,
+   -27,-32768,  -513,  -367,-32768,  -610,  -589,    88,  -182,  -355,
+  -713,-32768,  -140,-32768,  -212,-32768,-32768,-32768,-32768,-32768,
+-32768,   169,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   175,
+   695,-32768,-32768,-32768,-32768,  1093,  1104,  -665,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,  -275,-32768,-32768,
+-32768,-32768,   344,-32768,-32768,-32768,-32768,-32768,  -272,-32768,
+   519,   224,-32768,  3792,  2484,-32768,  3595,-32768,  5004,  7881,
+  2838,-32768,   102,-32768,-32768,  1639,  5411,   854,  -396,  -240,
+  4181,  4917,     9,    -1,    23,  2930,-32768,  1294,  6196,  7019,
+   -19,-32768,-32768,   -65,  3517,  -116
+};
+
+
+#define        YYLAST          17572
+
+
+static const short yytable[] = {    88,
+   156,    47,   217,   229,   684,   158,   234,   152,   240,   154,
+   159,   247,   923,   743,   212,   212,   814,   404,   847,   883,
+   490,   624,   203,   856,   287,   783,   573,   302,   218,   230,
+   160,   969,   971,   811,   625,   629,   912,   811,  -699,   225,
+  1228,   622,   574,   581,     9,   521,   957,   965,   106,   106,
+    88,    88,   622,    98,   977,   186,   186,   472,   480,   449,
+    98,   761,   549,   926,    21,   985,   711,   626,   283,   293,
+  -520,    88,   623,   265,   560,   561,   563,   564,    30,     9,
+   196,    99,   574,   627,   197,     3,   515,     4,   286,   645,
+   260,   622,   622,   263,     7,     8,   282,   622,     9,    21,
+   257,   731,    83,    13,   262,   518,   887,  1027,   480,   450,
+   451,   452,   601,    30,   630,    20,  -700,   574,    21,   156,
+   736,   100,   627,   627,   158,   515,   515,   230,   627,   159,
+  -700,   515,    30,   106,  1093,   622,   574,   750,    32,    33,
+   186,   182,   622,   640,  1038,   602,   301,   760,   278,   303,
+   815,   205,   208,   220,   232,   279,   669,  1026,   212,   672,
+   582,   583,   675,   761,   256,   283,   816,   678,   282,  1084,
+   289,   682,  1024,   816,    83,   494,   495,  1035,  1025,   260,
+   622,   263,   414,   212,   212,   280,   274,   276,  1086,   393,
+   407,    44,   101,   282,   316,  1206,   634,   635,   295,    88,
+  -655,   257,   464,  -655,  -321,   931,   750,   439,   440,   465,
+   658,   816,  1061,   750,  -635,   665,   865,   710,   668,   480,
+   750,   671,   480,   103,   674,   480,   811,   921,   922,   677,
+   480,   679,   574,   681,   480,   102,   404,  1173,  -700,   750,
+   849,   202,   206,   549,  1180,   591,   592,   667,   882,   885,
+   670,   304,   190,   673,   251,   458,   549,   191,   676,   786,
+   787,   817,   680,   173,   574,   574,   192,   891,   704,   160,
+   847,   474,   192,   204,   207,   856,  -700,   593,   594,   709,
+   480,   314,   771,   574,   274,   276,   255,   427,   290,   498,
+  -619,   319,   785,   751,   282,     9,   192,   301,   301,   587,
+   588,   198,   393,   486,   192,   199,   192,   488,   708,   282,
+  1115,   282,   393,  -699,   806,    21,  1230,   393,   261,   160,
+   294,   474,   274,   276,  1061,   552,  -634,   555,   287,    30,
+  1097,   156,   217,   229,   407,   240,   158,  1098,   152,   908,
+   154,   159,   287,   289,  -700,   407,   407,   914,   393,   750,
+   407,   407,   407,   407,  -700,   574,   268,  1029,   218,   230,
+   750,   160,   751,   574,   407,   750,   750,   498,   750,   751,
+   861,  1274,   192,   283,   323,   328,   751,   269,   212,   212,
+    88,    88,   192,  1189,  1190,   277,  -405,   283,   888,   419,
+   407,   932,   631,   287,   933,   751,   498,  -402,   589,   590,
+  1061,   282,   439,   440,   191,   331,   643,   574,    50,   407,
+   574,   192,   288,   274,   276,   282,  1061,  1308,  -651,   192,
+  1237,   420,  -233,   595,   596,   458,  -233,   217,   229,  1055,
+   160,   296,   474,   160,   938,   474,   160,   557,   474,   212,
+   212,   160,  1055,   474,  1017,   160,  1019,   474,   498,  1322,
+   574,  1022,   297,   218,   230,   928,   929,   458,   549,  -551,
+   574,   924,   574,   192,   225,   332,   282,   574,   824,  1045,
+   333,  1046,   827,  1047,   630,    88,    88,   911,   761,   160,
+    50,   703,  1109,  1110,  -541,   574,   900,   574,  1111,   574,
+   917,   160,   849,   474,   864,   407,   160,  -545,   574,   574,
+   750,   229,  -700,  1112,   574,   751,   552,   427,   555,  1197,
+  1113,   706,   407,   407,  1125,  1226,   751,   404,   407,   574,
+   817,   751,   751,   527,   751,   160,   574,   230,  1310,   393,
+   574,   761,    88,   980,   629,   498,   499,   981,   192,   566,
+   634,   635,   407,   650,   761,   301,   411,   156,   301,   303,
+   192,   552,   158,   555,   301,   230,   301,   159,   192,   982,
+  -555,   498,   507,   983,   498,   738,   834,   407,   407,  1061,
+   836,  -545,   407,   407,   393,   301,   192,   303,   407,   192,
+   407,   407,   407,   407,   407,   407,   407,   407,   407,   407,
+   407,   407,   407,   407,   407,   407,   407,   407,   407,   407,
+   407,    88,  1043,  -557,   -69,   567,   568,  -547,    88,   549,
+   463,   283,   323,   328,   744,    88,   498,   739,   745,   471,
+   630,   160,  1060,   283,  -696,   160,   498,   740,   487,   569,
+   719,   192,  1042,  -553,    88,   498,   741,     9,   407,   282,
+   407,   192,   407,   -67,   570,   192,   498,   331,   393,   497,
+   192,   282,  1061,  1131,  -553,   505,   751,    21,   925,   761,
+   407,   192,   506,   777,   458,   509,   202,   206,   514,  1092,
+   251,    30,   515,  1131,   290,   520,   498,   878,   475,   498,
+   879,   458,   721,   458,   565,   458,   724,    88,   498,   880,
+   407,   192,  -655,    88,   192,    47,   598,   192,   698,   699,
+  1141,   192,   702,   192,  -408,  1061,   705,  -655,   -61,  -656,
+   812,     3,   597,     4,   812,   498,   881,   393,   600,   393,
+     7,     8,   393,   -61,  -656,    -8,    -8,   599,   475,    13,
+   192,   407,    -9,    -9,   584,   585,   586,   498,  1213,   -61,
+    -8,    20,   -61,   621,    88,  -408,  1061,    -9,  -631,   900,
+   896,  1044,   192,   498,  1214,    88,   301,   301,   640,   407,
+   303,    88,   407,    88,   905,    33,  1039,   761,   192,   404,
+   905,   498,  1215,   817,   106,  1061,   407,  -649,   641,   301,
+   301,   186,   407,   642,   498,  1216,   192,   644,   498,  1221,
+   498,  1222,   217,   229,   666,   240,    83,   685,   247,   192,
+   498,  1223,  1167,   192,   686,   192,  1192,   688,   427,  1132,
+  1238,   280,  1126,   761,   160,   192,   404,   690,   218,   230,
+   498,  1224,  1029,   499,   692,  1212,   407,   407,   691,  1132,
+   407,  -408,  1061,   890,  -555,   192,  1061,   192,  -650,   475,
+    88,    88,   475,   791,   792,   475,   795,   796,   797,   798,
+   475,   788,   789,   790,   475,    63,  1100,   427,   694,  1245,
+  1198,   393,  -408,  1061,   407,  -557,   427,   427,  1248,  1251,
+   407,   714,   407,   407,   716,   407,   283,   427,   427,  1254,
+  1259,  1061,   156,  -654,   717,   283,   155,   158,   475,   152,
+   723,   154,   159,   634,   549,    88,   896,  1061,   764,  -652,
+   475,   793,   794,   812,   282,   630,   216,   228,   772,   235,
+   238,   905,   160,   282,   799,   800,   407,   254,   407,  1061,
+  1239,  -647,   773,   407,   407,   867,  1246,    63,  1249,  1061,
+  1252,  -645,  1255,  1061,  1061,  -648,  -646,  1260,   427,    88,
+  1284,    88,   407,  1277,   427,   427,  1286,  1288,   549,   427,
+  1168,  1292,   822,   404,    88,  1175,   427,   427,  1295,  1298,
+  1178,   427,   427,  1301,  1304,   828,  1184,  1285,   829,  1287,
+  1289,   832,   404,   866,  1293,   870,   872,  1296,   874,   875,
+  1299,   877,   909,  1302,   890,   886,   889,   892,  1305,   407,
+   407,   893,   894,   910,    58,   393,   915,   918,   920,   927,
+  1032,   979,  1090,   229,  1033,   228,   238,  -408,   984,   254,
+  1095,   552,   988,   555,     3,  1089,     4,  1102,   761,  1096,
+  1094,  1116,   407,     7,     8,   407,  1283,   393,  1227,   230,
+  1056,  1290,    13,  1291,   160,  1104,  1294,  1107,  1106,  1297,
+  1117,  1118,  1120,  1056,    20,   387,  1127,  1303,  1128,  1140,
+  1142,    88,  1146,  1147,  1155,   425,  1061,  1169,  1170,  1177,
+  1176,   950,  1191,   959,   966,  1194,    58,  1195,    33,  1196,
+  1200,   978,  1313,  1202,  1314,  1204,  1315,   106,  1209,  1211,
+  1316,  1229,   986,  1317,   279,  1217,  1318,  1319,   407,   393,
+  1220,  1278,  1321,   393,   393,  1174,   840,  1225,  1231,   393,
+   407,   896,    50,   896,  1232,   393,   896,  1326,  1233,  1234,
+  1309,  1275,  1307,  1323,   280,  1327,  1325,   905,   905,   301,
+   301,  1329,   301,  1123,  1333,   479,   407,   148,  1037,   801,
+   805,     3,  1306,     4,     5,     6,   803,   802,  1311,  1312,
+     7,     8,   200,   575,     3,   407,     4,     5,     6,    13,
+   259,   804,   835,     7,     8,   941,   469,   552,   387,   555,
+   860,    20,    13,   987,   695,   266,  1101,   393,   387,     3,
+  1099,     4,   407,   387,    20,   479,   267,   484,     7,     8,
+    88,   896,  1328,   958,   833,    33,   530,    13,     0,  1331,
+     0,    59,     0,     0,   106,     0,   251,    32,    33,    20,
+     0,   186,     0,     0,   556,  1087,   290,    39,     0,     0,
+     0,   552,     0,   555,   942,     0,     0,   155,    51,     0,
+     0,     0,   153,    33,     0,     0,     0,   407,   702,   407,
+   393,    42,   660,   301,    88,    43,   216,   228,   705,   661,
+   956,   254,   778,     0,    42,     0,     0,     0,    43,     0,
+    44,     0,     0,     0,     0,     0,     0,     0,     0,   944,
+     0,     0,     0,    59,    58,   662,     0,     0,     0,   557,
+   475,   393,     0,   407,     0,     0,     0,   393,   393,   254,
+   301,     0,     0,     0,     0,     0,   479,     0,     0,   479,
+    51,     0,   479,     0,    92,     0,     0,   479,     0,     0,
+     0,   479,     0,     0,     0,   407,     3,     0,     4,     0,
+     0,     0,     0,     0,    58,     7,     8,     0,     0,     0,
+     3,   393,     4,   557,    13,    92,     0,     0,   393,     7,
+     8,   216,   228,   254,     0,   479,    20,     0,    13,     0,
+     0,     0,     0,   553,     0,    92,    92,   479,   840,     0,
+    20,     0,   425,     0,     3,     0,     4,     5,     6,    32,
+    33,     0,     0,     7,     8,     0,    92,     0,     0,   278,
+     0,     0,    13,    32,    33,     0,   279,     0,     0,     0,
+     0,   425,     0,   278,    20,   556,     0,     0,   387,     0,
+   186,   200,     0,     3,     0,     4,     5,     6,     0,     0,
+     0,     0,     7,     8,   475,   228,   238,    32,    33,     0,
+   254,    13,    44,     0,     0,     0,     0,    39,     0,     0,
+   280,     0,     0,    20,   942,    58,    44,     0,    58,     0,
+   556,    58,     0,   228,     0,     0,    58,     0,     0,     0,
+    58,     0,     0,     0,    92,     0,    32,    33,     0,     0,
+   652,     0,     0,     0,    42,     0,    39,   425,    43,     0,
+    44,    59,     0,   163,   425,     0,     0,     0,     0,   944,
+     0,   387,     0,     0,    58,     0,     0,   425,     0,     0,
+     0,   425,     0,     0,   395,     0,    58,     0,   476,   201,
+   387,    52,     0,    42,    92,     0,     0,    43,   475,    44,
+     0,     0,   475,   475,   387,    57,     0,     0,   475,     0,
+     0,    59,     0,     0,   475,     0,     0,     3,   808,     4,
+     0,     0,     0,   813,   553,     0,     7,     8,     0,     0,
+     0,     0,     3,     0,     4,    13,     0,     0,   476,     0,
+   554,     7,     8,   848,     0,     0,     0,    20,     0,    63,
+    13,     0,     0,   153,     0,     0,     0,     0,     0,     0,
+     0,     0,    20,    52,    92,     0,     0,   550,     0,   553,
+    32,    33,     0,   387,     0,   387,   475,    57,   387,     0,
+    39,     0,     0,     0,     0,    32,    33,   284,     0,     0,
+     0,     0,     0,     0,     0,   278,     0,   395,     0,     0,
+   387,     0,   186,     0,     0,     0,     0,   395,     0,     0,
+     0,   387,   395,     0,    92,     0,   425,   387,     0,   387,
+   904,     0,    59,    44,     0,    59,   904,     0,    59,   533,
+     0,     0,     0,    59,     0,     0,     0,    59,    44,   475,
+   533,   533,     0,   395,     0,   533,   533,   533,   533,   476,
+     0,     0,   476,     0,     0,   476,    92,     0,     0,     0,
+   476,     0,     0,     0,   476,     0,     0,     0,     0,     0,
+   425,    59,     0,     0,     0,    92,    92,     0,     0,     0,
+   475,     0,   845,    59,     0,   533,   475,   475,    58,     0,
+     0,     0,     0,     0,     0,     0,   216,   228,   476,     0,
+     0,     0,   254,     0,     0,     0,     0,     0,     0,     9,
+   476,     0,   930,    10,     0,     0,     0,  1005,     0,     0,
+     0,   554,     0,    16,    17,    92,   162,     0,    92,    21,
+   475,    92,     0,     0,     0,     0,    92,   475,     0,     0,
+    92,     0,     0,    30,     0,     0,    31,     0,   550,     0,
+     0,   387,     0,     0,     0,     0,    34,    35,    36,    37,
+    38,   477,     0,     0,     0,     0,   554,   904,   155,     0,
+    92,    92,     0,     0,    92,    57,     0,     0,     3,     0,
+     4,     5,     6,     0,     0,     0,    92,     7,     8,     0,
+     0,    92,     0,   550,     0,   848,    13,  1054,     0,     0,
+     0,     0,     0,     3,    53,     4,     0,     0,    20,     0,
+  1054,   477,     7,     8,     0,   239,     0,     0,     0,     0,
+    92,    13,     0,     0,   395,    57,     0,   395,     0,     0,
+     0,    32,    33,    20,     0,   151,     0,     0,     0,     0,
+     0,    39,     0,     0,    92,     0,     0,     0,   186,     0,
+     0,  1005,     0,     0,     0,     0,    58,    33,     0,   254,
+     0,     0,     0,     0,     0,     0,   106,     0,     0,   395,
+     0,     0,    92,   284,   646,     0,    53,     0,    42,   846,
+     0,     0,    43,   387,    44,    59,     0,     0,   272,     0,
+  1122,     0,     0,   944,     0,     0,    92,     0,     0,     0,
+     0,     0,     0,    92,     0,     0,   841,   228,   254,     0,
+   395,     0,    51,     0,     0,     0,    92,     0,     0,     0,
+    92,     0,   477,     0,   813,   477,     0,     0,   477,   395,
+     0,     0,     0,   477,   845,     0,    57,   477,     0,    57,
+     0,     0,    57,   395,     0,  1005,     0,    57,  1133,  1005,
+  1005,    57,     0,     0,     0,  1005,     0,     0,     0,     0,
+     0,  1005,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,   477,  1188,   904,   904,     0,   254,     0,     0,     0,
+     0,     0,    92,   477,     0,    57,   272,     0,    92,     0,
+    58,     0,     0,     0,     0,     0,     0,    57,     3,     0,
+     4,     0,     0,     0,     0,     0,     0,     7,     8,     0,
+     0,     0,   395,     0,   395,     0,    13,   395,   606,   609,
+   612,   616,     0,  1005,   272,   620,  1193,     0,    20,   553,
+     0,  1199,     0,  1201,     0,  1203,   556,  1205,   639,   395,
+     0,  1210,     0,     0,     0,   533,     0,     0,     0,     0,
+   395,     0,    33,    59,     0,    92,   395,   533,   395,     0,
+     0,   106,     0,   620,   639,     0,     0,     0,   279,     0,
+     0,     0,     0,     0,   478,     0,     0,     0,     0,     0,
+   476,     0,     0,   485,    58,     0,  1005,     0,    58,    58,
+   556,  1240,  1242,  1243,    58,     0,     0,  1247,     0,  1250,
+    58,  1253,   272,  1256,   153,     0,     0,     0,  1261,    92,
+     0,     0,     0,     0,  1240,   272,     0,     0,     0,     0,
+     0,     0,     0,     0,   478,     0,     0,  1005,     0,     0,
+     0,   846,     0,  1005,  1005,    92,    92,   121,   122,   123,
+   124,   125,   126,   127,   128,   129,   130,     0,     0,     0,
+     0,     0,     0,   551,   485,     0,   395,     0,   841,     0,
+  1052,     0,    58,     0,     0,     0,   579,   147,     0,     0,
+     0,     0,     0,  1052,     0,   553,     0,  1005,     0,   842,
+   755,   756,     0,     0,  1005,    52,     0,    59,   609,   616,
+   395,   533,     0,   844,   620,     0,   639,     0,     0,    57,
+     3,     0,     4,     5,     6,     0,     0,    92,     0,     7,
+     8,     9,     0,     0,   476,     0,     0,     0,    13,   272,
+     0,     0,     0,     0,   272,    58,   554,     0,     0,   553,
+    20,    21,     0,     0,    92,   478,    92,     0,   478,     0,
+     0,   478,     0,     0,     0,    30,   478,     0,     0,    92,
+   478,   755,   756,   550,    33,     0,   902,     0,     0,     0,
+     0,     0,   902,   106,     0,     3,    58,     4,     5,     6,
+   186,     0,    58,    58,     7,     8,     0,     0,     0,     0,
+     0,    59,     0,    13,   478,    59,    59,     0,     0,     0,
+   395,    59,     0,     0,     0,    20,   478,    59,     0,     0,
+    42,     0,     0,     0,    43,     0,     0,     0,   476,     0,
+     0,   778,   476,   476,     0,     0,    58,     0,   476,    33,
+   533,     0,   395,    58,   476,     0,     0,     0,   106,    92,
+     0,     0,     0,     0,   551,   186,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,   272,    92,     0,     3,     0,
+     4,     5,     6,   477,     0,     0,     0,     7,     8,    59,
+     0,   762,     0,     0,     0,    42,    13,    57,     0,    43,
+     0,     0,   554,     0,     0,     0,   192,     0,    20,   551,
+     0,     0,     0,     0,   395,     0,   476,     0,   395,   395,
+   755,     0,     0,     0,   395,     0,   755,   756,     0,   550,
+   395,    32,    33,   902,     0,     0,     0,     0,     0,     0,
+     3,    39,     4,     5,     6,     0,   272,     0,   510,     7,
+     8,     9,    59,     0,   485,     0,   554,     0,    13,   485,
+     0,   842,     0,     0,     0,     0,     0,     0,     0,     0,
+    20,    21,     0,     0,   603,   844,     0,     0,    42,   476,
+     0,   272,    43,   550,    44,    30,   272,     0,     0,   192,
+     0,     0,   395,    59,    33,     0,     0,     0,     9,    59,
+    59,     0,    10,   106,     0,   395,   533,     0,     0,     0,
+   186,     0,    16,    17,     0,   162,     0,   477,    21,     0,
+   476,     0,   843,  -700,     0,     0,   476,   476,    53,     0,
+     0,    57,    30,     0,     0,    31,   757,     0,     0,     0,
+    42,     0,     0,    59,    43,    34,    35,    36,    37,    38,
+    59,   192,     0,     0,     0,   395,     0,     0,     0,   395,
+     0,     0,     0,     0,     0,     0,   755,     0,     0,     0,
+   476,     0,     0,     0,     0,     0,     0,   476,     0,     3,
+   485,     4,     5,     6,     0,   272,     0,     0,     7,     8,
+     9,   272,     0,     0,     0,     0,   395,    13,     0,   903,
+     0,     0,   395,   395,   241,   903,     0,     0,     0,    20,
+    21,   477,    68,     0,   272,   477,   477,     0,     0,     0,
+     0,   477,     0,     0,    30,    57,     0,   477,     0,    57,
+    57,     0,    32,    33,     0,    57,  1185,     0,     0,   902,
+   902,    57,    39,   157,     0,     0,   395,     0,   485,   510,
+     0,   485,     0,   395,     0,     0,     3,     0,     4,     5,
+     6,     0,     0,    68,    68,     7,     8,     0,     0,     0,
+     0,     0,     0,     0,    13,   603,     0,   308,     0,    42,
+     0,     0,     0,    43,    68,    44,    20,     0,     0,   477,
+   192,     9,     0,     0,     0,    10,   478,     0,     0,   281,
+     0,   285,     0,    57,     0,    16,    17,     0,   162,     0,
+    33,    21,     0,     0,   308,     0,     0,     0,     0,   106,
+  1135,  1137,  1139,     0,     0,    30,   186,  1145,    31,     0,
+     0,   272,     0,     0,     0,     0,     0,     0,    34,    35,
+    36,    37,    38,     0,     0,     0,   903,   579,     0,     0,
+     0,     0,   477,     0,     0,     3,    42,     4,     5,     6,
+    43,     0,   157,     0,     7,     8,    57,     0,     3,     0,
+     4,   281,     0,    13,   843,     0,  1053,     7,     8,     0,
+     0,     0,     0,     0,     0,    20,    13,   272,     0,  1053,
+   620,     0,   639,   477,     0,     0,   272,   244,    20,   477,
+   477,     0,    68,     0,     0,     0,     0,    57,    32,    33,
+     0,     0,    68,    57,    57,     0,     0,     0,    39,     0,
+   502,     0,    33,     0,     0,   510,     0,     0,     0,     0,
+   478,   106,     0,     0,     0,   308,     0,     0,   454,     0,
+   308,     0,     0,   477,     0,     0,     0,     0,     0,     0,
+   477,   603,  1134,     0,     0,    42,     0,    57,     0,    43,
+   485,    44,     0,     0,    57,     0,   192,     0,     0,   551,
+     0,     0,     9,     0,     0,     0,    10,     0,     0,     0,
+     0,     0,    68,     0,   485,     0,    16,    17,     0,   162,
+     0,     0,    21,     0,     0,     0,     0,   489,     0,     0,
+     0,     0,     0,     0,     0,     0,    30,     0,   188,    31,
+     0,     0,     0,     0,   281,    68,     0,     0,     0,    34,
+    35,    36,    37,    38,   478,    68,     0,     0,   478,   478,
+    68,   308,    68,     0,   478,     0,     0,     0,     0,     0,
+   478,     0,     0,     0,     0,     0,     0,     0,     0,  1186,
+  1187,     0,   903,   903,     0,     0,     0,     0,     0,     0,
+    90,    68,   485,     0,     0,     0,     0,   485,     0,   485,
+     0,   485,     9,   485,   157,     0,    10,   485,   973,     0,
+     0,     0,     0,     0,     0,     0,    16,    17,     0,   162,
+     0,    90,    21,    68,    68,     0,     0,     0,     0,     0,
+     0,     0,   478,     0,   281,   285,    30,     0,     0,    31,
+     0,    90,    90,     0,     0,   551,   272,     0,     0,    34,
+    35,    36,    37,    38,   502,   502,     0,   485,   485,   485,
+     0,   311,    90,   485,     0,   485,     0,   485,     0,   485,
+     0,     0,     0,    68,   485,     0,    68,   502,     0,    68,
+   485,     0,     0,     0,    68,    11,    12,     0,    68,     0,
+    14,     0,     0,     0,     0,   478,    18,     0,   311,   551,
+     0,    22,    23,    24,    25,    26,    27,   311,   974,    28,
+    29,     0,     0,     0,     0,     0,     0,     0,    68,    68,
+     0,     0,    68,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,    68,     0,   478,     0,     0,    68,
+    90,     0,   478,   478,     0,     0,   502,     0,     0,     0,
+     0,     0,     3,     0,     4,     5,     6,     0,     0,     0,
+   502,     7,     8,     9,     0,     0,     0,     0,    68,     0,
+    13,     0,    68,     0,     0,    68,     0,     0,     0,   502,
+   394,     0,    20,    21,     0,     0,   478,     0,   360,     0,
+    90,     0,    68,   478,     0,   502,     0,    30,     0,   308,
+   308,     0,     0,     0,   188,     0,    33,     0,     0,     0,
+     0,     0,     0,     0,     0,   106,     0,    68,     0,   311,
+   157,     0,   186,     0,   311,     0,     0,     3,     0,     4,
+     0,     0,   449,     0,     0,  -700,     7,     8,     0,     0,
+     0,     0,     0,     0,    68,    13,   459,     0,   762,     0,
+     0,    68,    42,     0,     0,     0,    43,    20,    68,     0,
+    90,     0,     0,   192,    68,     0,     0,     0,    68,     0,
+     0,     0,   489,     0,     0,     0,     0,    68,     0,     0,
+     0,    33,   450,   451,   452,   453,     0,     0,     0,   502,
+   106,    68,     0,   394,     0,     0,     3,   454,     4,     5,
+     6,   496,     0,   394,     0,     7,     8,     9,   394,   311,
+    90,   513,     0,     0,    13,   311,   519,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,    20,    21,     0,     0,
+    68,     0,     0,     0,     0,     0,    68,     0,     0,   394,
+     0,    30,     0,     0,     0,     0,     0,     0,     0,    32,
+    33,     0,    90,     0,     0,     0,     0,     0,     0,    39,
+    68,     0,    68,     0,     0,    68,   186,     0,   502,   502,
+     0,    90,    90,     0,     0,     3,     0,     4,     5,     6,
+     0,     0,     0,     0,     7,     8,     0,    68,     0,     0,
+     0,     0,   610,    13,     0,     0,    42,     0,    68,     0,
+    43,     0,    44,    68,    68,    20,    68,   192,   188,   188,
+     0,     0,     0,     0,     0,     0,   459,     0,     0,     0,
+     0,    90,     0,     0,    90,     0,     0,    90,    32,    33,
+     0,   188,    90,     0,     0,     0,    90,     0,    39,     0,
+     0,     0,     0,     0,     0,   186,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,    68,     0,     0,
+     0,     0,     0,     0,     0,     0,    90,    90,     0,     0,
+    90,    41,     0,     0,     0,    42,     0,     0,     0,    43,
+     0,    44,    90,    68,    68,     0,   502,    90,     0,     0,
+     0,     0,     0,     0,   712,     0,     0,     0,     0,   502,
+   188,     0,     0,     0,    68,     0,     0,   188,     0,     0,
+     0,   732,     0,     0,   188,     0,    90,   737,     0,     0,
+   394,     0,     0,   394,     0,     0,     0,  1063,  1064,     0,
+     0,     0,     0,   188,     0,  1073,  1074,  1075,    68,     0,
+    90,  1080,     0,   188,     0,  1081,     0,  1082,     0,   188,
+     0,     0,     0,   311,   311,   157,     0,     0,     0,     0,
+     0,  1088,     0,     0,     0,   394,   768,     0,    90,     0,
+     0,     0,     0,   776,     0,     0,     0,    97,     0,     0,
+     0,     0,    68,     0,    68,     0,     0,     0,     0,     0,
+     0,     0,    90,     0,     0,     0,     0,    68,     0,    90,
+     0,     0,     0,     0,     0,     0,   394,     0,   161,   502,
+     0,   502,    90,     0,     0,     0,    90,     0,     0,   502,
+     0,   502,     0,     0,     0,   394,     0,     0,   223,   233,
+     0,     0,     0,   819,     0,     0,     0,     0,    68,   394,
+     0,   819,  1150,   188,  1153,     0,   308,   823,   308,    97,
+     0,   308,  1159,     0,  1162,   459,     0,     0,  1163,   831,
+  1164,     0,  1165,     0,     0,     0,     0,     0,     0,     0,
+    68,     0,   459,     0,   459,     9,   459,    68,    90,     0,
+    11,    12,     0,     0,    90,    14,     0,     0,     0,     0,
+     0,    18,     0,     0,    68,    21,    22,    23,    24,    25,
+    26,    27,     0,     0,    28,    29,     0,     0,   394,    30,
+   394,     0,     0,   394,     0,     0,   871,  1207,   873,     0,
+     0,   876,   188,   188,     9,   502,     0,   233,    10,     0,
+  1218,     0,    68,     0,     0,   394,    68,    68,    16,    17,
+     0,   162,    68,     0,    21,     0,   394,     0,    68,     0,
+     0,    90,   394,     0,   394,     0,     0,     0,    30,     0,
+     0,    31,   819,     0,     0,     0,     0,   400,     0,  1241,
+     0,    34,    35,    36,    37,    38,     0,   426,     0,   502,
+     0,     0,     0,  1257,  1258,     0,     0,     0,  1262,  1263,
+  1264,  1265,  1266,     0,  1267,  1268,  1269,  1270,  1271,  1272,
+     0,     0,     0,     0,     0,    90,     0,     0,     0,     0,
+    68,     0,     3,     0,     4,     5,     6,     0,   309,     0,
+     0,     7,     8,    68,     0,   935,   937,     0,     0,   940,
+    13,    90,    90,   460,     0,     0,     0,   325,   330,     0,
+   188,     0,    20,     0,     0,     0,     0,   483,     0,     0,
+     0,     0,   394,   188,     0,   309,     0,     0,     0,     0,
+     0,     0,     0,  1016,     0,    32,    33,     0,     0,  1018,
+     0,  1020,  1021,    68,  1023,    39,     0,    68,     0,     0,
+   400,     0,   186,     0,     0,     0,   394,     0,     0,     0,
+   400,     0,     0,     0,     0,   400,     0,   483,     0,     0,
+     0,     0,     0,    90,   379,     0,     0,     0,   610,     0,
+     0,     0,    42,     0,    68,  1041,    43,     0,    44,     0,
+    68,    68,     0,   192,     0,     0,   558,     0,     0,     0,
+    90,     0,    90,     0,     0,     0,     0,     0,     0,   161,
+     9,     0,     0,     0,    10,    90,     0,     0,     0,     0,
+     0,     0,     0,     0,    16,    17,     0,   162,   223,   233,
+    21,   503,     0,   188,    68,   188,   325,   330,     0,     0,
+     0,    68,     0,   188,    30,   188,   309,    31,     0,     0,
+     0,   309,     0,     0,     0,     0,   394,    34,    35,    36,
+    37,    38,     0,     0,     0,     0,     0,     0,     0,     0,
+   311,     0,   311,   664,     0,   311,     0,     0,   483,     0,
+     0,   483,     0,     0,   483,     0,     0,   379,   394,   483,
+     0,     0,     0,   483,     0,    90,     0,   379,     0,     0,
+     0,     0,   379,     0,   324,   329,     0,     0,     0,     0,
+     0,     0,    90,     0,     0,     0,   975,     0,     0,     0,
+     0,     0,     0,   223,   233,     0,     0,   483,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,   483,
+     0,     0,   309,     0,   426,   325,   330,     0,     0,   188,
+   394,     0,     0,     0,   394,   394,     0,     0,     0,     0,
+   394,     3,     0,     4,     5,     6,   394,     0,     0,     0,
+     7,     8,     9,   426,     0,   819,     0,   558,     0,    13,
+   400,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,    20,    21,     0,     0,     0,     0,   233,     0,     0,
+     0,     0,     0,   188,     0,     0,    30,     0,     0,     0,
+     0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
+     0,     0,   558,     0,   106,   233,     0,     0,   394,     0,
+     0,   186,     0,   324,   329,   503,   503,     0,     0,     0,
+     0,   394,     0,     0,     0,     0,     0,     0,     0,   426,
+     0,     0,     0,     0,     0,     0,   426,   757,   499,     0,
+     0,    42,     0,   400,     0,    43,     0,   536,     0,   426,
+     0,     0,   192,   426,     0,     0,     0,     0,     0,     0,
+   379,     0,   400,     0,     0,     0,     0,     0,     0,     0,
+     0,   394,     0,     0,     0,   394,   400,   379,   734,     0,
+     0,   604,   607,   379,     0,     0,     0,     0,   618,     0,
+     0,    85,   664,     0,     0,     0,     0,   379,     0,     0,
+     0,   637,     0,     0,     0,     0,     0,     0,     0,   460,
+     0,   460,   394,   460,     0,   859,     0,     0,   394,   394,
+     0,    97,   324,   329,     0,   536,   618,   637,     0,     0,
+   183,    85,   379,     0,     0,     0,     0,   774,   775,   379,
+   183,   183,   221,   221,     0,   400,     0,   400,     0,     0,
+   400,     0,     0,   183,     0,     0,   503,   325,   330,     0,
+   309,   309,   394,    85,     0,     0,     0,     0,     0,   394,
+     0,     0,   400,     0,     0,    85,    85,     0,     0,     0,
+   807,     9,     0,   400,     0,    10,     0,   183,   426,   400,
+     0,   400,     0,     0,     0,    16,    17,     0,   162,   379,
+     0,    21,     0,   379,     0,   807,     0,   379,     0,     0,
+     0,     0,     0,   379,     0,    30,     0,     0,    31,     0,
+     0,     0,     0,     0,     0,   379,     0,     0,    34,    35,
+    36,    37,    38,     0,     0,     0,     0,     0,   299,     0,
+     0,   299,   426,   324,   329,     0,     0,     3,     0,     4,
+     5,     6,     0,  1030,   312,     0,     7,     8,     9,     0,
+     0,     0,     0,     0,     0,    13,     0,     0,   223,   233,
+     0,     0,     0,   183,   183,     0,     0,    20,    21,     0,
+     0,     0,   379,     0,   379,     0,   416,   379,   421,  1015,
+     0,   312,    30,     0,     0,     0,   734,     0,     0,     0,
+    85,    33,     0,     0,     0,     0,     0,     0,     0,     0,
+   106,   221,   221,     0,     0,     0,     0,   186,     0,     0,
+   379,     0,     0,   400,   899,     0,   807,     0,   379,   503,
+   503,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+   161,     0,     0,   757,   878,     0,     0,    42,     0,     0,
+     0,    43,     0,     0,   324,   329,     0,     0,   192,     9,
+     0,     0,     0,    10,     0,     0,     0,   859,     0,  1059,
+     0,     0,     0,    16,    17,     0,   162,     0,     0,    21,
+     0,     0,  1059,     0,     0,     0,     0,     0,     0,   299,
+   299,   379,   379,    30,     0,   379,    31,   312,     0,     0,
+     0,     0,   312,   312,     0,     0,    34,    35,    36,    37,
+    38,     0,   312,     0,   536,     0,     0,   312,     0,     0,
+     0,     0,     0,  1015,     0,     0,     0,     0,     0,   379,
+     0,     0,     0,     0,     0,   379,   542,   379,   379,     0,
+   379,     0,     0,     0,     0,     0,     0,  1057,     0,     0,
+     0,     0,     0,   324,     0,   400,     0,     0,  1067,  1069,
+  1071,     0,  1124,     0,     0,   976,     0,  1077,  1079,     0,
+   542,   542,   613,   613,     0,     0,     0,   542,     0,   233,
+     0,   379,     0,     0,     0,     0,     0,     0,     0,     0,
+   542,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,   648,     0,     0,     0,   416,   416,   653,     9,
+     0,   421,   421,    10,   542,   542,   542,  1015,     0,     0,
+     0,  1015,  1015,    16,    17,     0,   162,  1015,     0,    21,
+     0,     0,     0,  1015,     0,     0,     0,     0,     0,   951,
+     0,   960,     0,    30,     0,     0,    31,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,    34,    35,    36,    37,
+    38,     0,     0,   421,     0,   421,   421,   416,   416,   421,
+   503,     0,   503,   421,     0,     3,     0,     4,     5,     6,
+   503,  1031,   503,     0,     7,     8,     9,   734,     0,     0,
+     0,     0,   379,    13,     0,  1015,     0,     0,     0,     0,
+     0,   312,   312,     0,     0,    20,    21,   309,   558,   309,
+     0,     0,   309,     0,     0,     0,     0,     0,     0,     0,
+    30,     0,     0,     0,   752,     0,     0,     0,     0,    33,
+     0,     0,   542,   542,     0,     0,     0,   758,   106,     0,
+   758,   758,     0,     0,     0,   186,   758,     0,   758,     0,
+     0,     0,     0,     0,     0,   324,   329,     0,  1015,     0,
+     0,     0,   558,     0,   324,   329,   379,   781,   807,   781,
+     0,   379,     0,     0,     0,    42,     0,     0,     0,    43,
+     0,     0,     0,     0,     0,     0,   503,   325,     0,     0,
+     0,     0,     0,   542,     0,     0,     0,     0,     0,  1015,
+   613,     0,     0,   613,   613,  1015,  1015,   752,     0,   448,
+     0,     3,     0,     4,     0,     0,   449,     0,     0,     0,
+     7,     8,     0,     0,     0,     0,   752,     0,     0,    13,
+     0,     0,     0,     0,     0,     0,   648,     0,   648,   648,
+   503,    20,   653,   653,   653,     0,   653,   653,     0,  1015,
+     0,   536,     0,   607,     0,   618,  1015,     0,     0,     0,
+   637,     0,     0,     0,     0,    33,   450,   451,   452,   453,
+     0,   536,     0,     0,   106,     0,     0,     0,     0,   648,
+     0,   454,     0,     0,     0,    85,     0,     3,     0,     4,
+     5,     6,     0,     0,  -701,     0,     7,     8,     9,     0,
+     0,     0,     0,   542,     0,    13,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,    20,    21,     0,
+     0,     0,     0,     0,     0,     0,     0,    86,     0,     0,
+     0,     0,    30,     0,     0,     0,   752,     0,     0,     0,
+     0,    33,   752,     0,     0,     0,     0,   898,   758,   758,
+   106,     0,   758,   898,     0,   898,     0,   186,     0,     0,
+     0,     0,     0,     0,     0,     0,   184,    86,     0,     0,
+     0,   781,   781,     0,     0,     0,   184,   184,   222,   222,
+     0,     0,     0,   765,   324,     0,     0,    42,     0,   184,
+     0,    43,     0,     0,     0,     0,     0,     0,   192,    86,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,    86,    86,     0,     0,   653,   653,     0,     0,     0,
+     0,     0,     0,   184,     0,     0,     0,     0,   954,     0,
+   963,   653,   648,   648,     0,     0,     0,     0,   653,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,   653,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     3,     0,     4,     5,     6,     0,     0,     0,
+     0,     7,     8,     9,   300,     0,     0,   300,    11,    12,
+    13,     0,     0,    14,     0,     0,     0,   898,   898,    18,
+   313,     0,    20,    21,    22,    23,    24,    25,    26,    27,
+     0,     0,    28,    29,     0,     0,     0,    30,     0,   184,
+   184,     3,     0,     4,     5,     6,    33,     0,     0,     0,
+     7,     8,   417,     0,   422,   106,     0,   313,     0,    13,
+     0,   648,   186,   653,     0,     0,    86,     0,     0,     0,
+     0,    20,     0,     0,   653,   653,   653,   222,   222,     0,
+     0,     0,     0,   653,   653,     0,     0,     0,   763,     0,
+     0,     0,    42,     0,    32,    33,    43,     0,     0,     0,
+   648,     0,   653,   192,    39,     0,     0,   310,     0,     0,
+     0,   163,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,   421,     0,     0,     0,   421,   326,   326,     0,     0,
+     0,     0,     0,     0,     0,   421,     0,   164,     0,     0,
+     0,    42,     0,     0,   310,    43,     0,    44,     0,     0,
+     0,     0,     0,     0,     0,   300,   300,     0,     0,     0,
+     0,     0,     0,   313,     0,     0,     0,     0,   313,   313,
+   542,     0,   542,   613,   542,     0,     0,     0,   313,   542,
+     0,     0,     0,   313,     0,     0,   653,     0,   653,     0,
+   542,     0,     0,     0,     0,     0,   653,   170,   653,     0,
+     0,     0,   543,     0,     0,     0,     0,     0,     0,   214,
+   226,     0,   214,   236,   214,   242,   245,   214,   248,     0,
+   252,     0,     0,  1183,     0,  1183,     0,     0,  1183,     0,
+     0,     0,     0,     0,     0,     0,   543,   543,   614,   614,
+     0,   758,   758,   543,   758,     0,     0,     0,     0,     0,
+   504,     0,     0,     0,   291,     0,   543,     0,     0,     0,
+     0,     0,     0,     0,   170,   523,     0,     0,   649,     0,
+   525,     0,   417,   417,     0,     0,     0,   422,   422,     0,
+   543,   543,   543,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,   421,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,  1183,  1183,     0,     0,     0,     0,   226,   236,
+   245,   248,   252,     0,     0,     0,     0,     0,   291,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,   422,
+     0,   422,   422,   417,   417,   422,     0,     0,     0,   422,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,   758,  1183,     0,     0,     0,
+     0,   310,     0,     0,   326,   326,     0,   313,   313,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     3,     0,
+     4,     5,     6,     0,     0,     0,     0,     7,     8,     9,
+   543,     0,     0,     0,     0,   194,    13,     0,   543,   543,
+     0,     0,   758,   759,     0,     0,   759,   759,    20,    21,
+     0,     0,   759,     0,   759,     0,     0,     0,     0,     0,
+     0,     0,     0,    30,     0,     0,     0,     0,     0,   226,
+     0,     0,    33,   782,     0,   782,     0,     0,     0,     0,
+     0,   106,     0,     0,     0,     0,     0,     0,   186,     0,
+     0,     0,     0,     0,   728,   730,     0,     0,     3,   543,
+     4,     5,     6,     0,     0,     0,   614,     7,     8,   614,
+   614,     0,     0,   543,   762,     0,    13,     0,    42,     0,
+     0,     0,    43,     0,     0,     0,     0,     0,    20,   192,
+     0,     0,   543,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,   649,   170,   649,   649,     0,     0,     0,     0,
+     0,    32,    33,   305,     0,   315,     0,     0,     0,     0,
+     0,    39,     0,     0,     0,     0,     0,     0,   306,     0,
+   320,     0,     0,     0,     0,     0,     0,   194,     0,   214,
+   226,   214,   242,   245,   252,   649,     0,     0,     0,     0,
+     0,    86,     0,     0,   307,     0,     0,   291,    42,     0,
+     0,     0,    43,     0,    44,     0,     0,     0,     0,   543,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,   170,   252,   291,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,   504,     0,     0,     0,   523,
+   525,     0,   543,     0,     0,     0,     0,     0,   543,     0,
+     0,     0,     0,   759,   759,   759,     0,     0,   759,   759,
+     0,   759,     0,     0,     0,     0,     0,     0,     0,     0,
+   170,     0,     0,     0,   214,   226,   252,   782,   782,     0,
+   291,     0,   226,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,   500,     0,     0,     0,
+   508,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,   320,     0,     0,     0,
+     0,     0,   526,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,   955,     0,   964,     0,   649,   649,
+     0,     0,     0,     0,   170,     0,     0,     0,   226,   236,
+   242,   245,   248,   252,     0,   291,     0,     3,     0,     4,
+     5,     6,     0,     0,     0,     0,     7,     8,