
#define  YY_INT_ALIGNED short int

/* A lexical scanner generated by flex */

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

/* First, we deal with  platform-specific or compiler-specific issues. */

/* begin standard C headers. */
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <stdlib.h>

/* end standard C headers. */

/* flex integer type definitions */

#ifndef FLEXINT_H
#define FLEXINT_H

/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */

#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L

/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
 * if you want the limit (max/min) macros for int types. 
 */
#ifndef __STDC_LIMIT_MACROS
#define __STDC_LIMIT_MACROS 1
#endif

#include <inttypes.h>
typedef int8_t flex_int8_t;
typedef uint8_t flex_uint8_t;
typedef int16_t flex_int16_t;
typedef uint16_t flex_uint16_t;
typedef int32_t flex_int32_t;
typedef uint32_t flex_uint32_t;
#else
typedef signed char flex_int8_t;
typedef short int flex_int16_t;
typedef int flex_int32_t;
typedef unsigned char flex_uint8_t; 
typedef unsigned short int flex_uint16_t;
typedef unsigned int flex_uint32_t;

/* Limits of integral types. */
#ifndef INT8_MIN
#define INT8_MIN               (-128)
#endif
#ifndef INT16_MIN
#define INT16_MIN              (-32767-1)
#endif
#ifndef INT32_MIN
#define INT32_MIN              (-2147483647-1)
#endif
#ifndef INT8_MAX
#define INT8_MAX               (127)
#endif
#ifndef INT16_MAX
#define INT16_MAX              (32767)
#endif
#ifndef INT32_MAX
#define INT32_MAX              (2147483647)
#endif
#ifndef UINT8_MAX
#define UINT8_MAX              (255U)
#endif
#ifndef UINT16_MAX
#define UINT16_MAX             (65535U)
#endif
#ifndef UINT32_MAX
#define UINT32_MAX             (4294967295U)
#endif

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

#endif /* ! C99 */

#endif /* ! FLEXINT_H */

/* begin standard C++ headers. */

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

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

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

/* Promotes a possibly negative, possibly signed char to an
 *   integer in range [0..255] for use as an array index.
 */
#define YY_SC_TO_UI(c) ((YY_CHAR) (c))

/* Enter a start condition.  This macro really ought to take a parameter,
 * but we do it the disgusting crufty way forced on us by the ()-less
 * definition of BEGIN.
 */
#define BEGIN (yy_start) = 1 + 2 *
/* Translate the current start state into a value that can be later handed
 * to BEGIN to return to the state.  The YYSTATE alias is for lex
 * compatibility.
 */
#define YY_START (((yy_start) - 1) / 2)
#define YYSTATE YY_START
/* Action number for EOF rule of a given start state. */
#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
/* Special action meaning "start processing a new file". */
#define YY_NEW_FILE yyrestart( yyin  )
#define YY_END_OF_BUFFER_CHAR 0

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

/* The state buf must be large enough to hold one state per character in the main buffer.
 */
#define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))

#ifndef YY_TYPEDEF_YY_BUFFER_STATE
#define YY_TYPEDEF_YY_BUFFER_STATE
typedef struct yy_buffer_state *YY_BUFFER_STATE;
#endif

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

extern int yyleng;

extern FILE *yyin, *yyout;

#define EOB_ACT_CONTINUE_SCAN 0
#define EOB_ACT_END_OF_FILE 1
#define EOB_ACT_LAST_MATCH 2
    
    /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires
     *       access to the local variable yy_act. Since yyless() is a macro, it would break
     *       existing scanners that call yyless() from OUTSIDE yylex.
     *       One obvious solution it to make yy_act a global. I tried that, and saw
     *       a 5% performance hit in a non-yylineno scanner, because yy_act is
     *       normally declared as a register variable-- so it is not worth it.
     */
    #define  YY_LESS_LINENO(n) \
            do { \
                int yyl;\
                for ( yyl = n; yyl < yyleng; ++yyl )\
                    if ( yytext[yyl] == '\n' )\
                        --yylineno;\
            }while(0)
    #define YY_LINENO_REWIND_TO(dst) \
            do {\
                const char *p;\
                for ( p = yy_cp-1; p >= (dst); --p)\
                    if ( *p == '\n' )\
                        --yylineno;\
            }while(0)
    
/* Return all but the first "n" matched characters back to the input stream. */
#define yyless(n) \
	do \
		{ \
		/* Undo effects of setting up yytext. */ \
        int yyless_macro_arg = (n); \
        YY_LESS_LINENO(yyless_macro_arg);\
		*yy_cp = (yy_hold_char); \
		YY_RESTORE_YY_MORE_OFFSET \
		(yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
		YY_DO_BEFORE_ACTION; /* set up yytext again */ \
		} \
	while ( 0 )
#define unput(c) yyunput( c, (yytext_ptr)  )

#ifndef YY_STRUCT_YY_BUFFER_STATE
#define YY_STRUCT_YY_BUFFER_STATE
struct yy_buffer_state
	{
	FILE *yy_input_file;

	char *yy_ch_buf;		/* input buffer */
	char *yy_buf_pos;		/* current position in input buffer */

	/* Size of input buffer in bytes, not including room for EOB
	 * characters.
	 */
	int yy_buf_size;

	/* Number of characters read into yy_ch_buf, not including EOB
	 * characters.
	 */
	int yy_n_chars;

	/* Whether we "own" the buffer - i.e., we know we created it,
	 * and can realloc() it to grow it, and should free() it to
	 * delete it.
	 */
	int yy_is_our_buffer;

	/* Whether this is an "interactive" input source; if so, and
	 * if we're using stdio for input, then we want to use getc()
	 * instead of fread(), to make sure we stop fetching input after
	 * each newline.
	 */
	int yy_is_interactive;

	/* Whether we're considered to be at the beginning of a line.
	 * If so, '^' rules will be active on the next match, otherwise
	 * not.
	 */
	int yy_at_bol;

    int yy_bs_lineno; /**< The line count. */
    int yy_bs_column; /**< The column count. */

	/* Whether to try to fill the input buffer when we reach the
	 * end of it.
	 */
	int yy_fill_buffer;

	int yy_buffer_status;

#define YY_BUFFER_NEW 0
#define YY_BUFFER_NORMAL 1
	/* When an EOF's been seen but there's still some text to process
	 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
	 * shouldn't try reading from the input source any more.  We might
	 * still have a bunch of tokens to match, though, because of
	 * possible backing-up.
	 *
	 * When we actually see the EOF, we change the status to "new"
	 * (via yyrestart()), so that the user can continue scanning by
	 * just pointing yyin at a new input file.
	 */
#define YY_BUFFER_EOF_PENDING 2

	};
#endif /* !YY_STRUCT_YY_BUFFER_STATE */

/* Stack of input buffers. */
static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */

/* We provide macros for accessing buffer states in case in the
 * future we want to put the buffer states in a more general
 * "scanner state".
 *
 * Returns the top of the stack, or NULL.
 */
#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
                          ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
                          : NULL)
/* Same as previous macro, but useful when we know that the buffer stack is not
 * NULL or when we need an lvalue. For internal use only.
 */
#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]

/* yy_hold_char holds the character lost when yytext is formed. */
static char yy_hold_char;
static int yy_n_chars;		/* number of characters read into yy_ch_buf */
int yyleng;

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

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

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

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

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

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

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

/* Begin user sect3 */

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

FILE *yyin = NULL, *yyout = NULL;

typedef int yy_state_type;

extern int yylineno;
int yylineno = 1;

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

