/*	$OpenBSD: flex.skl,v 1.10 2007/01/26 14:38:19 tsi Exp $	*/

/* A lexical scanner generated by flex */

/* Scanner skeleton version:
 * $Header: /home/cvs/openbsd/src/usr.bin/lex/flex.skl,v 1.10 2007/01/26 14:38:19 tsi Exp $
 */

#define FLEX_SCANNER
#define YY_FLEX_MAJOR_VERSION 2
#define YY_FLEX_MINOR_VERSION 5

#include <stdio.h>
#include <errno.h>


/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
#ifdef c_plusplus
#ifndef __cplusplus
#define __cplusplus
#endif
#endif


#ifdef __cplusplus

#include <stdlib.h>
#include <unistd.h>

/* Use prototypes in function declarations. */
#define YY_USE_PROTOS

/* The "const" storage-class-modifier is valid. */
#define YY_USE_CONST

#else	/* ! __cplusplus */

#ifdef __STDC__

#define YY_USE_PROTOS
#define YY_USE_CONST

#endif	/* __STDC__ */
#endif	/* ! __cplusplus */

#ifdef __TURBOC__
 #pragma warn -rch
 #pragma warn -use
#include <io.h>
#include <stdlib.h>
#define YY_USE_CONST
#define YY_USE_PROTOS
#endif

#ifdef YY_USE_CONST
#define yyconst const
#else
#define yyconst
#endif


#ifdef YY_USE_PROTOS
#define YY_PROTO(proto) proto
#else
#define YY_PROTO(proto) ()
#endif

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

/* Promotes a possibly negative, possibly signed char to an unsigned
 * integer for use as an array index.  If the signed char is negative,
 * we want to instead treat it as an 8-bit unsigned char, hence the
 * double cast.
 */
#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)

/* Enter a start condition.  This macro really ought to take a parameter,
 * but we do it the disgusting crufty way forced on us by the ()-less
 * definition of BEGIN.
 */
#define BEGIN yy_start = 1 + 2 *

/* Translate the current start state into a value that can be later handed
 * to BEGIN to return to the state.  The YYSTATE alias is for lex
 * compatibility.
 */
#define YY_START ((yy_start - 1) / 2)
#define YYSTATE YY_START

/* Action number for EOF rule of a given start state. */
#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)

/* Special action meaning "start processing a new file". */
#define YY_NEW_FILE yyrestart( yyin )

#define YY_END_OF_BUFFER_CHAR 0

/* Size of default input buffer. */
#define YY_BUF_SIZE 16384

typedef struct yy_buffer_state *YY_BUFFER_STATE;

extern int yyleng;
extern FILE *yyin, *yyout;

#define EOB_ACT_CONTINUE_SCAN 0
#define EOB_ACT_END_OF_FILE 1
#define EOB_ACT_LAST_MATCH 2

/* The funky do-while in the following #define is used to turn the definition
 * int a single C statement (which needs a semi-colon terminator).  This
 * avoids problems with code like:
 *
 * 	if ( condition_holds )
 *		yyless( 5 );
 *	else
 *		do_something_else();
 *
 * Prior to using the do-while the compiler would get upset at the
 * "else" because it interpreted the "if" statement as being all
 * done when it reached the ';' after the yyless() call.
 */

/* Return all but the first 'n' matched characters back to the input stream. */

#define yyless(n) \
	do \
		{ \
		/* Undo effects of setting up yytext. */ \
		*yy_cp = yy_hold_char; \
		YY_RESTORE_YY_MORE_OFFSET \
		yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
		YY_DO_BEFORE_ACTION; /* set up yytext again */ \
		} \
	while ( 0 )

#define unput(c) yyunput( c, yytext_ptr )

/* The following is because we cannot portably get our hands on size_t
 * (without autoconf's help, which isn't available because we want
 * flex-generated scanners to compile on their own).
 */
typedef unsigned int yy_size_t;


struct yy_buffer_state
	{
	FILE *yy_input_file;

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

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

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

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

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

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

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

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

static YY_BUFFER_STATE yy_current_buffer = 0;

/* We provide macros for accessing buffer states in case in the
 * future we want to put the buffer states in a more general
 * "scanner state".
 */
#define YY_CURRENT_BUFFER yy_current_buffer


/* yy_hold_char holds the character lost when yytext is formed. */
static char yy_hold_char;

static int yy_n_chars;		/* number of characters read into yy_ch_buf */


int yyleng;

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

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

void yyrestart YY_PROTO(( FILE *input_file ));

void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
void yy_load_buffer_state YY_PROTO(( void ));
YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )

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

static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
static void yy_flex_free YY_PROTO(( void * ));

#define yy_new_buffer yy_create_buffer

#define yy_set_interactive(is_interactive) \
	{ \
	if ( ! yy_current_buffer ) \
		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
	yy_current_buffer->yy_is_interactive = is_interactive; \
	}

#define yy_set_bol(at_bol) \
	{ \
	if ( ! yy_current_buffer ) \
		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
	yy_current_buffer->yy_at_bol = at_bol; \
	}

#define YY_AT_BOL() (yy_current_buffer->yy_at_bol)


#define yywrap() 1
#define YY_SKIP_YYWRAP
typedef unsigned char YY_CHAR;
FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
typedef int yy_state_type;
extern char *yytext;
#define yytext_ptr yytext

static yy_state_type yy_get_previous_state YY_PROTO(( void ));
static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
static int yy_get_next_buffer YY_PROTO(( void ));
static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));

/* Done after the current pattern has been matched and before the
 * corresponding action - sets up yytext.
 */
#define YY_DO_BEFORE_ACTION \
	yytext_ptr = yy_bp; \
	yyleng = (int) (yy_cp - yy_bp); \
	yy_hold_char = *yy_cp; \
	*yy_cp = '\0'; \
	yy_c_buf_p = yy_cp;

#define YY_NUM_RULES 50
#define YY_END_OF_BUFFER 51
static yyconst short int yy_accept[555] =
    {   0,
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        0,    0,   51,   38,   46,   45,   44,   38,   49,   38,
       39,   40,   38,   41,   38,   38,   38,   38,   43,   42,
       49,   33,   33,   33,   33,   33,   33,   49,   38,   38,
       46,   49,   33,   33,   33,   33,   33,    1,   49,   38,
       38,   16,   15,   16,   15,   15,   49,   49,   49,    2,
        8,    7,    8,    3,    8,    4,   49,   12,   12,   12,
       10,   11,   38,    0,   46,   44,   38,    0,    0,    0,
       48,    0,   38,   28,    0,    0,   27,    0,   36,   36,
        0,   38,   38,    0,   38,   38,   38,   38,    0,   31,

       33,   33,   33,   33,   33,   33,   38,   47,   38,   46,
        0,    0,    0,    0,    0,    0,   38,   38,   38,   38,
       38,    1,    0,   34,   34,    0,   38,   16,   16,   14,
       13,   14,    0,    0,    2,    8,    0,    5,    6,    8,
        8,   12,    0,   12,   12,    0,    9,   37,   37,    0,
        0,   28,    0,    0,   38,   38,   38,   38,   38,    0,
        0,   31,   31,   33,   33,   33,   33,   33,   33,   33,
       38,    0,    0,    0,    0,    0,    0,   38,   38,   38,
       38,   38,    0,   38,    9,    0,   38,   38,   38,   38,
       38,   38,    0,   32,   32,   32,    0,    0,   31,   31,

       31,   31,   31,   31,   31,   33,   33,   33,   33,   33,
       33,   33,   38,    0,    0,    0,    0,    0,    0,   38,
       38,   38,   38,   38,   38,   38,    0,    0,   32,   32,
       32,    0,   31,   31,    0,   31,   31,   31,   31,   31,
       31,   31,   31,   31,   31,   31,    0,   24,   33,   33,
       33,   33,   33,   38,    0,    0,    0,    0,   38,   38,
       38,   38,   38,   38,   38,   38,    0,   32,    0,   31,
       31,   31,    0,    0,    0,   31,   31,   31,   31,   31,
       31,   31,   31,   31,   31,   31,   31,   31,   33,   33,
       33,   33,   33,   38,    0,    0,    0,   38,   38,   38,

       29,   29,   29,    0,    0,   31,   31,   31,   31,   31,
       31,   31,    0,    0,    0,    0,    0,   31,   31,   31,
       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
       31,    0,   23,   33,   33,    0,   22,    0,   25,   38,
        0,    0,    0,   38,   38,   38,   38,   29,   29,   29,
       29,    0,   31,    0,   31,   31,   31,   31,   31,   31,
       31,   31,   31,   31,   31,    0,    0,    0,   31,   31,
       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
       31,   33,   33,   35,    0,    0,    0,   38,   19,   34,
       38,   30,   30,   30,   31,    0,    0,    0,   31,   31,

       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
       31,    0,    0,    0,    0,    0,   31,   31,   31,   31,
       31,   31,   31,   31,    0,   21,    0,   26,    0,   19,
        0,    0,   38,    0,   38,   38,   38,   30,   30,   30,
       30,   30,    0,    0,    0,    0,    0,   31,   31,   31,
       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
       31,   31,   31,   31,   31,   31,   31,    0,    0,    0,
       20,   19,    0,    0,   19,    0,   38,   38,   38,   30,
       30,    0,    0,    0,   31,   31,   31,   31,   31,   31,
       31,   31,   31,   31,   31,   31,   31,   31,   31,   31,

       31,   31,   20,    0,   17,    0,   38,   38,   38,   38,
       38,    0,    0,    0,    0,    0,   31,   31,   31,   31,
       31,   31,   31,   31,    0,   38,   38,   38,   31,   31,
       31,   31,   31,   31,    0,   38,   38,   38,   38,   38,
       31,   31,   31,   31,   31,    0,   18,   29,   29,   29,
       29,   29,   29,    0
    } ;

