
#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-only */
/*
 * 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>";
}