static const flex_int16_t yy_nxt[][42] =
    {
    {
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0
    },

    {
        9,   10,   11,   12,   13,   14,   15,   16,   17,   14,
       18,   19,   20,   21,   22,   23,   24,   25,   26,   21,
       21,   27,   28,   29,   30,   21,   21,   31,   32,   21,
       33,   21,   34,   35,   36,   37,   38,   21,   39,   21,
       21,   40

    },

    {
        9,   10,   11,   12,   13,   14,   15,   16,   17,   14,
       18,   19,   20,   21,   22,   23,   24,   25,   26,   21,
       21,   27,   28,   29,   30,   21,   21,   31,   32,   21,
       33,   21,   34,   35,   36,   37,   38,   21,   39,   21,
       21,   40
    },

    {
        9,   41,   42,   43,   41,   41,   41,   41,   41,   41,
       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
       41,   41

    },

    {
        9,   41,   42,   43,   41,   41,   41,   41,   41,   41,
       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
       41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
       41,   41
    },

    {
        9,   44,   45,   46,   44,   44,   44,   44,   44,   44,
       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
       44,   44

    },

    {
        9,   44,   45,   46,   44,   44,   44,   44,   44,   44,
       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
       44,   44
    },

    {
        9,   47,   47,   48,   47,   49,   47,   50,   47,   49,
       47,   47,   47,   47,   47,   47,   47,   47,   51,   47,
       47,   47,   47,   47,   47,   47,   47,   47,   47,   47,
       47,   47,   47,   47,   47,   47,   47,   47,   47,   47,
       47,   47

    },

    {
        9,   47,   47,   48,   47,   49,   47,   50,   47,   49,
       47,   47,   47,   47,   47,   47,   47,   47,   51,   47,
       47,   47,   47,   47,   47,   47,   47,   47,   47,   47,
       47,   47,   47,   47,   47,   47,   47,   47,   47,   47,
       47,   47
    },

    {
       -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
       -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
       -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
       -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,   -9,
       -9,   -9

    },

    {
        9,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
      -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
      -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
      -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,  -10,
      -10,  -10
    },

    {
        9,  -11,   52,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
      -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
      -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
      -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,  -11,
      -11,  -11

    },

    {
        9,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,
      -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,
      -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,
      -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,  -12,
      -12,  -12
    },

    {
        9,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,
      -13,  -13,  -13,  -13,  -13,  -13,   53,  -13,  -13,  -13,
      -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,
      -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,  -13,
      -13,  -13

    },

    {
        9,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
      -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
      -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
      -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,  -14,
      -14,  -14
    },

    {
        9,   54,   54,  -15,   54,   54,   54,   54,   54,   54,
       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
       54,   54

    },

    {
        9,  -16,  -16,  -16,  -16,  -16,  -16,   55,  -16,  -16,
      -16,  -16,  -16,   55,  -16,  -16,  -16,  -16,  -16,   55,
       55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
       55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
       55,  -16
    },

    {
        9,  -17,  -17,  -17,  -17,  -17,  -17,  -17,   56,  -17,
      -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
      -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
      -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,  -17,
      -17,  -17

    },

    {
        9,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
      -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
      -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
      -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,  -18,
      -18,  -18
    },

    {
        9,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
      -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
      -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
      -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,  -19,
      -19,  -19

    },

    {
        9,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
      -20,  -20,  -20,  -20,  -20,  -20,   57,  -20,  -20,  -20,
      -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
      -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,  -20,
      -20,  -20
    },

    {
        9,  -21,  -21,  -21,  -21,  -21,  -21,   55,  -21,  -21,
      -21,  -21,  -21,   58,  -21,  -21,  -21,  -21,  -21,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,  -21

    },

    {
        9,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
      -22,  -22,  -22,  -22,  -22,  -22,   59,  -22,  -22,  -22,
      -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
      -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,  -22,
      -22,  -22
    },

    {
        9,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
      -23,  -23,  -23,  -23,  -23,  -23,   60,  -23,  -23,  -23,
      -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
      -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,  -23,
      -23,  -23

    },

    {
        9,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
      -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
      -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
      -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,  -24,
      -24,  -24
    },

    {
        9,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
      -25,  -25,  -25,  -25,  -25,  -25,   61,  -25,  -25,  -25,
      -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
      -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,  -25,
      -25,  -25

    },

    {
        9,  -26,  -26,   62,  -26,  -26,  -26,  -26,  -26,  -26,
      -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
      -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
      -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,  -26,
      -26,  -26
    },

    {
        9,  -27,  -27,  -27,  -27,  -27,  -27,   55,  -27,  -27,
      -27,  -27,  -27,   58,  -27,  -27,  -27,  -27,  -27,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   63,   58,   58,   58,   58,   58,   58,   58,
       58,  -27

    },

    {
        9,  -28,  -28,  -28,  -28,  -28,  -28,   55,  -28,  -28,
      -28,  -28,  -28,   58,  -28,  -28,  -28,  -28,  -28,   58,
       58,   58,   58,   58,   58,   58,   58,   64,   58,   58,
       58,   58,   65,   58,   58,   58,   58,   58,   58,   58,
       58,  -28
    },

    {
        9,  -29,  -29,  -29,  -29,  -29,  -29,   55,  -29,  -29,
      -29,  -29,  -29,   58,  -29,  -29,  -29,  -29,  -29,   58,
       58,   58,   58,   58,   66,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,  -29

    },

    {
        9,  -30,  -30,  -30,  -30,  -30,  -30,   55,  -30,  -30,
      -30,  -30,  -30,   58,  -30,  -30,  -30,  -30,  -30,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   67,   58,   58,   58,   58,   58,   58,   58,   58,
       58,  -30
    },

    {
        9,  -31,  -31,  -31,  -31,  -31,  -31,   55,  -31,  -31,
      -31,  -31,  -31,   58,  -31,  -31,  -31,  -31,  -31,   58,
       58,   58,   58,   58,   68,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,  -31

    },

    {
        9,  -32,  -32,  -32,  -32,  -32,  -32,   55,  -32,  -32,
      -32,  -32,  -32,   58,  -32,  -32,  -32,  -32,  -32,   58,
       58,   58,   58,   58,   58,   69,   58,   58,   58,   58,
       70,   71,   58,   58,   58,   58,   58,   58,   58,   58,
       58,  -32
    },

    {
        9,  -33,  -33,  -33,  -33,  -33,  -33,   55,  -33,  -33,
      -33,  -33,  -33,   58,  -33,  -33,  -33,  -33,  -33,   58,
       72,   58,   58,   58,   73,   58,   58,   58,   58,   58,
       58,   58,   74,   58,   58,   58,   58,   58,   58,   58,
       58,  -33

    },

    {
        9,  -34,  -34,  -34,  -34,  -34,  -34,   55,  -34,  -34,
      -34,  -34,  -34,   58,  -34,  -34,  -34,  -34,  -34,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   75,   58,   76,   58,   58,   58,   58,   58,   58,
       58,  -34
    },

    {
        9,  -35,  -35,  -35,  -35,  -35,  -35,   55,  -35,  -35,
      -35,  -35,  -35,   58,  -35,  -35,  -35,  -35,  -35,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   77,   58,   58,   58,   58,   58,
       58,  -35

    },

    {
        9,  -36,  -36,  -36,  -36,  -36,  -36,   55,  -36,  -36,
      -36,  -36,  -36,   58,  -36,  -36,  -36,  -36,  -36,   58,
       78,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,  -36
    },

    {
        9,  -37,  -37,  -37,  -37,  -37,  -37,   55,  -37,  -37,
      -37,  -37,  -37,   58,  -37,  -37,  -37,  -37,  -37,   58,
       58,   58,   58,   58,   79,   58,   58,   58,   58,   58,
       58,   58,   80,   58,   58,   58,   81,   58,   58,   58,
       58,  -37

    },

    {
        9,  -38,  -38,  -38,  -38,  -38,  -38,   55,  -38,  -38,
      -38,  -38,  -38,   58,  -38,  -38,  -38,  -38,  -38,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   82,   58,   58,   58,   58,   58,
       58,  -38
    },

    {
        9,  -39,  -39,  -39,  -39,  -39,  -39,   55,  -39,  -39,
      -39,  -39,  -39,   58,  -39,  -39,  -39,  -39,  -39,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   83,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,  -39

    },

    {
        9,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
      -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
      -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
      -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,  -40,
      -40,   84
    },

    {
        9,   85,   86,  -41,   85,   85,   85,   85,   85,   85,
       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
       85,   85

    },

    {
        9,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
      -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
      -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
      -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,  -42,
      -42,  -42
    },

    {
        9,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
      -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
      -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
      -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,  -43,
      -43,  -43

    },

    {
        9,   87,   87,  -44,   87,   87,   87,   87,   87,   87,
       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
       87,   87
    },

    {
        9,  -45,   88,   89,  -45,  -45,  -45,  -45,  -45,  -45,
      -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
      -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
      -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,  -45,
      -45,  -45

    },

    {
        9,   90,  -46,  -46,   90,   90,   90,   90,   90,   90,
       90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
       90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
       90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
       90,   90
    },

    {
        9,   91,   91,  -47,   91,  -47,   91,  -47,   91,  -47,
       91,   91,   91,   91,   91,   91,   91,   91,  -47,   91,
       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
       91,   91

    },

    {
        9,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
      -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
      -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
      -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,  -48,
      -48,  -48
    },

    {
        9,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
      -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
      -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
      -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,  -49,
      -49,  -49

    },

    {
        9,   92,   92,  -50,   92,   92,   92,   92,   92,   92,
       92,   92,   92,   92,   92,   92,   92,   92,   92,   92,
       92,   92,   92,   92,   92,   92,   92,   92,   92,   92,
       92,   92,   92,   92,   92,   92,   92,   92,   92,   92,
       92,   92
    },

    {
        9,   93,   93,  -51,   93,   93,   93,   93,   93,   93,
       93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
       93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
       93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
       93,   93

    },

    {
        9,  -52,   52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
      -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
      -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
      -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,  -52,
      -52,  -52
    },

    {
        9,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
      -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
      -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
      -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,  -53,
      -53,  -53

    },

    {
        9,   54,   54,  -54,   54,   54,   54,   54,   54,   54,
       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
       54,   54
    },

    {
        9,  -55,  -55,  -55,  -55,  -55,  -55,   55,  -55,  -55,
      -55,  -55,  -55,   55,  -55,  -55,  -55,  -55,  -55,   55,
       55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
       55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
       55,  -55

    },

    {
        9,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,
      -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,
      -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,
      -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,  -56,
      -56,  -56
    },

    {
        9,  -57,  -57,  -57,  -57,  -57,  -57,  -57,  -57,  -57,
      -57,  -57,  -57,  -57,  -57,  -57,  -57,  -57,  -57,  -57,
      -57,  -57,  -57,  -57,  -57,  -57,  -57,  -57,  -57,  -57,
      -57,  -57,  -57,  -57,  -57,  -57,  -57,  -57,  -57,  -57,
      -57,  -57

    },

    {
        9,  -58,  -58,  -58,  -58,  -58,  -58,   55,  -58,  -58,
      -58,  -58,  -58,   58,  -58,  -58,  -58,  -58,  -58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,  -58
    },

    {
        9,  -59,  -59,  -59,  -59,  -59,  -59,  -59,  -59,  -59,
      -59,  -59,  -59,  -59,  -59,  -59,  -59,  -59,  -59,  -59,
      -59,  -59,  -59,  -59,  -59,  -59,  -59,  -59,  -59,  -59,
      -59,  -59,  -59,  -59,  -59,  -59,  -59,  -59,  -59,  -59,
      -59,  -59

    },

    {
        9,  -60,  -60,  -60,  -60,  -60,  -60,  -60,  -60,  -60,
      -60,  -60,  -60,  -60,  -60,  -60,  -60,  -60,  -60,  -60,
      -60,  -60,  -60,  -60,  -60,  -60,  -60,  -60,  -60,  -60,
      -60,  -60,  -60,  -60,  -60,  -60,  -60,  -60,  -60,  -60,
      -60,  -60
    },

    {
        9,  -61,  -61,  -61,  -61,  -61,  -61,  -61,  -61,  -61,
      -61,  -61,  -61,  -61,  -61,  -61,  -61,  -61,  -61,  -61,
      -61,  -61,  -61,  -61,  -61,  -61,  -61,  -61,  -61,  -61,
      -61,  -61,  -61,  -61,  -61,  -61,  -61,  -61,  -61,  -61,
      -61,  -61

    },

    {
        9,  -62,  -62,  -62,  -62,  -62,  -62,  -62,  -62,  -62,
      -62,  -62,  -62,  -62,  -62,  -62,  -62,  -62,  -62,  -62,
      -62,  -62,  -62,  -62,  -62,  -62,  -62,  -62,  -62,  -62,
      -62,  -62,  -62,  -62,  -62,  -62,  -62,  -62,  -62,  -62,
      -62,  -62
    },

    {
        9,  -63,  -63,  -63,  -63,  -63,  -63,   55,  -63,  -63,
      -63,  -63,  -63,   58,  -63,  -63,  -63,  -63,  -63,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   94,   58,   58,   58,   58,   58,   58,   58,
       58,  -63

    },

    {
        9,  -64,  -64,  -64,  -64,  -64,  -64,   55,  -64,  -64,
      -64,  -64,  -64,   58,  -64,  -64,  -64,  -64,  -64,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   95,   58,   58,   58,   58,   58,   58,   58,
       58,  -64
    },

    {
        9,  -65,  -65,  -65,  -65,  -65,  -65,   55,  -65,  -65,
      -65,  -65,  -65,   58,  -65,  -65,  -65,  -65,  -65,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       96,   97,   58,   58,   58,   58,   58,   58,   58,   58,
       58,  -65

    },

    {
        9,  -66,  -66,  -66,  -66,  -66,  -66,   55,  -66,  -66,
      -66,  -66,  -66,   58,  -66,  -66,  -66,  -66,  -66,   58,
       58,   58,   58,   58,   58,   98,   58,   58,   58,   58,
       58,   58,   58,   99,   58,   58,   58,   58,   58,   58,
       58,  -66
    },

    {
        9,  -67,  -67,  -67,  -67,  -67,  -67,   55,  -67,  -67,
      -67,  -67,  -67,   58,  -67,  -67,  -67,  -67,  -67,   58,
       58,   58,   58,  100,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,  -67

    },

    {
        9,  -68,  -68,  -68,  -68,  -68,  -68,   55,  -68,  -68,
      -68,  -68,  -68,   58,  -68,  -68,  -68,  -68,  -68,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,  101,
       58,   58,   58,   58,   58,   58,   58,   58,   58,  102,
       58,  -68
    },

    {
        9,  -69,  -69,  -69,  -69,  -69,  -69,   55,  -69,  -69,
      -69,  -69,  -69,   58,  -69,  -69,  -69,  -69,  -69,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,  -69

    },

    {
        9,  -70,  -70,  -70,  -70,  -70,  -70,   55,  -70,  -70,
      -70,  -70,  -70,   58,  -70,  -70,  -70,  -70,  -70,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,  103,   58,   58,   58,   58,   58,   58,
       58,  -70
    },

    {
        9,  -71,  -71,  -71,  -71,  -71,  -71,   55,  -71,  -71,
      -71,  -71,  -71,   58,  -71,  -71,  -71,  -71,  -71,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,  104,   58,   58,   58,
       58,  -71

    },

    {
        9,  -72,  -72,  -72,  -72,  -72,  -72,   55,  -72,  -72,
      -72,  -72,  -72,   58,  -72,  -72,  -72,  -72,  -72,   58,
       58,   58,   58,   58,   58,   58,   58,   58,  105,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,  -72
    },

    {
        9,  -73,  -73,  -73,  -73,  -73,  -73,   55,  -73,  -73,
      -73,  -73,  -73,   58,  -73,  -73,  -73,  -73,  -73,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,  106,   58,   58,   58,   58,   58,   58,   58,   58,
       58,  -73

    },

    {
        9,  -74,  -74,  -74,  -74,  -74,  -74,   55,  -74,  -74,
      -74,  -74,  -74,   58,  -74,  -74,  -74,  -74,  -74,   58,
       58,   58,   58,  107,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,  -74
    },

    {
        9,  -75,  -75,  -75,  -75,  -75,  -75,   55,  -75,  -75,
      -75,  -75,  -75,   58,  -75,  -75,  -75,  -75,  -75,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,  -75

    },

    {
        9,  -76,  -76,  -76,  -76,  -76,  -76,   55,  -76,  -76,
      -76,  -76,  -76,   58,  -76,  -76,  -76,  -76,  -76,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,  108,   58,   58,   58,
       58,  -76
    },

    {
        9,  -77,  -77,  -77,  -77,  -77,  -77,   55,  -77,  -77,
      -77,  -77,  -77,   58,  -77,  -77,  -77,  -77,  -77,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,  109,   58,   58,   58,   58,   58,   58,   58,
       58,  -77

    },

    {
        9,  -78,  -78,  -78,  -78,  -78,  -78,   55,  -78,  -78,
      -78,  -78,  -78,   58,  -78,  -78,  -78,  -78,  -78,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,  110,   58,   58,   58,   58,   58,   58,   58,   58,
       58,  -78
    },

    {
        9,  -79,  -79,  -79,  -79,  -79,  -79,   55,  -79,  -79,
      -79,  -79,  -79,   58,  -79,  -79,  -79,  -79,  -79,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,  111,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,  -79

    },

    {
        9,  -80,  -80,  -80,  -80,  -80,  -80,   55,  -80,  -80,
      -80,  -80,  -80,   58,  -80,  -80,  -80,  -80,  -80,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,  112,   58,   58,
       58,  -80
    },

    {
        9,  -81,  -81,  -81,  -81,  -81,  -81,   55,  -81,  -81,
      -81,  -81,  -81,   58,  -81,  -81,  -81,  -81,  -81,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,  113,   58,   58,   58,   58,   58,
       58,  -81

    },

    {
        9,  -82,  -82,  -82,  -82,  -82,  -82,   55,  -82,  -82,
      -82,  -82,  -82,   58,  -82,  -82,  -82,  -82,  -82,   58,
       58,   58,   58,   58,   58,   58,   58,   58,  114,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,  -82
    },

    {
        9,  -83,  -83,  -83,  -83,  -83,  -83,   55,  -83,  -83,
      -83,  -83,  -83,   58,  -83,  -83,  -83,  -83,  -83,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,  115,   58,   58,   58,   58,
       58,  -83

    },

    {
        9,  -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,
      -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,
      -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,
      -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,  -84,
      -84,  -84
    },

    {
        9,   85,   86,  -85,   85,   85,   85,   85,   85,   85,
       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
       85,   85

    },

    {
        9,   86,   86,  -86,   86,   86,   86,   86,   86,   86,
       86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
       86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
       86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
       86,   86
    },

    {
        9,   87,   87,  -87,   87,   87,   87,   87,   87,   87,
       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
       87,   87

    },

    {
        9,  -88,   88,   89,  -88,  -88,  -88,  -88,  -88,  -88,
      -88,  -88,  -88,  -88,  -88,  -88,  -88,  -88,  -88,  -88,
      -88,  -88,  -88,  -88,  -88,  -88,  -88,  -88,  -88,  -88,
      -88,  -88,  -88,  -88,  -88,  -88,  -88,  -88,  -88,  -88,
      -88,  -88
    },

    {
        9,   90,  -89,  -89,   90,   90,   90,   90,   90,   90,
       90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
       90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
       90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
       90,   90

    },

    {
        9,  -90,  -90,  -90,  -90,  -90,  -90,  -90,  -90,  -90,
      -90,  -90,  -90,  -90,  -90,  -90,  -90,  -90,  -90,  -90,
      -90,  -90,  -90,  -90,  -90,  -90,  -90,  -90,  -90,  -90,
      -90,  -90,  -90,  -90,  -90,  -90,  -90,  -90,  -90,  -90,
      -90,  -90
    },

    {
        9,   91,   91,  -91,   91,  -91,   91,  -91,   91,  -91,
       91,   91,   91,   91,   91,   91,   91,   91,  -91,   91,
       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
       91,   91

    },

    {
        9,   92,   92,  -92,   92,   92,   92,   92,   92,   92,
       92,   92,   92,   92,   92,   92,   92,   92,   92,   92,
       92,   92,   92,   92,   92,   92,   92,   92,   92,   92,
       92,   92,   92,   92,   92,   92,   92,   92,   92,   92,
       92,   92
    },

    {
        9,  -93,  -93,  -93,  -93,  -93,  -93,  -93,  -93,  -93,
      -93,  -93,  -93,  -93,  -93,  -93,  -93,  -93,  -93,  -93,
      -93,  -93,  -93,  -93,  -93,  -93,  -93,  -93,  -93,  -93,
      -93,  -93,  -93,  -93,  -93,  -93,  -93,  -93,  -93,  -93,
      -93,  -93

    },

    {
        9,  -94,  -94,  -94,  -94,  -94,  -94,   55,  -94,  -94,
      -94,  -94,  -94,   58,  -94,  -94,  -94,  -94,  -94,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,  116,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,  -94
    },

    {
        9,  -95,  -95,  -95,  -95,  -95,  -95,   55,  -95,  -95,
      -95,  -95,  -95,   58,  -95,  -95,  -95,  -95,  -95,   58,
       58,   58,   58,   58,   58,   58,   58,   58,  117,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,  -95

    },

    {
        9,  -96,  -96,  -96,  -96,  -96,  -96,   55,  -96,  -96,
      -96,  -96,  -96,   58,  -96,  -96,  -96,  -96,  -96,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
      118,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,  -96
    },

    {
        9,  -97,  -97,  -97,  -97,  -97,  -97,   55,  -97,  -97,
      -97,  -97,  -97,   58,  -97,  -97,  -97,  -97,  -97,   58,
       58,   58,   58,   58,   58,  119,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,  -97

    },

    {
        9,  -98,  -98,  -98,  -98,  -98,  -98,   55,  -98,  -98,
      -98,  -98,  -98,   58,  -98,  -98,  -98,  -98,  -98,  120,
      121,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,  -98
    },

    {
        9,  -99,  -99,  -99,  -99,  -99,  -99,   55,  -99,  -99,
      -99,  -99,  -99,   58,  -99,  -99,  -99,  -99,  -99,   58,
       58,   58,   58,   58,  122,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,  -99

    },

    {
        9, -100, -100, -100, -100, -100, -100,   55, -100, -100,
     -100, -100, -100,   58, -100, -100, -100, -100, -100,   58,
       58,   58,  123,   58,   58,   58,   58,   58,  124,   58,
      125,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -100
    },

    {
        9, -101, -101, -101, -101, -101, -101,   55, -101, -101,
     -101, -101, -101,   58, -101, -101, -101, -101, -101,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,  126,   58,   58,   58,   58,   58,   58,
       58, -101

    },

    {
        9, -102, -102, -102, -102, -102, -102,   55, -102, -102,
     -102, -102, -102,   58, -102, -102, -102, -102, -102,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -102
    },

    {
        9, -103, -103, -103, -103, -103, -103,   55, -103, -103,
     -103, -103, -103,   58, -103, -103, -103, -103, -103,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,  127,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -103

    },

    {
        9, -104, -104, -104, -104, -104, -104,   55, -104, -104,
     -104, -104, -104,   58, -104, -104, -104, -104, -104,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -104
    },

    {
        9, -105, -105, -105, -105, -105, -105,   55, -105, -105,
     -105, -105, -105,   58, -105, -105, -105, -105, -105,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,  128,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -105

    },

    {
        9, -106, -106, -106, -106, -106, -106,   55, -106, -106,
     -106, -106, -106,   58, -106, -106, -106, -106, -106,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,  129,   58,   58,
       58, -106
    },

    {
        9, -107, -107, -107, -107, -107, -107,   55, -107, -107,
     -107, -107, -107,   58, -107, -107, -107, -107, -107,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,  130,   58,   58,
       58, -107

    },

    {
        9, -108, -108, -108, -108, -108, -108,   55, -108, -108,
     -108, -108, -108,   58, -108, -108, -108, -108, -108,   58,
       58,   58,   58,   58,   58,   58,   58,   58,  131,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -108
    },

    {
        9, -109, -109, -109, -109, -109, -109,   55, -109, -109,
     -109, -109, -109,   58, -109, -109, -109, -109, -109,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
      132,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -109

    },

    {
        9, -110, -110, -110, -110, -110, -110,   55, -110, -110,
     -110, -110, -110,   58, -110, -110, -110, -110, -110,   58,
       58,   58,   58,   58,   58,   58,  133,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -110
    },

    {
        9, -111, -111, -111, -111, -111, -111,   55, -111, -111,
     -111, -111, -111,   58, -111, -111, -111, -111, -111,   58,
       58,   58,   58,   58,  134,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -111

    },

    {
        9, -112, -112, -112, -112, -112, -112,   55, -112, -112,
     -112, -112, -112,   58, -112, -112, -112, -112, -112,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,  135,   58,   58,   58,   58,   58,
       58, -112
    },

    {
        9, -113, -113, -113, -113, -113, -113,   55, -113, -113,
     -113, -113, -113,   58, -113, -113, -113, -113, -113,   58,
       58,   58,   58,   58,   58,   58,   58,   58,  136,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -113

    },

    {
        9, -114, -114, -114, -114, -114, -114,   55, -114, -114,
     -114, -114, -114,   58, -114, -114, -114, -114, -114,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,  137,   58,   58,   58,   58,
       58, -114
    },

    {
        9, -115, -115, -115, -115, -115, -115,   55, -115, -115,
     -115, -115, -115,   58, -115, -115, -115, -115, -115,   58,
       58,   58,   58,   58,   58,   58,   58,   58,  138,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -115

    },

    {
        9, -116, -116, -116, -116, -116, -116,   55, -116, -116,
     -116, -116, -116,   58, -116, -116, -116, -116, -116,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -116
    },

    {
        9, -117, -117, -117, -117, -117, -117,   55, -117, -117,
     -117, -117, -117,   58, -117, -117, -117, -117, -117,   58,
       58,   58,  139,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -117

    },

    {
        9, -118, -118, -118, -118, -118, -118,   55, -118, -118,
     -118, -118, -118,   58, -118, -118, -118, -118, -118,   58,
       58,   58,   58,   58,  140,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -118
    },

    {
        9, -119, -119, -119, -119, -119, -119,   55, -119, -119,
     -119, -119, -119,   58, -119, -119, -119, -119, -119,   58,
       58,   58,   58,   58,   58,   58,   58,   58,  141,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -119

    },

    {
        9, -120, -120, -120, -120, -120, -120,   55, -120, -120,
     -120, -120, -120,   58, -120, -120, -120, -120, -120,   58,
       58,  142,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,  143,   58,   58,   58,
       58, -120
    },

    {
        9, -121, -121, -121, -121, -121, -121,   55, -121, -121,
     -121, -121, -121,   58, -121, -121, -121, -121, -121,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,  144,   58,   58,
       58, -121

    },

    {
        9, -122, -122, -122, -122, -122, -122,   55, -122, -122,
     -122, -122, -122,   58, -122, -122, -122, -122, -122,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,  145,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -122
    },

    {
        9, -123, -123, -123, -123, -123, -123,   55, -123, -123,
     -123, -123, -123,   58, -123, -123, -123, -123, -123,   58,
       58,   58,   58,   58,   58,   58,   58,  146,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -123

    },

    {
        9, -124, -124, -124, -124, -124, -124,   55, -124, -124,
     -124, -124, -124,   58, -124, -124, -124, -124, -124,   58,
       58,   58,   58,   58,   58,  147,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -124
    },

    {
        9, -125, -125, -125, -125, -125, -125,   55, -125, -125,
     -125, -125, -125,   58, -125, -125, -125, -125, -125,   58,
       58,   58,   58,   58,  148,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -125

    },

    {
        9, -126, -126, -126, -126, -126, -126,   55, -126, -126,
     -126, -126, -126,   58, -126, -126, -126, -126, -126,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -126
    },

    {
        9, -127, -127, -127, -127, -127, -127,   55, -127, -127,
     -127, -127, -127,   58, -127, -127, -127, -127, -127,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
      149, -127

    },

    {
        9, -128, -128, -128, -128, -128, -128,   55, -128, -128,
     -128, -128, -128,   58, -128, -128, -128, -128, -128,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
      150,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -128
    },

    {
        9, -129, -129, -129, -129, -129, -129,   55, -129, -129,
     -129, -129, -129,   58, -129, -129, -129, -129, -129,   58,
       58,   58,  151,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -129

    },

    {
        9, -130, -130, -130, -130, -130, -130,   55, -130, -130,
     -130, -130, -130,   58, -130, -130, -130, -130, -130,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,  152,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -130
    },

    {
        9, -131, -131, -131, -131, -131, -131,   55, -131, -131,
     -131, -131, -131,   58, -131, -131, -131, -131, -131,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,  153,   58,   58,   58,   58,   58,   58,   58,
       58, -131

    },

    {
        9, -132, -132, -132, -132, -132, -132,   55, -132, -132,
     -132, -132, -132,   58, -132, -132, -132, -132, -132,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,  154,   58,   58,   58,   58,   58,   58,
       58, -132
    },

    {
        9, -133, -133, -133, -133, -133, -133,   55, -133, -133,
     -133, -133, -133,   58, -133, -133, -133, -133, -133,   58,
       58,   58,   58,   58,  155,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -133

    },

    {
        9, -134, -134, -134, -134, -134, -134,   55, -134, -134,
     -134, -134, -134,   58, -134, -134, -134, -134, -134,   58,
       58,   58,  156,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -134
    },

    {
        9, -135, -135, -135, -135, -135, -135,   55, -135, -135,
     -135, -135, -135,   58, -135, -135, -135, -135, -135,   58,
       58,   58,  157,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -135

    },

    {
        9, -136, -136, -136, -136, -136, -136,   55, -136, -136,
     -136, -136, -136,   58, -136, -136, -136, -136, -136,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,  158,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -136
    },

    {
        9, -137, -137, -137, -137, -137, -137,   55, -137, -137,
     -137, -137, -137,   58, -137, -137, -137, -137, -137,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,  159,   58,   58,   58,
       58, -137

    },

    {
        9, -138, -138, -138, -138, -138, -138,   55, -138, -138,
     -138, -138, -138,   58, -138, -138, -138, -138, -138,   58,
       58,  160,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -138
    },

    {
        9, -139, -139, -139, -139, -139, -139,   55, -139, -139,
     -139, -139, -139,   58, -139, -139, -139, -139, -139,   58,
       58,   58,   58,   58,  161,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -139

    },

    {
        9, -140, -140, -140, -140, -140, -140,   55, -140, -140,
     -140, -140, -140,   58, -140, -140, -140, -140, -140,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,  162,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -140
    },

    {
        9, -141, -141, -141, -141, -141, -141,   55, -141, -141,
     -141, -141, -141,   58, -141, -141, -141, -141, -141,   58,
       58,   58,   58,   58,   58,   58,  163,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -141

    },

    {
        9, -142, -142, -142, -142, -142, -142,   55, -142, -142,
     -142, -142, -142,   58, -142, -142, -142, -142, -142,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,  164,   58,   58,   58,   58,   58,   58,   58,
       58, -142
    },

    {
        9, -143, -143, -143, -143, -143, -143,   55, -143, -143,
     -143, -143, -143,   58, -143, -143, -143, -143, -143,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,  165,   58,   58,   58,   58,   58,
       58, -143

    },

    {
        9, -144, -144, -144, -144, -144, -144,   55, -144, -144,
     -144, -144, -144,   58, -144, -144, -144, -144, -144,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,  166,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -144
    },

    {
        9, -145, -145, -145, -145, -145, -145,   55, -145, -145,
     -145, -145, -145,   58, -145, -145, -145, -145, -145,   58,
       58,   58,   58,  167,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -145

    },

    {
        9, -146, -146, -146, -146, -146, -146,   55, -146, -146,
     -146, -146, -146,   58, -146, -146, -146, -146, -146,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,  168,   58,   58,   58,   58,   58,   58,   58,
       58, -146
    },

    {
        9, -147, -147, -147, -147, -147, -147,   55, -147, -147,
     -147, -147, -147,   58, -147, -147, -147, -147, -147,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -147

    },

    {
        9, -148, -148, -148, -148, -148, -148,   55, -148, -148,
     -148, -148, -148,   58, -148, -148, -148, -148, -148,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,  169,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -148
    },

    {
        9, -149, -149, -149, -149, -149, -149,   55, -149, -149,
     -149, -149, -149,   58, -149, -149, -149, -149, -149,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -149

    },

    {
        9, -150, -150, -150, -150, -150, -150,   55, -150, -150,
     -150, -150, -150,   58, -150, -150, -150, -150, -150,   58,
       58,   58,   58,   58,  170,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -150
    },

    {
        9, -151, -151, -151, -151, -151, -151,   55, -151, -151,
     -151, -151, -151,   58, -151, -151, -151, -151, -151,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,  171,   58,   58,   58,   58,   58,   58,   58,
       58, -151

    },

    {
        9, -152, -152, -152, -152, -152, -152,   55, -152, -152,
     -152, -152, -152,   58, -152, -152, -152, -152, -152,   58,
       58,   58,   58,   58,  172,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -152
    },

    {
        9, -153, -153, -153, -153, -153, -153,   55, -153, -153,
     -153, -153, -153,   58, -153, -153, -153, -153, -153,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,  173,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -153

    },

    {
        9, -154, -154, -154, -154, -154, -154,   55, -154, -154,
     -154, -154, -154,   58, -154, -154, -154, -154, -154,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,  174,   58,   58,   58,
       58, -154
    },

    {
        9, -155, -155, -155, -155, -155, -155,   55, -155, -155,
     -155, -155, -155,   58, -155, -155, -155, -155, -155,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -155

    },

    {
        9, -156, -156, -156, -156, -156, -156,   55, -156, -156,
     -156, -156, -156,   58, -156, -156, -156, -156, -156,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,  175,   58,   58,   58,
       58, -156
    },

    {
        9, -157, -157, -157, -157, -157, -157,   55, -157, -157,
     -157, -157, -157,   58, -157, -157, -157, -157, -157,   58,
       58,   58,   58,   58,  176,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -157

    },

    {
        9, -158, -158, -158, -158, -158, -158,   55, -158, -158,
     -158, -158, -158,   58, -158, -158, -158, -158, -158,   58,
       58,   58,   58,   58,   58,   58,  177,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -158
    },

    {
        9, -159, -159, -159, -159, -159, -159,   55, -159, -159,
     -159, -159, -159,   58, -159, -159, -159, -159, -159,   58,
      178,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -159

    },

    {
        9, -160, -160, -160, -160, -160, -160,   55, -160, -160,
     -160, -160, -160,   58, -160, -160, -160, -160, -160,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,  179,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -160
    },

    {
        9, -161, -161, -161, -161, -161, -161,   55, -161, -161,
     -161, -161, -161,   58, -161, -161, -161, -161, -161,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -161

    },

    {
        9, -162, -162, -162, -162, -162, -162,   55, -162, -162,
     -162, -162, -162,   58, -162, -162, -162, -162, -162,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,  180,   58,   58,   58,
       58, -162
    },

    {
        9, -163, -163, -163, -163, -163, -163,   55, -163, -163,
     -163, -163, -163,   58, -163, -163, -163, -163, -163,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -163

    },

    {
        9, -164, -164, -164, -164, -164, -164,   55, -164, -164,
     -164, -164, -164,   58, -164, -164, -164, -164, -164,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,  181,   58,   58,   58,   58,   58,   58,   58,
       58, -164
    },

    {
        9, -165, -165, -165, -165, -165, -165,   55, -165, -165,
     -165, -165, -165,   58, -165, -165, -165, -165, -165,   58,
       58,   58,   58,   58,   58,   58,   58,   58,  182,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -165

    },

    {
        9, -166, -166, -166, -166, -166, -166,   55, -166, -166,
     -166, -166, -166,   58, -166, -166, -166, -166, -166,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,  183,   58,   58,   58,
       58, -166
    },

    {
        9, -167, -167, -167, -167, -167, -167,   55, -167, -167,
     -167, -167, -167,   58, -167, -167, -167, -167, -167,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,  184,   58,   58,   58,   58,
       58, -167

    },

    {
        9, -168, -168, -168, -168, -168, -168,   55, -168, -168,
     -168, -168, -168,   58, -168, -168, -168, -168, -168,   58,
       58,   58,   58,   58,   58,   58,   58,   58,  185,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -168
    },

    {
        9, -169, -169, -169, -169, -169, -169,   55, -169, -169,
     -169, -169, -169,   58, -169, -169, -169, -169, -169,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,  186,   58,   58,
       58, -169

    },

    {
        9, -170, -170, -170, -170, -170, -170,   55, -170, -170,
     -170, -170, -170,   58, -170, -170, -170, -170, -170,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,  187,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -170
    },

    {
        9, -171, -171, -171, -171, -171, -171,   55, -171, -171,
     -171, -171, -171,   58, -171, -171, -171, -171, -171,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,  188,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -171

    },

    {
        9, -172, -172, -172, -172, -172, -172,   55, -172, -172,
     -172, -172, -172,   58, -172, -172, -172, -172, -172,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,  189,   58,   58,   58,   58,
       58, -172
    },

    {
        9, -173, -173, -173, -173, -173, -173,   55, -173, -173,
     -173, -173, -173,   58, -173, -173, -173, -173, -173,   58,
      190,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -173

    },

    {
        9, -174, -174, -174, -174, -174, -174,   55, -174, -174,
     -174, -174, -174,   58, -174, -174, -174, -174, -174,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -174
    },

    {
        9, -175, -175, -175, -175, -175, -175,   55, -175, -175,
     -175, -175, -175,   58, -175, -175, -175, -175, -175,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -175

    },

    {
        9, -176, -176, -176, -176, -176, -176,   55, -176, -176,
     -176, -176, -176,   58, -176, -176, -176, -176, -176,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -176
    },

    {
        9, -177, -177, -177, -177, -177, -177,   55, -177, -177,
     -177, -177, -177,   58, -177, -177, -177, -177, -177,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -177

    },

    {
        9, -178, -178, -178, -178, -178, -178,   55, -178, -178,
     -178, -178, -178,   58, -178, -178, -178, -178, -178,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,  191,   58,   58,   58,
       58, -178
    },

    {
        9, -179, -179, -179, -179, -179, -179,   55, -179, -179,
     -179, -179, -179,   58, -179, -179, -179, -179, -179,   58,
       58,   58,   58,   58,  192,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -179

    },

    {
        9, -180, -180, -180, -180, -180, -180,   55, -180, -180,
     -180, -180, -180,   58, -180, -180, -180, -180, -180,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -180
    },

    {
        9, -181, -181, -181, -181, -181, -181,   55, -181, -181,
     -181, -181, -181,   58, -181, -181, -181, -181, -181,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,  193,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -181

    },

    {
        9, -182, -182, -182, -182, -182, -182,   55, -182, -182,
     -182, -182, -182,   58, -182, -182, -182, -182, -182,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,  194,   58,   58,   58,   58,
       58, -182
    },

    {
        9, -183, -183, -183, -183, -183, -183,   55, -183, -183,
     -183, -183, -183,   58, -183, -183, -183, -183, -183,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -183

    },

    {
        9, -184, -184, -184, -184, -184, -184,   55, -184, -184,
     -184, -184, -184,   58, -184, -184, -184, -184, -184,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -184
    },

    {
        9, -185, -185, -185, -185, -185, -185,   55, -185, -185,
     -185, -185, -185,   58, -185, -185, -185, -185, -185,   58,
       58,   58,  195,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -185

    },

    {
        9, -186, -186, -186, -186, -186, -186,   55, -186, -186,
     -186, -186, -186,   58, -186, -186, -186, -186, -186,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -186
    },

    {
        9, -187, -187, -187, -187, -187, -187,   55, -187, -187,
     -187, -187, -187,   58, -187, -187, -187, -187, -187,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,  196,   58,   58,
       58, -187

    },

    {
        9, -188, -188, -188, -188, -188, -188,   55, -188, -188,
     -188, -188, -188,   58, -188, -188, -188, -188, -188,   58,
       58,   58,   58,   58,   58,  197,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -188
    },

    {
        9, -189, -189, -189, -189, -189, -189,   55, -189, -189,
     -189, -189, -189,   58, -189, -189, -189, -189, -189,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -189

    },

    {
        9, -190, -190, -190, -190, -190, -190,   55, -190, -190,
     -190, -190, -190,   58, -190, -190, -190, -190, -190,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,  198,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -190
    },

    {
        9, -191, -191, -191, -191, -191, -191,   55, -191, -191,
     -191, -191, -191,   58, -191, -191, -191, -191, -191,   58,
       58,   58,   58,   58,  199,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -191

    },

    {
        9, -192, -192, -192, -192, -192, -192,   55, -192, -192,
     -192, -192, -192,   58, -192, -192, -192, -192, -192,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -192
    },

    {
        9, -193, -193, -193, -193, -193, -193,   55, -193, -193,
     -193, -193, -193,   58, -193, -193, -193, -193, -193,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -193

    },

    {
        9, -194, -194, -194, -194, -194, -194,   55, -194, -194,
     -194, -194, -194,   58, -194, -194, -194, -194, -194,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,  200,   58,   58,   58,
       58, -194
    },

    {
        9, -195, -195, -195, -195, -195, -195,   55, -195, -195,
     -195, -195, -195,   58, -195, -195, -195, -195, -195,   58,
       58,   58,   58,   58,  201,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -195

    },

    {
        9, -196, -196, -196, -196, -196, -196,   55, -196, -196,
     -196, -196, -196,   58, -196, -196, -196, -196, -196,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -196
    },

    {
        9, -197, -197, -197, -197, -197, -197,   55, -197, -197,
     -197, -197, -197,   58, -197, -197, -197, -197, -197,   58,
       58,   58,   58,   58,   58,   58,   58,   58,  202,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -197

    },

    {
        9, -198, -198, -198, -198, -198, -198,   55, -198, -198,
     -198, -198, -198,   58, -198, -198, -198, -198, -198,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -198
    },

    {
        9, -199, -199, -199, -199, -199, -199,   55, -199, -199,
     -199, -199, -199,   58, -199, -199, -199, -199, -199,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -199

    },

    {
        9, -200, -200, -200, -200, -200, -200,   55, -200, -200,
     -200, -200, -200,   58, -200, -200, -200, -200, -200,   58,
      203,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -200
    },

    {
        9, -201, -201, -201, -201, -201, -201,   55, -201, -201,
     -201, -201, -201,   58, -201, -201, -201, -201, -201,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -201

    },

    {
        9, -202, -202, -202, -202, -202, -202,   55, -202, -202,
     -202, -202, -202,   58, -202, -202, -202, -202, -202,   58,
       58,   58,   58,   58,   58,   58,  204,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -202
    },

    {
        9, -203, -203, -203, -203, -203, -203,   55, -203, -203,
     -203, -203, -203,   58, -203, -203, -203, -203, -203,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,  205,   58,   58,   58,
       58, -203

    },

    {
        9, -204, -204, -204, -204, -204, -204,   55, -204, -204,
     -204, -204, -204,   58, -204, -204, -204, -204, -204,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -204
    },

    {
        9, -205, -205, -205, -205, -205, -205,   55, -205, -205,
     -205, -205, -205,   58, -205, -205, -205, -205, -205,   58,
       58,   58,   58,   58,  206,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -205

    },

    {
        9, -206, -206, -206, -206, -206, -206,   55, -206, -206,
     -206, -206, -206,   58, -206, -206, -206, -206, -206,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
       58, -206
    },

    } ;