static yyconst int yy_ec[256] =
    {   0,
        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    2,    4,    5,    6,    1,    7,    1,    1,    8,
        9,   10,   11,   12,   13,   14,   15,   16,   17,   18,
       19,   20,   21,   22,   22,   22,   23,   24,    1,    1,
       25,   26,   10,   27,   28,   29,   30,   31,   32,   29,
       33,   34,   33,   33,   33,   33,   33,   35,   36,   37,
       33,   38,   39,   40,   41,   42,   43,   44,   33,   33,
       10,   45,   10,    1,   46,    1,   47,   48,   49,   50,

       51,   52,   53,   53,   54,   53,   53,   55,   56,   57,
       58,   53,   53,   59,   60,   61,   62,   53,   53,   53,
       53,   53,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,

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

static yyconst int yy_meta[63] =
    {   0,
        1,    2,    3,    4,    5,    2,    1,    6,    6,    1,
        1,    2,    1,    7,    8,    9,    9,    9,    9,    9,
        9,    9,    9,   10,   11,    6,    1,    9,    9,    9,
        9,    9,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,   12,   13,   14,   14,   14,   14,
       14,   14,   13,   13,   13,   13,   13,   13,   13,   13,
       13,   13
    } ;

static yyconst short int yy_base[621] =
    {   0,
        0,   61,   62,   63,   69,   84,  128,  189,  250,  294,
       80,  101, 2394, 2348, 2390, 3541, 2387,  338,  381,   52,
     3541, 3541, 2345, 3541,  107,  391,  119,  137, 2351, 3541,
     3541,  443, 2330,  490, 2337, 2335, 2320,  541,  145,   55,
      167,  565, 2293, 2297, 2289, 2258, 2257, 2314,  193,  256,
       56,    0, 3541, 2311, 3541,    0,  264,  617,   77,    0,
     2261, 3541,   82, 3541,   99, 3541,  110, 2243,  126,  106,
     3541,  145, 2240,  306, 2282, 2279,  639, 2277, 2276, 2263,
     3541,  201,  209,   74, 2211,  347, 2208,  550,  276, 2199,
      587,  410,  669, 2210, 2210,  306,  358,  317, 2163,  179,

      706,    0, 2154,  240, 2111, 2109,  389, 3541,   76,  355,
     2082, 2076, 2066, 2061, 2062,   63,  115,  219,   29,  212,
       98, 2116,  507,  361, 2071,  598,  154,    0, 2111,  256,
     3541, 3541,  636,  284,    0, 2069,  567, 3541, 3541, 2066,
      532, 2050, 2087,  271,  300,  288, 2089, 2038, 3541, 2057,
     2055, 1986,  669,  603,  745,  777,  809,  841, 2014, 2003,
      878,  268,  916,  953, 1996, 1980, 1971, 1945, 1911, 1915,
      236, 1862, 1866, 1856, 1843, 1848,  317,  157, 1851,  307,
      266,  258,  777,  296, 1880, 1877,  686,  402,  992, 1024,
      725,  337, 1839, 1838,  787,  499, 1782, 1781,  343,  755,

     1056,  796,  694, 1094,  819, 1745,  393, 1736, 1728, 1711,
     1707, 1697,  373, 1681, 1666, 1651, 1664, 1623,  543,  400,
      556,  233,  506, 1133, 1165, 1197, 1657, 1655,  827, 1640,
     1638, 1637, 1621,  540,  858,  546,  895,  602, 1229,    0,
      935, 1240,  970,  731, 1278, 1002,  601, 3541, 1614, 1604,
     1610, 1595, 1583,  486, 1565, 1548, 1548,  387,  343,  380,
      616, 1010,  423, 1317, 1349, 1044, 1555, 1554, 1553, 1506,
     1379,  645, 1076, 1113, 1143,  652,  983, 1035, 1151, 1042,
     1418,    0, 1175, 1429, 1184,  866, 1467, 1207,  644, 1451,
     1458,  648,  672,  625, 1447, 1419,  680,  576,  487,  715,

     1505, 1536, 1567, 1449, 1447, 1432, 1215, 1599, 1257,  903,
     1636, 1297, 1325, 1441, 1335, 1359, 1369,  841, 1024, 1067,
     1124, 1396, 1308, 1675,    0, 1448, 1686, 1484, 1265, 1724,
     1515,  955, 3541, 1423, 1364,  956, 3541,  975, 3541,  807,
     1350, 1300,  591, 1074,  569,  917, 1523,  155, 1762, 1793,
     1546, 1336, 1300, 1553,  768, 1576,  810, 1825,    0,  429,
     1836, 1584, 1404, 1873, 1618, 1655, 1705, 1743, 1288, 1335,
     1734, 1772, 1772, 1803, 1912,    0, 1805, 1923, 1781, 1492,
     1814,  993, 1156, 1276, 1251, 1244,  730,  635, 1952, 1222,
     1984, 2016, 2048, 2080, 1242, 1855, 1892, 1943, 1241, 1184,

     1198, 1964, 1350, 2112,    0,  762, 2123, 1972, 1992, 2160,
     2000, 2024, 1227, 2034, 2058, 2068, 1369, 1609, 1934,  772,
      806, 2199,    0,  844, 1173, 3541, 1468, 3541, 1192, 2086,
     1389,  142,  991,  604,  736, 2140, 1038, 2209, 2241, 2273,
     2305, 2103, 2177, 1163, 2219, 2229, 2251, 1152, 1116, 1656,
     1706, 2257, 1837, 2337,    0,  881, 2348, 2281, 2088, 2385,
     2291, 2314, 2323, 2366, 1855, 1122,  927, 1042, 1031,  902,
      951,  990, 1725, 2416, 1836, 2437, 2450, 2482, 2514, 2434,
     1951, 2464, 2492, 2502,  936,  919, 1893, 2001, 2522, 2035,
     2546,    0, 1031, 2557, 2530, 2148, 2576,  838, 2595, 2604,

     2473,  773, 3541,  659, 3541, 1065, 2612, 1195, 2644, 2676,
     2623, 2629,  618, 2655, 2665, 2686,  573,  566, 2049,  557,
      549, 2694,    0, 1078, 1545, 2708, 2740, 2772, 2716, 2724,
     2748,  509,    0,  455,  357, 2756, 1535, 2804, 2836, 2786,
     3541, 2792, 2816, 2185, 3541,  345, 3541, 2824, 2844, 2854,
       25, 2874, 2866, 3541, 2919, 2933, 2947, 2961, 2975, 2989,
     3003, 3017, 3031, 3045, 3051, 3065, 3079, 1107, 3093, 3107,
     3121, 3135, 3149, 3163, 3177, 3191, 3197, 3204, 3218, 3232,
     3238, 3245, 3251, 3257, 3263, 3270, 3276, 3282, 3288, 3295,
     3303, 3309, 3315, 3321, 3328, 3336, 3342, 3348, 3355, 3363,

     3369, 3377, 3384, 3392, 3398, 3406, 3413, 3421, 3435, 3449,
     3455, 3463, 3470, 3484, 3490, 3498, 3504, 3512, 1600, 3526
    } ;

static yyconst short int yy_def[621] =
    {   0,
      554,    1,    1,    1,  555,  555,  556,  556,  557,  557,
      558,  558,  554,  559,  554,  554,  554,  560,  561,  562,
      554,  554,  563,  554,  564,  559,   26,   26,  565,  554,
      554,  554,   32,   32,   34,   34,   34,  559,   26,  559,
      554,  561,   32,   32,   34,   34,   34,  554,  554,  566,
      559,  567,  554,  567,  554,  567,  554,  561,  554,  568,
      569,  554,  569,  554,  569,  554,  570,  571,  571,  571,
      554,  554,  559,  559,  554,  554,  560,  572,  560,  573,
      554,  574,  554,  562,  575,  562,  563,  563,  564,  576,
      559,  559,   26,  565,   93,   93,   93,   93,  577,  578,

       32,   34,   34,   34,   34,   34,  559,  554,  559,  554,
      554,  554,  554,  554,  554,  573,  559,   93,  559,  559,
      559,  554,  554,  566,  579,  559,  559,  567,  567,  554,
      554,  554,  574,  554,  568,  569,  569,  554,  554,  569,
      569,  571,  554,  571,  571,  554,  554,  559,  554,  573,
      580,  575,  575,  554,  559,  559,  559,   93,  158,  581,
      554,  582,  554,   32,   34,   34,   34,   34,   34,   34,
      559,  554,  554,  554,  554,  554,  573,  559,  158,  559,
      559,  559,  554,  559,  554,  580,  559,  559,  559,  559,
      559,  559,  583,  584,  584,  195,  585,  584,  586,  163,

      554,  201,  201,  554,  201,   34,   34,   34,   34,   34,
       34,   34,  559,  554,  554,  554,  554,  554,  573,  559,
      559,  559,  559,  559,  559,  559,  554,  587,  587,  229,
      587,  588,  589,  590,  554,  591,  204,  591,  591,  239,
      591,  554,  242,  242,  554,  242,  554,  554,   34,   34,
       34,   34,   34,  559,  554,  554,  554,  573,  559,  559,
      559,  559,  559,  559,  559,  559,  592,  592,  593,  594,
      554,  554,  554,  554,  554,  595,  595,  596,  245,  596,
      596,  281,  596,  554,  284,  284,  554,  284,   34,   34,
       34,   34,   34,  559,  554,  554,  573,  559,  559,  559,

      559,  559,  559,  554,  597,  598,  271,  554,  308,  308,
      554,  308,  554,  554,  554,  554,  554,  554,  599,  599,
      600,  287,  600,  600,  324,  600,  554,  327,  327,  554,
      327,  554,  554,   34,   34,  554,  554,  554,  554,  559,
      554,  554,  573,  559,  559,  559,  559,  559,  559,  559,
      559,  554,  601,  554,  602,  311,  602,  602,  358,  358,
      554,  361,  361,  554,  361,  554,  554,  554,  554,  603,
      603,  604,  330,  604,  604,  375,  604,  554,  378,  378,
      378,   34,   34,  559,  554,  554,  573,  559,  559,  559,
      559,  559,  559,  559,  554,  554,  554,  554,  605,  605,

      606,  364,  606,  606,  404,  404,  554,  407,  407,  554,
      407,  554,  554,  554,  554,  554,  554,  607,  607,  608,
      608,  608,  422,  422,  554,  554,  554,  554,  554,  554,
      573,  573,  559,  609,  610,  559,  559,  559,  559,  559,
      559,  559,  554,  554,  554,  554,  554,  554,  611,  611,
      612,  410,  612,  612,  454,  454,  554,  457,  457,  554,
      457,  554,  554,  554,  554,  613,  613,  554,  614,  573,
      559,  609,  609,  609,  610,  610,  559,  559,  559,  559,
      559,  554,  554,  554,  554,  615,  615,  616,  460,  616,
      616,  491,  491,  554,  494,  494,  494,  554,  554,  554,

      554,  554,  554,  614,  554,  573,  559,  559,  559,  559,
      559,  554,  554,  554,  554,  554,  554,  617,  617,  618,
      618,  618,  522,  522,  573,  559,  559,  559,  554,  554,
      554,  554,  619,  619,  620,  559,  559,  559,  559,  559,
      554,  554,  554,  554,  554,  620,  554,  559,  559,  559,
      559,  559,  559,    0,  554,  554,  554,  554,  554,  554,
      554,  554,  554,  554,  554,  554,  554,  554,  554,  554,
      554,  554,  554,  554,  554,  554,  554,  554,  554,  554,
      554,  554,  554,  554,  554,  554,  554,  554,  554,  554,
      554,  554,  554,  554,  554,  554,  554,  554,  554,  554,

      554,  554,  554,  554,  554,  554,  554,  554,  554,  554,
      554,  554,  554,  554,  554,  554,  554,  554,  554,  554
    } ;

static yyconst short int yy_nxt[3604] =
    {   0,
       14,   15,   16,   17,   18,   19,   20,   21,   22,   14,
       23,   24,   14,   14,   25,   26,   27,   28,   26,   26,
       26,   26,   26,   29,   30,   31,   14,   32,   32,   32,
       32,   33,   34,   34,   35,   34,   36,   34,   37,   34,
       34,   34,   34,   34,   38,   14,   39,   39,   39,   39,
       39,   39,   14,   14,   14,   14,   14,   14,   14,   40,
       14,   14,   41,   48,   48,   81,   42,   49,   49,   74,
       15,   53,   54,   74,   55,   85,   50,   50,  134,  108,
       55,   69,   16,   70,   71,   15,   53,   54,  180,   55,
       43,   44,   55,   56,   45,   55,   86,  554,   46,   74,

       74,   47,   69,   16,   70,   71,  138,   55,   56,  145,
       90,  141,  108,   57,   90,   90,  109,  127,   86,  177,
       74,   51,   51,  139,   72,  171,  137,  144,   57,   15,
       16,   17,   90,   58,   96,   96,   96,   96,   96,   96,
       96,   96,   74,  137,   81,   72,  146,  147,  182,  142,
      143,   91,   97,   97,   97,   97,   97,   98,   73,   74,
       95,   95,   95,   95,   95,   95,   95,   95,  110,  347,
      143,  178,   59,   60,   60,   60,   60,   60,   60,   60,
       60,   60,   60,   60,   60,   60,   60,   60,   60,   60,
       15,   16,   17,  161,   58,  470,  111,  112,   74,   74,

      113,   74,  163,  184,  114,  123,  220,  115,   83,   83,
       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
       83,   83,   73,   59,   60,   60,   60,   60,   60,   60,
       60,   60,   60,   60,   60,   60,   60,   60,   60,   60,
       60,   15,   16,   17,   62,   58,   74,  134,  108,  125,
       63,   64,   65,  125,  125,  130,  108,  131,  181,  132,
      179,  166,  144,  131,   66,  132,  167,   74,  168,   90,
       74,  125,  161,   90,   90,  134,  108,  132,  132,  146,
      147,  200,  220,  213,   67,   15,   16,   17,   62,   58,

      126,   90,   74,  145,   63,   64,   65,   73,  132,   73,
       74,   73,  222,   73,   73,  143,  220,   73,   66,   81,
       91,  159,  159,  159,  159,  159,  159,  159,  159,   73,
       73,   73,  159,  159,  159,  159,  159,  159,   67,   78,
       74,   78,   73,   78,  143,   78,   78,  547,   84,   78,
       84,   74,   84,  223,   84,   84,  110,  161,   84,  547,
       94,   78,   78,   78,  125,  219,  200,  220,  125,  125,
      298,   84,   84,  159,  159,  159,  159,  159,  159,  159,
      159,   74,   79,   81,  111,  112,  125,   74,  113,   81,
      134,  108,  114,   82,  247,  115,   83,   83,   83,   83,

       83,   83,   83,   83,   92,  126,   93,   93,   93,   93,
       93,   93,   93,   93,   94,  187,  248,   74,   95,   95,
       95,   95,   95,  254,   74,  155,  156,  157,  155,  155,
      155,  155,  155,   74,  299,   74,  262,   95,   95,   95,
       95,   95,   95,   73,   74,  259,   74,   73,  297,   73,
      399,  399,   73,   73,   74,   73,   73,   73,  101,  101,
      101,  101,  101,  101,  101,  101,   94,   74,  354,   73,
      101,  101,  101,  101,  101,  102,  102,  102,  102,  102,
      102,  102,  102,  102,  102,  102,  102,   74,  102,   95,
       95,   95,   95,   95,   95,   73,   73,   73,   73,   73,

       73,   73,   73,   73,   73,  102,  102,  102,  102,  102,
      102,  102,  102,  554,  231,  231,  231,  102,  102,  102,
      102,  102,   83,   83,   83,   83,   83,   83,   83,   83,
       74,   74,  489,  134,  108,  294,   73,   73,   73,   73,
       73,   73,  107,  108,   73,   81,   73,  345,   73,   73,
       74,   87,   73,   87,  161,   87,  261,   87,   87,  235,
      161,   87,  554,  200,   73,   73,   73,   81,  136,  237,
      354,  136,  136,   87,   87,   87,  137,   82,  136,   94,
       83,   83,   83,   83,   83,   83,   83,   83,   89,  489,
       73,  136,   89,   81,   73,   73,  452,  258,   89,  124,

       74,   73,  247,  124,   90,   73,   73,  473,   90,  124,
       89,   89,   73,   74,   90,  554,  161,  260,  116,   81,
       74,  124,  124,   73,  248,  237,   90,   90,  389,  133,
      344,  512,  554,  554,  554,  554,  554,  554,  554,  554,
       78,  387,   78,  148,   78,  332,   78,   78,  474,  336,
       78,  554,  554,  554,  554,  554,  554,  554,  554,  161,
       74,  505,   78,   78,   78,  300,  161,  333,  200,   74,
      152,  337,  152,  338,  152,  237,  152,  152,  340,   74,
      152,  433,   81,   79,  158,  158,  158,  158,  158,  158,
      158,  158,  152,  152,  152,  339,  158,  158,  158,  158,

      158,  224,  225,  226,  224,  224,  224,  224,  224,  240,
      240,  240,  240,  240,  241,  158,  158,  158,  158,  158,
      158,  164,  164,  164,  164,  164,  164,  164,  164,  343,
       74,  431,   81,  164,  164,  164,  164,  164,  187,  473,
      188,  188,  188,  188,  188,  188,  282,  282,  282,  282,
      282,  283,  158,  158,  158,  158,  158,  158,  187,   74,
      188,  188,  188,  188,  188,  188,  188,  188,  346,   74,
      205,  205,  205,  205,  205,  205,  205,  205,  125,  432,
      476,  354,  125,  449,  449,  235,  161,  161,  125,   74,
      187,  356,  189,  189,  189,  189,  189,  189,  189,  189,

      125,  125,  229,  229,  230,  231,  231,  231,  231,  231,
      197,  239,  239,  239,  239,  239,  239,  239,  239,  554,
      161,   74,  187,  554,  190,  190,  190,  190,  190,  191,
      188,  188,  554,  356,  238,  238,  238,  238,  238,  238,
      238,  238,  268,  268,  268,  268,  268,  268,  268,  268,
      197,   74,  161,   74,   73,  161,  192,  192,  192,  192,
      192,  192,  192,  192,  237,  466,  466,  384,  192,  192,
      192,  192,  192,  273,  274,  275,  273,  273,  273,  273,
      273,  325,  325,  325,  325,  325,  326,  192,  192,  192,
      192,  192,  192,  194,  195,  196,  196,  196,  196,  196,

      196,  197,  486,  486,   81,  198,  198,  198,  198,  198,
      246,  246,  246,  246,  246,  246,  246,  246,  359,  359,
      359,  359,  359,  360,  198,  198,  198,  198,  198,  198,
      161,  201,  202,  203,  201,  201,  201,  201,  201,  204,
      235,  161,  452,  205,  205,  205,  205,  205,  235,  161,
      277,  277,  277,  277,  277,  277,  332,  336,  237,  402,
      506,   74,  205,  205,  205,  205,  205,  205,  206,  206,
      206,  206,  206,  206,  206,  206,  338,  390,  333,  337,
      206,  206,  206,  206,  206,  281,  281,  281,  281,  281,
      281,  281,  281,  554,  425,   74,  235,  161,  339,  192,

      192,  192,  192,  192,  192,  187,  237,  188,  188,  188,
      188,  188,  188,  188,  188,  554,  426,  280,  280,  280,
      280,  280,  280,  280,  280,  301,  302,  303,  301,  301,
      301,  301,  301,  505,  474,   74,   74,  187,  161,  188,
      188,  188,  188,  188,  188,  188,  188,  279,  235,  161,
      471,  436,  518,  518,   74,  554,  161,  262,  279,  263,
      263,  263,  263,  263,  263,  279,  525,   81,   74,  235,
      161,  236,  236,  236,  236,  236,  236,  236,  236,  237,
      235,  161,   74,  238,  238,  238,  238,  238,   74,  313,
      279,  314,  314,  314,  314,  314,  314,  314,  314,  533,

      533,  503,  238,  238,  238,  238,  238,  238,  161,  242,
      243,  244,  242,  242,  242,  242,  242,  245,   74,  135,
      135,  246,  246,  246,  246,  246,  313,  388,  315,  315,
      315,  315,  315,  315,  315,  315,  161,  235,  161,  402,
      246,  246,  246,  246,  246,  246,  262,  322,  263,  263,
      263,  263,  263,  263,  263,  263,  313,  427,  316,  316,
      316,  316,  316,  317,  314,  314,  288,  288,  288,  288,
      288,  288,  288,  288,  425,  356,  443,   74,  262,  428,
      264,  264,  264,  264,  264,  264,  264,  264,  235,  161,
      320,  320,  320,  320,  320,  320,  426,  354,  279,  324,

      324,  324,  324,  324,  324,  324,  324,  356,  507,   74,
      262,  354,  265,  265,  265,  265,  265,  266,  263,  263,
      554,  402,  323,  323,  323,  323,  323,  323,  323,  323,
      312,  312,  312,  312,  312,  312,  312,  312,  468,   74,
      412,   74,  235,  161,  277,  277,  277,  277,  277,  277,
      277,  277,  237,  235,  161,  278,  278,  278,  278,  278,
      278,  278,  278,  279,  356,  307,   74,  280,  280,  280,
      280,  280,  358,  358,  358,  358,  358,  358,  358,  358,
      376,  376,  376,  376,  376,  377,  280,  280,  280,  280,
      280,  280,  161,  284,  285,  286,  284,  284,  284,  284,

      284,  287,  161,  430,  429,  288,  288,  288,  288,  288,
      554,  279,  357,  357,  357,  357,  357,  357,  357,  357,
       74,  554,  161,  307,  288,  288,  288,  288,  288,  288,
      262,  322,  263,  263,  263,  263,  263,  263,  263,  263,
      366,  367,  368,  366,  366,  366,  366,  366,  313,  161,
      314,  314,  314,  314,  314,  314,  314,  314,  322,  233,
      386,   74,  262,  554,  263,  263,  263,  263,  263,  263,
      263,  263,  313,  402,  314,  314,  314,  314,  314,  314,
      314,  314,  313,  161,  314,  314,  314,  314,  314,  314,
      431,   81,  322,   74,  308,  309,  310,  308,  308,  308,

      308,  308,  311,  469,  385,  383,  312,  312,  312,  312,
      312,  331,  331,  331,  331,  331,  331,  331,  331,  405,
      405,  405,  405,  405,  406,  312,  312,  312,  312,  312,
      312,  235,  161,  320,  320,  320,  320,  320,  320,  320,
      320,  279,  235,  161,  321,  321,  321,  321,  321,  321,
      321,  321,  322,  382,  313,  307,  323,  323,  323,  323,
      323,  235,  161,  371,  371,  371,  371,  371,  371,  427,
      233,  322,  197,  342,  341,  323,  323,  323,  323,  323,
      323,  161,  327,  328,  329,  327,  327,  327,  327,  327,
      330,  428,  335,  334,  331,  331,  331,  331,  331,  375,

      375,  375,  375,  375,  375,  375,  375,  423,  423,  423,
      423,  423,  424,  331,  331,  331,  331,  331,  331,  347,
      348,  348,  348,  348,  348,  348,  348,  348,  554,  307,
      374,  374,  374,  374,  374,  374,  374,  374,  391,  392,
      393,  394,  391,  391,  391,  391,  525,   81,  536,   74,
      347,  349,  349,  349,  349,  349,  349,  349,  349,  535,
      347,  348,  348,  348,  348,  348,  348,   74,  396,  397,
      398,  396,  396,  396,  396,  396,  233,  197,  197,   74,
       74,  347,  350,  350,  350,  350,  350,  351,  348,  348,
       74,  365,  365,  365,  365,  365,  365,  365,  365,  404,

      404,  404,  404,  404,  404,  404,  404,  255,  545,  296,
      295,   74,  354,  545,  355,  355,  355,  355,  355,  355,
      355,  355,  356,  161,  293,  292,  357,  357,  357,  357,
      357,  554,  373,  403,  403,  403,  403,  403,  403,  403,
      403,  291,  290,  289,  271,  357,  357,  357,  357,  357,
      357,  361,  362,  363,  361,  361,  361,  361,  361,  364,
      233,  197,  267,  365,  365,  365,  365,  365,  412,  354,
      413,  413,  413,  413,  413,  413,  413,  413,  197,  402,
      100,  255,  365,  365,  365,  365,  365,  365,  235,  161,
      371,  371,  371,  371,  371,  371,  371,  371,  322,  235,

      161,  372,  372,  372,  372,  372,  372,  372,  372,  373,
      257,  255,  256,  374,  374,  374,  374,  374,  412,  354,
      414,  414,  414,  414,  414,  414,  414,  414,  554,  452,
      255,  253,  374,  374,  374,  374,  374,  374,  161,  378,
      379,  380,  378,  378,  378,  378,  378,  235,  161,  252,
      251,  381,  381,  381,  381,  381,  412,  322,  415,  415,
      415,  415,  415,  416,  413,  413,  250,  249,   94,  474,
      381,  381,  381,  381,  381,  381,  347,  348,  348,  348,
      348,  348,  348,  348,  348,  235,  161,  381,  381,  381,
      381,  381,  381,  381,  381,  373,  422,  422,  422,  422,

      422,  422,  422,  422,  197,  233,   74,  347,  348,  348,
      348,  348,  348,  348,  348,  348,  554,  161,  235,  161,
      419,  419,  419,  419,  419,  419,  373,  554,  373,  421,
      421,  421,  421,  421,  421,  421,  421,   74,  354,  554,
      400,  400,  400,  400,  400,  400,  400,  400,  356,  354,
      554,  401,  401,  401,  401,  401,  401,  401,  401,  402,
      452,  197,  100,  403,  403,  403,  403,  403,  443,  161,
      444,  444,  444,  444,  444,  444,  444,  444,  373,   81,
      476,  185,  403,  403,  403,  403,  403,  403,  407,  408,
      409,  407,  407,  407,  407,  407,  410,  221,  218,  217,

      411,  411,  411,  411,  411,  443,  354,  445,  445,  445,
      445,  445,  445,  445,  445,  216,  452,  215,  214,  411,
      411,  411,  411,  411,  411,  235,  161,  419,  419,  419,
      419,  419,  419,  419,  419,  373,  235,  161,  420,  420,
      420,  420,  420,  420,  420,  420,  212,  235,  161,  211,
      421,  421,  421,  421,  421,  434,  443,  373,  446,  446,
      446,  446,  446,  447,  444,  444,  481,  481,  481,  421,
      421,  421,  421,  421,  421,  434,  210,  434,  435,  411,
      411,  411,  411,  411,  411,  411,  411,  454,  454,  454,
      454,  454,  454,  454,  454,   74,   74,  436,  209,  437,

      437,  437,  437,  437,  437,  437,  437,  455,  455,  455,
      455,  455,  456,  554,  354,  453,  453,  453,  453,  453,
      453,  453,  453,  208,  489,  207,  100,   92,   74,  436,
      153,  438,  438,  438,  438,  438,  438,  438,  438,  462,
      463,  464,  462,  462,  462,  462,  462,  412,  554,  413,
      413,  413,  413,  413,  413,  413,  413,   81,  489,   81,
       74,  436,  354,  439,  439,  439,  439,  439,  440,  441,
      441,  412,  489,  413,  413,  413,  413,  413,  413,  413,
      413,  412,   74,  413,  413,  413,  413,  413,  413,  434,
      185,  142,   74,  436,  143,  442,  442,  442,  437,  437,

      437,  437,  437,  492,  492,  492,  492,  492,  493,  434,
      137,  434,  434,  137,  129,  183,  436,  122,  481,  481,
      481,  176,  175,  174,   74,  354,  173,  450,  450,  450,
      450,  450,  450,  450,  450,  402,  354,  172,  451,  451,
      451,  451,  451,  451,  451,  451,  452,   74,  170,  169,
      453,  453,  453,  453,  453,  477,  478,  479,  477,  477,
      477,  477,  477,  523,  523,  523,  523,  523,  524,  453,
      453,  453,  453,  453,  453,  457,  458,  459,  457,  457,
      457,  457,  457,  460,   74,  165,  100,  461,  461,  461,
      461,  461,  482,  483,  484,  482,  482,  482,  482,  482,

      541,  541,  541,  541,  541,  541,  461,  461,  461,  461,
      461,  461,  235,  161,  467,  467,  467,  467,  467,  467,
      467,  467,  436,   73,  441,  441,  441,  441,  441,  441,
      441,  441,  443,  100,  444,  444,  444,  444,  444,  444,
      444,  444,  443,  154,  444,  444,  444,  444,  444,  444,
      444,  444,   88,   74,  436,  153,  441,  441,  441,  441,
      441,  441,  441,  441,  443,   81,  444,  444,  444,  444,
      444,  444,  461,  461,  461,  461,  461,  461,  461,  461,
      148,  149,   76,   75,   74,   74,  436,  143,  441,  441,
      441,  441,  441,  441,  480,  480,  491,  491,  491,  491,

      491,  491,  491,  491,  554,  137,  490,  490,  490,  490,
      490,  490,  490,  490,  129,  122,  121,   74,  436,  120,
      480,  480,  480,  480,  480,  480,  480,  480,  161,  498,
      498,  498,  498,  498,  498,  498,  498,  161,  499,  499,
      499,  499,  499,  499,  499,  499,  119,  118,  117,   74,
      354,  106,  487,  487,  487,  487,  487,  487,  487,  487,
      452,  354,  105,  488,  488,  488,  488,  488,  488,  488,
      488,  489,  104,  103,  100,  490,  490,  490,  490,  490,
      161,  500,  500,  500,  500,  500,  501,  498,  498,   88,
       76,   75,   74,  554,  490,  490,  490,  490,  490,  490,

      494,  495,  496,  494,  494,  494,  494,  494,  554,  554,
      554,  554,  497,  497,  497,  497,  497,  472,  554,  554,
      554,  472,  554,  472,  472,  554,  554,  472,  554,  554,
      554,  497,  497,  497,  497,  497,  497,  554,  475,  472,
      472,  472,  475,  554,  475,  475,  554,  554,  475,  480,
      480,  480,  480,  480,  480,  480,  480,  554,  554,  554,
      475,  475,  475,  507,  554,  508,  508,  508,  508,  508,
      508,  508,  508,  554,  554,  554,  554,  512,   74,  513,
      513,  513,  513,  513,  513,  513,  513,  161,  498,  498,
      498,  498,  498,  498,   74,  507,  554,  509,  509,  509,

      509,  509,  509,  509,  509,  512,  554,  514,  514,  514,
      514,  514,  514,  514,  514,  512,  554,  515,  515,  515,
      515,  515,  516,  513,  513,  554,   74,  507,  554,  510,
      510,  510,  510,  510,  511,  508,  508,  497,  497,  497,
      497,  497,  497,  497,  497,  522,  522,  522,  522,  522,
      522,  522,  522,  554,  554,  554,  554,  554,   74,  354,
      554,  519,  519,  519,  519,  519,  519,  519,  519,  489,
      354,  554,  520,  520,  520,  520,  520,  520,  520,  520,
      554,  554,  554,  554,  521,  521,  521,  521,  521,  554,
      554,  521,  521,  521,  521,  521,  521,  521,  521,  554,

      554,  554,  554,  521,  521,  521,  521,  521,  521,  161,
      498,  498,  498,  498,  498,  498,  498,  498,  161,  498,
      498,  498,  498,  498,  498,  498,  498,  526,  527,  528,
      526,  526,  526,  526,  526,  554,  507,  554,  508,  508,
      508,  508,  508,  508,  529,  530,  531,  529,  529,  529,
      529,  529,  554,  554,  554,  554,   74,  507,  554,  508,
      508,  508,  508,  508,  508,  508,  508,   74,  512,  554,
      513,  513,  513,  513,  513,  513,  513,  513,  512,  554,
      513,  513,  513,  513,  513,  513,  513,  513,   74,  507,
      554,  508,  508,  508,  508,  508,  508,  508,  508,  512,

      554,  513,  513,  513,  513,  513,  513,  354,  554,  534,
      534,  534,  534,  534,  534,  534,  534,  554,  554,  554,
       74,  536,  554,  537,  537,  537,  537,  537,  537,  537,
      537,  541,  541,  541,  541,  541,  541,  541,  541,  542,
      542,  542,  542,  542,  542,  542,  542,  554,  554,  554,
      554,  554,   74,  536,  554,  538,  538,  538,  538,  538,
      538,  538,  538,  543,  543,  543,  543,  543,  544,  541,
      541,  548,  549,  550,  548,  548,  548,  548,  548,  554,
      554,  554,  554,  554,   74,  536,  554,  539,  539,  539,
      539,  539,  540,  537,  537,  554,  554,  554,  554,  536,

       74,  537,  537,  537,  537,  537,  537,  541,  541,  541,
      541,  541,  541,  541,  541,  554,   74,  536,  554,  537,
      537,  537,  537,  537,  537,  537,  537,  554,  554,  554,
       74,  541,  541,  541,  541,  541,  541,  541,  541,  551,
      551,  551,  551,  551,  551,  551,  551,  554,   74,  536,
      554,  537,  537,  537,  537,  537,  537,  537,  537,  548,
      548,  548,  548,  548,  548,  548,  548,  554,   74,  552,
      552,  552,  552,  552,  553,  551,  551,  554,  554,  554,
       74,  551,  551,  551,  551,  551,  551,  554,   74,  551,
      551,  551,  551,  551,  551,  551,  551,  554,   74,  554,

      554,  554,  554,  554,  554,  554,  554,  554,  554,  554,
       74,  554,  554,  554,  554,  554,  554,  554,   74,   52,
       52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
       52,   52,   52,   31,   31,   31,   31,   31,   31,   31,
       31,   31,   31,   31,   31,   31,   31,   61,   61,   61,
       61,   61,   61,   61,   61,   61,   61,   61,   61,   61,
       61,   68,   68,   68,   68,   68,   68,   68,   68,   68,
       68,   68,   68,   68,   68,   73,  554,  554,  554,   73,
      554,   73,   73,   73,  554,  554,   73,   73,   73,   77,
       77,  554,   77,   77,   77,   77,   77,   77,   77,   77,

       77,   77,   77,   80,   80,   80,   80,   80,   80,   80,
       80,   80,   80,   80,   80,   80,   80,   84,  554,  554,
      554,   84,  554,   84,   84,   84,   84,  554,   84,   84,
       84,   87,  554,  554,  554,   87,  554,   87,   87,   87,
      554,  554,   87,   87,   87,   89,  554,  554,   89,   89,
       89,   89,   89,   89,  554,  554,   89,   89,   89,   99,
       99,  554,  554,  554,   99,  124,  554,  554,  124,  124,
      124,  124,  124,  124,  554,  554,  124,  124,  124,  128,
      554,  554,  128,  128,  128,  128,  128,  128,  554,  128,
      554,  128,  128,  136,  554,  554,  136,  554,  136,  136,

      136,  136,  136,  554,  136,  136,  136,  140,  140,  140,
      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
      140,  142,  142,  554,  142,  554,  142,  142,  142,  142,
      142,  142,  142,  142,  142,   78,   78,  554,   78,   78,
       78,   78,   78,   78,   78,   78,   78,   78,   78,  150,
      150,  150,  150,  150,  150,  150,  150,  150,  150,  150,
      150,  150,  150,  151,  151,  554,  151,  151,  151,  151,
      151,  151,  151,  151,  151,  151,  151,  152,  554,  554,
      554,  152,  554,  152,  152,  152,  554,  554,  152,  152,
      152,   90,  554,  554,   90,   90,   90,   90,   90,   90,

      554,  554,   90,   90,   90,  160,  160,  554,  554,  554,
      160,  162,  162,  162,  554,  554,  554,  162,  125,  554,
      554,  125,  125,  125,  125,  125,  125,  554,  554,  125,
      125,  125,  186,  186,  186,  186,  186,  186,  186,  186,
      186,  186,  186,  186,  186,  186,  193,  193,  554,  554,
      554,  193,  199,  199,  199,  554,  554,  554,  199,  227,
      227,  554,  554,  554,  227,  228,  228,  554,  554,  554,
      228,  232,  232,  554,  554,  554,  232,  234,  234,  234,
      554,  554,  554,  234,  267,  267,  554,  554,  554,  267,
      269,  269,  554,  554,  554,  269,  270,  270,  554,  554,

      554,  270,  272,  272,  272,  554,  554,  554,  272,  276,
      276,  276,  276,  554,  554,  554,  276,  304,  304,  554,
      554,  554,  304,  305,  305,  554,  554,  554,  305,  306,
      306,  554,  554,  554,  306,  318,  318,  318,  554,  554,
      554,  318,  319,  319,  319,  319,  554,  554,  554,  319,
      352,  352,  554,  554,  554,  352,  353,  353,  554,  554,
      554,  353,  369,  369,  369,  554,  554,  554,  369,  370,
      370,  370,  370,  554,  554,  554,  370,  395,  395,  554,
      554,  554,  395,  399,  554,  399,  399,  554,  554,  554,
      399,  417,  417,  417,  554,  554,  554,  417,  418,  418,

      418,  418,  554,  554,  554,  418,  448,  448,  554,  554,
      554,  448,  449,  554,  449,  449,  554,  554,  554,  449,
      465,  465,  465,  554,  554,  554,  465,  466,  466,  466,
      554,  554,  554,  554,  466,  472,  554,  554,  472,  472,
      554,  472,  472,  472,  554,  554,  472,  472,  472,  475,
      554,  554,  475,  475,  554,  475,  475,  475,  554,  554,
      475,  475,  475,  485,  485,  554,  554,  554,  485,  486,
      554,  486,  486,  554,  554,  554,  486,  502,  502,  554,
      554,  554,  554,  502,  504,  504,  504,  504,  504,  504,
      504,  504,  504,  504,  504,  504,  504,  504,  517,  517,

      554,  554,  554,  517,  518,  554,  518,  518,  554,  554,
      554,  518,  532,  532,  554,  554,  554,  532,  533,  554,
      533,  554,  554,  554,  554,  533,  546,  546,  546,  546,
      546,  546,  546,  546,  546,  546,  546,  546,  546,  546,
       13,  554,  554,  554,  554,  554,  554,  554,  554,  554,
      554,  554,  554,  554,  554,  554,  554,  554,  554,  554,
      554,  554,  554,  554,  554,  554,  554,  554,  554,  554,
      554,  554,  554,  554,  554,  554,  554,  554,  554,  554,
      554,  554,  554,  554,  554,  554,  554,  554,  554,  554,
      554,  554,  554,  554,  554,  554,  554,  554,  554,  554,

      554,  554,  554
    } ;

static yyconst short int yy_chk[3604] =
    {   0,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
        1,    1,    2,    3,    4,  116,    2,    3,    4,  551,
        5,    5,    5,  119,    5,   20,    3,    4,   59,   59,
        5,   11,   11,   11,   11,    6,    6,    6,  119,    6,
        2,    2,    5,    5,    2,    6,   20,   84,    2,   40,

       51,    2,   12,   12,   12,   12,   63,    6,    6,   70,
       25,   67,   67,    5,   25,   25,   40,   51,   84,  116,
      109,    3,    4,   65,   11,  109,   63,   69,    6,    7,
        7,    7,   25,    7,   27,   27,   27,   27,   27,   27,
       27,   27,  121,   65,  432,   12,   72,   72,  121,   72,
       70,   25,   28,   28,   28,   28,   28,   28,   39,  117,
       39,   39,   39,   39,   39,   39,   39,   39,   41,  348,
       69,  117,    7,    7,    7,    7,    7,    7,    7,    7,
        7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
        8,    8,    8,  100,    8,  432,   41,   41,  127,  348,

       41,  178,  100,  127,   41,   49,  178,   41,   49,   49,
       49,   49,   49,   49,   49,   49,   82,   82,   82,   82,
       82,   82,   82,   82,   83,   83,   83,   83,   83,   83,
       83,   83,  118,    8,    8,    8,    8,    8,    8,    8,
        8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
        8,    9,    9,    9,    9,    9,  120,  130,  130,   50,
        9,    9,    9,   50,   50,   57,   57,   57,  120,   57,
      118,  104,  144,   57,    9,   57,  104,  222,  104,   89,
      171,   50,  162,   89,   89,  134,  134,   57,   57,  146,
      146,  162,  222,  171,    9,   10,   10,   10,   10,   10,

       50,   89,  182,  145,   10,   10,   10,   74,   57,   74,
      181,   74,  181,   74,   74,  144,  182,   74,   10,  177,
       89,   96,   96,   96,   96,   96,   96,   96,   96,   74,
       74,   74,   98,   98,   98,   98,   98,   98,   10,   18,
      184,   18,   18,   18,  145,   18,   18,  546,   86,   18,
       86,  180,   86,  184,   86,   86,  110,  199,   86,  535,
      192,   18,   18,   18,  124,  177,  199,  180,  124,  124,
      259,   86,   86,   97,   97,   97,   97,   97,   97,   97,
       97,  192,   18,   19,  110,  110,  124,  259,  110,  258,
      107,  107,  110,   19,  207,  110,   19,   19,   19,   19,

       19,   19,   19,   19,   26,  124,   26,   26,   26,   26,
       26,   26,   26,   26,   26,  188,  207,  213,   26,   26,
       26,   26,   26,  213,  260,   92,   92,   92,   92,   92,
       92,   92,   92,  107,  260,   26,  263,   26,   26,   26,
       26,   26,   26,   32,  220,  220,  188,   32,  258,   32,
      360,  360,   32,   32,   92,   32,   32,   32,   32,   32,
       32,   32,   32,   32,   32,   32,   32,  263,  534,   32,
       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,

       32,   32,   32,   32,   32,   34,   34,   34,   34,   34,
       34,   34,   34,   34,  196,  196,  196,   34,   34,   34,
       34,   34,  123,  123,  123,  123,  123,  123,  123,  123,
      254,  299,  532,  141,  141,  254,   34,   34,   34,   34,
       34,   34,   38,   38,   38,  219,   38,  299,   38,   38,
      223,   88,   38,   88,  234,   88,  223,   88,   88,  236,
      236,   88,  521,  234,   38,   38,   38,   42,  137,  236,
      520,  137,  137,   88,   88,   88,  141,   42,  137,  221,
       42,   42,   42,   42,   42,   42,   42,   42,   91,  518,
       91,  137,   91,  343,   91,   91,  517,  219,   91,  126,

      221,  126,  247,  126,  154,  126,  126,  434,  154,  126,
       91,   91,   91,  345,  154,  238,  238,  221,   42,   58,
      298,  126,  126,  126,  247,  238,  154,  154,  345,   58,
      298,  513,   58,   58,   58,   58,   58,   58,   58,   58,
       77,  343,   77,   77,   77,  289,   77,   77,  434,  292,
       77,  133,  133,  133,  133,  133,  133,  133,  133,  272,
      261,  504,   77,   77,   77,  261,  276,  289,  272,  294,
      153,  292,  153,  293,  153,  276,  153,  153,  294,  388,
      153,  388,  297,   77,   93,   93,   93,   93,   93,   93,
       93,   93,  153,  153,  153,  293,   93,   93,   93,   93,

       93,  187,  187,  187,  187,  187,  187,  187,  187,  203,
      203,  203,  203,  203,  203,   93,   93,   93,   93,   93,
       93,  101,  101,  101,  101,  101,  101,  101,  101,  297,
      187,  387,  387,  101,  101,  101,  101,  101,  191,  435,
      191,  191,  191,  191,  191,  191,  244,  244,  244,  244,
      244,  244,  101,  101,  101,  101,  101,  101,  155,  300,
      155,  155,  155,  155,  155,  155,  155,  155,  300,  191,
      200,  200,  200,  200,  200,  200,  200,  200,  183,  387,
      435,  355,  183,  406,  406,  420,  420,  502,  183,  155,
      156,  355,  156,  156,  156,  156,  156,  156,  156,  156,

      183,  183,  195,  195,  195,  195,  195,  195,  195,  195,
      195,  202,  202,  202,  202,  202,  202,  202,  202,  421,
      421,  156,  157,  357,  157,  157,  157,  157,  157,  157,
      157,  157,  205,  357,  205,  205,  205,  205,  205,  205,
      205,  205,  229,  229,  229,  229,  229,  229,  229,  229,
      229,  340,  498,  157,  158,  318,  158,  158,  158,  158,
      158,  158,  158,  158,  318,  424,  424,  340,  158,  158,
      158,  158,  158,  235,  235,  235,  235,  235,  235,  235,
      235,  286,  286,  286,  286,  286,  286,  158,  158,  158,
      158,  158,  158,  161,  161,  161,  161,  161,  161,  161,

      161,  161,  456,  456,  470,  161,  161,  161,  161,  161,
      237,  237,  237,  237,  237,  237,  237,  237,  310,  310,
      310,  310,  310,  310,  161,  161,  161,  161,  161,  161,
      163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
      467,  467,  486,  163,  163,  163,  163,  163,  241,  241,
      241,  241,  241,  241,  241,  241,  332,  336,  241,  485,
      470,  346,  163,  163,  163,  163,  163,  163,  164,  164,
      164,  164,  164,  164,  164,  164,  338,  346,  332,  336,
      164,  164,  164,  164,  164,  243,  243,  243,  243,  243,
      243,  243,  243,  472,  382,  471,  277,  277,  338,  164,

      164,  164,  164,  164,  164,  189,  277,  189,  189,  189,
      189,  189,  189,  189,  189,  246,  382,  246,  246,  246,
      246,  246,  246,  246,  246,  262,  262,  262,  262,  262,
      262,  262,  262,  469,  472,  433,  189,  190,  319,  190,
      190,  190,  190,  190,  190,  190,  190,  319,  278,  278,
      433,  437,  493,  493,  262,  280,  280,  266,  278,  266,
      266,  266,  266,  266,  266,  280,  506,  506,  190,  201,
      201,  201,  201,  201,  201,  201,  201,  201,  201,  201,
      320,  320,  437,  201,  201,  201,  201,  201,  266,  273,
      320,  273,  273,  273,  273,  273,  273,  273,  273,  524,

      524,  468,  201,  201,  201,  201,  201,  201,  204,  204,
      204,  204,  204,  204,  204,  204,  204,  204,  344,  568,
      568,  204,  204,  204,  204,  204,  274,  344,  274,  274,
      274,  274,  274,  274,  274,  274,  466,  321,  321,  449,
      204,  204,  204,  204,  204,  204,  224,  321,  224,  224,
      224,  224,  224,  224,  224,  224,  275,  383,  275,  275,
      275,  275,  275,  275,  275,  275,  279,  279,  279,  279,
      279,  279,  279,  279,  425,  448,  444,  224,  225,  383,
      225,  225,  225,  225,  225,  225,  225,  225,  283,  283,
      283,  283,  283,  283,  283,  283,  425,  400,  283,  285,

      285,  285,  285,  285,  285,  285,  285,  400,  508,  225,
      226,  401,  226,  226,  226,  226,  226,  226,  226,  226,
      288,  401,  288,  288,  288,  288,  288,  288,  288,  288,
      307,  307,  307,  307,  307,  307,  307,  307,  429,  508,
      413,  226,  239,  239,  239,  239,  239,  239,  239,  239,
      239,  239,  239,  242,  242,  242,  242,  242,  242,  242,
      242,  242,  242,  242,  399,  395,  390,  242,  242,  242,
      242,  242,  309,  309,  309,  309,  309,  309,  309,  309,
      329,  329,  329,  329,  329,  329,  242,  242,  242,  242,
      242,  242,  245,  245,  245,  245,  245,  245,  245,  245,

      245,  245,  369,  386,  385,  245,  245,  245,  245,  245,
      312,  369,  312,  312,  312,  312,  312,  312,  312,  312,
      384,  323,  323,  353,  245,  245,  245,  245,  245,  245,
      264,  323,  264,  264,  264,  264,  264,  264,  264,  264,
      313,  313,  313,  313,  313,  313,  313,  313,  315,  370,
      315,  315,  315,  315,  315,  315,  315,  315,  370,  352,
      342,  264,  265,  403,  265,  265,  265,  265,  265,  265,
      265,  265,  316,  403,  316,  316,  316,  316,  316,  316,
      316,  316,  317,  417,  317,  317,  317,  317,  317,  317,
      431,  431,  417,  265,  271,  271,  271,  271,  271,  271,

      271,  271,  271,  431,  341,  335,  271,  271,  271,  271,
      271,  322,  322,  322,  322,  322,  322,  322,  322,  363,
      363,  363,  363,  363,  363,  271,  271,  271,  271,  271,
      271,  281,  281,  281,  281,  281,  281,  281,  281,  281,
      281,  281,  284,  284,  284,  284,  284,  284,  284,  284,
      284,  284,  284,  334,  314,  306,  284,  284,  284,  284,
      284,  326,  326,  326,  326,  326,  326,  326,  326,  427,
      305,  326,  304,  296,  295,  284,  284,  284,  284,  284,
      284,  287,  287,  287,  287,  287,  287,  287,  287,  287,
      287,  427,  291,  290,  287,  287,  287,  287,  287,  328,

      328,  328,  328,  328,  328,  328,  328,  380,  380,  380,
      380,  380,  380,  287,  287,  287,  287,  287,  287,  301,
      301,  301,  301,  301,  301,  301,  301,  301,  331,  270,
      331,  331,  331,  331,  331,  331,  331,  331,  347,  347,
      347,  347,  347,  347,  347,  347,  525,  525,  537,  301,
      302,  302,  302,  302,  302,  302,  302,  302,  302,  525,
      351,  351,  351,  351,  351,  351,  351,  347,  354,  354,
      354,  354,  354,  354,  354,  354,  269,  268,  267,  537,
      302,  303,  303,  303,  303,  303,  303,  303,  303,  303,
      351,  356,  356,  356,  356,  356,  356,  356,  356,  362,

      362,  362,  362,  362,  362,  362,  362,  257,  619,  256,
      255,  303,  308,  619,  308,  308,  308,  308,  308,  308,
      308,  308,  308,  418,  253,  252,  308,  308,  308,  308,
      308,  365,  418,  365,  365,  365,  365,  365,  365,  365,
      365,  251,  250,  249,  233,  308,  308,  308,  308,  308,
      308,  311,  311,  311,  311,  311,  311,  311,  311,  311,
      232,  231,  230,  311,  311,  311,  311,  311,  366,  450,
      366,  366,  366,  366,  366,  366,  366,  366,  228,  450,
      227,  218,  311,  311,  311,  311,  311,  311,  324,  324,
      324,  324,  324,  324,  324,  324,  324,  324,  324,  327,

      327,  327,  327,  327,  327,  327,  327,  327,  327,  327,
      217,  216,  215,  327,  327,  327,  327,  327,  367,  451,
      367,  367,  367,  367,  367,  367,  367,  367,  473,  451,
      214,  212,  327,  327,  327,  327,  327,  327,  330,  330,
      330,  330,  330,  330,  330,  330,  330,  371,  371,  211,
      210,  330,  330,  330,  330,  330,  368,  371,  368,  368,
      368,  368,  368,  368,  368,  368,  209,  208,  206,  473,
      330,  330,  330,  330,  330,  330,  349,  349,  349,  349,
      349,  349,  349,  349,  349,  372,  372,  373,  373,  373,
      373,  373,  373,  373,  373,  372,  379,  379,  379,  379,

      379,  379,  379,  379,  198,  197,  349,  350,  350,  350,
      350,  350,  350,  350,  350,  350,  374,  374,  377,  377,
      377,  377,  377,  377,  377,  377,  374,  381,  377,  381,
      381,  381,  381,  381,  381,  381,  381,  350,  358,  475,
      358,  358,  358,  358,  358,  358,  358,  358,  358,  361,
      453,  361,  361,  361,  361,  361,  361,  361,  361,  361,
      453,  194,  193,  361,  361,  361,  361,  361,  396,  465,
      396,  396,  396,  396,  396,  396,  396,  396,  465,  186,
      475,  185,  361,  361,  361,  361,  361,  361,  364,  364,
      364,  364,  364,  364,  364,  364,  364,  179,  176,  175,

      364,  364,  364,  364,  364,  397,  487,  397,  397,  397,
      397,  397,  397,  397,  397,  174,  487,  173,  172,  364,
      364,  364,  364,  364,  364,  375,  375,  375,  375,  375,
      375,  375,  375,  375,  375,  375,  378,  378,  378,  378,
      378,  378,  378,  378,  378,  378,  170,  419,  419,  169,
      378,  378,  378,  378,  378,  389,  398,  419,  398,  398,
      398,  398,  398,  398,  398,  398,  481,  481,  481,  378,
      378,  378,  378,  378,  378,  389,  168,  389,  389,  402,
      402,  402,  402,  402,  402,  402,  402,  408,  408,  408,
      408,  408,  408,  408,  408,  481,  389,  391,  167,  391,

      391,  391,  391,  391,  391,  391,  391,  409,  409,  409,
      409,  409,  409,  411,  488,  411,  411,  411,  411,  411,
      411,  411,  411,  166,  488,  165,  160,  159,  391,  392,
      152,  392,  392,  392,  392,  392,  392,  392,  392,  412,
      412,  412,  412,  412,  412,  412,  412,  414,  490,  414,
      414,  414,  414,  414,  414,  414,  414,  151,  490,  150,
      392,  393,  519,  393,  393,  393,  393,  393,  393,  393,
      393,  415,  519,  415,  415,  415,  415,  415,  415,  415,
      415,  416,  148,  416,  416,  416,  416,  416,  416,  430,
      147,  143,  393,  394,  142,  394,  394,  394,  394,  394,

      394,  394,  394,  459,  459,  459,  459,  459,  459,  430,
      140,  430,  430,  136,  129,  125,  442,  122,  442,  442,
      442,  115,  114,  113,  394,  404,  112,  404,  404,  404,
      404,  404,  404,  404,  404,  404,  407,  111,  407,  407,
      407,  407,  407,  407,  407,  407,  407,  442,  106,  105,
      407,  407,  407,  407,  407,  436,  436,  436,  436,  436,
      436,  436,  436,  496,  496,  496,  496,  496,  496,  407,
      407,  407,  407,  407,  407,  410,  410,  410,  410,  410,
      410,  410,  410,  410,  436,  103,   99,  410,  410,  410,
      410,  410,  443,  443,  443,  443,  443,  443,  443,  443,

      544,  544,  544,  544,  544,  544,  410,  410,  410,  410,
      410,  410,  422,  422,  422,  422,  422,  422,  422,  422,
      422,  422,  438,   95,  438,  438,  438,  438,  438,  438,
      438,  438,  445,   94,  445,  445,  445,  445,  445,  445,
      445,  445,  446,   90,  446,  446,  446,  446,  446,  446,
      446,  446,   87,  438,  439,   85,  439,  439,  439,  439,
      439,  439,  439,  439,  447,   80,  447,  447,  447,  447,
      447,  447,  452,  452,  452,  452,  452,  452,  452,  452,
       79,   78,   76,   75,   73,  439,  440,   68,  440,  440,
      440,  440,  440,  440,  440,  440,  458,  458,  458,  458,

      458,  458,  458,  458,  461,   61,  461,  461,  461,  461,
      461,  461,  461,  461,   54,   48,   47,  440,  441,   46,
      441,  441,  441,  441,  441,  441,  441,  441,  462,  462,
      462,  462,  462,  462,  462,  462,  462,  463,  463,  463,
      463,  463,  463,  463,  463,  463,   45,   44,   43,  441,
      454,   37,  454,  454,  454,  454,  454,  454,  454,  454,
      454,  457,   36,  457,  457,  457,  457,  457,  457,  457,
      457,  457,   35,   33,   29,  457,  457,  457,  457,  457,
      464,  464,  464,  464,  464,  464,  464,  464,  464,   23,
       17,   15,   14,   13,  457,  457,  457,  457,  457,  457,

      460,  460,  460,  460,  460,  460,  460,  460,    0,    0,
        0,    0,  460,  460,  460,  460,  460,  474,    0,    0,
        0,  474,    0,  474,  474,    0,    0,  474,    0,    0,
        0,  460,  460,  460,  460,  460,  460,    0,  476,  474,
      474,  474,  476,    0,  476,  476,    0,    0,  476,  480,
      480,  480,  480,  480,  480,  480,  480,    0,    0,    0,
      476,  476,  476,  477,    0,  477,  477,  477,  477,  477,
      477,  477,  477,    0,    0,    0,    0,  482,  480,  482,
      482,  482,  482,  482,  482,  482,  482,  501,  501,  501,
      501,  501,  501,  501,  477,  478,    0,  478,  478,  478,

      478,  478,  478,  478,  478,  483,    0,  483,  483,  483,
      483,  483,  483,  483,  483,  484,    0,  484,  484,  484,
      484,  484,  484,  484,  484,    0,  478,  479,    0,  479,
      479,  479,  479,  479,  479,  479,  479,  489,  489,  489,
      489,  489,  489,  489,  489,  495,  495,  495,  495,  495,
      495,  495,  495,    0,    0,    0,    0,    0,  479,  491,
        0,  491,  491,  491,  491,  491,  491,  491,  491,  491,
      494,    0,  494,  494,  494,  494,  494,  494,  494,  494,
        0,    0,    0,    0,  494,  494,  494,  494,  494,  497,
        0,  497,  497,  497,  497,  497,  497,  497,  497,    0,

        0,    0,    0,  494,  494,  494,  494,  494,  494,  499,
      499,  499,  499,  499,  499,  499,  499,  499,  500,  500,
      500,  500,  500,  500,  500,  500,  500,  507,  507,  507,
      507,  507,  507,  507,  507,    0,  511,    0,  511,  511,
      511,  511,  511,  511,  512,  512,  512,  512,  512,  512,
      512,  512,    0,    0,    0,    0,  507,  509,    0,  509,
      509,  509,  509,  509,  509,  509,  509,  511,  514,    0,
      514,  514,  514,  514,  514,  514,  514,  514,  515,    0,
      515,  515,  515,  515,  515,  515,  515,  515,  509,  510,
        0,  510,  510,  510,  510,  510,  510,  510,  510,  516,

        0,  516,  516,  516,  516,  516,  516,  522,    0,  522,
      522,  522,  522,  522,  522,  522,  522,    0,    0,    0,
      510,  526,    0,  526,  526,  526,  526,  526,  526,  526,
      526,  529,  529,  529,  529,  529,  529,  529,  529,  530,
      530,  530,  530,  530,  530,  530,  530,    0,    0,    0,
        0,    0,  526,  527,    0,  527,  527,  527,  527,  527,
      527,  527,  527,  531,  531,  531,  531,  531,  531,  531,
      531,  536,  536,  536,  536,  536,  536,  536,  536,    0,
        0,    0,    0,    0,  527,  528,    0,  528,  528,  528,
      528,  528,  528,  528,  528,    0,    0,    0,    0,  540,

      536,  540,  540,  540,  540,  540,  540,  542,  542,  542,
      542,  542,  542,  542,  542,    0,  528,  538,    0,  538,
      538,  538,  538,  538,  538,  538,  538,    0,    0,    0,
      540,  543,  543,  543,  543,  543,  543,  543,  543,  548,
      548,  548,  548,  548,  548,  548,  548,    0,  538,  539,
        0,  539,  539,  539,  539,  539,  539,  539,  539,  549,
      549,  549,  549,  549,  549,  549,  549,    0,  548,  550,
      550,  550,  550,  550,  550,  550,  550,    0,    0,    0,
      539,  553,  553,  553,  553,  553,  553,    0,  549,  552,
      552,  552,  552,  552,  552,  552,  552,    0,  550,    0,

        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      553,    0,    0,    0,    0,    0,    0,    0,  552,  555,
      555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
      555,  555,  555,  556,  556,  556,  556,  556,  556,  556,
      556,  556,  556,  556,  556,  556,  556,  557,  557,  557,
      557,  557,  557,  557,  557,  557,  557,  557,  557,  557,
      557,  558,  558,  558,  558,  558,  558,  558,  558,  558,
      558,  558,  558,  558,  558,  559,    0,    0,    0,  559,
        0,  559,  559,  559,    0,    0,  559,  559,  559,  560,
      560,    0,  560,  560,  560,  560,  560,  560,  560,  560,

      560,  560,  560,  561,  561,  561,  561,  561,  561,  561,
      561,  561,  561,  561,  561,  561,  561,  562,    0,    0,
        0,  562,    0,  562,  562,  562,  562,    0,  562,  562,
      562,  563,    0,    0,    0,  563,    0,  563,  563,  563,
        0,    0,  563,  563,  563,  564,    0,    0,  564,  564,
      564,  564,  564,  564,    0,    0,  564,  564,  564,  565,
      565,    0,    0,    0,  565,  566,    0,    0,  566,  566,
      566,  566,  566,  566,    0,    0,  566,  566,  566,  567,
        0,    0,  567,  567,  567,  567,  567,  567,    0,  567,
        0,  567,  567,  569,    0,    0,  569,    0,  569,  569,

      569,  569,  569,    0,  569,  569,  569,  570,  570,  570,
      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
      570,  571,  571,    0,  571,    0,  571,  571,  571,  571,
      571,  571,  571,  571,  571,  572,  572,    0,  572,  572,
      572,  572,  572,  572,  572,  572,  572,  572,  572,  573,
      573,  573,  573,  573,  573,  573,  573,  573,  573,  573,
      573,  573,  573,  574,  574,    0,  574,  574,  574,  574,
      574,  574,  574,  574,  574,  574,  574,  575,    0,    0,
        0,  575,    0,  575,  575,  575,    0,    0,  575,  575,
      575,  576,    0,    0,  576,  576,  576,  576,  576,  576,

        0,    0,  576,  576,  576,  577,  577,    0,    0,    0,
      577,  578,  578,  578,    0,    0,    0,  578,  579,    0,
        0,  579,  579,  579,  579,  579,  579,    0,    0,  579,
      579,  579,  580,  580,  580,  580,  580,  580,  580,  580,
      580,  580,  580,  580,  580,  580,  581,  581,    0,    0,
        0,  581,  582,  582,  582,    0,    0,    0,  582,  583,
      583,    0,    0,    0,  583,  584,  584,    0,    0,    0,
      584,  585,  585,    0,    0,    0,  585,  586,  586,  586,
        0,    0,    0,  586,  587,  587,    0,    0,    0,  587,
      588,  588,    0,    0,    0,  588,  589,  589,    0,    0,

        0,  589,  590,  590,  590,    0,    0,    0,  590,  591,
      591,  591,  591,    0,    0,    0,  591,  592,  592,    0,
        0,    0,  592,  593,  593,    0,    0,    0,  593,  594,
      594,    0,    0,    0,  594,  595,  595,  595,    0,    0,
        0,  595,  596,  596,  596,  596,    0,    0,    0,  596,
      597,  597,    0,    0,    0,  597,  598,  598,    0,    0,
        0,  598,  599,  599,  599,    0,    0,    0,  599,  600,
      600,  600,  600,    0,    0,    0,  600,  601,  601,    0,
        0,    0,  601,  602,    0,  602,  602,    0,    0,    0,
      602,  603,  603,  603,    0,    0,    0,  603,  604,  604,

      604,  604,    0,    0,    0,  604,  605,  605,    0,    0,
        0,  605,  606,    0,  606,  606,    0,    0,    0,  606,
      607,  607,  607,    0,    0,    0,  607,  608,  608,  608,
        0,    0,    0,    0,  608,  609,    0,    0,  609,  609,
        0,  609,  609,  609,    0,    0,  609,  609,  609,  610,
        0,    0,  610,  610,    0,  610,  610,  610,    0,    0,
      610,  610,  610,  611,  611,    0,    0,    0,  611,  612,
        0,  612,  612,    0,    0,    0,  612,  613,  613,    0,
        0,    0,    0,  613,  614,  614,  614,  614,  614,  614,
      614,  614,  614,  614,  614,  614,  614,  614,  615,  615,

        0,    0,    0,  615,  616,    0,  616,  616,    0,    0,
        0,  616,  617,  617,    0,    0,    0,  617,  618,    0,
      618,    0,    0,    0,    0,  618,  620,  620,  620,  620,
      620,  620,  620,  620,  620,  620,  620,  620,  620,  620,
      554,  554,  554,  554,  554,  554,  554,  554,  554,  554,
      554,  554,  554,  554,  554,  554,  554,  554,  554,  554,
      554,  554,  554,  554,  554,  554,  554,  554,  554,  554,
      554,  554,  554,  554,  554,  554,  554,  554,  554,  554,
      554,  554,  554,  554,  554,  554,  554,  554,  554,  554,
      554,  554,  554,  554,  554,  554,  554,  554,  554,  554,

      554,  554,  554
    } ;

static yy_state_type yy_last_accepting_state;
static char *yy_last_accepting_cpos;

/* The intent behind this definition is that it'll catch
 * any uses of REJECT which flex missed.
 */
#define REJECT reject_used_but_not_detected
#define yymore() yymore_used_but_not_detected
#define YY_MORE_ADJ 0
#define YY_RESTORE_YY_MORE_OFFSET
char *yytext;
#line 1 "toke.l"
#define INITIAL 0
#line 2 "toke.l"
/*
 * Copyright (c) 1996, 1998-2005, 2007-2010
 *	Todd C. Miller <Todd.Miller@courtesan.com>
 *
 * Permission to use, copy, modify, and distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * Sponsored in part by the Defense Advanced Research Projects
 * Agency (DARPA) and Air Force Research Laboratory, Air Force
 * Materiel Command, USAF, under agreement number F39502-99-1-0512.
 */

#include <config.h>

#include <sys/types.h>
#include <sys/param.h>
#include <sys/stat.h>
#include <stdio.h>
#ifdef STDC_HEADERS
# include <stdlib.h>
# include <stddef.h>
#else
# ifdef HAVE_STDLIB_H
#  include <stdlib.h>
# endif
#endif /* STDC_HEADERS */
#ifdef HAVE_STRING_H
# include <string.h>
#endif /* HAVE_STRING_H */
#ifdef HAVE_STRINGS_H
# include <strings.h>
#endif /* HAVE_STRINGS_H */
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif /* HAVE_UNISTD_H */
#if defined(HAVE_MALLOC_H) && !defined(STDC_HEADERS)
# include <malloc.h>
#endif /* HAVE_MALLOC_H && !STDC_HEADERS */
#ifdef HAVE_DIRENT_H
# include <dirent.h>
# define NAMLEN(dirent) strlen((dirent)->d_name)
#else
# define dirent direct
# define NAMLEN(dirent) (dirent)->d_namlen
# ifdef HAVE_SYS_NDIR_H
#  include <sys/ndir.h>
# endif
# ifdef HAVE_SYS_DIR_H
#  include <sys/dir.h>
# endif
# ifdef HAVE_NDIR_H
#  include <ndir.h>
# endif
#endif
#include <ctype.h>
#include "sudo.h"
#include "parse.h"
#include <gram.h>

extern YYSTYPE yylval;
extern int parse_error;
int sudolineno = 1;
char *sudoers;
static int sawspace = 0;
static int arg_len = 0;
static int arg_size = 0;

static int append		__P((char *, int));
static int _fill		__P((char *, int, int));
static int fill_cmnd		__P((char *, int));
static int fill_args		__P((char *, int, int));
static int _push_include	__P((char *, int));
static int pop_include		__P((void));
static int ipv6_valid		__P((const char *s));
static char *parse_include	__P((char *));
extern void yyerror		__P((const char *));

#define fill(a, b)		_fill(a, b, 0)

#define	push_include(_p)	(_push_include((_p), FALSE))
#define	push_includedir(_p)	(_push_include((_p), TRUE))

/* realloc() to size + COMMANDARGINC to make room for command args */
#define COMMANDARGINC	64

#ifdef TRACELEXER
#define LEXTRACE(msg)	fputs(msg, stderr)
#else
#define LEXTRACE(msg)
#endif
#define YY_NO_UNPUT 1
#define GOTDEFS 1

#define GOTCMND 2

#define STARTDEFS 3

#define INDEFS 4

#define INSTR 5

#line 1475 "lex.yy.c"

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

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

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

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

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

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

#if defined(YY_STACK_USED) && YY_STACK_USED
static int yy_start_stack_ptr = 0;
static int yy_start_stack_depth = 0;
static int *yy_start_stack = 0;
#ifndef YY_NO_PUSH_STATE
static void yy_push_state YY_PROTO(( int new_state ));
#endif
#ifndef YY_NO_POP_STATE
static void yy_pop_state YY_PROTO(( void ));
#endif
#ifndef YY_NO_TOP_STATE
static int yy_top_state YY_PROTO(( void ));
#endif

#else
#define YY_NO_PUSH_STATE 1
#define YY_NO_POP_STATE 1
#define YY_NO_TOP_STATE 1
#endif

#ifdef YY_MALLOC_DECL
YY_MALLOC_DECL
#else
#ifdef __STDC__
#ifndef __cplusplus
#include <stdlib.h>
#endif
#else
/* Just try to get by without declaring the routines.  This will fail
 * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
 * or sizeof(void*) != sizeof(int).
 */
#endif
#endif

/* Amount of stuff to slurp up with each read. */
#ifndef YY_READ_BUF_SIZE
#define YY_READ_BUF_SIZE 8192
#endif

/* Copy whatever the last rule matched to the standard output. */

#ifndef ECHO
/* This used to be an fputs(), but since the string might contain NUL's,
 * we now use fwrite().
 */
#define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
#endif

/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
 * is returned in "result".
 */
#ifndef YY_INPUT
#define YY_INPUT(buf,result,max_size) \
	if ( yy_current_buffer->yy_is_interactive ) \
		{ \
		int c = '*', n; \
		for ( n = 0; n < max_size && \
			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
			buf[n] = (char) c; \
		if ( c == '\n' ) \
			buf[n++] = (char) c; \
		if ( c == EOF && ferror( yyin ) ) \
			YY_FATAL_ERROR( "input in flex scanner failed" ); \
		result = n; \
		} \
	else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
		  && ferror( yyin ) ) \
		YY_FATAL_ERROR( "input in flex scanner failed" );
#endif

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

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

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

/* Default declaration of generated scanner - a define so the user can
 * easily add parameters.
 */
#ifndef YY_DECL
#define YY_DECL int yylex YY_PROTO(( void ))
#endif

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

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

#define YY_RULE_SETUP \
	if ( yyleng > 0 ) \
		yy_current_buffer->yy_at_bol = \
				(yytext[yyleng - 1] == '\n'); \
	YY_USER_ACTION

YY_DECL
	{
	register yy_state_type yy_current_state;
	register char *yy_cp, *yy_bp;
	register int yy_act;

#line 127 "toke.l"

#line 1631 "lex.yy.c"

	if ( yy_init )
		{
		yy_init = 0;

#ifdef YY_USER_INIT
		YY_USER_INIT;
#endif

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

		if ( ! yyin )
			yyin = stdin;

		if ( ! yyout )
			yyout = stdout;

		if ( ! yy_current_buffer )
			yy_current_buffer =
				yy_create_buffer( yyin, YY_BUF_SIZE );

		yy_load_buffer_state();
		}

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

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

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

		yy_current_state = yy_start;
		yy_current_state += YY_AT_BOL();
yy_match:
		do
			{
			register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
			if ( yy_accept[yy_current_state] )
				{
				yy_last_accepting_state = yy_current_state;
				yy_last_accepting_cpos = yy_cp;
				}
			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
				{
				yy_current_state = (int) yy_def[yy_current_state];
				if ( yy_current_state >= 555 )
					yy_c = yy_meta[(unsigned int) yy_c];
				}
			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
			++yy_cp;
			}
		while ( yy_base[yy_current_state] != 3541 );

yy_find_action:
		yy_act = yy_accept[yy_current_state];
		if ( yy_act == 0 )
			{ /* have to back up */
			yy_cp = yy_last_accepting_cpos;
			yy_current_state = yy_last_accepting_state;
			yy_act = yy_accept[yy_current_state];
			}

		YY_DO_BEFORE_ACTION;


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


		switch ( yy_act )
	{ /* beginning of action switch */
			case 0: /* must back up */
			/* undo the effects of YY_DO_BEFORE_ACTION */
			*yy_cp = yy_hold_char;
			yy_cp = yy_last_accepting_cpos;
			yy_current_state = yy_last_accepting_state;
			goto yy_find_action;

case 1:
YY_RULE_SETUP
#line 128 "toke.l"
BEGIN STARTDEFS;
	YY_BREAK
case 2:
YY_RULE_SETUP
#line 130 "toke.l"
{
			    BEGIN INDEFS;
			    LEXTRACE("DEFVAR ");
			    if (!fill(yytext, yyleng))
				yyterminate();
			    return(DEFVAR);
			}
	YY_BREAK

case 3:
YY_RULE_SETUP
#line 139 "toke.l"
{
			    BEGIN STARTDEFS;
			    LEXTRACE(", ");
			    return(',');
			}			/* return ',' */
	YY_BREAK
case 4:
YY_RULE_SETUP
#line 145 "toke.l"
{
			    LEXTRACE("= ");
			    return('=');
			}			/* return '=' */
	YY_BREAK
case 5:
YY_RULE_SETUP
#line 150 "toke.l"
{
			    LEXTRACE("+= ");
			    return('+');
			}			/* return '+' */
	YY_BREAK
case 6:
YY_RULE_SETUP
#line 155 "toke.l"
{
			    LEXTRACE("-= ");
			    return('-');
			}			/* return '-' */
	YY_BREAK
case 7:
YY_RULE_SETUP
#line 160 "toke.l"
{
			    LEXTRACE("BEGINSTR ");
			    yylval.string = NULL;
			    BEGIN INSTR;
			}
	YY_BREAK
case 8:
YY_RULE_SETUP
#line 166 "toke.l"
{
			    LEXTRACE("WORD(2) ");
			    if (!fill(yytext, yyleng))
				yyterminate();
			    return(WORD);
			}
	YY_BREAK


case 9:
YY_RULE_SETUP
#line 175 "toke.l"
{
			    /* Line continuation char followed by newline. */
			    ++sudolineno;
			    LEXTRACE("\n");
			}
	YY_BREAK
case 10:
YY_RULE_SETUP
#line 181 "toke.l"
{
			    LEXTRACE("ENDSTR ");
			    BEGIN INDEFS;
			    return(WORD);
			}
	YY_BREAK
case 11:
YY_RULE_SETUP
#line 187 "toke.l"
{
			    LEXTRACE("BACKSLASH ");
			    if (!append(yytext, yyleng))
				yyterminate();
			}
	YY_BREAK
case 12:
YY_RULE_SETUP
#line 193 "toke.l"
{
			    LEXTRACE("STRBODY ");
			    if (!append(yytext, yyleng))
				yyterminate();
			}
	YY_BREAK


case 13:
YY_RULE_SETUP
#line 201 "toke.l"
{
			    /* quoted fnmatch glob char, pass verbatim */
			    LEXTRACE("QUOTEDCHAR ");
			    if (!fill_args(yytext, 2, sawspace))
				yyterminate();
			    sawspace = FALSE;
			}
	YY_BREAK
case 14:
YY_RULE_SETUP
#line 209 "toke.l"
{
			    /* quoted sudoers special char, strip backslash */
			    LEXTRACE("QUOTEDCHAR ");
			    if (!fill_args(yytext + 1, 1, sawspace))
				yyterminate();
			    sawspace = FALSE;
			}
	YY_BREAK
case 15:
YY_RULE_SETUP
#line 217 "toke.l"
{
			    BEGIN INITIAL;
			    yyless(0);
			    return(COMMAND);
			}			/* end of command line args */
	YY_BREAK
case 16:
YY_RULE_SETUP
#line 223 "toke.l"
{
			    LEXTRACE("ARG ");
			    if (!fill_args(yytext, yyleng, sawspace))
				yyterminate();
			    sawspace = FALSE;
			}			/* a command line arg */
	YY_BREAK

case 17:
YY_RULE_SETUP
#line 231 "toke.l"
{
			    char *path;

			    if ((path = parse_include(yytext)) == NULL)
				yyterminate();

			    LEXTRACE("INCLUDE\n");

			    /* Push current buffer and switch to include file */
			    if (!push_include(path))
				yyterminate();
			}
	YY_BREAK
case 18:
YY_RULE_SETUP
#line 244 "toke.l"
{
			    char *path;

			    if ((path = parse_include(yytext)) == NULL)
				yyterminate();

			    LEXTRACE("INCLUDEDIR\n");

			    /*
			     * Push current buffer and switch to include file.
			     * We simply ignore empty directories.
			     */
			    if (!push_includedir(path) && parse_error)
				yyterminate();
			}
	YY_BREAK
case 19:
YY_RULE_SETUP
#line 260 "toke.l"
{
			    int n;
			    for (n = 0; isblank((unsigned char)yytext[n]); n++)
				continue;
			    n += 8;
			    BEGIN GOTDEFS;
			    switch (yytext[n++]) {
				case ':':
				    yyless(n);
				    LEXTRACE("DEFAULTS_USER ");
				    return(DEFAULTS_USER);
				case '>':
				    yyless(n);
				    LEXTRACE("DEFAULTS_RUNAS ");
				    return(DEFAULTS_RUNAS);
				case '@':
				    yyless(n);
				    LEXTRACE("DEFAULTS_HOST ");
				    return(DEFAULTS_HOST);
				case '!':
				    yyless(n);
				    LEXTRACE("DEFAULTS_CMND ");
				    return(DEFAULTS_CMND);
				default:
				    LEXTRACE("DEFAULTS ");
				    return(DEFAULTS);
			    }
			}
	YY_BREAK
case 20:
YY_RULE_SETUP
#line 289 "toke.l"
{
			    int n;
			    for (n = 0; isblank((unsigned char)yytext[n]); n++)
				continue;
			    switch (yytext[n]) {
				case 'H':
				    LEXTRACE("HOSTALIAS ");
				    return(HOSTALIAS);
				case 'C':
				    LEXTRACE("CMNDALIAS ");
				    return(CMNDALIAS);
				case 'U':
				    LEXTRACE("USERALIAS ");
				    return(USERALIAS);
				case 'R':
				    LEXTRACE("RUNASALIAS ");
				    return(RUNASALIAS);
			    }
			}
	YY_BREAK
case 21:
YY_RULE_SETUP
#line 309 "toke.l"
{
				/* cmnd does not require passwd for this user */
			    	LEXTRACE("NOPASSWD ");
			    	return(NOPASSWD);
			}
	YY_BREAK
case 22:
YY_RULE_SETUP
#line 315 "toke.l"
{
				/* cmnd requires passwd for this user */
			    	LEXTRACE("PASSWD ");
			    	return(PASSWD);
			}
	YY_BREAK
case 23:
YY_RULE_SETUP
#line 321 "toke.l"
{
			    	LEXTRACE("NOEXEC ");
			    	return(NOEXEC);
			}
	YY_BREAK
case 24:
YY_RULE_SETUP
#line 326 "toke.l"
{
			    	LEXTRACE("EXEC ");
			    	return(EXEC);
			}
	YY_BREAK
case 25:
YY_RULE_SETUP
#line 331 "toke.l"
{
			    	LEXTRACE("SETENV ");
			    	return(SETENV);
			}
	YY_BREAK
case 26:
YY_RULE_SETUP
#line 336 "toke.l"
{
			    	LEXTRACE("NOSETENV ");
			    	return(NOSETENV);
			}
	YY_BREAK
case 27:
YY_RULE_SETUP
#line 341 "toke.l"
{
			    /* netgroup */
			    if (!fill(yytext, yyleng))
				yyterminate();
			    LEXTRACE("NETGROUP ");
			    return(NETGROUP);
			}
	YY_BREAK
case 28:
YY_RULE_SETUP
#line 349 "toke.l"
{
			    /* UN*X group */
			    if (!fill(yytext, yyleng))
				yyterminate();
			    LEXTRACE("USERGROUP ");
			    return(USERGROUP);
			}
	YY_BREAK
case 29:
YY_RULE_SETUP
#line 357 "toke.l"
{
			    if (!fill(yytext, yyleng))
				yyterminate();
			    LEXTRACE("NTWKADDR ");
			    return(NTWKADDR);
			}
	YY_BREAK
case 30:
YY_RULE_SETUP
#line 364 "toke.l"
{
			    if (!fill(yytext, yyleng))
				yyterminate();
			    LEXTRACE("NTWKADDR ");
			    return(NTWKADDR);
			}
	YY_BREAK
case 31:
YY_RULE_SETUP
#line 371 "toke.l"
{
			    if (!ipv6_valid(yytext)) {
				LEXTRACE("ERROR ");
				return(ERROR);
			    }
			    if (!fill(yytext, yyleng))
				yyterminate();
			    LEXTRACE("NTWKADDR ");
			    return(NTWKADDR);
			}
	YY_BREAK
case 32:
YY_RULE_SETUP
#line 382 "toke.l"
{
			    if (!ipv6_valid(yytext)) {
				LEXTRACE("ERROR ");
				return(ERROR);
			    }
			    if (!fill(yytext, yyleng))
				yyterminate();
			    LEXTRACE("NTWKADDR ");
			    return(NTWKADDR);
			}
	YY_BREAK
case 33:
YY_RULE_SETUP
#line 393 "toke.l"
{
			    if (strcmp(yytext, "ALL") == 0) {
				LEXTRACE("ALL ");
				return(ALL);
			    }
#ifdef HAVE_SELINUX
			    /* XXX - restrict type/role to initial state */
			    if (strcmp(yytext, "TYPE") == 0) {
				LEXTRACE("TYPE ");
				return(TYPE);
			    }
			    if (strcmp(yytext, "ROLE") == 0) {
				LEXTRACE("ROLE ");
				return(ROLE);
			    }
#endif /* HAVE_SELINUX */
			    if (!fill(yytext, yyleng))
				yyterminate();
			    LEXTRACE("ALIAS ");
			    return(ALIAS);
			}
	YY_BREAK
case 34:
YY_RULE_SETUP
#line 415 "toke.l"
{
			    /* no command args allowed for Defaults!/path */
			    if (!fill_cmnd(yytext, yyleng))
				yyterminate();
			    LEXTRACE("COMMAND ");
			    return(COMMAND);
			}
	YY_BREAK
case 35:
YY_RULE_SETUP
#line 423 "toke.l"
{
			    BEGIN GOTCMND;
			    LEXTRACE("COMMAND ");
			    if (!fill_cmnd(yytext, yyleng))
				yyterminate();
			}			/* sudo -e */
	YY_BREAK
case 36:
YY_RULE_SETUP
#line 430 "toke.l"
{
			    /* directories can't have args... */
			    if (yytext[yyleng - 1] == '/') {
				LEXTRACE("COMMAND ");
				if (!fill_cmnd(yytext, yyleng))
				    yyterminate();
				return(COMMAND);
			    } else {
				BEGIN GOTCMND;
				LEXTRACE("COMMAND ");
				if (!fill_cmnd(yytext, yyleng))
				    yyterminate();
			    }
			}			/* a pathname */
	YY_BREAK
case 37:
YY_RULE_SETUP
#line 445 "toke.l"
{
			    /* a quoted user/group name */
			    if (!fill(yytext + 1, yyleng - 2))
				yyterminate();
			    switch (yytext[1]) {
			    case '%':
				LEXTRACE("USERGROUP ");
				return(USERGROUP);
			    case '+':
				LEXTRACE("NETGROUP ");
				return(NETGROUP);
			    default:
				LEXTRACE("WORD(4) ");
				return(WORD);
			    }
			}
	YY_BREAK
case 38:
YY_RULE_SETUP
#line 462 "toke.l"
{
			    /* a word */
			    if (!fill(yytext, yyleng))
				yyterminate();
			    LEXTRACE("WORD(5) ");
			    return(WORD);
			}
	YY_BREAK
case 39:
YY_RULE_SETUP
#line 470 "toke.l"
{
			    LEXTRACE("( ");
			    return ('(');
			}
	YY_BREAK
case 40:
YY_RULE_SETUP
#line 475 "toke.l"
{
			    LEXTRACE(") ");
			    return(')');
			}
	YY_BREAK
case 41:
YY_RULE_SETUP
#line 480 "toke.l"
{
			    LEXTRACE(", ");
			    return(',');
			}			/* return ',' */
	YY_BREAK
case 42:
YY_RULE_SETUP
#line 485 "toke.l"
{
			    LEXTRACE("= ");
			    return('=');
			}			/* return '=' */
	YY_BREAK
case 43:
YY_RULE_SETUP
#line 490 "toke.l"
{
			    LEXTRACE(": ");
			    return(':');
			}			/* return ':' */
	YY_BREAK
case 44:
YY_RULE_SETUP
#line 495 "toke.l"
{
			    if (yyleng % 2 == 1)
				return('!');	/* return '!' */
			}
	YY_BREAK
case 45:
YY_RULE_SETUP
#line 500 "toke.l"
{
			    BEGIN INITIAL;
			    ++sudolineno;
			    LEXTRACE("\n");
			    return(COMMENT);
			}			/* return newline */
	YY_BREAK
case 46:
YY_RULE_SETUP
#line 507 "toke.l"
{			/* throw away space/tabs */
			    sawspace = TRUE;	/* but remember for fill_args */
			}
	YY_BREAK
case 47:
YY_RULE_SETUP
#line 511 "toke.l"
{
			    sawspace = TRUE;	/* remember for fill_args */
			    ++sudolineno;
			    LEXTRACE("\n\t");
			}			/* throw away EOL after \ */
	YY_BREAK
case 48:
YY_RULE_SETUP
#line 517 "toke.l"
{
			    BEGIN INITIAL;
			    ++sudolineno;
			    LEXTRACE("\n");
			    return(COMMENT);
			}			/* comment, not uid/gid */
	YY_BREAK
case 49:
YY_RULE_SETUP
#line 524 "toke.l"
{
			    LEXTRACE("ERROR ");
			    return(ERROR);
			}	/* parse error */
	YY_BREAK
case YY_STATE_EOF(INITIAL):
case YY_STATE_EOF(GOTDEFS):
case YY_STATE_EOF(GOTCMND):
case YY_STATE_EOF(STARTDEFS):
case YY_STATE_EOF(INDEFS):
case YY_STATE_EOF(INSTR):
#line 529 "toke.l"
{
			    if (YY_START != INITIAL) {
			    	BEGIN INITIAL;
				LEXTRACE("ERROR ");
				return(ERROR);
			    }
			    if (!pop_include())
				yyterminate();
			}
	YY_BREAK
case 50:
YY_RULE_SETUP
#line 539 "toke.l"
ECHO;
	YY_BREAK
#line 2285 "lex.yy.c"

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

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

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

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

			yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;

			yy_current_state = yy_get_previous_state();

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

			yy_next_state = yy_try_NUL_trans( yy_current_state );

			yy_bp = yytext_ptr + YY_MORE_ADJ;

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

			else
				{
				yy_cp = yy_c_buf_p;
				goto yy_find_action;
				}
			}

		else switch ( yy_get_next_buffer() )
			{
			case EOB_ACT_END_OF_FILE:
				{
				yy_did_buffer_switch_on_eof = 0;

				if ( yywrap() )
					{
					/* Note: because we've taken care in
					 * yy_get_next_buffer() to have set up
					 * yytext, we can now set up
					 * yy_c_buf_p so that if some total
					 * hoser (like flex itself) wants to
					 * call the scanner after we return the
					 * YY_NULL, it'll still work - another
					 * YY_NULL will get returned.
					 */
					yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;

					yy_act = YY_STATE_EOF(YY_START);
					goto do_action;
					}

				else
					{
					if ( ! yy_did_buffer_switch_on_eof )
						YY_NEW_FILE;
					}
				break;
				}

			case EOB_ACT_CONTINUE_SCAN:
				yy_c_buf_p =
					yytext_ptr + yy_amount_of_matched_text;

				yy_current_state = yy_get_previous_state();

				yy_cp = yy_c_buf_p;
				yy_bp = yytext_ptr + YY_MORE_ADJ;
				goto yy_match;

			case EOB_ACT_LAST_MATCH:
				yy_c_buf_p =
				&yy_current_buffer->yy_ch_buf[yy_n_chars];

				yy_current_state = yy_get_previous_state();

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

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


/* yy_get_next_buffer - try to read in a new buffer
 *
 * Returns a code representing an action:
 *	EOB_ACT_LAST_MATCH -
 *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position
 *	EOB_ACT_END_OF_FILE - end of file
 */

static int yy_get_next_buffer()
	{
	register char *dest = yy_current_buffer->yy_ch_buf;
	register char *source = yytext_ptr;
	register int number_to_move, i;
	int ret_val;

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

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

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

	/* Try to read more data. */

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

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

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

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

		while ( num_to_read <= 0 )
			{ /* Not enough room in the buffer - grow it. */
#ifdef YY_USES_REJECT
			YY_FATAL_ERROR(
"input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
#else

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

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

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

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

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

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

			yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];

			num_to_read = yy_current_buffer->yy_buf_size -
						number_to_move - 1;
#endif
			}

		if ( num_to_read > YY_READ_BUF_SIZE )
			num_to_read = YY_READ_BUF_SIZE;

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

		yy_current_buffer->yy_n_chars = yy_n_chars;
		}

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

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

	else
		ret_val = EOB_ACT_CONTINUE_SCAN;

	yy_n_chars += number_to_move;
	yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
	yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;

	yytext_ptr = &yy_current_buffer->yy_ch_buf[0];

	return ret_val;
	}


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

static yy_state_type yy_get_previous_state()
	{
	register yy_state_type yy_current_state;
	register char *yy_cp;

	yy_current_state = yy_start;
	yy_current_state += YY_AT_BOL();

	for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
		{
		register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
		if ( yy_accept[yy_current_state] )
			{
			yy_last_accepting_state = yy_current_state;
			yy_last_accepting_cpos = yy_cp;
			}
		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
			{
			yy_current_state = (int) yy_def[yy_current_state];
			if ( yy_current_state >= 555 )
				yy_c = yy_meta[(unsigned int) yy_c];
			}
		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
		}

	return yy_current_state;
	}


/* yy_try_NUL_trans - try to make a transition on the NUL character
 *
 * synopsis
 *	next_state = yy_try_NUL_trans( current_state );
 */

#ifdef YY_USE_PROTOS
static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
#else
static yy_state_type yy_try_NUL_trans( yy_current_state )
yy_state_type yy_current_state;
#endif
	{
	register int yy_is_jam;
	register char *yy_cp = yy_c_buf_p;

	register YY_CHAR yy_c = 1;
	if ( yy_accept[yy_current_state] )
		{
		yy_last_accepting_state = yy_current_state;
		yy_last_accepting_cpos = yy_cp;
		}
	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
		{
		yy_current_state = (int) yy_def[yy_current_state];
		if ( yy_current_state >= 555 )
			yy_c = yy_meta[(unsigned int) yy_c];
		}
	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
	yy_is_jam = (yy_current_state == 554);

	return yy_is_jam ? 0 : yy_current_state;
	}


#ifndef YY_NO_UNPUT
#ifdef YY_USE_PROTOS
static void yyunput( int c, register char *yy_bp )
#else
static void yyunput( c, yy_bp )
int c;
register char *yy_bp;
#endif
	{
	register char *yy_cp = yy_c_buf_p;

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

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

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

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

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

	*--yy_cp = (char) c;


	yytext_ptr = yy_bp;
	yy_hold_char = *yy_cp;
	yy_c_buf_p = yy_cp;
	}
#endif	/* ifndef YY_NO_UNPUT */


#ifdef __cplusplus
static int yyinput()
#else
static int input()
#endif
	{
	int c;

	*yy_c_buf_p = yy_hold_char;

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

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

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

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

					/* fall through */

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

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

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

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

	yy_current_buffer->yy_at_bol = (c == '\n');

	return c;
	}


#ifdef YY_USE_PROTOS
void yyrestart( FILE *input_file )
#else
void yyrestart( input_file )
FILE *input_file;
#endif
	{
	if ( ! yy_current_buffer )
		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );

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


#ifdef YY_USE_PROTOS
void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
#else
void yy_switch_to_buffer( new_buffer )
YY_BUFFER_STATE new_buffer;
#endif
	{
	if ( yy_current_buffer == new_buffer )
		return;

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

	yy_current_buffer = new_buffer;
	yy_load_buffer_state();

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


#ifdef YY_USE_PROTOS
void yy_load_buffer_state( void )
#else
void yy_load_buffer_state()
#endif
	{
	yy_n_chars = yy_current_buffer->yy_n_chars;
	yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
	yyin = yy_current_buffer->yy_input_file;
	yy_hold_char = *yy_c_buf_p;
	}


#ifdef YY_USE_PROTOS
YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
#else
YY_BUFFER_STATE yy_create_buffer( file, size )
FILE *file;
int size;
#endif
	{
	YY_BUFFER_STATE b;

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

	b->yy_buf_size = size;

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

	b->yy_is_our_buffer = 1;

	yy_init_buffer( b, file );

	return b;
	}


#ifdef YY_USE_PROTOS
void yy_delete_buffer( YY_BUFFER_STATE b )
#else
void yy_delete_buffer( b )
YY_BUFFER_STATE b;
#endif
	{
	if ( ! b )
		return;

	if ( b == yy_current_buffer )
		yy_current_buffer = (YY_BUFFER_STATE) 0;

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

	yy_flex_free( (void *) b );
	}


#ifndef YY_ALWAYS_INTERACTIVE
#ifndef YY_NEVER_INTERACTIVE
#include <unistd.h>
#endif
#endif

#ifdef YY_USE_PROTOS
void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
#else
void yy_init_buffer( b, file )
YY_BUFFER_STATE b;
FILE *file;
#endif


	{
	int oerrno = errno;

	yy_flush_buffer( b );

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

#if defined(YY_ALWAYS_INTERACTIVE) && YY_ALWAYS_INTERACTIVE
	b->yy_is_interactive = 1;
#else
#if defined(YY_NEVER_INTERACTIVE) && YY_NEVER_INTERACTIVE
	b->yy_is_interactive = 0;
#else
	b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
#endif
#endif
	errno = oerrno;
	}


#ifdef YY_USE_PROTOS
void yy_flush_buffer( YY_BUFFER_STATE b )
#else
void yy_flush_buffer( b )
YY_BUFFER_STATE b;
#endif

	{
	if ( ! b )
		return;

	b->yy_n_chars = 0;

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

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

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

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


#ifndef YY_NO_SCAN_BUFFER
#ifdef YY_USE_PROTOS
YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
#else
YY_BUFFER_STATE yy_scan_buffer( base, size )
char *base;
yy_size_t size;
#endif
	{
	YY_BUFFER_STATE b;

	if ( size < 2 ||
	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
	     base[size-1] != YY_END_OF_BUFFER_CHAR )
		/* They forgot to leave room for the EOB's. */
		return 0;

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

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

	yy_switch_to_buffer( b );

	return b;
	}
#endif


#ifndef YY_NO_SCAN_STRING
#ifdef YY_USE_PROTOS
YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
#else
YY_BUFFER_STATE yy_scan_string( yy_str )
yyconst char *yy_str;
#endif
	{
	int len;
	for ( len = 0; yy_str[len]; ++len )
		;

	return yy_scan_bytes( yy_str, len );
	}
#endif


#ifndef YY_NO_SCAN_BYTES
#ifdef YY_USE_PROTOS
YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
#else
YY_BUFFER_STATE yy_scan_bytes( bytes, len )
yyconst char *bytes;
int len;
#endif
	{
	YY_BUFFER_STATE b;
	char *buf;
	yy_size_t n;
	int i;

	/* Get memory for full buffer, including space for trailing EOB's. */
	n = len + 2;
	buf = (char *) yy_flex_alloc( n );
	if ( ! buf )
		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );

	for ( i = 0; i < len; ++i )
		buf[i] = bytes[i];

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

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

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

	return b;
	}
#endif


#ifndef YY_NO_PUSH_STATE
#ifdef YY_USE_PROTOS
static void yy_push_state( int new_state )
#else
static void yy_push_state( new_state )
int new_state;
#endif
	{
	if ( yy_start_stack_ptr >= yy_start_stack_depth )
		{
		yy_size_t new_size;

		yy_start_stack_depth += YY_START_STACK_INCR;
		new_size = yy_start_stack_depth * sizeof( int );

		if ( ! yy_start_stack )
			yy_start_stack = (int *) yy_flex_alloc( new_size );

		else
			yy_start_stack = (int *) yy_flex_realloc(
					(void *) yy_start_stack, new_size );

		if ( ! yy_start_stack )
			YY_FATAL_ERROR(
			"out of memory expanding start-condition stack" );
		}

	yy_start_stack[yy_start_stack_ptr++] = YY_START;

	BEGIN(new_state);
	}
#endif


#ifndef YY_NO_POP_STATE
static void yy_pop_state()
	{
	if ( --yy_start_stack_ptr < 0 )
		YY_FATAL_ERROR( "start-condition stack underflow" );

	BEGIN(yy_start_stack[yy_start_stack_ptr]);
	}
#endif


#ifndef YY_NO_TOP_STATE
static int yy_top_state()
	{
	return yy_start_stack[yy_start_stack_ptr - 1];
	}
#endif

#ifndef YY_EXIT_FAILURE
#define YY_EXIT_FAILURE 2
#endif

#ifdef YY_USE_PROTOS
static void yy_fatal_error( yyconst char msg[] )
#else
static void yy_fatal_error( msg )
char msg[];
#endif
	{
	(void) fprintf( stderr, "%s\n", msg );
	exit( YY_EXIT_FAILURE );
	}



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

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


/* Internal utility routines. */

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

#ifdef YY_NEED_STRLEN
#ifdef YY_USE_PROTOS
static int yy_flex_strlen( yyconst char *s )
#else
static int yy_flex_strlen( s )
yyconst char *s;
#endif
	{
	register int n;
	for ( n = 0; s[n]; ++n )
		;

	return n;
	}
#endif


#ifdef YY_USE_PROTOS
static void *yy_flex_alloc( yy_size_t size )
#else
static void *yy_flex_alloc( size )
yy_size_t size;
#endif
	{
	return (void *) malloc( size );
	}

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

#ifdef YY_USE_PROTOS
static void yy_flex_free( void *ptr )
#else
static void yy_flex_free( ptr )
void *ptr;
#endif
	{
	free( ptr );
	}

#if defined(YY_MAIN) && YY_MAIN
int main()
	{
	yylex();
	return 0;
	}
#endif
#line 539 "toke.l"

static unsigned char
hexchar(s)
    const char *s;
{
    int i;
    int result = 0;

    s += 2; /* skip \\x */
    for (i = 0; i < 2; i++) {
	switch (*s) {
	case 'A':
	case 'a':
	    result += 10;
	    break;
	case 'B':
	case 'b':
	    result += 11;
	    break;
	case 'C':
	case 'c':
	    result += 12;
	    break;
	case 'D':
	case 'd':
	    result += 13;
	    break;
	case 'E':
	case 'e':
	    result += 14;
	    break;
	case 'F':
	case 'f':
	    result += 15;
	    break;
	default:
	    result += *s - '0';
	    break;
	}
	if (i == 0) {
	    result *= 16;
	    s++;
	}
    }
    return((unsigned char)result);
}

static int
_fill(src, len, olen)
    char *src;
    int len, olen;
{
    char *dst;

    dst = olen ? realloc(yylval.string, olen + len + 1) : malloc(len + 1);
    if (dst == NULL) {
	yyerror("unable to allocate memory");
	return(FALSE);
    }
    yylval.string = dst;

    /* Copy the string and collapse any escaped characters. */
    dst += olen;
    while (len--) {
	if (*src == '\\' && len) {
	    if (src[1] == 'x' && len >= 3 && 
		isxdigit((unsigned char) src[2]) &&
		isxdigit((unsigned char) src[3])) {
		*dst++ = hexchar(src);
		src += 4;
		len -= 3;
	    } else {
		src++;
		len--;
		*dst++ = *src++;
	    }
	} else {
	    *dst++ = *src++;
	}
    }
    *dst = '\0';
    return(TRUE);
}

static int
append(src, len)
    char *src;
    int len;
{
    int olen = 0;

    if (yylval.string != NULL)
	olen = strlen(yylval.string);

    return(_fill(src, len, olen));
}

#define SPECIAL(c) \
    ((c) == ',' || (c) == ':' || (c) == '=' || (c) == ' ' || (c) == '\t' || (c) == '#')

static int
fill_cmnd(src, len)
    char *src;
    int len;
{
    char *dst;
    int i;

    arg_len = arg_size = 0;

    dst = yylval.command.cmnd = (char *) malloc(len + 1);
    if (yylval.command.cmnd == NULL) {
	yyerror("unable to allocate memory");
	return(FALSE);
    }

    /* Copy the string and collapse any escaped sudo-specific characters. */
    for (i = 0; i < len; i++) {
	if (src[i] == '\\' && i != len - 1 && SPECIAL(src[i + 1]))
	    *dst++ = src[++i];
	else
	    *dst++ = src[i];
    }
    *dst = '\0';

    yylval.command.args = NULL;
    return(TRUE);
}

static int
fill_args(s, len, addspace)
    char *s;
    int len;
    int addspace;
{
    int new_len;
    char *p;

    if (yylval.command.args == NULL) {
	addspace = 0;
	new_len = len;
    } else
	new_len = arg_len + len + addspace;

    if (new_len >= arg_size) {
	/* Allocate more space than we need for subsequent args */
	while (new_len >= (arg_size += COMMANDARGINC))
	    ;

	p = yylval.command.args ?
	    (char *) realloc(yylval.command.args, arg_size) :
	    (char *) malloc(arg_size);
	if (p == NULL) {
	    efree(yylval.command.args);
	    yyerror("unable to allocate memory");
	    return(FALSE);
	} else
	    yylval.command.args = p;
    }

    /* Efficiently append the arg (with a leading space if needed). */
    p = yylval.command.args + arg_len;
    if (addspace)
	*p++ = ' ';
    if (strlcpy(p, s, arg_size - (p - yylval.command.args)) != len) {
	yyerror("fill_args: buffer overflow");	/* paranoia */
	return(FALSE);
    }
    arg_len = new_len;
    return(TRUE);
}

struct path_list {
    char *path;
    struct path_list *next;
};

struct include_stack {
    YY_BUFFER_STATE bs;
    char *path;
    struct path_list *more; /* more files in case of includedir */
    int lineno;
    int keepopen;
};

static int
pl_compare(v1, v2)
    const void *v1;
    const void *v2;
{
    const struct path_list * const *p1 = v1;
    const struct path_list * const *p2 = v2;

    return(strcmp((*p1)->path, (*p2)->path));
}

static char *
switch_dir(stack, dirpath)
    struct include_stack *stack;
    char *dirpath;
{
    DIR *dir;
    int i, count = 0;
    char *path = NULL;
    struct dirent *dent;
    struct stat sb;
    struct path_list *pl, *first = NULL;
    struct path_list **sorted = NULL;

    if (!(dir = opendir(dirpath))) {
	yyerror(dirpath);
	return(NULL);
    }
    while ((dent = readdir(dir))) {
	/* Ignore files that end in '~' or have a '.' in them. */
	if (dent->d_name[0] == '\0' || dent->d_name[NAMLEN(dent) - 1] == '~'
	    || strchr(dent->d_name, '.') != NULL) {
	    continue;
	}
	if (asprintf(&path, "%s/%s", dirpath, dent->d_name) == -1) {
	    closedir(dir);
	    goto bad;
	}
	if (stat(path, &sb) != 0 || !S_ISREG(sb.st_mode)) {
	    efree(path);
	    continue;
	}
	pl = malloc(sizeof(*pl));
	if (pl == NULL)
	    goto bad;
	pl->path = path;
	pl->next = first;
	first = pl;
	count++;
    }
    closedir(dir);

    if (count == 0)
	goto done;

    /* Sort the list as an array. */
    sorted = malloc(sizeof(*sorted) * count);
    if (sorted == NULL)
	goto bad;
    pl = first;
    for (i = 0; i < count; i++) {
	sorted[i] = pl;
	pl = pl->next;
    }
    qsort(sorted, count, sizeof(*sorted), pl_compare);

    /* Apply sorting to the list. */
    first = sorted[0];
    sorted[count - 1]->next = NULL;
    for (i = 1; i < count; i++)
	sorted[i - 1]->next = sorted[i];
    efree(sorted);

    /* Pull out the first element for parsing, leave the rest for later. */
    if (count) {
	path = first->path;
	pl = first->next;
	efree(first);
	stack->more = pl;
    } else {
	path = NULL;
    }
done:
    efree(dirpath);
    return(path);
bad:
    while (first != NULL) {
	pl = first;
	first = pl->next;
	free(pl->path);
	free(pl);
    }
    efree(sorted);
    efree(dirpath);
    efree(path);
    return(NULL);
}

#define MAX_SUDOERS_DEPTH	128
#define SUDOERS_STACK_INCREMENT	16

static size_t istacksize, idepth;
static struct include_stack *istack;
static int keepopen;

void
init_lexer()
{
    struct path_list *pl;

    while (idepth) {
	idepth--;
	while ((pl = istack[idepth].more) != NULL) {
	    istack[idepth].more = pl->next;
	    efree(pl->path);
	    efree(pl);
	}
	efree(istack[idepth].path);
	if (idepth && !istack[idepth].keepopen)
	    fclose(istack[idepth].bs->yy_input_file);
	yy_delete_buffer(istack[idepth].bs);
    }
    efree(istack);
    istack = NULL;
    istacksize = idepth = 0;
    keepopen = FALSE;
}

static int
_push_include(path, isdir)
    char *path;
    int isdir;
{
    struct path_list *pl;
    FILE *fp;

    /* push current state onto stack */
    if (idepth >= istacksize) {
	if (idepth > MAX_SUDOERS_DEPTH) {
	    yyerror("too many levels of includes");
	    return(FALSE);
	}
	istacksize += SUDOERS_STACK_INCREMENT;
	istack = (struct include_stack *) realloc(istack,
	    sizeof(*istack) * istacksize);
	if (istack == NULL) {
	    yyerror("unable to allocate memory");
	    return(FALSE);
	}
    }
    if (isdir) {
	if (!(path = switch_dir(&istack[idepth], path))) {
	    /* switch_dir() called yyerror() for us */
	    return(FALSE);
	}
	while ((fp = open_sudoers(path, FALSE, &keepopen)) == NULL) {
	    /* Unable to open path in includedir, go to next one, if any. */
	    efree(path);
	    if ((pl = istack[idepth].more) == NULL)
		return(FALSE);
	    path = pl->path;
	    istack[idepth].more = pl->next;
	    efree(pl);
	}
    } else {
	if ((fp = open_sudoers(path, TRUE, &keepopen)) == NULL) {
	    yyerror(path);
	    return(FALSE);
	}
	istack[idepth].more = NULL;
    }
    /* Push the old (current) file and open the new one. */
    istack[idepth].path = sudoers; /* push old path */
    istack[idepth].bs = YY_CURRENT_BUFFER;
    istack[idepth].lineno = sudolineno;
    istack[idepth].keepopen = keepopen;
    idepth++;
    sudolineno = 1;
    sudoers = path;
    yy_switch_to_buffer(yy_create_buffer(fp, YY_BUF_SIZE));

    return(TRUE);
}

static int
pop_include()
{
    struct path_list *pl;
    FILE *fp;

    if (idepth == 0)
	return(FALSE);

    if (!keepopen)
	fclose(YY_CURRENT_BUFFER->yy_input_file);
    yy_delete_buffer(YY_CURRENT_BUFFER);
    /* If we are in an include dir, move to the next file. */
    while ((pl = istack[idepth - 1].more) != NULL) {
	fp = open_sudoers(pl->path, FALSE, &keepopen);
	if (fp != NULL) {
	    istack[idepth - 1].more = pl->next;
	    efree(sudoers);
	    sudoers = pl->path;
	    sudolineno = 1;
	    yy_switch_to_buffer(yy_create_buffer(fp, YY_BUF_SIZE));
	    efree(pl);
	    break;
	}
	/* Unable to open path in include dir, go to next one. */
	istack[idepth - 1].more = pl->next;
	efree(pl->path);
	efree(pl);
    }
    /* If no path list, just pop the last dir on the stack. */
    if (pl == NULL) {
	idepth--;
	yy_switch_to_buffer(istack[idepth].bs);
	efree(sudoers);
	sudoers = istack[idepth].path;
	sudolineno = istack[idepth].lineno;
	keepopen = istack[idepth].keepopen;
    }
    return(TRUE);
}

static char *
parse_include(base)
    char *base;
{
    char *cp, *ep, *path;
    int len = 0, subst = 0;
    size_t shost_len = 0;

    /* Pull out path from #include line. */
    cp = base + sizeof("#include");
    if (*cp == 'i')
	cp += 3; /* includedir */
    while (isblank((unsigned char) *cp))
	cp++;
    ep = cp;
    while (*ep != '\0' && !isspace((unsigned char) *ep)) {
	if (ep[0] == '%' && ep[1] == 'h') {
	    shost_len = strlen(user_shost);
	    len += shost_len - 2;
	    subst = 1;
	}
	ep++;
    }

    /* Make a copy of path and return it. */
    len += (int)(ep - cp);
    if ((path = malloc(len + 1)) == NULL)
	yyerror("unable to allocate memory");
    if (subst) {
	/* substitute for %h */
	char *pp = path;
	while (cp < ep) {
	    if (cp[0] == '%' && cp[1] == 'h') {
		memcpy(pp, user_shost, shost_len);
		pp += shost_len;
		cp += 2;
		continue;
	    }
	    *pp++ = *cp++;
	}
	*pp = '\0';
    } else {
	memcpy(path, cp, len);
	path[len] = '\0';
    }

    /* Push any excess characters (e.g. comment, newline) back to the lexer */
    if (*ep != '\0')
	yyless((int)(ep - base));

    return(path);
}

/*
 * Check to make sure an IPv6 address does not contain multiple instances
 * of the string "::".  Assumes strlen(s) >= 1.
 * Returns TRUE if address is valid else FALSE.
 */
static int
ipv6_valid(s)
    const char *s;
{
    int nmatch = 0;

    for (; *s != '\0'; s++) {
	if (s[0] == ':' && s[1] == ':') {
	    if (++nmatch > 1)
		break;
	}
	if (s[0] == '/')
	    nmatch = 0;			/* reset if we hit netmask */
    }

    return (nmatch <= 1);
}