static yy_state_type yy_get_previous_state ( void );
static yy_state_type yy_try_NUL_trans ( yy_state_type current_state  );
static int yy_get_next_buffer ( void );
static void yynoreturn yy_fatal_error ( const char* msg  );

/* Done after the current pattern has been matched and before the
 * corresponding action - sets up yytext.
 */
#define YY_DO_BEFORE_ACTION \
	(yytext_ptr) = yy_bp; \
	yyleng = (int) (yy_cp - yy_bp); \
	(yy_hold_char) = *yy_cp; \
	*yy_cp = '\0'; \
	(yy_c_buf_p) = yy_cp;
#define YY_NUM_RULES 63
#define YY_END_OF_BUFFER 64
/* This struct is not used in this scanner,
   but its presence is necessary. */
struct yy_trans_info
	{
	flex_int32_t yy_verify;
	flex_int32_t yy_nxt;
	};
static const flex_int16_t yy_accept[207] =
    {   0,
        2,    2,    0,    0,    0,    0,    0,    0,   64,   50,
        2,    4,   42,   47,    1,   49,   50,   43,   44,   50,
       48,   50,   38,   36,   40,   50,   48,   48,   48,   48,
       48,   48,   48,   48,   48,   48,   48,   48,   48,   50,
       51,   53,   52,   62,   59,   61,   55,   58,   57,   54,
       56,    2,   37,    1,   49,   35,   46,   48,   45,   39,
       41,    3,   48,   48,   48,   48,   48,   48,   18,   48,
       48,   48,   48,   48,   25,   48,   48,   48,   48,   48,
       48,   48,   48,   34,   51,   51,   62,   59,   61,   60,
       55,   54,   56,   48,   48,   48,   48,   48,   48,   48,

       48,   17,   48,   20,   48,   48,   48,   48,   48,   48,
       48,   48,   48,   48,   48,    5,   48,   48,   48,   48,
       48,   48,   48,   48,   48,   16,   48,   48,   22,   48,
       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
       48,   48,   48,   48,   48,   48,   14,   48,   19,   48,
       48,   48,   48,   48,   28,   48,   48,   48,   48,   48,
        6,   48,    8,   48,   48,   48,   48,   48,   48,   48,
       48,   48,   48,   27,   29,   30,   31,   48,   48,    7,
       48,   48,   11,   12,   48,   15,   48,   48,   24,   48,
       48,   33,    9,   48,   48,   21,   48,   26,   32,   48,

       13,   48,   48,   23,   48,   10
    } ;

static const YY_CHAR yy_ec[256] =
    {   0,
        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    2,    4,    5,    6,    7,    1,    8,    9,   10,
       11,    1,   12,    1,   13,    1,    1,   13,   13,   13,
       13,   13,   13,   13,   13,   13,   13,   14,    1,   15,
       16,   17,    1,    1,   13,   13,   13,   13,   13,   13,
       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
        1,   18,    1,    1,   19,    1,   20,   21,   22,   23,

       24,   25,   26,   27,   28,   13,   13,   29,   30,   31,
       32,   33,   13,   34,   35,   36,   37,   38,   13,   39,
       40,   13,    1,   41,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,

        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1
    } ;

/* Table of booleans, true if rule could match eol. */
static const flex_int32_t yy_rule_can_match_eol[64] =
    {   0,
0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 
    1, 1, 0, 0,     };

extern int yy_flex_debug;
int yy_flex_debug = 0;

/* The intent behind this definition is that it'll catch
 * any uses of REJECT which flex missed.
 */
#define REJECT reject_used_but_not_detected
#define yymore() yymore_used_but_not_detected
#define YY_MORE_ADJ 0
#define YY_RESTORE_YY_MORE_OFFSET
char *yytext;
/* SPDX-License-Identifier: GPL-2.0 */
/*
 * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
 */

#include <assert.h>
#include <glob.h>
#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "lkc.h"
#include "parser.tab.h"

#define YY_DECL		static int yylex1(void)

#define START_STRSIZE	16

static struct {
	struct file *file;
	int lineno;
} current_pos;

static int prev_prev_token = T_EOL;
static int prev_token = T_EOL;
static char *text;
static int text_size, text_asize;

struct buffer {
	struct buffer *parent;
	YY_BUFFER_STATE state;
};

static struct buffer *current_buf;

static int last_ts, first_ts;

static char *expand_token(const char *in, size_t n);
static void append_expanded_string(const char *in);
static void zconf_endhelp(void);
static void zconf_endfile(void);

static void new_string(void)
{
	text = xmalloc(START_STRSIZE);
	text_asize = START_STRSIZE;
	text_size = 0;
	*text = 0;
}

static void append_string(const char *str, int size)
{
	int new_size = text_size + size + 1;
	if (new_size > text_asize) {
		new_size += START_STRSIZE - 1;
		new_size &= -START_STRSIZE;
		text = xrealloc(text, new_size);
		text_asize = new_size;
	}
	memcpy(text + text_size, str, size);
	text_size += size;
	text[text_size] = 0;
}

static void alloc_string(const char *str, int size)
{
	text = xmalloc(size + 1);
	memcpy(text, str, size);
	text[size] = 0;
}

static void warn_ignored_character(char chr)
{
	fprintf(stderr,
	        "%s:%d:warning: ignoring unsupported character '%c'\n",
	        current_file->name, yylineno, chr);
}

#define INITIAL 0
#define ASSIGN_VAL 1
#define HELP 2
#define STRING 3

#ifndef YY_NO_UNISTD_H
/* Special case for "unistd.h", since it is non-ANSI. We include it way
 * down here because we want the user's section 1 to have been scanned first.
 * The user has a chance to override it with an option.
 */
#include <unistd.h>
#endif

#ifndef YY_EXTRA_TYPE
#define YY_EXTRA_TYPE void *
#endif

static int yy_init_globals ( void );

/* Accessor methods to globals.
   These are made visible to non-reentrant scanners for convenience. */

int yylex_destroy ( void );

int yyget_debug ( void );

void yyset_debug ( int debug_flag  );

YY_EXTRA_TYPE yyget_extra ( void );

void yyset_extra ( YY_EXTRA_TYPE user_defined  );

FILE *yyget_in ( void );

void yyset_in  ( FILE * _in_str  );

FILE *yyget_out ( void );

void yyset_out  ( FILE * _out_str  );

			int yyget_leng ( void );

char *yyget_text ( void );

int yyget_lineno ( void );

void yyset_lineno ( int _line_number  );

/* Macros after this point can all be overridden by user definitions in
 * section 1.
 */

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

#ifndef YY_NO_UNPUT
    
    static void yyunput ( int c, char *buf_ptr  );
    
#endif

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

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

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

#endif

/* Amount of stuff to slurp up with each read. */
#ifndef YY_READ_BUF_SIZE
#ifdef __ia64__
/* On IA-64, the buffer size is 16k, not 8k */
#define YY_READ_BUF_SIZE 16384
#else
#define YY_READ_BUF_SIZE 8192
#endif /* __ia64__ */
#endif

/* Copy whatever the last rule matched to the standard output. */
#ifndef ECHO
/* This used to be an fputs(), but since the string might contain NUL's,
 * we now use fwrite().
 */
#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0)
#endif

/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
 * is returned in "result".
 */
#ifndef YY_INPUT
#define YY_INPUT(buf,result,max_size) \
	errno=0; \
	while ( (result = (int) read( fileno(yyin), buf, (yy_size_t) max_size )) < 0 ) \
	{ \
		if( errno != EINTR) \
		{ \
			YY_FATAL_ERROR( "input in flex scanner failed" ); \
			break; \
		} \
		errno=0; \
		clearerr(yyin); \
	}\
\

#endif

/* No semi-colon after return; correct usage is to write "yyterminate();" -
 * we don't want an extra ';' after the "return" because that will cause
 * some compilers to complain about unreachable statements.
 */
#ifndef yyterminate
#define yyterminate() return YY_NULL
#endif

/* Number of entries by which start-condition stack grows. */
#ifndef YY_START_STACK_INCR
#define YY_START_STACK_INCR 25
#endif

/* Report a fatal error. */
#ifndef YY_FATAL_ERROR
#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
#endif

/* end tables serialization structures and prototypes */

/* Default declaration of generated scanner - a define so the user can
 * easily add parameters.
 */
#ifndef YY_DECL
#define YY_DECL_IS_OURS 1

extern int yylex (void);

#define YY_DECL int yylex (void)
#endif /* !YY_DECL */

/* Code executed at the beginning of each rule, after yytext and yyleng
 * have been set up.
 */
#ifndef YY_USER_ACTION
#define YY_USER_ACTION
#endif

/* Code executed at the end of each rule. */
#ifndef YY_BREAK
#define YY_BREAK /*LINTED*/break;
#endif

#define YY_RULE_SETUP \
	YY_USER_ACTION

/** The main scanner function which does all the work.
 */
YY_DECL
{
	yy_state_type yy_current_state;
	char *yy_cp, *yy_bp;
	int yy_act;
    
	if ( !(yy_init) )
		{
		(yy_init) = 1;

#ifdef YY_USER_INIT
		YY_USER_INIT;
#endif

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

		if ( ! yyin )
			yyin = stdin;

		if ( ! yyout )
			yyout = stdout;

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

		yy_load_buffer_state(  );
		}

	{

	int str = 0;
	int ts, i;

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

		/* Support of yytext. */
		*yy_cp = (yy_hold_char);

		/* yy_bp points to the position in yy_ch_buf of the start of
		 * the current run.
		 */
		yy_bp = yy_cp;

		yy_current_state = (yy_start);
yy_match:
		while ( (yy_current_state = yy_nxt[yy_current_state][ yy_ec[YY_SC_TO_UI(*yy_cp)]  ]) > 0 )
			++yy_cp;

		yy_current_state = -yy_current_state;

yy_find_action:
		yy_act = yy_accept[yy_current_state];

		YY_DO_BEFORE_ACTION;

		if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] )
			{
			int yyl;
			for ( yyl = 0; yyl < yyleng; ++yyl )
				if ( yytext[yyl] == '\n' )
					
    yylineno++;
;
			}

do_action:	/* This label is used only to access EOF actions. */

		switch ( yy_act )
	{ /* beginning of action switch */
case 1:
YY_RULE_SETUP
/* ignore comment */
	YY_BREAK
case 2:
YY_RULE_SETUP
/* whitespaces */
	YY_BREAK
case 3:
/* rule 3 can match eol */
YY_RULE_SETUP
/* escaped new line */
	YY_BREAK
case 4:
/* rule 4 can match eol */
YY_RULE_SETUP
return T_EOL;
	YY_BREAK
case 5:
YY_RULE_SETUP
return T_BOOL;
	YY_BREAK
case 6:
YY_RULE_SETUP
return T_CHOICE;
	YY_BREAK
case 7:
YY_RULE_SETUP
return T_COMMENT;
	YY_BREAK
case 8:
YY_RULE_SETUP
return T_CONFIG;
	YY_BREAK
case 9:
YY_RULE_SETUP
return T_DEF_BOOL;
	YY_BREAK
case 10:
YY_RULE_SETUP
return T_DEF_TRISTATE;
	YY_BREAK
case 11:
YY_RULE_SETUP
return T_DEFAULT;
	YY_BREAK
case 12:
YY_RULE_SETUP
return T_DEPENDS;
	YY_BREAK
case 13:
YY_RULE_SETUP
return T_ENDCHOICE;
	YY_BREAK
case 14:
YY_RULE_SETUP
return T_ENDIF;
	YY_BREAK
case 15:
YY_RULE_SETUP
return T_ENDMENU;
	YY_BREAK
case 16:
YY_RULE_SETUP
return T_HELP;
	YY_BREAK
case 17:
YY_RULE_SETUP
return T_HEX;
	YY_BREAK
case 18:
YY_RULE_SETUP
return T_IF;
	YY_BREAK
case 19:
YY_RULE_SETUP
return T_IMPLY;
	YY_BREAK
case 20:
YY_RULE_SETUP
return T_INT;
	YY_BREAK
case 21:
YY_RULE_SETUP
return T_MAINMENU;
	YY_BREAK
case 22:
YY_RULE_SETUP
return T_MENU;
	YY_BREAK
case 23:
YY_RULE_SETUP
return T_MENUCONFIG;
	YY_BREAK
case 24:
YY_RULE_SETUP
return T_MODULES;
	YY_BREAK
case 25:
YY_RULE_SETUP
return T_ON;
	YY_BREAK
case 26:
YY_RULE_SETUP
return T_OPTIONAL;
	YY_BREAK
case 27:
YY_RULE_SETUP
return T_PROMPT;
	YY_BREAK
case 28:
YY_RULE_SETUP
return T_RANGE;
	YY_BREAK
case 29:
YY_RULE_SETUP
return T_SELECT;
	YY_BREAK
case 30:
YY_RULE_SETUP
return T_SOURCE;
	YY_BREAK
case 31:
YY_RULE_SETUP
return T_STRING;
	YY_BREAK
case 32:
YY_RULE_SETUP
return T_TRISTATE;
	YY_BREAK
case 33:
YY_RULE_SETUP
return T_VISIBLE;
	YY_BREAK
case 34:
YY_RULE_SETUP
return T_OR;
	YY_BREAK
case 35:
YY_RULE_SETUP
return T_AND;
	YY_BREAK
case 36:
YY_RULE_SETUP
return T_EQUAL;
	YY_BREAK
case 37:
YY_RULE_SETUP
return T_UNEQUAL;
	YY_BREAK
case 38:
YY_RULE_SETUP
return T_LESS;
	YY_BREAK
case 39:
YY_RULE_SETUP
return T_LESS_EQUAL;
	YY_BREAK
case 40:
YY_RULE_SETUP
return T_GREATER;
	YY_BREAK
case 41:
YY_RULE_SETUP
return T_GREATER_EQUAL;
	YY_BREAK
case 42:
YY_RULE_SETUP
return T_NOT;
	YY_BREAK
case 43:
YY_RULE_SETUP
return T_OPEN_PAREN;
	YY_BREAK
case 44:
YY_RULE_SETUP
return T_CLOSE_PAREN;
	YY_BREAK
case 45:
YY_RULE_SETUP
return T_COLON_EQUAL;
	YY_BREAK
case 46:
YY_RULE_SETUP
return T_PLUS_EQUAL;
	YY_BREAK
case 47:
YY_RULE_SETUP
{
				str = yytext[0];
				new_string();
				BEGIN(STRING);
			}
	YY_BREAK
case 48:
YY_RULE_SETUP
{
				alloc_string(yytext, yyleng);
				yylval.string = text;
				return T_WORD;
			}
	YY_BREAK
case 49:
YY_RULE_SETUP
{
				/* this token includes at least one '$' */
				yylval.string = expand_token(yytext, yyleng);
				if (strlen(yylval.string))
					return T_WORD;
				free(yylval.string);
			}
	YY_BREAK
case 50:
YY_RULE_SETUP
warn_ignored_character(*yytext);
	YY_BREAK

case 51:
YY_RULE_SETUP
{
		alloc_string(yytext, yyleng);
		yylval.string = text;
		return T_ASSIGN_VAL;
	}
	YY_BREAK
case 52:
/* rule 52 can match eol */
YY_RULE_SETUP
{ BEGIN(INITIAL); return T_EOL; }
	YY_BREAK
case 53:
YY_RULE_SETUP

	YY_BREAK

case 54:
YY_RULE_SETUP
append_expanded_string(yytext);
	YY_BREAK
case 55:
YY_RULE_SETUP
{
		append_string(yytext, yyleng);
	}
	YY_BREAK
case 56:
YY_RULE_SETUP
{
		append_string(yytext + 1, yyleng - 1);
	}
	YY_BREAK
case 57:
YY_RULE_SETUP
{
		if (str == yytext[0]) {
			BEGIN(INITIAL);
			yylval.string = text;
			return T_WORD_QUOTE;
		} else
			append_string(yytext, 1);
	}
	YY_BREAK
case 58:
/* rule 58 can match eol */
YY_RULE_SETUP
{
		fprintf(stderr,
			"%s:%d:warning: multi-line strings not supported\n",
			zconf_curname(), zconf_lineno());
		unput('\n');
		BEGIN(INITIAL);
		yylval.string = text;
		return T_WORD_QUOTE;
	}
	YY_BREAK
case YY_STATE_EOF(STRING):
{
		BEGIN(INITIAL);
		yylval.string = text;
		return T_WORD_QUOTE;
	}
	YY_BREAK

case 59:
YY_RULE_SETUP
{
		ts = 0;
		for (i = 0; i < yyleng; i++) {
			if (yytext[i] == '\t')
				ts = (ts & ~7) + 8;
			else
				ts++;
		}
		last_ts = ts;
		if (first_ts) {
			if (ts < first_ts) {
				zconf_endhelp();
				return T_HELPTEXT;
			}
			ts -= first_ts;
			while (ts > 8) {
				append_string("        ", 8);
				ts -= 8;
			}
			append_string("        ", ts);
		}
	}
	YY_BREAK
case 60:
/* rule 60 can match eol */
*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
YY_LINENO_REWIND_TO(yy_cp - 1);
(yy_c_buf_p) = yy_cp -= 1;
YY_DO_BEFORE_ACTION; /* set up yytext again */
YY_RULE_SETUP
{
		zconf_endhelp();
		return T_HELPTEXT;
	}
	YY_BREAK
case 61:
/* rule 61 can match eol */
YY_RULE_SETUP
{
		append_string("\n", 1);
	}
	YY_BREAK
case 62:
YY_RULE_SETUP
{
		while (yyleng) {
			if ((yytext[yyleng-1] != ' ') && (yytext[yyleng-1] != '\t'))
				break;
			yyleng--;
		}
		append_string(yytext, yyleng);
		if (!first_ts)
			first_ts = last_ts;
	}
	YY_BREAK
case YY_STATE_EOF(HELP):
{
		zconf_endhelp();
		return T_HELPTEXT;
	}
	YY_BREAK

case YY_STATE_EOF(INITIAL):
case YY_STATE_EOF(ASSIGN_VAL):
{
	BEGIN(INITIAL);

	if (prev_token != T_EOL && prev_token != T_HELPTEXT)
		fprintf(stderr, "%s:%d:warning: no new line at end of file\n",
			current_file->name, yylineno);

	if (current_file) {
		zconf_endfile();
		return T_EOL;
	}
	fclose(yyin);
	yyterminate();
}
	YY_BREAK
case 63:
YY_RULE_SETUP
YY_FATAL_ERROR( "flex scanner jammed" );
	YY_BREAK

	case YY_END_OF_BUFFER:
		{
		/* Amount of text matched not including the EOB char. */
		int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;

		/* Undo the effects of YY_DO_BEFORE_ACTION. */
		*yy_cp = (yy_hold_char);
		YY_RESTORE_YY_MORE_OFFSET

		if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
			{
			/* We're scanning a new file or input source.  It's
			 * possible that this happened because the user
			 * just pointed yyin at a new source and called
			 * yylex().  If so, then we have to assure
			 * consistency between YY_CURRENT_BUFFER and our
			 * globals.  Here is the right place to do so, because
			 * this is the first action (other than possibly a
			 * back-up) that will match for the new input source.
			 */
			(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
			YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
			}

		/* Note that here we test for yy_c_buf_p "<=" to the position
		 * of the first EOB in the buffer, since yy_c_buf_p will
		 * already have been incremented past the NUL character
		 * (since all states make transitions on EOB to the
		 * end-of-buffer state).  Contrast this with the test
		 * in input().
		 */
		if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
			{ /* This was really a NUL. */
			yy_state_type yy_next_state;

			(yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;

			yy_current_state = yy_get_previous_state(  );

			/* Okay, we're now positioned to make the NUL
			 * transition.  We couldn't have
			 * yy_get_previous_state() go ahead and do it
			 * for us because it doesn't know how to deal
			 * with the possibility of jamming (and we don't
			 * want to build jamming into it because then it
			 * will run more slowly).
			 */

			yy_next_state = yy_try_NUL_trans( yy_current_state );

			yy_bp = (yytext_ptr) + YY_MORE_ADJ;

			if ( yy_next_state )
				{
				/* Consume the NUL. */
				yy_cp = ++(yy_c_buf_p);
				yy_current_state = yy_next_state;
				goto yy_match;
				}

			else
				{
				yy_cp = (yy_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_LVALUE->yy_ch_buf[(yy_n_chars)];

				yy_current_state = yy_get_previous_state(  );

				yy_cp = (yy_c_buf_p);
				yy_bp = (yytext_ptr) + YY_MORE_ADJ;
				goto yy_find_action;
			}
		break;
		}

	default:
		YY_FATAL_ERROR(
			"fatal flex scanner internal error--no action found" );
	} /* end of action switch */
		} /* end of scanning one token */
	} /* end of user's declarations */
} /* end of yylex */

/* yy_get_next_buffer - try to read in a new buffer
 *
 * Returns a code representing an action:
 *	EOB_ACT_LAST_MATCH -
 *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position
 *	EOB_ACT_END_OF_FILE - end of file
 */
static int yy_get_next_buffer (void)
{
    	char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
	char *source = (yytext_ptr);
	int number_to_move, i;
	int ret_val;

	if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
		YY_FATAL_ERROR(
		"fatal flex scanner internal error--end of buffer missed" );

	if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
		{ /* Don't try to fill the buffer, so this is an EOF. */
		if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
			{
			/* We matched a single character, the EOB, so
			 * treat this as a final EOF.
			 */
			return EOB_ACT_END_OF_FILE;
			}

		else
			{
			/* We matched some text prior to the EOB, first
			 * process it.
			 */
			return EOB_ACT_LAST_MATCH;
			}
		}

	/* Try to read more data. */

	/* First move last chars to start of buffer. */
	number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1);

	for ( i = 0; i < number_to_move; ++i )
		*(dest++) = *(source++);

	if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
		/* don't do the read, it's not guaranteed to return an EOF,
		 * just force an EOF
		 */
		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;

	else
		{
			int num_to_read =
			YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;

		while ( num_to_read <= 0 )
			{ /* Not enough room in the buffer - grow it. */

			/* just a shorter name for the current buffer */
			YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;

			int yy_c_buf_p_offset =
				(int) ((yy_c_buf_p) - b->yy_ch_buf);

			if ( b->yy_is_our_buffer )
				{
				int new_size = b->yy_buf_size * 2;

				if ( new_size <= 0 )
					b->yy_buf_size += b->yy_buf_size / 8;
				else
					b->yy_buf_size *= 2;

				b->yy_ch_buf = (char *)
					/* Include room in for 2 EOB chars. */
					yyrealloc( (void *) b->yy_ch_buf,
							 (yy_size_t) (b->yy_buf_size + 2)  );
				}
			else
				/* Can't grow it, we don't own it. */
				b->yy_ch_buf = NULL;

			if ( ! b->yy_ch_buf )
				YY_FATAL_ERROR(
				"fatal error - scanner input buffer overflow" );

			(yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];

			num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
						number_to_move - 1;

			}

		if ( num_to_read > YY_READ_BUF_SIZE )
			num_to_read = YY_READ_BUF_SIZE;

		/* Read in more data. */
		YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
			(yy_n_chars), num_to_read );

		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
		}

	if ( (yy_n_chars) == 0 )
		{
		if ( number_to_move == YY_MORE_ADJ )
			{
			ret_val = EOB_ACT_END_OF_FILE;
			yyrestart( yyin  );
			}

		else
			{
			ret_val = EOB_ACT_LAST_MATCH;
			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
				YY_BUFFER_EOF_PENDING;
			}
		}

	else
		ret_val = EOB_ACT_CONTINUE_SCAN;

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

	(yy_n_chars) += number_to_move;
	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;

	(yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];

	return ret_val;
}

/* yy_get_previous_state - get the state just before the EOB char was reached */

    static yy_state_type yy_get_previous_state (void)
{
	yy_state_type yy_current_state;
	char *yy_cp;
    
	yy_current_state = (yy_start);

	for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
		{
		yy_current_state = yy_nxt[yy_current_state][(*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1)];
		}

	return yy_current_state;
}

/* yy_try_NUL_trans - try to make a transition on the NUL character
 *
 * synopsis
 *	next_state = yy_try_NUL_trans( current_state );
 */
    static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
{
	int yy_is_jam;
    
	yy_current_state = yy_nxt[yy_current_state][1];
	yy_is_jam = (yy_current_state <= 0);

		return yy_is_jam ? 0 : yy_current_state;
}

#ifndef YY_NO_UNPUT

    static void yyunput (int c, char * yy_bp )
{
	char *yy_cp;
    
    yy_cp = (yy_c_buf_p);

	/* undo effects of setting up yytext */
	*yy_cp = (yy_hold_char);

	if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
		{ /* need to shift things up to make room */
		/* +2 for EOB chars. */
		int number_to_move = (yy_n_chars) + 2;
		char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
					YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
		char *source =
				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];

		while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
			*--dest = *--source;

		yy_cp += (int) (dest - source);
		yy_bp += (int) (dest - source);
		YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
			(yy_n_chars) = (int) YY_CURRENT_BUFFER_LVALUE->yy_buf_size;

		if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
			YY_FATAL_ERROR( "flex scanner push-back overflow" );
		}

	*--yy_cp = (char) c;

    if ( c == '\n' ){
        --yylineno;
    }

	(yytext_ptr) = yy_bp;
	(yy_hold_char) = *yy_cp;
	(yy_c_buf_p) = yy_cp;
}

#endif

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

{
	int c;
    
	*(yy_c_buf_p) = (yy_hold_char);

	if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
		{
		/* yy_c_buf_p now points to the character we want to return.
		 * If this occurs *before* the EOB characters, then it's a
		 * valid NUL; if not, then we've hit the end of the buffer.
		 */
		if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
			/* This was really a NUL. */
			*(yy_c_buf_p) = '\0';

		else
			{ /* need more input */
			int offset = (int) ((yy_c_buf_p) - (yytext_ptr));
			++(yy_c_buf_p);

			switch ( yy_get_next_buffer(  ) )
				{
				case EOB_ACT_LAST_MATCH:
					/* This happens because yy_g_n_b()
					 * sees that we've accumulated a
					 * token and flags that we need to
					 * try matching the token before
					 * proceeding.  But for input(),
					 * there's no matching to consider.
					 * So convert the EOB_ACT_LAST_MATCH
					 * to EOB_ACT_END_OF_FILE.
					 */

					/* Reset buffer status. */
					yyrestart( yyin );

					/*FALLTHROUGH*/

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

					if ( ! (yy_did_buffer_switch_on_eof) )
						YY_NEW_FILE;
#ifdef __cplusplus
					return yyinput();
#else
					return input();
#endif
					}

				case EOB_ACT_CONTINUE_SCAN:
					(yy_c_buf_p) = (yytext_ptr) + offset;
					break;
				}
			}
		}

	c = *(unsigned char *) (yy_c_buf_p);	/* cast for 8-bit char's */
	*(yy_c_buf_p) = '\0';	/* preserve yytext */
	(yy_hold_char) = *++(yy_c_buf_p);

	if ( c == '\n' )
		
    yylineno++;
;

	return c;
}
#endif	/* ifndef YY_NO_INPUT */

/** Immediately switch to a different input stream.
 * @param input_file A readable stream.
 * 
 * @note This function does not reset the start condition to @c INITIAL .
 */
    void yyrestart  (FILE * input_file )
{
    
	if ( ! YY_CURRENT_BUFFER ){
        yyensure_buffer_stack ();
		YY_CURRENT_BUFFER_LVALUE =
            yy_create_buffer( yyin, YY_BUF_SIZE );
	}

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

/** Switch to a different input buffer.
 * @param new_buffer The new input buffer.
 * 
 */
    void yy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
{
    
	/* TODO. We should be able to replace this entire function body
	 * with
	 *		yypop_buffer_state();
	 *		yypush_buffer_state(new_buffer);
     */
	yyensure_buffer_stack ();
	if ( YY_CURRENT_BUFFER == new_buffer )
		return;

	if ( YY_CURRENT_BUFFER )
		{
		/* Flush out information for old buffer. */
		*(yy_c_buf_p) = (yy_hold_char);
		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
		}

	YY_CURRENT_BUFFER_LVALUE = new_buffer;
	yy_load_buffer_state(  );

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

static void yy_load_buffer_state  (void)
{
    	(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
	(yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
	yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
	(yy_hold_char) = *(yy_c_buf_p);
}

/** Allocate and initialize an input buffer state.
 * @param file A readable stream.
 * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
 * 
 * @return the allocated buffer state.
 */
    YY_BUFFER_STATE yy_create_buffer  (FILE * file, int  size )
{
	YY_BUFFER_STATE b;
    
	b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state )  );
	if ( ! b )
		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );

	b->yy_buf_size = size;

	/* yy_ch_buf has to be 2 characters longer than the size given because
	 * we need to put in 2 end-of-buffer characters.
	 */
	b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2)  );
	if ( ! b->yy_ch_buf )
		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );

	b->yy_is_our_buffer = 1;

	yy_init_buffer( b, file );

	return b;
}

/** Destroy the buffer.
 * @param b a buffer created with yy_create_buffer()
 * 
 */
    void yy_delete_buffer (YY_BUFFER_STATE  b )
{
    
	if ( ! b )
		return;

	if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
		YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;

	if ( b->yy_is_our_buffer )
		yyfree( (void *) b->yy_ch_buf  );

	yyfree( (void *) b  );
}

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

{
	int oerrno = errno;
    
	yy_flush_buffer( b );

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

    /* If b is the current buffer, then yy_init_buffer was _probably_
     * called from yyrestart() or through yy_get_next_buffer.
     * In that case, we don't want to reset the lineno or column.
     */
    if (b != YY_CURRENT_BUFFER){
        b->yy_bs_lineno = 1;
        b->yy_bs_column = 0;
    }

        b->yy_is_interactive = 0;
    
	errno = oerrno;
}

/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
 * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
 * 
 */
    void yy_flush_buffer (YY_BUFFER_STATE  b )
{
    	if ( ! b )
		return;

	b->yy_n_chars = 0;

	/* We always need two end-of-buffer characters.  The first causes
	 * a transition to the end-of-buffer state.  The second causes
	 * a jam in that state.
	 */
	b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
	b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;

	b->yy_buf_pos = &b->yy_ch_buf[0];

	b->yy_at_bol = 1;
	b->yy_buffer_status = YY_BUFFER_NEW;

	if ( b == YY_CURRENT_BUFFER )
		yy_load_buffer_state(  );
}

/** Pushes the new state onto the stack. The new state becomes
 *  the current state. This function will allocate the stack
 *  if necessary.
 *  @param new_buffer The new state.
 *  
 */
void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
{
    	if (new_buffer == NULL)
		return;

	yyensure_buffer_stack();

	/* This block is copied from yy_switch_to_buffer. */
	if ( YY_CURRENT_BUFFER )
		{
		/* Flush out information for old buffer. */
		*(yy_c_buf_p) = (yy_hold_char);
		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
		}

	/* Only push if top exists. Otherwise, replace top. */
	if (YY_CURRENT_BUFFER)
		(yy_buffer_stack_top)++;
	YY_CURRENT_BUFFER_LVALUE = new_buffer;

	/* copied from yy_switch_to_buffer. */
	yy_load_buffer_state(  );
	(yy_did_buffer_switch_on_eof) = 1;
}

/** Removes and deletes the top of the stack, if present.
 *  The next element becomes the new top.
 *  
 */
void yypop_buffer_state (void)
{
    	if (!YY_CURRENT_BUFFER)
		return;

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

	if (YY_CURRENT_BUFFER) {
		yy_load_buffer_state(  );
		(yy_did_buffer_switch_on_eof) = 1;
	}
}

/* Allocates the stack if it does not exist.
 *  Guarantees space for at least one push.
 */
static void yyensure_buffer_stack (void)
{
	yy_size_t num_to_alloc;
    
	if (!(yy_buffer_stack)) {

		/* First allocation is just for 2 elements, since we don't know if this
		 * scanner will even need a stack. We use 2 instead of 1 to avoid an
		 * immediate realloc on the next call.
         */
      num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */
		(yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
								(num_to_alloc * sizeof(struct yy_buffer_state*)
								);
		if ( ! (yy_buffer_stack) )
			YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );

		memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));

		(yy_buffer_stack_max) = num_to_alloc;
		(yy_buffer_stack_top) = 0;
		return;
	}

	if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){

		/* Increase the buffer to prepare for a possible push. */
		yy_size_t grow_size = 8 /* arbitrary grow size */;

		num_to_alloc = (yy_buffer_stack_max) + grow_size;
		(yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
								((yy_buffer_stack),
								num_to_alloc * sizeof(struct yy_buffer_state*)
								);
		if ( ! (yy_buffer_stack) )
			YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );

		/* zero only the new slots.*/
		memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
		(yy_buffer_stack_max) = num_to_alloc;
	}
}

/** Setup the input buffer state to scan directly from a user-specified character buffer.
 * @param base the character buffer
 * @param size the size in bytes of the character buffer
 * 
 * @return the newly allocated buffer state object.
 */
YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size )
{
	YY_BUFFER_STATE b;
    
	if ( size < 2 ||
	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
	     base[size-1] != YY_END_OF_BUFFER_CHAR )
		/* They forgot to leave room for the EOB's. */
		return NULL;

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

	b->yy_buf_size = (int) (size - 2);	/* "- 2" to take care of EOB's */
	b->yy_buf_pos = b->yy_ch_buf = base;
	b->yy_is_our_buffer = 0;
	b->yy_input_file = NULL;
	b->yy_n_chars = b->yy_buf_size;
	b->yy_is_interactive = 0;
	b->yy_at_bol = 1;
	b->yy_fill_buffer = 0;
	b->yy_buffer_status = YY_BUFFER_NEW;

	yy_switch_to_buffer( b  );

	return b;
}

/** Setup the input buffer state to scan a string. The next call to yylex() will
 * scan from a @e copy of @a str.
 * @param yystr a NUL-terminated string to scan
 * 
 * @return the newly allocated buffer state object.
 * @note If you want to scan bytes that may contain NUL values, then use
 *       yy_scan_bytes() instead.
 */
YY_BUFFER_STATE yy_scan_string (const char * yystr )
{
    
	return yy_scan_bytes( yystr, (int) strlen(yystr) );
}

/** Setup the input buffer state to scan the given bytes. The next call to yylex() will
 * scan from a @e copy of @a bytes.
 * @param yybytes the byte buffer to scan
 * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
 * 
 * @return the newly allocated buffer state object.
 */
YY_BUFFER_STATE yy_scan_bytes  (const char * yybytes, int  _yybytes_len )
{
	YY_BUFFER_STATE b;
	char *buf;
	yy_size_t n;
	int i;
    
	/* Get memory for full buffer, including space for trailing EOB's. */
	n = (yy_size_t) (_yybytes_len + 2);
	buf = (char *) yyalloc( n  );
	if ( ! buf )
		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );

	for ( i = 0; i < _yybytes_len; ++i )
		buf[i] = yybytes[i];

	buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;

	b = yy_scan_buffer( buf, n );
	if ( ! b )
		YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );

	/* It's okay to grow etc. this buffer, and we should throw it
	 * away when we're done.
	 */
	b->yy_is_our_buffer = 1;

	return b;
}

#ifndef YY_EXIT_FAILURE
#define YY_EXIT_FAILURE 2
#endif

static void yynoreturn yy_fatal_error (const char* msg )
{
			fprintf( stderr, "%s\n", msg );
	exit( YY_EXIT_FAILURE );
}

/* Redefine yyless() so it works in section 3 code. */

#undef yyless
#define yyless(n) \
	do \
		{ \
		/* Undo effects of setting up yytext. */ \
        int yyless_macro_arg = (n); \
        YY_LESS_LINENO(yyless_macro_arg);\
		yytext[yyleng] = (yy_hold_char); \
		(yy_c_buf_p) = yytext + yyless_macro_arg; \
		(yy_hold_char) = *(yy_c_buf_p); \
		*(yy_c_buf_p) = '\0'; \
		yyleng = yyless_macro_arg; \
		} \
	while ( 0 )

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

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

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

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

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

/** Get the current token.
 * 
 */

char *yyget_text  (void)
{
        return yytext;
}

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

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

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

int yyget_debug  (void)
{
        return yy_flex_debug;
}

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

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

    /* We do not touch yylineno unless the option is enabled. */
    yylineno =  1;
    
    (yy_buffer_stack) = NULL;
    (yy_buffer_stack_top) = 0;
    (yy_buffer_stack_max) = 0;
    (yy_c_buf_p) = NULL;
    (yy_init) = 0;
    (yy_start) = 0;

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

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

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

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

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

    return 0;
}

/*
 * Internal utility routines.
 */

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

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

	return n;
}
#endif

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

void *yyrealloc  (void * ptr, yy_size_t  size )
{
		
	/* The cast to (char *) in the following accommodates both
	 * implementations that use char* generic pointers, and those
	 * that use void* generic pointers.  It works with the latter
	 * because both ANSI C and C++ allow castless assignment from
	 * any pointer type to void*, and deal with argument conversions
	 * as though doing an assignment.
	 */
	return realloc(ptr, size);
}

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

#define YYTABLES_NAME "yytables"

/* second stage lexer */
int yylex(void)
{
	int token;

repeat:
	token = yylex1();

	if (prev_token == T_EOL || prev_token == T_HELPTEXT) {
		if (token == T_EOL) {
			/* Do not pass unneeded T_EOL to the parser. */
			goto repeat;
		} else {
			/*
			 * For the parser, update file/lineno at the first token
			 * of each statement. Generally, \n is a statement
			 * terminator in Kconfig, but it is not always true
			 * because \n could be escaped by a backslash.
			 */
			current_pos.file = current_file;
			current_pos.lineno = yylineno;
		}
	}

	if (prev_prev_token == T_EOL && prev_token == T_WORD &&
	    (token == T_EQUAL || token == T_COLON_EQUAL || token == T_PLUS_EQUAL))
		BEGIN(ASSIGN_VAL);

	prev_prev_token = prev_token;
	prev_token = token;

	return token;
}

static char *expand_token(const char *in, size_t n)
{
	char *out;
	int c;
	char c2;
	const char *rest, *end;

	new_string();
	append_string(in, n);

	/* get the whole line because we do not know the end of token. */
	while ((c = input()) != EOF) {
		if (c == '\n') {
			unput(c);
			break;
		}
		c2 = c;
		append_string(&c2, 1);
	}

	rest = text;
	out = expand_one_token(&rest);

	/* push back unused characters to the input stream */
	end = rest + strlen(rest);
	while (end > rest)
		unput(*--end);

	free(text);

	return out;
}

static void append_expanded_string(const char *str)
{
	const char *end;
	char *res;

	str++;

	res = expand_dollar(&str);

	/* push back unused characters to the input stream */
	end = str + strlen(str);
	while (end > str)
		unput(*--end);

	append_string(res, strlen(res));

	free(res);
}

void zconf_starthelp(void)
{
	new_string();
	last_ts = first_ts = 0;
	BEGIN(HELP);
}

static void zconf_endhelp(void)
{
	yylval.string = text;
	BEGIN(INITIAL);
}

/*
 * Try to open specified file with following names:
 * ./name
 * $(srctree)/name
 * The latter is used when srctree is separate from objtree
 * when compiling the kernel.
 * Return NULL if file is not found.
 */
FILE *zconf_fopen(const char *name)
{
	char *env, fullname[PATH_MAX+1];
	FILE *f;

	f = fopen(name, "r");
	if (!f && name != NULL && name[0] != '/') {
		env = getenv(SRCTREE);
		if (env) {
			snprintf(fullname, sizeof(fullname),
				 "%s/%s", env, name);
			f = fopen(fullname, "r");
		}
	}
	return f;
}

void zconf_initscan(const char *name)
{
	yyin = zconf_fopen(name);
	if (!yyin) {
		fprintf(stderr, "can't find file %s\n", name);
		exit(1);
	}

	current_buf = xmalloc(sizeof(*current_buf));
	memset(current_buf, 0, sizeof(*current_buf));

	current_file = file_lookup(name);
	yylineno = 1;
}

void zconf_nextfile(const char *name)
{
	struct file *iter;
	struct file *file = file_lookup(name);
	struct buffer *buf = xmalloc(sizeof(*buf));
	memset(buf, 0, sizeof(*buf));

	current_buf->state = YY_CURRENT_BUFFER;
	yyin = zconf_fopen(file->name);
	if (!yyin) {
		fprintf(stderr, "%s:%d: can't open file \"%s\"\n",
			zconf_curname(), zconf_lineno(), file->name);
		exit(1);
	}
	yy_switch_to_buffer(yy_create_buffer(yyin, YY_BUF_SIZE));
	buf->parent = current_buf;
	current_buf = buf;

	current_file->lineno = yylineno;
	file->parent = current_file;

	for (iter = current_file; iter; iter = iter->parent) {
		if (!strcmp(iter->name, file->name)) {
			fprintf(stderr,
				"Recursive inclusion detected.\n"
				"Inclusion path:\n"
				"  current file : %s\n", file->name);
			iter = file;
			do {
				iter = iter->parent;
				fprintf(stderr, "  included from: %s:%d\n",
					iter->name, iter->lineno - 1);
			} while (strcmp(iter->name, file->name));
			exit(1);
		}
	}

	yylineno = 1;
	current_file = file;
}

void zconf_nextfiles(const char *wildcard)
{
	glob_t g;
	char **w;
	int i;

	if (glob(wildcard, 0, NULL, &g) != 0) {
		return;
	}
	if (g.gl_pathv == NULL) {
		globfree(&g);
		return;
	}

	/* working through files backwards, since
	 * we're first pushing them on a stack
	 * before actually handling them.
	 */
	for (i = g.gl_pathc; i > 0; i--) {
		w = &g.gl_pathv[i - 1];
		zconf_nextfile(*w);
	}

	globfree(&g);
}

static void zconf_endfile(void)
{
	struct buffer *parent;

	current_file = current_file->parent;
	if (current_file)
		yylineno = current_file->lineno;

	parent = current_buf->parent;
	if (parent) {
		fclose(yyin);
		yy_delete_buffer(YY_CURRENT_BUFFER);
		yy_switch_to_buffer(parent->state);
	}
	free(current_buf);
	current_buf = parent;
}

int zconf_lineno(void)
{
	return current_pos.lineno;
}

const char *zconf_curname(void)
{
	return current_pos.file ? current_pos.file->name : "<none>";
}

