Imported Upstream version 1.8.2
[debian/sudo] / plugins / sudoers / toke.c
1 #include <config.h>
2 /*      $OpenBSD: flex.skl,v 1.11 2010/08/04 18:24:50 millert Exp $     */
3
4 /* A lexical scanner generated by flex */
5
6 /* Scanner skeleton version:
7  * $Header: /cvs/src/usr.bin/lex/flex.skl,v 1.11 2010/08/04 18:24:50 millert Exp $
8  */
9
10 #define FLEX_SCANNER
11 #define YY_FLEX_MAJOR_VERSION 2
12 #define YY_FLEX_MINOR_VERSION 5
13
14 #include <stdio.h>
15 #include <errno.h>
16
17
18 /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
19 #ifdef c_plusplus
20 #ifndef __cplusplus
21 #define __cplusplus
22 #endif
23 #endif
24
25
26 #ifdef __cplusplus
27
28 #include <stdlib.h>
29 #include <unistd.h>
30
31 /* Use prototypes in function declarations. */
32 #define YY_USE_PROTOS
33
34 /* The "const" storage-class-modifier is valid. */
35 #define YY_USE_CONST
36
37 #else   /* ! __cplusplus */
38
39 #ifdef __STDC__
40
41 #define YY_USE_PROTOS
42 #define YY_USE_CONST
43
44 #endif  /* __STDC__ */
45 #endif  /* ! __cplusplus */
46
47 #ifdef __TURBOC__
48  #pragma warn -rch
49  #pragma warn -use
50 #include <io.h>
51 #include <stdlib.h>
52 #define YY_USE_CONST
53 #define YY_USE_PROTOS
54 #endif
55
56 #ifdef YY_USE_CONST
57 #define yyconst const
58 #else
59 #define yyconst
60 #endif
61
62
63 #ifdef YY_USE_PROTOS
64 #define YY_PROTO(proto) proto
65 #else
66 #define YY_PROTO(proto) ()
67 #endif
68
69 /* Returned upon end-of-file. */
70 #define YY_NULL 0
71
72 /* Promotes a possibly negative, possibly signed char to an unsigned
73  * integer for use as an array index.  If the signed char is negative,
74  * we want to instead treat it as an 8-bit unsigned char, hence the
75  * double cast.
76  */
77 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
78
79 /* Enter a start condition.  This macro really ought to take a parameter,
80  * but we do it the disgusting crufty way forced on us by the ()-less
81  * definition of BEGIN.
82  */
83 #define BEGIN yy_start = 1 + 2 *
84
85 /* Translate the current start state into a value that can be later handed
86  * to BEGIN to return to the state.  The YYSTATE alias is for lex
87  * compatibility.
88  */
89 #define YY_START ((yy_start - 1) / 2)
90 #define YYSTATE YY_START
91
92 /* Action number for EOF rule of a given start state. */
93 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
94
95 /* Special action meaning "start processing a new file". */
96 #define YY_NEW_FILE yyrestart( yyin )
97
98 #define YY_END_OF_BUFFER_CHAR 0
99
100 /* Size of default input buffer. */
101 #define YY_BUF_SIZE 16384
102
103 typedef struct yy_buffer_state *YY_BUFFER_STATE;
104
105 extern int yyleng;
106 extern FILE *yyin, *yyout;
107
108 #define EOB_ACT_CONTINUE_SCAN 0
109 #define EOB_ACT_END_OF_FILE 1
110 #define EOB_ACT_LAST_MATCH 2
111
112 /* The funky do-while in the following #define is used to turn the definition
113  * int a single C statement (which needs a semi-colon terminator).  This
114  * avoids problems with code like:
115  *
116  *      if ( condition_holds )
117  *              yyless( 5 );
118  *      else
119  *              do_something_else();
120  *
121  * Prior to using the do-while the compiler would get upset at the
122  * "else" because it interpreted the "if" statement as being all
123  * done when it reached the ';' after the yyless() call.
124  */
125
126 /* Return all but the first 'n' matched characters back to the input stream. */
127
128 #define yyless(n) \
129         do \
130                 { \
131                 /* Undo effects of setting up yytext. */ \
132                 *yy_cp = yy_hold_char; \
133                 YY_RESTORE_YY_MORE_OFFSET \
134                 yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
135                 YY_DO_BEFORE_ACTION; /* set up yytext again */ \
136                 } \
137         while ( 0 )
138
139 #define unput(c) yyunput( c, yytext_ptr )
140
141 /* The following is because we cannot portably get our hands on size_t
142  * (without autoconf's help, which isn't available because we want
143  * flex-generated scanners to compile on their own).
144  */
145 typedef unsigned int yy_size_t;
146
147
148 struct yy_buffer_state
149         {
150         FILE *yy_input_file;
151
152         char *yy_ch_buf;                /* input buffer */
153         char *yy_buf_pos;               /* current position in input buffer */
154
155         /* Size of input buffer in bytes, not including room for EOB
156          * characters.
157          */
158         yy_size_t yy_buf_size;
159
160         /* Number of characters read into yy_ch_buf, not including EOB
161          * characters.
162          */
163         int yy_n_chars;
164
165         /* Whether we "own" the buffer - i.e., we know we created it,
166          * and can realloc() it to grow it, and should free() it to
167          * delete it.
168          */
169         int yy_is_our_buffer;
170
171         /* Whether this is an "interactive" input source; if so, and
172          * if we're using stdio for input, then we want to use getc()
173          * instead of fread(), to make sure we stop fetching input after
174          * each newline.
175          */
176         int yy_is_interactive;
177
178         /* Whether we're considered to be at the beginning of a line.
179          * If so, '^' rules will be active on the next match, otherwise
180          * not.
181          */
182         int yy_at_bol;
183
184         /* Whether to try to fill the input buffer when we reach the
185          * end of it.
186          */
187         int yy_fill_buffer;
188
189         int yy_buffer_status;
190 #define YY_BUFFER_NEW 0
191 #define YY_BUFFER_NORMAL 1
192         /* When an EOF's been seen but there's still some text to process
193          * then we mark the buffer as YY_EOF_PENDING, to indicate that we
194          * shouldn't try reading from the input source any more.  We might
195          * still have a bunch of tokens to match, though, because of
196          * possible backing-up.
197          *
198          * When we actually see the EOF, we change the status to "new"
199          * (via yyrestart()), so that the user can continue scanning by
200          * just pointing yyin at a new input file.
201          */
202 #define YY_BUFFER_EOF_PENDING 2
203         };
204
205 static YY_BUFFER_STATE yy_current_buffer = 0;
206
207 /* We provide macros for accessing buffer states in case in the
208  * future we want to put the buffer states in a more general
209  * "scanner state".
210  */
211 #define YY_CURRENT_BUFFER yy_current_buffer
212
213
214 /* yy_hold_char holds the character lost when yytext is formed. */
215 static char yy_hold_char;
216
217 static int yy_n_chars;          /* number of characters read into yy_ch_buf */
218
219
220 int yyleng;
221
222 /* Points to current character in buffer. */
223 static char *yy_c_buf_p = (char *) 0;
224 static int yy_init = 1;         /* whether we need to initialize */
225 static int yy_start = 0;        /* start state number */
226
227 /* Flag which is used to allow yywrap()'s to do buffer switches
228  * instead of setting up a fresh yyin.  A bit of a hack ...
229  */
230 static int yy_did_buffer_switch_on_eof;
231
232 void yyrestart YY_PROTO(( FILE *input_file ));
233
234 void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
235 void yy_load_buffer_state YY_PROTO(( void ));
236 YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
237 void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
238 void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
239 void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
240 #define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
241
242 YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
243 YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
244 YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
245
246 static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
247 static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
248 static void yy_flex_free YY_PROTO(( void * ));
249
250 #define yy_new_buffer yy_create_buffer
251
252 #define yy_set_interactive(is_interactive) \
253         { \
254         if ( ! yy_current_buffer ) \
255                 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
256         yy_current_buffer->yy_is_interactive = is_interactive; \
257         }
258
259 #define yy_set_bol(at_bol) \
260         { \
261         if ( ! yy_current_buffer ) \
262                 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
263         yy_current_buffer->yy_at_bol = at_bol; \
264         }
265
266 #define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
267
268
269 #define yywrap() 1
270 #define YY_SKIP_YYWRAP
271 typedef unsigned char YY_CHAR;
272 FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
273 typedef int yy_state_type;
274 extern char *yytext;
275 #define yytext_ptr yytext
276
277 static yy_state_type yy_get_previous_state YY_PROTO(( void ));
278 static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
279 static int yy_get_next_buffer YY_PROTO(( void ));
280 static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
281
282 /* Done after the current pattern has been matched and before the
283  * corresponding action - sets up yytext.
284  */
285 #define YY_DO_BEFORE_ACTION \
286         yytext_ptr = yy_bp; \
287         yyleng = (int) (yy_cp - yy_bp); \
288         yy_hold_char = *yy_cp; \
289         *yy_cp = '\0'; \
290         yy_c_buf_p = yy_cp;
291
292 #define YY_NUM_RULES 59
293 #define YY_END_OF_BUFFER 60
294 static yyconst short int yy_accept[607] =
295     {   0,
296         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
297         0,    0,   60,   47,   55,   54,   53,   46,   58,   32,
298        48,   49,   32,   50,   47,   47,   47,   47,   52,   51,
299        58,   42,   42,   42,   42,   42,   42,   42,   42,   42,
300        42,   58,   47,   47,   55,   58,   42,   42,   42,   42,
301        42,    2,   58,    1,   47,   47,   17,   16,   17,   16,
302        16,   58,   58,   58,    3,    9,    8,    9,    4,    9,
303         5,   58,   13,   13,   13,   11,   12,   47,    0,   55,
304        53,    0,   57,    0,   47,   34,    0,   32,    0,   33,
305         0,   45,   45,    0,   47,   47,    0,   47,   47,   47,
306
307        47,    0,   37,   42,   42,   42,   42,   42,   42,   42,
308        42,   42,   42,   47,   56,   47,   55,    0,    0,    0,
309         0,    0,    0,   47,   47,   47,   47,   47,    2,    1,
310         0,    1,   43,   43,    0,   47,   17,   17,   15,   14,
311        15,    0,    0,    3,    9,    0,    6,    7,    9,    9,
312        13,    0,   13,   13,    0,   10,    0,    0,    0,   34,
313        34,    0,    0,   47,   47,   47,   47,   47,    0,    0,
314        37,   37,   42,   39,   42,   42,   42,   42,   42,   42,
315        42,   42,   42,   42,   47,    0,    0,    0,    0,    0,
316         0,   47,   47,   47,   47,   47,    0,   47,   10,    0,
317
318        47,   47,   47,   47,   47,   47,    0,   38,   38,   38,
319         0,    0,   37,   37,   37,   37,   37,   37,   37,   42,
320        42,   42,   42,   42,   42,   42,   42,   40,   42,   41,
321        47,    0,    0,    0,    0,    0,    0,   47,   47,   47,
322        47,   47,   47,   47,    0,    0,   38,   38,   38,    0,
323        37,   37,    0,   37,   37,   37,   37,   37,   37,   37,
324        37,   37,   37,   37,    0,   25,   42,   42,   42,   42,
325        42,   42,   42,   42,   47,    0,    0,    0,    0,   47,
326        47,   47,   47,   47,   47,   47,   47,    0,   38,    0,
327        37,   37,   37,    0,    0,    0,   37,   37,   37,   37,
328
329        37,   37,   37,   37,   37,   37,   37,   37,   37,   42,
330        42,   42,   42,   42,   42,   42,   42,   47,    0,    0,
331         0,   47,   47,   47,   35,   35,   35,    0,    0,   37,
332        37,   37,   37,   37,   37,   37,    0,    0,    0,    0,
333         0,   37,   37,   37,   37,   37,   37,   37,   37,   37,
334        37,   37,   37,   37,   37,   42,   42,    0,   24,   42,
335        42,   42,   42,    0,   23,    0,   26,   47,    0,    0,
336         0,   47,   47,   47,   47,   35,   35,   35,   35,    0,
337        37,    0,   37,   37,   37,   37,   37,   37,   37,   37,
338        37,   37,   37,    0,    0,    0,   37,   37,   37,   37,
339
340        37,   37,   37,   37,   37,   37,   37,   37,   37,   42,
341        42,   42,   42,   42,   42,   44,    0,    0,    0,   47,
342        20,   43,   36,   36,   36,   36,   37,    0,    0,    0,
343        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
344        37,   37,   37,    0,    0,    0,    0,    0,   37,   37,
345        37,   37,   37,   37,   37,   37,   42,   42,   42,   42,
346         0,   22,    0,   27,    0,   20,    0,    0,   47,    0,
347        47,   47,   47,   36,   36,   36,   36,    0,    0,    0,
348         0,    0,   37,   37,   37,   37,   37,   37,   37,   37,
349        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
350
351        37,   37,    0,   30,   42,   42,   42,    0,    0,    0,
352        21,   20,    0,    0,    0,    0,    0,   20,    0,   47,
353        47,   47,    0,    0,    0,   37,   37,   37,   37,   37,
354        37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
355        37,   37,   37,    0,   28,   42,   42,   21,    0,   18,
356         0,    0,   20,   47,   47,   47,   47,   47,    0,    0,
357         0,    0,    0,   37,   37,   37,   37,   37,   37,   37,
358        37,    0,   31,   42,    0,   47,   47,   47,   37,   37,
359        37,   37,   37,   37,    0,   29,    0,   47,   47,   47,
360        47,   47,   37,   37,   37,   37,   37,    0,   19,   35,
361
362        35,   35,   35,   35,   35,    0
363     } ;
364
365 static yyconst int yy_ec[256] =
366     {   0,
367         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
368         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
369         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
370         1,    2,    4,    5,    6,    1,    7,    1,    1,    8,
371         9,   10,   11,   12,   13,   14,   15,   16,   17,   18,
372        19,   20,   21,   22,   22,   22,   23,   24,    1,    1,
373        25,   26,   10,   27,   28,   29,   30,   31,   32,   29,
374        33,   34,   35,   36,   36,   37,   36,   38,   39,   40,
375        36,   41,   42,   43,   44,   45,   46,   47,   48,   36,
376        10,   49,   10,    1,   50,    1,   51,   52,   53,   54,
377
378        55,   56,   57,   57,   58,   57,   57,   59,   60,   61,
379        62,   57,   57,   63,   64,   65,   66,   57,   57,   57,
380        57,   57,    1,    1,    1,    1,    1,    1,    1,    1,
381         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
382         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
383         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
384         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
385         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
386         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
387         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
388
389         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
390         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
391         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
392         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
393         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
394         1,    1,    1,    1,    1
395     } ;
396
397 static yyconst int yy_meta[67] =
398     {   0,
399         1,    2,    3,    4,    5,    6,    1,    7,    7,    1,
400         1,    8,    1,    9,   10,   11,   11,   11,   11,   11,
401        11,   11,   11,   12,   13,    7,    1,   11,   11,   11,
402        11,   11,    1,    1,    1,    1,    1,    1,    1,    1,
403         1,    1,    1,    1,    1,    1,    1,    1,   14,   15,
404        16,   16,   16,   16,   16,   16,   15,   15,   15,   15,
405        15,   15,   15,   15,   15,   15
406     } ;
407
408 static yyconst short int yy_base[671] =
409     {   0,
410         0,   65,   67,   72,   99,  114,  162,  227,  292,  340,
411        86,  125, 2840, 2790, 2836, 3665, 2833, 3665,  387,   70,
412      3665, 3665, 2771, 3665,  136,  397,  133,  159, 2795, 3665,
413      3665,  453, 2781,   33,  504, 2770, 2767, 2777, 2765, 2771,
414      2754,  559,  170,   19,  165,  583,   38,   49, 2739,   68,
415      2727,   81,  219, 2771,  305,   48,    0, 3665, 2761, 3665,
416         0,  250,  639,  119,    0, 2709, 3665,  108, 3665,  112,
417      3665,  140, 2699,   98,  121, 3665,  195, 2693,  661, 2739,
418      2736, 2736, 3665,  227,  247,  300,  316,  152,  354, 2681,
419       686,  373, 2670,  711,  352,  722, 2692, 2669,  375,  414,
420
421       302, 2656,   57,  763,    0, 2628, 2625, 2614,  505, 2602,
422      2606, 2599, 2601,  202, 3665,  153,  546, 2572, 2565, 2549,
423      2537, 2524,  200,  110,  244,   28,  111,  252,  171, 2578,
424       422, 2577,  565, 2529,  818,  262,    0, 2573,  179, 3665,
425      3665,  599,  269,    0, 2513,  453, 3665, 3665, 2512,  548,
426      2490, 2533,  206,  253,  323, 2535, 2524, 2513,  607,  615,
427       306,  722,  586,  831,  867,  903,  939, 2499, 2456,  980,
428       333, 1022, 1063,    0, 2430, 2394, 2363, 2364, 2374, 2369,
429      2327, 2330, 2329, 2328,  266, 2289, 2283, 2272, 2274, 2279,
430       409,  334, 2279,  145,  335,   83,  672,  278, 2327, 2325,
431
432       627,  259, 1106, 1142,  741,  210, 2293, 2279,  683,  513,
433      2275, 2271,  352,  747, 1178,  780,  788, 1220,  815, 2270,
434       400,  325, 2261, 2258, 2248, 2246, 2242,    0, 2240,    0,
435       489, 2223, 2213, 2198, 2211, 2198,  420,  407,  529,  490,
436       491, 1263, 1299, 1335, 2235, 2234,  839, 2234, 2232, 2228,
437      2226,  528,  848,  657,  856,  665, 1371,    0,  877, 1382,
438       886,  894, 1424,  913,  570, 3665, 2208, 2197, 2198, 2177,
439      2184, 2193, 2190, 2169,  558, 2145, 2098, 2099,  648,  626,
440       530,  559,  923,  336, 1467, 1503,  964, 2138, 2137, 2108,
441      2086, 1537,  551, 1000, 1041, 1082,  653,  694,  797, 1049,
442
443       923, 1580,    0, 1116, 1591, 1090, 1008, 1633, 1125, 2069,
444      2065,  747,  686, 2046, 2005,  786,  926,  905, 2014, 1982,
445       679,  634,  544,  915, 1675, 1710, 1745, 2015, 1978, 1962,
446      1150, 1781, 1158, 1133, 1822, 1197, 1166, 1954, 1239, 1273,
447      1207,  950,  951,  962,  991, 1247, 1073, 1865,    0, 1283,
448      1876, 1307, 1315, 1918, 1323, 1923, 1923, 1188, 3665, 1924,
449      1898, 1893, 1873, 1286, 3665, 1336, 3665,  707, 1790, 1783,
450       786,  930,  764, 1298, 1358, 1041, 1960, 1995, 1400, 1823,
451      1799, 1348,  708, 1406, 1348, 2031,    0,  559, 2042, 1441,
452      1449, 2083, 1477, 1487, 1513, 1523, 1230, 1290, 1458, 1548,
453
454      1557, 1602, 2126,    0, 1613, 2137, 1650, 1565, 1660, 1765,
455      1763, 1680, 1675, 1359, 1406, 1626, 1601, 1577,  897,  938,
456      1695, 1589, 2180, 2216, 2252, 2288, 1611, 1686, 1720, 1731,
457      1563, 1478, 1504, 1694, 1524, 2324,    0,  617, 2335, 1753,
458      1761, 2376, 1769, 1798, 1550, 1808, 1841, 1851, 1335, 1358,
459      1887,  714,  825, 2419,    0,  926, 1407, 1508, 1506, 1471,
460      1547, 3665, 1616, 3665, 1423, 1731, 1907, 1512, 1575, 1910,
461      1915, 1935, 1498, 2429, 2465, 1971, 1611, 1977, 1457, 2005,
462      2015, 1987, 1408, 1254, 1732, 1782, 2059, 1842, 2501,    0,
463      1025, 2512, 2067, 2100, 2553, 2108, 2155, 2164, 2189, 1769,
464
465      1207, 1189, 1634, 3665, 1699, 1162, 1113, 1074, 1118,  384,
466      1040, 2211, 2218, 2238, 2243, 2263, 2288, 2249, 2307, 2596,
467      2632, 2668, 2304, 2354, 2395, 1025, 1006, 1889, 2016, 2362,
468      2043, 2704,    0, 1224, 2715, 2403, 2437, 2445,  992, 2454,
469      2474, 2483,  903, 1921, 3665, 1941,  839, 3665,  843, 3665,
470      1306, 2489, 2529, 2537, 1911, 2758, 2794, 2573, 2579,  811,
471      2607, 2617, 2642,  640,  629, 2109,  535,  447, 2650,    0,
472      1428, 1942, 3665, 2044, 2216, 2830, 2866, 2902, 2676, 2684,
473      2692,  337,    0,  333, 2067, 3665,  327, 2733, 1912, 2938,
474      2974, 2743, 3665, 2767, 2777, 2658, 3665,  166, 3665, 2805,
475
476      2813, 2847,   63, 2855, 2881, 3665, 3023, 3039, 3055, 3071,
477      3087, 3103, 3119, 3135, 3151, 3157, 3173, 3189, 1498, 3205,
478      3221, 3237, 3253, 3269, 3285, 3301, 3307, 3314, 3330, 3346,
479      3352, 3359, 3365, 3371, 3377, 3384, 3390, 3396, 3402, 3409,
480      3417, 3423, 3429, 3435, 3442, 3450, 3456, 3462, 3469, 3477,
481      3483, 3491, 3498, 3506, 3512, 3520, 3527, 3535, 3551, 3567,
482      3573, 3581, 3588, 3604, 3610, 3618, 3624, 3632, 1295, 3648
483     } ;
484
485 static yyconst short int yy_def[671] =
486     {   0,
487       606,    1,    1,    1,  607,  607,  608,  608,  609,  609,
488       610,  610,  606,  611,  606,  606,  606,  606,  612,  613,
489       606,  606,  614,  606,  615,  611,   26,   26,  616,  606,
490       606,  606,   32,   32,   32,   35,   35,   35,   35,   35,
491        35,  611,   26,  611,  606,  612,   32,   32,   35,   35,
492        35,  606,  606,  606,  617,  611,  618,  606,  618,  606,
493       618,  606,  612,  606,  619,  620,  606,  620,  606,  620,
494       606,  621,  622,  622,  622,  606,  606,  611,  611,  606,
495       606,  623,  606,  624,  606,  613,  606,  625,  613,  614,
496       614,  615,  626,  611,  611,   26,  616,   96,   96,   96,
497
498        96,  627,  628,   35,   35,   35,   35,   35,   35,   35,
499        35,   35,   35,  611,  606,  611,  606,  606,  606,  606,
500       606,  606,  623,  611,   96,  611,  611,  611,  606,  606,
501       606,  606,  617,  629,  611,  611,  618,  618,  606,  606,
502       606,  624,  606,  619,  620,  620,  606,  606,  620,  620,
503       622,  606,  622,  622,  606,  606,  623,  630,  606,  606,
504       625,  625,  606,  611,  611,  611,   96,  167,  631,  606,
505       632,  606,  104,   35,   35,   35,   35,   35,   35,   35,
506        35,   35,   35,   35,  611,  606,  606,  606,  606,  606,
507       623,  611,  167,  611,  611,  611,  606,  611,  606,  630,
508
509       611,  611,  611,  611,  611,  611,  633,  634,  634,  209,
510       635,  634,  636,  172,  606,  215,  215,  606,  215,   35,
511        35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
512       611,  606,  606,  606,  606,  606,  623,  611,  611,  611,
513       611,  611,  611,  611,  606,  637,  637,  247,  637,  638,
514       639,  640,  606,  641,  218,  641,  641,  257,  641,  606,
515       260,  260,  606,  260,  606,  606,   35,   35,   35,   35,
516        35,   35,   35,   35,  611,  606,  606,  606,  623,  611,
517       611,  611,  611,  611,  611,  611,  611,  642,  642,  643,
518       644,  606,  606,  606,  606,  606,  645,  645,  646,  263,
519
520       646,  646,  302,  646,  606,  305,  305,  606,  305,   35,
521        35,   35,   35,   35,   35,   35,   35,  611,  606,  606,
522       623,  611,  611,  611,  611,  611,  611,  606,  647,  648,
523       292,  606,  332,  332,  606,  332,  606,  606,  606,  606,
524       606,  606,  649,  649,  650,  308,  650,  650,  348,  650,
525       606,  351,  351,  606,  351,   35,   35,  606,  606,   35,
526        35,   35,   35,  606,  606,  606,  606,  611,  606,  606,
527       623,  611,  611,  611,  611,  611,  611,  611,  611,  606,
528       651,  606,  652,  335,  652,  652,  386,  386,  606,  389,
529       389,  606,  389,  606,  606,  606,  606,  653,  653,  654,
530
531       354,  654,  654,  403,  654,  606,  406,  406,  406,   35,
532        35,   35,   35,   35,   35,  611,  606,  606,  623,  611,
533       611,  611,  611,  611,  611,  611,  606,  606,  606,  606,
534       655,  655,  656,  392,  656,  656,  436,  436,  606,  439,
535       439,  606,  439,  606,  606,  606,  606,  606,  606,  657,
536       657,  658,  658,  658,  454,  454,   35,   35,   35,   35,
537       606,  606,  606,  606,  606,  606,  623,  623,  611,  659,
538       660,  611,  611,  611,  611,  611,  611,  606,  606,  606,
539       606,  606,  606,  661,  661,  662,  442,  662,  662,  489,
540       489,  606,  492,  492,  606,  492,  606,  606,  606,  606,
541
542       663,  663,  606,  606,   35,   35,   35,  606,  664,  623,
543       611,  659,  659,  659,  659,  606,  659,  660,  660,  611,
544       611,  611,  606,  606,  606,  606,  665,  665,  666,  495,
545       666,  666,  532,  532,  606,  535,  535,  535,  606,  606,
546       606,  606,  606,  606,  606,   35,   35,  606,  664,  606,
547       623,  606,  606,  611,  611,  611,  611,  611,  606,  606,
548       606,  606,  606,  606,  667,  667,  668,  668,  668,  569,
549       569,  606,  606,   35,  623,  611,  611,  611,  606,  606,
550       606,  606,  669,  669,  606,  606,  670,  611,  611,  611,
551       611,  611,  606,  606,  606,  606,  606,  670,  606,  611,
552
553       611,  611,  611,  611,  611,    0,  606,  606,  606,  606,
554       606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
555       606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
556       606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
557       606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
558       606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
559       606,  606,  606,  606,  606,  606,  606,  606,  606,  606
560     } ;
561
562 static yyconst short int yy_nxt[3732] =
563     {   0,
564        14,   15,   16,   17,   18,   19,   20,   21,   22,   14,
565        23,   24,   14,   14,   25,   26,   27,   28,   26,   26,
566        26,   26,   26,   29,   30,   31,   14,   32,   33,   33,
567        33,   34,   35,   35,   35,   35,   36,   37,   35,   38,
568        39,   40,   41,   35,   35,   35,   35,   35,   42,   14,
569        43,   43,   43,   43,   43,   43,   14,   14,   14,   14,
570        14,   14,   14,   44,   14,   14,   45,   79,   52,  105,
571        46,  170,   53,   52,  105,   87,   79,   53,   54,  107,
572       172,   55,  129,   54,  116,  105,   55,   74,   16,   75,
573        76,  194,  130,   88,   47,   48,   79,  124,   49,  153,
574
575        15,   58,   59,  125,   60,   50,  111,   35,   51,   35,
576        60,   79,   35,  136,   35,   15,   58,   59,   89,   60,
577       143,  115,   60,   61,  154,   60,   74,   16,   75,   76,
578        56,   79,  147,  127,   77,   56,  148,   60,   61,   93,
579        93,  150,  115,   93,   93,  238,  152,   62,   99,   99,
580        99,   99,   99,   99,   99,   99,  146,   87,   79,   79,
581       146,   93,   62,   15,   16,   17,  117,   63,  599,  152,
582       192,  195,  129,   77,  100,  100,  100,  100,  100,  101,
583       143,  115,  130,   78,   94,   98,   98,   98,   98,   98,
584        98,   98,   98,   79,  118,  119,  155,  156,  120,  151,
585
586       162,   79,   83,  143,  115,  121,  185,  153,  122,  238,
587        64,   65,   65,   65,   65,   65,   65,   65,   65,   65,
588        65,   65,   65,   65,   65,   65,   65,   65,   15,   16,
589        17,  131,   63,   97,   85,   85,   85,   85,   85,   85,
590        85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
591        79,  139,  115,  140,  152,  141,  154,   78,   79,  140,
592       191,  141,   85,   85,   85,   85,   85,   85,   85,   85,
593       143,  115,  201,  141,  141,   64,   65,   65,   65,   65,
594        65,   65,   65,   65,   65,   65,   65,   65,   65,   65,
595        65,   65,   65,   15,   16,   17,   67,   63,  141,  193,
596
597        79,  152,   68,   69,   70,  606,  196,   79,  134,  134,
598        79,  606,  134,  134,   79,  198,   71,  168,  168,  168,
599       168,  168,  168,  606,  155,  156,   79,  231,  159,  599,
600       134,  160,  160,  160,  160,  160,  160,  160,  160,  241,
601        72,   15,   16,   17,   67,   63,  382,  170,   89,  283,
602        68,   69,   70,  135,  162,   86,  214,   86,   86,  267,
603       530,   86,   86,  268,   71,   86,  170,  164,  165,  166,
604       164,  164,  164,  164,  164,  214,   93,   93,   86,   86,
605        93,   93,   79,   79,   79,  240,   83,  238,   72,   83,
606       168,  168,  168,  168,  168,  168,  168,  168,   93,   84,
607
608        79,  265,   85,   85,   85,   85,   85,   85,   85,   85,
609        95,   83,   96,   96,   96,   96,   96,   96,   96,   96,
610        97,   94,   83,  266,   98,   98,   98,   98,   98,  168,
611       168,  168,  168,  168,  168,  168,  168,   85,   85,   85,
612        85,   85,   85,   85,   85,   79,  551,   98,   98,   98,
613        98,   98,   98,   78,  145,   79,  280,  145,  145,   78,
614       606,  237,   78,   78,  145,   78,   78,   78,  104,  104,
615       104,  104,  104,  104,  104,  104,   97,  145,  279,   78,
616       104,  104,  104,  104,  104,  105,  105,  105,  105,  106,
617       105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
618
619       105,   79,  105,   98,   98,   98,   98,   98,   98,   78,
620        78,   78,   78,   78,   78,   78,   78,   78,   78,  105,
621       105,  105,  105,  105,  105,  105,  105,  606,  249,  249,
622       249,  105,  105,  105,  105,  105,  177,   79,   79,   79,
623       105,  178,  170,  275,  179,  282,  180,  117,  382,  143,
624       115,  214,   97,  238,   78,   78,   78,   78,   78,   78,
625       114,  115,   78,   78,   78,  170,   78,   78,  134,  134,
626        78,  265,  134,  134,  214,  118,  119,   79,   79,  120,
627       431,  431,   78,   78,   78,   83,  121,   93,  323,  122,
628       134,   93,   79,  266,  281,   84,  146,   93,   85,   85,
629
630        85,   85,   85,   85,   85,   85,   79,   79,  373,   93,
631        93,  318,  324,  135,  606,  606,  606,  606,  606,  606,
632       606,  606,  160,  160,  160,  160,  160,  160,  160,  160,
633       160,  160,  160,  160,  160,  160,  160,  160,  484,  484,
634       123,   83,  242,  243,  244,  242,  242,  242,  242,  242,
635        83,  142,  530,  322,  606,  606,  606,  606,  606,  606,
636       606,  606,   78,  487,   78,   78,   78,  170,   78,   78,
637       253,  170,   78,  134,   79,   79,  255,  134,  606,  170,
638       255,   83,   79,  134,   78,   78,   78,   90,  255,   90,
639        90,   90,  372,   90,   90,  134,  134,   90,  247,  247,
640
641       248,  249,  249,  249,  249,  249,  211,  253,  170,   90,
642        90,   90,   92,  321,   78,   78,   92,  255,   78,   78,
643       360,  382,   92,  161,  361,  161,  161,  253,  170,  161,
644       161,  384,  371,  161,   92,   92,   78,  167,  167,  167,
645       167,  167,  167,  167,  167,  161,  161,  161,  358,  167,
646       167,  167,  167,  167,  201,   79,  202,  202,  202,  202,
647       202,  202,  219,  219,  219,  219,  219,  219,  219,  219,
648       359,  416,  167,  167,  167,  167,  167,  167,  173,  173,
649       173,  173,  173,  173,  173,  173,   97,  364,   83,   79,
650       173,  173,  173,  173,  173,  257,  257,  257,  257,  257,
651
652       257,  257,  257,  258,  258,  258,  258,  258,  259,  365,
653       253,  170,   79,  167,  167,  167,  167,  167,  167,  133,
654       300,   78,   78,  133,  559,   78,   78,  421,  606,  133,
655       256,  256,  256,  256,  256,  256,  256,  256,  606,  170,
656       419,  133,  133,   78,  201,  550,  202,  202,  202,  202,
657       202,  202,  202,  202,  289,  289,  289,  289,  289,  289,
658       289,  289,  211,  294,  295,  296,  294,  294,  294,  294,
659       294,  264,  264,  264,  264,  264,  264,  264,  264,   79,
660       201,  574,  203,  203,  203,  203,  203,  203,  203,  203,
661       253,  170,  298,  298,  298,  298,  298,  298,  467,   83,
662
663       255,  302,  302,  302,  302,  302,  302,  302,  302,  303,
664       303,  303,  303,  303,  304,   79,  201,  170,  204,  204,
665       204,  204,  204,  205,  202,  202,  606,  366,  301,  301,
666       301,  301,  301,  301,  301,  301,  606,  170,  325,  326,
667       327,  325,  325,  325,  325,  325,  300,  501,  501,  367,
668       468,   79,   78,   79,  206,  206,  206,  206,  206,  206,
669       206,  206,  368,   79,  170,  170,  206,  206,  206,  206,
670       206,   79,  374,  255,  300,  253,  170,  283,   79,  284,
671       284,  284,  284,  284,  284,  300,   79,  420,  469,  206,
672       206,  206,  206,  206,  206,  208,  209,  210,  210,  210,
673
674       210,  210,  210,  211,  253,  170,  170,  212,  212,  212,
675       212,  212,   79,  337,  346,  338,  338,  338,  338,  338,
676       338,  338,  338,  349,  349,  349,  349,  349,  350,  487,
677       212,  212,  212,  212,  212,  212,  170,  215,  216,  217,
678       215,  215,  215,  215,  215,  218,  527,  527,  434,  219,
679       219,  219,  219,  219,  337,  375,  339,  339,  339,  339,
680       339,  339,  339,  339,  309,  309,  309,  309,  309,  309,
681       309,  309,  219,  219,  219,  219,  219,  219,  220,  220,
682       220,  220,  220,  220,  220,  220,  606,  170,   79,   79,
683       220,  220,  220,  220,  220,  337,  346,  340,  340,  340,
684
685       340,  340,  341,  338,  338,  348,  348,  348,  348,  348,
686       348,  348,  348,  206,  206,  206,  206,  206,  206,  201,
687       550,  202,  202,  202,  202,  202,  202,  202,  202,  253,
688       170,  344,  344,  344,  344,  344,  344,  548,  606,  300,
689       347,  347,  347,  347,  347,  347,  347,  347,  387,  387,
690       387,  387,  387,  388,   79,  201,  547,  202,  202,  202,
691       202,  202,  202,  202,  202,  336,  336,  336,  336,  336,
692       336,  336,  336,  386,  386,  386,  386,  386,  386,  386,
693       386,  394,  395,  396,  394,  394,  394,  394,  394,  358,
694        79,  253,  170,  254,  254,  254,  254,  254,  254,  254,
695
696       254,  255,  253,  170,  546,  256,  256,  256,  256,  256,
697       606,  359,  385,  385,  385,  385,  385,  385,  385,  385,
698       337,  170,  338,  338,  338,  338,  338,  338,  256,  256,
699       256,  256,  256,  256,  170,  260,  261,  262,  260,  260,
700       260,  260,  260,  263,  170,  565,  565,  264,  264,  264,
701       264,  264,  337,  300,  338,  338,  338,  338,  338,  338,
702       338,  338,  355,  355,  355,  355,  355,  355,  355,  355,
703       264,  264,  264,  264,  264,  264,  283,  434,  284,  284,
704       284,  284,  284,  284,  284,  284,  337,  364,  338,  338,
705       338,  338,  338,  338,  338,  338,  253,  170,  399,  399,
706
707       399,  399,  399,  399,  170,  597,  346,  575,   83,  365,
708       597,   79,  283,  346,  285,  285,  285,  285,  285,  285,
709       285,  285,  403,  403,  403,  403,  403,  403,  403,  403,
710       404,  404,  404,  404,  404,  405,  606,  366,  402,  402,
711       402,  402,  402,  402,  402,  402,   79,   79,  283,  170,
712       286,  286,  286,  286,  286,  287,  284,  284,  346,  367,
713       461,  606,  422,  428,  429,  430,  428,  428,  428,  428,
714       428,  384,  170,  423,  424,  425,  426,  423,  423,  423,
715       423,  401,  462,   79,  253,  170,  298,  298,  298,  298,
716       298,  298,  298,  298,  255,  253,  170,  299,  299,  299,
717
718       299,  299,  299,  299,  299,  300,   79,  463,  503,  301,
719       301,  301,  301,  301,  375,  376,  376,  376,  376,  376,
720       376,  393,  393,  393,  393,  393,  393,  393,  393,  464,
721       504,  384,  301,  301,  301,  301,  301,  301,  170,  305,
722       306,  307,  305,  305,  305,  305,  305,  308,   79,  583,
723       583,  309,  309,  309,  309,  309,  436,  436,  436,  436,
724       436,  436,  436,  436,  437,  437,  437,  437,  437,  438,
725       478,  253,  170,  508,  309,  309,  309,  309,  309,  309,
726       283,  346,  284,  284,  284,  284,  284,  284,  284,  284,
727       606,  382,  435,  435,  435,  435,  435,  435,  435,  435,
728
729       444,  384,  445,  445,  445,  445,  445,  445,  445,  445,
730       507,  472,  144,  144,   83,   79,  283,  382,  284,  284,
731       284,  284,  284,  284,  284,  284,  444,  434,  446,  446,
732       446,  446,  446,  446,  446,  446,  444,  606,  447,  447,
733       447,  447,  447,  448,  445,  445,   79,  434,  461,  506,
734       505,   79,  332,  333,  334,  332,  332,  332,  332,  332,
735       335,  253,  170,  444,  336,  336,  336,  336,  336,  510,
736       462,  401,  409,  409,  409,  409,  409,  409,  409,  409,
737       455,  455,  455,  455,  455,  456,  384,  336,  336,  336,
738       336,  336,  336,  253,  170,  344,  344,  344,  344,  344,
739
740       344,  344,  344,  300,  253,  170,  345,  345,  345,  345,
741       345,  345,  345,  345,  346,  606,  170,  463,  347,  347,
742       347,  347,  347,   79,  472,  401,  253,  170,  451,  451,
743       451,  451,  451,  451,  331,  503,  401,   79,  511,  464,
744       466,  347,  347,  347,  347,  347,  347,  170,  351,  352,
745       353,  351,  351,  351,  351,  351,  354,  504,  465,   79,
746       355,  355,  355,  355,  355,  454,  454,  454,  454,  454,
747       454,  454,  454,  606,   79,  453,  453,  453,  453,  453,
748       453,  453,  453,  355,  355,  355,  355,  355,  355,  375,
749       376,  376,  376,  376,  376,  376,  376,  376,  470,  478,
750
751       544,  479,  479,  479,  479,  479,  479,  479,  479,  443,
752       443,  443,  443,  443,  443,  443,  443,  460,  470,  459,
753       470,  471,  545,   79,  375,  377,  377,  377,  377,  377,
754       377,  377,  377,  478,  470,  480,  480,  480,  480,  480,
755       480,  480,  480,   79,  478,  382,  481,  481,  481,  481,
756       481,  482,  479,  479,  470,  434,  470,  470,   79,  375,
757       378,  378,  378,  378,  378,  379,  376,  376,  489,  489,
758       489,  489,  489,  489,  489,  489,  490,  490,  490,  490,
759       490,  491,  606,  170,  488,  488,  488,  488,  488,  488,
760       488,  488,  401,   79,  382,  382,  383,  383,  383,  383,
761
762       383,  383,  383,  383,  384,  487,  458,  457,  385,  385,
763       385,  385,  385,  497,  498,  499,  497,  497,  497,  497,
764       497,  444,  331,  445,  445,  445,  445,  445,  445,  445,
765       445,  385,  385,  385,  385,  385,  385,  389,  390,  391,
766       389,  389,  389,  389,  389,  392,  251,  418,  417,  393,
767       393,  393,  393,  393,  444,  606,  445,  445,  445,  445,
768       445,  445,  445,  445,  444,  487,  445,  445,  445,  445,
769       445,  445,  393,  393,  393,  393,  393,  393,  253,  170,
770       399,  399,  399,  399,  399,  399,  399,  399,  346,  253,
771       170,  400,  400,  400,  400,  400,  400,  400,  400,  401,
772
773       253,  170,  382,  402,  402,  402,  402,  402,  467,   83,
774       401,  513,  487,  514,  515,  516,  513,  415,  514,  515,
775       516,  509,  544,  414,  554,  588,  402,  402,  402,  402,
776       402,  402,  170,  406,  407,  408,  406,  406,  406,  406,
777       406,  413,  572,  572,  545,  409,  409,  409,  409,  409,
778       520,  521,  522,  520,  520,  520,  520,  520,  517,   79,
779        79,  412,  411,  519,  573,  573,  410,  337,  409,  409,
780       409,  409,  409,  409,  375,  376,  376,  376,  376,  376,
781       376,  376,  376,   79,  472,  331,  473,  473,  473,  473,
782       473,  473,  523,  524,  525,  523,  523,  523,  523,  523,
783
784       478,  251,  479,  479,  479,  479,  479,  479,   79,  375,
785       376,  376,  376,  376,  376,  376,  376,  376,  478,   79,
786       479,  479,  479,  479,  479,  479,  479,  479,  478,  382,
787       479,  479,  479,  479,  479,  479,  479,  479,  211,  530,
788       370,  369,  363,   79,  382,  585,  432,  432,  432,  432,
789       432,  432,  432,  432,  384,  382,  606,  433,  433,  433,
790       433,  433,  433,  433,  433,  434,  530,  586,  585,  435,
791       435,  435,  435,  435,  496,  496,  496,  496,  496,  496,
792       496,  496,  532,  532,  532,  532,  532,  532,  532,  532,
793       586,  362,  435,  435,  435,  435,  435,  435,  439,  440,
794
795       441,  439,  439,  439,  439,  439,  442,  357,  356,  331,
796       443,  443,  443,  443,  443,  533,  533,  533,  533,  533,
797       534,  606,  382,  531,  531,  531,  531,  531,  531,  531,
798       531,  251,  530,  443,  443,  443,  443,  443,  443,  253,
799       170,  451,  451,  451,  451,  451,  451,  451,  451,  401,
800       253,  170,  452,  452,  452,  452,  452,  452,  452,  452,
801       211,  211,  276,  320,  453,  453,  453,  453,  453,  170,
802       539,  539,  539,  539,  539,  539,  539,  539,  170,  540,
803       540,  540,  540,  540,  540,  540,  540,  453,  453,  453,
804       453,  453,  453,  472,  319,  473,  473,  473,  473,  473,
805
806       473,  473,  473,  170,  541,  541,  541,  541,  541,  542,
807       539,  539,  606,  317,  606,  606,  606,  575,   83,  513,
808       316,  514,  515,  516,  315,  314,  313,  312,   79,  472,
809       587,  474,  474,  474,  474,  474,  474,  474,  474,  606,
810       311,  514,  515,  516,  606,  310,  606,  606,  516,  292,
811       606,  251,  606,  606,  606,  211,  288,  211,  103,  517,
812       276,  278,  276,  277,   79,  472,  517,  475,  475,  475,
813       475,  475,  476,  477,  477,  552,  276,  274,  553,  553,
814       553,  553,  553,  553,  553,  553,  517,  273,  272,  271,
815       270,  517,  269,   97,  211,  512,  512,  519,  251,  512,
816
817        79,  472,  211,  477,  477,  477,  473,  473,  473,  473,
818       473,  512,  512,  512,  518,  518,  103,  559,  518,  560,
819       560,  560,  560,  560,  560,  560,  560,   83,  199,  239,
820       518,  518,  518,  236,  235,  234,   79,  382,  233,  485,
821       485,  485,  485,  485,  485,  485,  485,  434,  382,  232,
822       486,  486,  486,  486,  486,  486,  486,  486,  487,  230,
823       229,  228,  488,  488,  488,  488,  488,  559,  227,  561,
824       561,  561,  561,  561,  561,  561,  561,  538,  538,  538,
825       538,  538,  538,  538,  538,  488,  488,  488,  488,  488,
826       488,  492,  493,  494,  492,  492,  492,  492,  492,  495,
827
828       226,  225,  224,  496,  496,  496,  496,  496,  559,  223,
829       562,  562,  562,  562,  562,  563,  560,  560,  569,  569,
830       569,  569,  569,  569,  569,  569,  496,  496,  496,  496,
831       496,  496,  253,  170,  502,  502,  502,  502,  502,  502,
832       502,  502,  472,  222,  473,  473,  473,  473,  473,  473,
833       473,  473,  570,  570,  570,  570,  570,  571,  606,  221,
834       568,  568,  568,  568,  568,  568,  568,  568,  170,  539,
835       539,  539,  539,  539,  539,  539,  539,   79,  472,  103,
836       473,  473,  473,  473,  473,  473,  473,  473,  170,  539,
837       539,  539,  539,  539,  539,  539,  539,  170,  539,  539,
838
839       539,  539,  539,  539,  553,  553,  553,  553,  553,  553,
840       553,  553,   95,   79,  382,   83,  528,  528,  528,  528,
841       528,  528,  528,  528,  487,  382,   83,  529,  529,  529,
842       529,  529,  529,  529,  529,  530,  199,  151,  152,  531,
843       531,  531,  531,  531,  553,  553,  553,  553,  553,  553,
844       553,  553,  576,  577,  578,  576,  576,  576,  576,  576,
845       146,  146,  531,  531,  531,  531,  531,  531,  535,  536,
846       537,  535,  535,  535,  535,  535,  138,  197,  132,  132,
847       538,  538,  538,  538,  538,   79,  554,  190,  555,  555,
848       555,  555,  555,  555,  579,  580,  581,  579,  579,  579,
849
850       579,  579,  189,  538,  538,  538,  538,  538,  538,  554,
851       188,  555,  555,  555,  555,  555,  555,  555,  555,  187,
852       559,   79,  560,  560,  560,  560,  560,  560,  560,  560,
853       559,  186,  560,  560,  560,  560,  560,  560,  560,  560,
854       184,  183,  182,  181,   79,  554,  176,  556,  556,  556,
855       556,  556,  556,  556,  556,  559,  175,  560,  560,  560,
856       560,  560,  560,  382,  174,  584,  584,  584,  584,  584,
857       584,  584,  584,  593,  593,  593,  593,  593,  593,  103,
858        79,  554,   78,  557,  557,  557,  557,  557,  558,  555,
859       555,  593,  593,  593,  593,  593,  593,  593,  593,  594,
860
861       594,  594,  594,  594,  594,  594,  594,  595,  595,  595,
862       595,  595,  596,  593,  593,  103,   79,  382,  163,  566,
863       566,  566,  566,  566,  566,  566,  566,  530,  382,   91,
864       567,  567,  567,  567,  567,  567,  567,  567,   83,   81,
865        80,   79,  568,  568,  568,  568,  568,  152,  600,  601,
866       602,  600,  600,  600,  600,  600,  588,  146,  589,  589,
867       589,  589,  589,  589,  138,  568,  568,  568,  568,  568,
868       568,  554,  132,  555,  555,  555,  555,  555,  555,  555,
869       555,   79,  593,  593,  593,  593,  593,  593,  593,  593,
870       128,   79,  593,  593,  593,  593,  593,  593,  593,  593,
871
872       126,  113,  112,  111,  110,  109,   79,  554,  108,  555,
873       555,  555,  555,  555,  555,  555,  555,  105,  103,   91,
874       603,  603,  603,  603,  603,  603,  603,  603,  600,  600,
875       600,  600,  600,  600,  600,  600,   81,   80,   79,  606,
876       606,  606,   79,  588,  606,  589,  589,  589,  589,  589,
877       589,  589,  589,   79,  606,  606,  606,  606,  606,  606,
878       606,   79,  604,  604,  604,  604,  604,  605,  603,  603,
879       603,  603,  603,  603,  603,  603,  603,  603,   79,  588,
880       606,  590,  590,  590,  590,  590,  590,  590,  590,  606,
881       606,  606,  606,  606,  606,   79,  603,  603,  603,  603,
882
883       603,  603,  606,   79,  606,  606,  606,  606,  606,  606,
884       606,  606,  606,  606,   79,  588,  606,  591,  591,  591,
885       591,  591,  592,  589,  589,  606,  606,  606,  606,   79,
886       606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
887       606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
888        79,  588,  606,  589,  589,  589,  589,  589,  589,  589,
889       589,  606,  606,  606,  606,  606,  606,  606,  606,  606,
890       606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
891       606,  606,  606,  606,  606,  606,   79,  588,  606,  589,
892       589,  589,  589,  589,  589,  589,  589,  606,  606,  606,
893
894       606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
895       606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
896       606,  606,   79,   57,   57,   57,   57,   57,   57,   57,
897        57,   57,   57,   57,   57,   57,   57,   57,   57,   31,
898        31,   31,   31,   31,   31,   31,   31,   31,   31,   31,
899        31,   31,   31,   31,   31,   66,   66,   66,   66,   66,
900        66,   66,   66,   66,   66,   66,   66,   66,   66,   66,
901        66,   73,   73,   73,   73,   73,   73,   73,   73,   73,
902        73,   73,   73,   73,   73,   73,   73,   78,  606,  606,
903       606,  606,  606,  606,  606,   78,   78,   78,  606,  606,
904
905        78,   78,   78,   82,   82,   82,   82,   82,   82,   82,
906        82,   82,   82,   82,   82,   82,   82,   82,   82,   86,
907       606,  606,  606,  606,   86,  606,  606,   86,   86,   86,
908        86,  606,   86,   86,   86,   90,  606,  606,  606,  606,
909       606,  606,  606,   90,   90,   90,  606,  606,   90,   90,
910        90,   92,  606,  606,   92,   92,  606,   92,  606,   92,
911        92,   92,  606,  606,   92,   92,   92,  102,  102,  606,
912       606,  606,  102,  133,  606,  606,  133,  133,  606,  133,
913       606,  133,  133,  133,  606,  606,  133,  133,  133,  137,
914       606,  606,  137,  137,  606,  137,  606,  137,  137,  137,
915
916       606,  137,  606,  137,  137,  145,  606,  606,  145,  606,
917       606,  145,  606,  145,  145,  145,  145,  606,  145,  145,
918       145,  149,  149,  149,  149,  149,  149,  149,  149,  149,
919       149,  149,  149,  149,  149,  149,  149,  151,  151,  606,
920       151,  606,  151,  151,  151,  151,  151,  151,  151,  151,
921       151,  151,  151,  157,  157,  157,  157,  157,  157,  157,
922       157,  157,  157,  157,  157,  157,  157,  157,  157,  158,
923       158,  606,  158,  158,  158,  158,  158,  158,  158,  158,
924       158,  158,  158,  158,  158,  161,  606,  606,  606,  606,
925       161,  606,  606,  161,  161,  161,  606,  606,  161,  161,
926
927       161,   93,  606,  606,   93,   93,  606,   93,  606,   93,
928        93,   93,  606,  606,   93,   93,   93,  169,  169,  606,
929       606,  606,  169,  171,  171,  171,  606,  606,  606,  171,
930       134,  606,  606,  134,  134,  606,  134,  606,  134,  134,
931       134,  606,  606,  134,  134,  134,  200,  200,  200,  200,
932       200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
933       200,  200,  207,  207,  606,  606,  606,  207,  213,  213,
934       213,  606,  606,  606,  213,  245,  245,  606,  606,  606,
935       245,  246,  246,  606,  606,  606,  246,  250,  250,  606,
936       606,  606,  250,  252,  252,  252,  606,  606,  606,  252,
937
938       288,  288,  606,  606,  606,  288,  290,  290,  606,  606,
939       606,  290,  291,  291,  606,  606,  606,  291,  293,  293,
940       293,  606,  606,  606,  293,  297,  297,  297,  297,  606,
941       606,  606,  297,  328,  328,  606,  606,  606,  328,  329,
942       329,  606,  606,  606,  329,  330,  330,  606,  606,  606,
943       330,  342,  342,  342,  606,  606,  606,  342,  343,  343,
944       343,  343,  606,  606,  606,  343,  380,  380,  606,  606,
945       606,  380,  381,  381,  606,  606,  606,  381,  397,  397,
946       397,  606,  606,  606,  397,  398,  398,  398,  398,  606,
947       606,  606,  398,  427,  427,  606,  606,  606,  427,  431,
948
949       606,  431,  431,  606,  606,  606,  431,  449,  449,  449,
950       606,  606,  606,  449,  450,  450,  450,  450,  606,  606,
951       606,  450,  483,  483,  606,  606,  606,  483,  484,  606,
952       484,  484,  606,  606,  606,  484,  500,  500,  500,  606,
953       606,  606,  500,  501,  501,  501,  606,  606,  606,  606,
954       501,  512,  512,  606,  512,  512,  512,  606,  606,  512,
955       512,  512,  606,  606,  512,  512,  512,  518,  518,  606,
956       518,  518,  518,  606,  606,  518,  518,  518,  606,  606,
957       518,  518,  518,  526,  526,  606,  606,  606,  526,  527,
958       606,  527,  527,  606,  606,  606,  527,  543,  543,  606,
959
960       606,  606,  606,  543,  549,  549,  549,  549,  549,  549,
961       549,  549,  549,  549,  549,  549,  549,  549,  549,  549,
962       564,  564,  606,  606,  606,  564,  565,  606,  565,  565,
963       606,  606,  606,  565,  582,  582,  606,  606,  606,  582,
964       583,  606,  583,  606,  606,  606,  606,  583,  598,  598,
965       598,  598,  598,  598,  598,  598,  598,  598,  598,  598,
966       598,  598,  598,  598,   13,  606,  606,  606,  606,  606,
967       606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
968       606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
969       606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
970
971       606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
972       606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
973       606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
974       606
975     } ;
976
977 static yyconst short int yy_chk[3732] =
978     {   0,
979         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
980         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
981         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
982         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
983         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
984         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
985         1,    1,    1,    1,    1,    1,    2,   44,    3,   34,
986         2,  103,    3,    4,   47,   20,  126,    4,    3,   34,
987       103,    3,   52,    4,   44,   48,    4,   11,   11,   11,
988        11,  126,   52,   20,    2,    2,   56,   47,    2,   74,
989
990         5,    5,    5,   48,    5,    2,   50,    3,    2,    3,
991         5,  603,    4,   56,    4,    6,    6,    6,   20,    6,
992        64,   64,    5,    5,   75,    6,   12,   12,   12,   12,
993         3,  196,   68,   50,   11,    4,   70,    6,    6,   25,
994        25,   72,   72,   25,   25,  196,   74,    5,   27,   27,
995        27,   27,   27,   27,   27,   27,   68,   88,  124,  127,
996        70,   25,    6,    7,    7,    7,   45,    7,  598,   75,
997       124,  127,  129,   12,   28,   28,   28,   28,   28,   28,
998       139,  139,  129,   43,   25,   43,   43,   43,   43,   43,
999        43,   43,   43,  194,   45,   45,   77,   77,   45,   77,
1000
1001        88,  116,  123,  114,  114,   45,  116,  153,   45,  194,
1002         7,    7,    7,    7,    7,    7,    7,    7,    7,    7,
1003         7,    7,    7,    7,    7,    7,    7,    7,    8,    8,
1004         8,   53,    8,  206,   53,   53,   53,   53,   53,   53,
1005        53,   53,   84,   84,   84,   84,   84,   84,   84,   84,
1006       114,   62,   62,   62,  153,   62,  154,  125,  206,   62,
1007       123,   62,   85,   85,   85,   85,   85,   85,   85,   85,
1008       143,  143,  202,   62,   62,    8,    8,    8,    8,    8,
1009         8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
1010         8,    8,    8,    9,    9,    9,    9,    9,   62,  125,
1011
1012       128,  154,    9,    9,    9,   86,  128,  202,   55,   55,
1013       136,  161,   55,   55,  185,  136,    9,  101,  101,  101,
1014       101,  101,  101,   86,  155,  155,  198,  185,   87,  587,
1015        55,   87,   87,   87,   87,   87,   87,   87,   87,  198,
1016         9,   10,   10,   10,   10,   10,  584,  171,   86,  284,
1017        10,   10,   10,   55,  161,   89,  171,   89,   89,  222,
1018       582,   89,   89,  222,   10,   89,  213,   95,   95,   95,
1019        95,   95,   95,   95,   95,  213,   92,   92,   89,   89,
1020        92,   92,  192,  195,  284,  195,  510,  192,   10,   19,
1021        99,   99,   99,   99,   99,   99,   99,   99,   92,   19,
1022
1023        95,  221,   19,   19,   19,   19,   19,   19,   19,   19,
1024        26,  191,   26,   26,   26,   26,   26,   26,   26,   26,
1025        26,   92,  237,  221,   26,   26,   26,   26,   26,  100,
1026       100,  100,  100,  100,  100,  100,  100,  131,  131,  131,
1027       131,  131,  131,  131,  131,   26,  510,   26,   26,   26,
1028        26,   26,   26,   32,  146,  238,  238,  146,  146,   32,
1029       568,  191,   32,   32,  146,   32,   32,   32,   32,   32,
1030        32,   32,   32,   32,   32,   32,   32,  146,  237,   32,
1031        32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
1032        32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
1033
1034        32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
1035        32,   32,   32,   32,   32,   32,   32,   32,   32,   35,
1036        35,   35,   35,   35,   35,   35,   35,   35,  210,  210,
1037       210,   35,   35,   35,   35,   35,  109,  231,  240,  241,
1038        35,  109,  252,  231,  109,  241,  109,  117,  567,  150,
1039       150,  252,  239,  240,   35,   35,   35,   35,   35,   35,
1040        42,   42,   42,   42,   42,  293,   42,   42,  133,  133,
1041        42,  265,  133,  133,  293,  117,  117,  239,  281,  117,
1042       388,  388,   42,   42,   42,   46,  117,  163,  281,  117,
1043       133,  163,  323,  265,  239,   46,  150,  163,   46,   46,
1044
1045        46,   46,   46,   46,   46,   46,  275,  282,  323,  163,
1046       163,  275,  282,  133,  142,  142,  142,  142,  142,  142,
1047       142,  142,  159,  159,  159,  159,  159,  159,  159,  159,
1048       160,  160,  160,  160,  160,  160,  160,  160,  438,  438,
1049        46,   63,  201,  201,  201,  201,  201,  201,  201,  201,
1050       279,   63,  565,  280,   63,   63,   63,   63,   63,   63,
1051        63,   63,   79,  564,   79,   79,   79,  297,   79,   79,
1052       254,  254,   79,  197,  280,  201,  297,  197,  256,  256,
1053       254,  321,  322,  197,   79,   79,   79,   91,  256,   91,
1054        91,   91,  322,   91,   91,  197,  197,   91,  209,  209,
1055
1056       209,  209,  209,  209,  209,  209,  209,  298,  298,   91,
1057        91,   91,   94,  279,   94,   94,   94,  298,   94,   94,
1058       313,  383,   94,  162,  313,  162,  162,  452,  452,  162,
1059       162,  383,  321,  162,   94,   94,   94,   96,   96,   96,
1060        96,   96,   96,   96,   96,  162,  162,  162,  312,   96,
1061        96,   96,   96,   96,  205,  368,  205,  205,  205,  205,
1062       205,  205,  214,  214,  214,  214,  214,  214,  214,  214,
1063       312,  368,   96,   96,   96,   96,   96,   96,  104,  104,
1064       104,  104,  104,  104,  104,  104,  104,  316,  371,  205,
1065       104,  104,  104,  104,  104,  216,  216,  216,  216,  216,
1066
1067       216,  216,  216,  217,  217,  217,  217,  217,  217,  316,
1068       299,  299,  373,  104,  104,  104,  104,  104,  104,  135,
1069       299,  135,  135,  135,  560,  135,  135,  373,  219,  135,
1070       219,  219,  219,  219,  219,  219,  219,  219,  453,  453,
1071       371,  135,  135,  135,  164,  549,  164,  164,  164,  164,
1072       164,  164,  164,  164,  247,  247,  247,  247,  247,  247,
1073       247,  247,  247,  253,  253,  253,  253,  253,  253,  253,
1074       253,  255,  255,  255,  255,  255,  255,  255,  255,  164,
1075       165,  547,  165,  165,  165,  165,  165,  165,  165,  165,
1076       259,  259,  259,  259,  259,  259,  259,  259,  419,  419,
1077
1078       259,  261,  261,  261,  261,  261,  261,  261,  261,  262,
1079       262,  262,  262,  262,  262,  165,  166,  543,  166,  166,
1080       166,  166,  166,  166,  166,  166,  264,  317,  264,  264,
1081       264,  264,  264,  264,  264,  264,  301,  301,  283,  283,
1082       283,  283,  283,  283,  283,  283,  301,  456,  456,  317,
1083       419,  166,  167,  318,  167,  167,  167,  167,  167,  167,
1084       167,  167,  318,  324,  342,  343,  167,  167,  167,  167,
1085       167,  283,  324,  342,  343,  344,  344,  287,  372,  287,
1086       287,  287,  287,  287,  287,  344,  420,  372,  420,  167,
1087       167,  167,  167,  167,  167,  170,  170,  170,  170,  170,
1088
1089       170,  170,  170,  170,  345,  345,  539,  170,  170,  170,
1090       170,  170,  287,  294,  345,  294,  294,  294,  294,  294,
1091       294,  294,  294,  307,  307,  307,  307,  307,  307,  527,
1092       170,  170,  170,  170,  170,  170,  172,  172,  172,  172,
1093       172,  172,  172,  172,  172,  172,  491,  491,  526,  172,
1094       172,  172,  172,  172,  295,  376,  295,  295,  295,  295,
1095       295,  295,  295,  295,  300,  300,  300,  300,  300,  300,
1096       300,  300,  172,  172,  172,  172,  172,  172,  173,  173,
1097       173,  173,  173,  173,  173,  173,  347,  347,  511,  376,
1098       173,  173,  173,  173,  173,  296,  347,  296,  296,  296,
1099
1100       296,  296,  296,  296,  296,  306,  306,  306,  306,  306,
1101       306,  306,  306,  173,  173,  173,  173,  173,  173,  203,
1102       509,  203,  203,  203,  203,  203,  203,  203,  203,  304,
1103       304,  304,  304,  304,  304,  304,  304,  508,  309,  304,
1104       309,  309,  309,  309,  309,  309,  309,  309,  334,  334,
1105       334,  334,  334,  334,  203,  204,  507,  204,  204,  204,
1106       204,  204,  204,  204,  204,  331,  331,  331,  331,  331,
1107       331,  331,  331,  333,  333,  333,  333,  333,  333,  333,
1108       333,  337,  337,  337,  337,  337,  337,  337,  337,  358,
1109       204,  215,  215,  215,  215,  215,  215,  215,  215,  215,
1110
1111       215,  215,  502,  502,  506,  215,  215,  215,  215,  215,
1112       336,  358,  336,  336,  336,  336,  336,  336,  336,  336,
1113       341,  501,  341,  341,  341,  341,  341,  341,  215,  215,
1114       215,  215,  215,  215,  218,  218,  218,  218,  218,  218,
1115       218,  218,  218,  218,  397,  534,  534,  218,  218,  218,
1116       218,  218,  339,  397,  339,  339,  339,  339,  339,  339,
1117       339,  339,  346,  346,  346,  346,  346,  346,  346,  346,
1118       218,  218,  218,  218,  218,  218,  242,  484,  242,  242,
1119       242,  242,  242,  242,  242,  242,  340,  364,  340,  340,
1120       340,  340,  340,  340,  340,  340,  350,  350,  350,  350,
1121
1122       350,  350,  350,  350,  398,  669,  350,  551,  551,  364,
1123       669,  242,  243,  398,  243,  243,  243,  243,  243,  243,
1124       243,  243,  352,  352,  352,  352,  352,  352,  352,  352,
1125       353,  353,  353,  353,  353,  353,  355,  366,  355,  355,
1126       355,  355,  355,  355,  355,  355,  374,  243,  244,  449,
1127       244,  244,  244,  244,  244,  244,  244,  244,  449,  366,
1128       414,  385,  374,  382,  382,  382,  382,  382,  382,  382,
1129       382,  385,  450,  375,  375,  375,  375,  375,  375,  375,
1130       375,  450,  414,  244,  257,  257,  257,  257,  257,  257,
1131       257,  257,  257,  257,  257,  260,  260,  260,  260,  260,
1132
1133       260,  260,  260,  260,  260,  260,  375,  415,  457,  260,
1134       260,  260,  260,  260,  379,  379,  379,  379,  379,  379,
1135       379,  384,  384,  384,  384,  384,  384,  384,  384,  415,
1136       457,  483,  260,  260,  260,  260,  260,  260,  263,  263,
1137       263,  263,  263,  263,  263,  263,  263,  263,  379,  571,
1138       571,  263,  263,  263,  263,  263,  390,  390,  390,  390,
1139       390,  390,  390,  390,  391,  391,  391,  391,  391,  391,
1140       479,  399,  399,  465,  263,  263,  263,  263,  263,  263,
1141       285,  399,  285,  285,  285,  285,  285,  285,  285,  285,
1142       393,  432,  393,  393,  393,  393,  393,  393,  393,  393,
1143
1144       394,  432,  394,  394,  394,  394,  394,  394,  394,  394,
1145       460,  473,  619,  619,  468,  285,  286,  433,  286,  286,
1146       286,  286,  286,  286,  286,  286,  395,  433,  395,  395,
1147       395,  395,  395,  395,  395,  395,  396,  435,  396,  396,
1148       396,  396,  396,  396,  396,  396,  473,  435,  461,  459,
1149       458,  286,  292,  292,  292,  292,  292,  292,  292,  292,
1150       292,  400,  400,  445,  292,  292,  292,  292,  292,  468,
1151       461,  400,  401,  401,  401,  401,  401,  401,  401,  401,
1152       408,  408,  408,  408,  408,  408,  431,  292,  292,  292,
1153       292,  292,  292,  302,  302,  302,  302,  302,  302,  302,
1154
1155       302,  302,  302,  302,  305,  305,  305,  305,  305,  305,
1156       305,  305,  305,  305,  305,  402,  402,  463,  305,  305,
1157       305,  305,  305,  469,  477,  402,  405,  405,  405,  405,
1158       405,  405,  405,  405,  427,  503,  405,  422,  469,  463,
1159       418,  305,  305,  305,  305,  305,  305,  308,  308,  308,
1160       308,  308,  308,  308,  308,  308,  308,  503,  417,  477,
1161       308,  308,  308,  308,  308,  407,  407,  407,  407,  407,
1162       407,  407,  407,  409,  416,  409,  409,  409,  409,  409,
1163       409,  409,  409,  308,  308,  308,  308,  308,  308,  325,
1164       325,  325,  325,  325,  325,  325,  325,  325,  421,  428,
1165
1166       505,  428,  428,  428,  428,  428,  428,  428,  428,  434,
1167       434,  434,  434,  434,  434,  434,  434,  413,  421,  412,
1168       421,  421,  505,  325,  326,  326,  326,  326,  326,  326,
1169       326,  326,  326,  429,  466,  429,  429,  429,  429,  429,
1170       429,  429,  429,  421,  430,  485,  430,  430,  430,  430,
1171       430,  430,  430,  430,  466,  485,  466,  466,  326,  327,
1172       327,  327,  327,  327,  327,  327,  327,  327,  440,  440,
1173       440,  440,  440,  440,  440,  440,  441,  441,  441,  441,
1174       441,  441,  443,  500,  443,  443,  443,  443,  443,  443,
1175       443,  443,  500,  327,  332,  486,  332,  332,  332,  332,
1176
1177       332,  332,  332,  332,  332,  486,  411,  410,  332,  332,
1178       332,  332,  332,  444,  444,  444,  444,  444,  444,  444,
1179       444,  446,  381,  446,  446,  446,  446,  446,  446,  446,
1180       446,  332,  332,  332,  332,  332,  332,  335,  335,  335,
1181       335,  335,  335,  335,  335,  335,  380,  370,  369,  335,
1182       335,  335,  335,  335,  447,  488,  447,  447,  447,  447,
1183       447,  447,  447,  447,  448,  488,  448,  448,  448,  448,
1184       448,  448,  335,  335,  335,  335,  335,  335,  348,  348,
1185       348,  348,  348,  348,  348,  348,  348,  348,  348,  351,
1186       351,  351,  351,  351,  351,  351,  351,  351,  351,  351,
1187
1188       451,  451,  528,  351,  351,  351,  351,  351,  467,  467,
1189       451,  470,  528,  470,  470,  470,  471,  363,  471,  471,
1190       471,  467,  544,  362,  555,  589,  351,  351,  351,  351,
1191       351,  351,  354,  354,  354,  354,  354,  354,  354,  354,
1192       354,  361,  546,  572,  544,  354,  354,  354,  354,  354,
1193       472,  472,  472,  472,  472,  472,  472,  472,  470,  555,
1194       589,  360,  357,  471,  546,  572,  356,  338,  354,  354,
1195       354,  354,  354,  354,  377,  377,  377,  377,  377,  377,
1196       377,  377,  377,  472,  476,  330,  476,  476,  476,  476,
1197       476,  476,  478,  478,  478,  478,  478,  478,  478,  478,
1198
1199       482,  329,  482,  482,  482,  482,  482,  482,  377,  378,
1200       378,  378,  378,  378,  378,  378,  378,  378,  480,  476,
1201       480,  480,  480,  480,  480,  480,  480,  480,  481,  529,
1202       481,  481,  481,  481,  481,  481,  481,  481,  328,  529,
1203       320,  319,  315,  378,  386,  574,  386,  386,  386,  386,
1204       386,  386,  386,  386,  386,  389,  531,  389,  389,  389,
1205       389,  389,  389,  389,  389,  389,  531,  574,  585,  389,
1206       389,  389,  389,  389,  487,  487,  487,  487,  487,  487,
1207       487,  487,  493,  493,  493,  493,  493,  493,  493,  493,
1208       585,  314,  389,  389,  389,  389,  389,  389,  392,  392,
1209
1210       392,  392,  392,  392,  392,  392,  392,  311,  310,  291,
1211       392,  392,  392,  392,  392,  494,  494,  494,  494,  494,
1212       494,  496,  566,  496,  496,  496,  496,  496,  496,  496,
1213       496,  290,  566,  392,  392,  392,  392,  392,  392,  403,
1214       403,  403,  403,  403,  403,  403,  403,  403,  403,  403,
1215       406,  406,  406,  406,  406,  406,  406,  406,  406,  406,
1216       289,  288,  278,  277,  406,  406,  406,  406,  406,  497,
1217       497,  497,  497,  497,  497,  497,  497,  497,  498,  498,
1218       498,  498,  498,  498,  498,  498,  498,  406,  406,  406,
1219       406,  406,  406,  423,  276,  423,  423,  423,  423,  423,
1220
1221       423,  423,  423,  499,  499,  499,  499,  499,  499,  499,
1222       499,  499,  512,  274,  512,  512,  512,  575,  575,  513,
1223       273,  513,  513,  513,  272,  271,  270,  269,  423,  424,
1224       575,  424,  424,  424,  424,  424,  424,  424,  424,  514,
1225       268,  514,  514,  514,  515,  267,  515,  515,  515,  251,
1226       518,  250,  518,  518,  518,  249,  248,  246,  245,  512,
1227       236,  235,  234,  233,  424,  425,  513,  425,  425,  425,
1228       425,  425,  425,  425,  425,  516,  232,  229,  516,  516,
1229       516,  516,  516,  516,  516,  516,  514,  227,  226,  225,
1230       224,  515,  223,  220,  212,  517,  517,  518,  211,  517,
1231
1232       425,  426,  208,  426,  426,  426,  426,  426,  426,  426,
1233       426,  517,  517,  517,  519,  519,  207,  523,  519,  523,
1234       523,  523,  523,  523,  523,  523,  523,  200,  199,  193,
1235       519,  519,  519,  190,  189,  188,  426,  436,  187,  436,
1236       436,  436,  436,  436,  436,  436,  436,  436,  439,  186,
1237       439,  439,  439,  439,  439,  439,  439,  439,  439,  184,
1238       183,  182,  439,  439,  439,  439,  439,  524,  181,  524,
1239       524,  524,  524,  524,  524,  524,  524,  530,  530,  530,
1240       530,  530,  530,  530,  530,  439,  439,  439,  439,  439,
1241       439,  442,  442,  442,  442,  442,  442,  442,  442,  442,
1242
1243       180,  179,  178,  442,  442,  442,  442,  442,  525,  177,
1244       525,  525,  525,  525,  525,  525,  525,  525,  536,  536,
1245       536,  536,  536,  536,  536,  536,  442,  442,  442,  442,
1246       442,  442,  454,  454,  454,  454,  454,  454,  454,  454,
1247       454,  454,  474,  176,  474,  474,  474,  474,  474,  474,
1248       474,  474,  537,  537,  537,  537,  537,  537,  538,  175,
1249       538,  538,  538,  538,  538,  538,  538,  538,  540,  540,
1250       540,  540,  540,  540,  540,  540,  540,  474,  475,  169,
1251       475,  475,  475,  475,  475,  475,  475,  475,  541,  541,
1252       541,  541,  541,  541,  541,  541,  541,  542,  542,  542,
1253
1254       542,  542,  542,  542,  552,  552,  552,  552,  552,  552,
1255       552,  552,  168,  475,  489,  158,  489,  489,  489,  489,
1256       489,  489,  489,  489,  489,  492,  157,  492,  492,  492,
1257       492,  492,  492,  492,  492,  492,  156,  152,  151,  492,
1258       492,  492,  492,  492,  553,  553,  553,  553,  553,  553,
1259       553,  553,  554,  554,  554,  554,  554,  554,  554,  554,
1260       149,  145,  492,  492,  492,  492,  492,  492,  495,  495,
1261       495,  495,  495,  495,  495,  495,  138,  134,  132,  130,
1262       495,  495,  495,  495,  495,  554,  558,  122,  558,  558,
1263       558,  558,  558,  558,  559,  559,  559,  559,  559,  559,
1264
1265       559,  559,  121,  495,  495,  495,  495,  495,  495,  520,
1266       120,  520,  520,  520,  520,  520,  520,  520,  520,  119,
1267       561,  558,  561,  561,  561,  561,  561,  561,  561,  561,
1268       562,  118,  562,  562,  562,  562,  562,  562,  562,  562,
1269       113,  112,  111,  110,  520,  521,  108,  521,  521,  521,
1270       521,  521,  521,  521,  521,  563,  107,  563,  563,  563,
1271       563,  563,  563,  569,  106,  569,  569,  569,  569,  569,
1272       569,  569,  569,  596,  596,  596,  596,  596,  596,  102,
1273       521,  522,   98,  522,  522,  522,  522,  522,  522,  522,
1274       522,  579,  579,  579,  579,  579,  579,  579,  579,  580,
1275
1276       580,  580,  580,  580,  580,  580,  580,  581,  581,  581,
1277       581,  581,  581,  581,  581,   97,  522,  532,   93,  532,
1278       532,  532,  532,  532,  532,  532,  532,  532,  535,   90,
1279       535,  535,  535,  535,  535,  535,  535,  535,   82,   81,
1280        80,   78,  535,  535,  535,  535,  535,   73,  588,  588,
1281       588,  588,  588,  588,  588,  588,  592,   66,  592,  592,
1282       592,  592,  592,  592,   59,  535,  535,  535,  535,  535,
1283       535,  556,   54,  556,  556,  556,  556,  556,  556,  556,
1284       556,  588,  594,  594,  594,  594,  594,  594,  594,  594,
1285        51,  592,  595,  595,  595,  595,  595,  595,  595,  595,
1286
1287        49,   41,   40,   39,   38,   37,  556,  557,   36,  557,
1288       557,  557,  557,  557,  557,  557,  557,   33,   29,   23,
1289       600,  600,  600,  600,  600,  600,  600,  600,  601,  601,
1290       601,  601,  601,  601,  601,  601,   17,   15,   14,   13,
1291         0,    0,  557,  576,    0,  576,  576,  576,  576,  576,
1292       576,  576,  576,  600,    0,    0,    0,    0,    0,    0,
1293         0,  601,  602,  602,  602,  602,  602,  602,  602,  602,
1294       604,  604,  604,  604,  604,  604,  604,  604,  576,  577,
1295         0,  577,  577,  577,  577,  577,  577,  577,  577,    0,
1296         0,    0,    0,    0,    0,  602,  605,  605,  605,  605,
1297
1298       605,  605,    0,  604,    0,    0,    0,    0,    0,    0,
1299         0,    0,    0,    0,  577,  578,    0,  578,  578,  578,
1300       578,  578,  578,  578,  578,    0,    0,    0,    0,  605,
1301         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1302         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1303       578,  590,    0,  590,  590,  590,  590,  590,  590,  590,
1304       590,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1305         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1306         0,    0,    0,    0,    0,    0,  590,  591,    0,  591,
1307       591,  591,  591,  591,  591,  591,  591,    0,    0,    0,
1308
1309         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1310         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
1311         0,    0,  591,  607,  607,  607,  607,  607,  607,  607,
1312       607,  607,  607,  607,  607,  607,  607,  607,  607,  608,
1313       608,  608,  608,  608,  608,  608,  608,  608,  608,  608,
1314       608,  608,  608,  608,  608,  609,  609,  609,  609,  609,
1315       609,  609,  609,  609,  609,  609,  609,  609,  609,  609,
1316       609,  610,  610,  610,  610,  610,  610,  610,  610,  610,
1317       610,  610,  610,  610,  610,  610,  610,  611,    0,    0,
1318         0,    0,    0,    0,    0,  611,  611,  611,    0,    0,
1319
1320       611,  611,  611,  612,  612,  612,  612,  612,  612,  612,
1321       612,  612,  612,  612,  612,  612,  612,  612,  612,  613,
1322         0,    0,    0,    0,  613,    0,    0,  613,  613,  613,
1323       613,    0,  613,  613,  613,  614,    0,    0,    0,    0,
1324         0,    0,    0,  614,  614,  614,    0,    0,  614,  614,
1325       614,  615,    0,    0,  615,  615,    0,  615,    0,  615,
1326       615,  615,    0,    0,  615,  615,  615,  616,  616,    0,
1327         0,    0,  616,  617,    0,    0,  617,  617,    0,  617,
1328         0,  617,  617,  617,    0,    0,  617,  617,  617,  618,
1329         0,    0,  618,  618,    0,  618,    0,  618,  618,  618,
1330
1331         0,  618,    0,  618,  618,  620,    0,    0,  620,    0,
1332         0,  620,    0,  620,  620,  620,  620,    0,  620,  620,
1333       620,  621,  621,  621,  621,  621,  621,  621,  621,  621,
1334       621,  621,  621,  621,  621,  621,  621,  622,  622,    0,
1335       622,    0,  622,  622,  622,  622,  622,  622,  622,  622,
1336       622,  622,  622,  623,  623,  623,  623,  623,  623,  623,
1337       623,  623,  623,  623,  623,  623,  623,  623,  623,  624,
1338       624,    0,  624,  624,  624,  624,  624,  624,  624,  624,
1339       624,  624,  624,  624,  624,  625,    0,    0,    0,    0,
1340       625,    0,    0,  625,  625,  625,    0,    0,  625,  625,
1341
1342       625,  626,    0,    0,  626,  626,    0,  626,    0,  626,
1343       626,  626,    0,    0,  626,  626,  626,  627,  627,    0,
1344         0,    0,  627,  628,  628,  628,    0,    0,    0,  628,
1345       629,    0,    0,  629,  629,    0,  629,    0,  629,  629,
1346       629,    0,    0,  629,  629,  629,  630,  630,  630,  630,
1347       630,  630,  630,  630,  630,  630,  630,  630,  630,  630,
1348       630,  630,  631,  631,    0,    0,    0,  631,  632,  632,
1349       632,    0,    0,    0,  632,  633,  633,    0,    0,    0,
1350       633,  634,  634,    0,    0,    0,  634,  635,  635,    0,
1351         0,    0,  635,  636,  636,  636,    0,    0,    0,  636,
1352
1353       637,  637,    0,    0,    0,  637,  638,  638,    0,    0,
1354         0,  638,  639,  639,    0,    0,    0,  639,  640,  640,
1355       640,    0,    0,    0,  640,  641,  641,  641,  641,    0,
1356         0,    0,  641,  642,  642,    0,    0,    0,  642,  643,
1357       643,    0,    0,    0,  643,  644,  644,    0,    0,    0,
1358       644,  645,  645,  645,    0,    0,    0,  645,  646,  646,
1359       646,  646,    0,    0,    0,  646,  647,  647,    0,    0,
1360         0,  647,  648,  648,    0,    0,    0,  648,  649,  649,
1361       649,    0,    0,    0,  649,  650,  650,  650,  650,    0,
1362         0,    0,  650,  651,  651,    0,    0,    0,  651,  652,
1363
1364         0,  652,  652,    0,    0,    0,  652,  653,  653,  653,
1365         0,    0,    0,  653,  654,  654,  654,  654,    0,    0,
1366         0,  654,  655,  655,    0,    0,    0,  655,  656,    0,
1367       656,  656,    0,    0,    0,  656,  657,  657,  657,    0,
1368         0,    0,  657,  658,  658,  658,    0,    0,    0,    0,
1369       658,  659,  659,    0,  659,  659,  659,    0,    0,  659,
1370       659,  659,    0,    0,  659,  659,  659,  660,  660,    0,
1371       660,  660,  660,    0,    0,  660,  660,  660,    0,    0,
1372       660,  660,  660,  661,  661,    0,    0,    0,  661,  662,
1373         0,  662,  662,    0,    0,    0,  662,  663,  663,    0,
1374
1375         0,    0,    0,  663,  664,  664,  664,  664,  664,  664,
1376       664,  664,  664,  664,  664,  664,  664,  664,  664,  664,
1377       665,  665,    0,    0,    0,  665,  666,    0,  666,  666,
1378         0,    0,    0,  666,  667,  667,    0,    0,    0,  667,
1379       668,    0,  668,    0,    0,    0,    0,  668,  670,  670,
1380       670,  670,  670,  670,  670,  670,  670,  670,  670,  670,
1381       670,  670,  670,  670,  606,  606,  606,  606,  606,  606,
1382       606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
1383       606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
1384       606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
1385
1386       606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
1387       606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
1388       606,  606,  606,  606,  606,  606,  606,  606,  606,  606,
1389       606
1390     } ;
1391
1392 static yy_state_type yy_last_accepting_state;
1393 static char *yy_last_accepting_cpos;
1394
1395 /* The intent behind this definition is that it'll catch
1396  * any uses of REJECT which flex missed.
1397  */
1398 #define REJECT reject_used_but_not_detected
1399 #define yymore() yymore_used_but_not_detected
1400 #define YY_MORE_ADJ 0
1401 #define YY_RESTORE_YY_MORE_OFFSET
1402 char *yytext;
1403 #line 1 "toke.l"
1404 #define INITIAL 0
1405 #line 2 "toke.l"
1406 /*
1407  * Copyright (c) 1996, 1998-2005, 2007-2011
1408  *      Todd C. Miller <Todd.Miller@courtesan.com>
1409  *
1410  * Permission to use, copy, modify, and distribute this software for any
1411  * purpose with or without fee is hereby granted, provided that the above
1412  * copyright notice and this permission notice appear in all copies.
1413  *
1414  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
1415  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
1416  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
1417  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
1418  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
1419  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
1420  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
1421  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
1422  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
1423  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1424  *
1425  * Sponsored in part by the Defense Advanced Research Projects
1426  * Agency (DARPA) and Air Force Research Laboratory, Air Force
1427  * Materiel Command, USAF, under agreement number F39502-99-1-0512.
1428  */
1429
1430 #include <config.h>
1431
1432 #include <sys/types.h>
1433 #include <sys/param.h>
1434 #include <sys/stat.h>
1435 #include <stdio.h>
1436 #ifdef STDC_HEADERS
1437 # include <stdlib.h>
1438 # include <stddef.h>
1439 #else
1440 # ifdef HAVE_STDLIB_H
1441 #  include <stdlib.h>
1442 # endif
1443 #endif /* STDC_HEADERS */
1444 #ifdef HAVE_STRING_H
1445 # include <string.h>
1446 #endif /* HAVE_STRING_H */
1447 #ifdef HAVE_STRINGS_H
1448 # include <strings.h>
1449 #endif /* HAVE_STRINGS_H */
1450 #ifdef HAVE_UNISTD_H
1451 # include <unistd.h>
1452 #endif /* HAVE_UNISTD_H */
1453 #if defined(HAVE_MALLOC_H) && !defined(STDC_HEADERS)
1454 # include <malloc.h>
1455 #endif /* HAVE_MALLOC_H && !STDC_HEADERS */
1456 #ifdef HAVE_DIRENT_H
1457 # include <dirent.h>
1458 # define NAMLEN(dirent) strlen((dirent)->d_name)
1459 #else
1460 # define dirent direct
1461 # define NAMLEN(dirent) (dirent)->d_namlen
1462 # ifdef HAVE_SYS_NDIR_H
1463 #  include <sys/ndir.h>
1464 # endif
1465 # ifdef HAVE_SYS_DIR_H
1466 #  include <sys/dir.h>
1467 # endif
1468 # ifdef HAVE_NDIR_H
1469 #  include <ndir.h>
1470 # endif
1471 #endif
1472 #include <errno.h>
1473 #include <ctype.h>
1474 #include "sudoers.h"
1475 #include "parse.h"
1476 #include "toke.h"
1477 #include <gram.h>
1478
1479 extern YYSTYPE yylval;
1480 extern int parse_error;
1481 int sudolineno;
1482 char *sudoers;
1483
1484 static int continued, prev_state, sawspace;
1485
1486 static int _push_include(char *, int);
1487 static int pop_include(void);
1488 static char *parse_include(char *);
1489
1490 #ifdef TRACELEXER
1491 static int sudoers_trace_print(const char *msg);
1492 #else
1493 # define sudoers_trace_print NULL
1494 #endif
1495 int (*trace_print)(const char *msg) = sudoers_trace_print;
1496
1497 #define push_include(_p)        (_push_include((_p), FALSE))
1498 #define push_includedir(_p)     (_push_include((_p), TRUE))
1499 #define YY_NO_INPUT 1
1500 #define YY_NO_UNPUT 1
1501 #define GOTDEFS 1
1502
1503 #define GOTCMND 2
1504
1505 #define STARTDEFS 3
1506
1507 #define INDEFS 4
1508
1509 #define INSTR 5
1510
1511 #line 1511 "lex.yy.c"
1512
1513 /* Macros after this point can all be overridden by user definitions in
1514  * section 1.
1515  */
1516
1517 #ifndef YY_SKIP_YYWRAP
1518 #ifdef __cplusplus
1519 extern "C" int yywrap YY_PROTO(( void ));
1520 #else
1521 extern int yywrap YY_PROTO(( void ));
1522 #endif
1523 #endif
1524
1525 #ifndef YY_NO_UNPUT
1526 static void yyunput YY_PROTO(( int c, char *buf_ptr ));
1527 #endif
1528
1529 #ifndef yytext_ptr
1530 static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
1531 #endif
1532
1533 #ifdef YY_NEED_STRLEN
1534 static int yy_flex_strlen YY_PROTO(( yyconst char * ));
1535 #endif
1536
1537 #ifndef YY_NO_INPUT
1538 #ifdef __cplusplus
1539 static int yyinput YY_PROTO(( void ));
1540 #else
1541 static int input YY_PROTO(( void ));
1542 #endif
1543 #endif
1544
1545 #if defined(YY_STACK_USED) && YY_STACK_USED
1546 static int yy_start_stack_ptr = 0;
1547 static int yy_start_stack_depth = 0;
1548 static int *yy_start_stack = 0;
1549 #ifndef YY_NO_PUSH_STATE
1550 static void yy_push_state YY_PROTO(( int new_state ));
1551 #endif
1552 #ifndef YY_NO_POP_STATE
1553 static void yy_pop_state YY_PROTO(( void ));
1554 #endif
1555 #ifndef YY_NO_TOP_STATE
1556 static int yy_top_state YY_PROTO(( void ));
1557 #endif
1558
1559 #else
1560 #define YY_NO_PUSH_STATE 1
1561 #define YY_NO_POP_STATE 1
1562 #define YY_NO_TOP_STATE 1
1563 #endif
1564
1565 #ifdef YY_MALLOC_DECL
1566 YY_MALLOC_DECL
1567 #else
1568 #ifdef __STDC__
1569 #ifndef __cplusplus
1570 #include <stdlib.h>
1571 #endif
1572 #else
1573 /* Just try to get by without declaring the routines.  This will fail
1574  * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
1575  * or sizeof(void*) != sizeof(int).
1576  */
1577 #endif
1578 #endif
1579
1580 /* Amount of stuff to slurp up with each read. */
1581 #ifndef YY_READ_BUF_SIZE
1582 #define YY_READ_BUF_SIZE 8192
1583 #endif
1584
1585 /* Copy whatever the last rule matched to the standard output. */
1586
1587 #ifndef ECHO
1588 /* This used to be an fputs(), but since the string might contain NUL's,
1589  * we now use fwrite().
1590  */
1591 #define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
1592 #endif
1593
1594 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
1595  * is returned in "result".
1596  */
1597 #ifndef YY_INPUT
1598 #define YY_INPUT(buf,result,max_size) \
1599         if ( yy_current_buffer->yy_is_interactive ) \
1600                 { \
1601                 int c = '*', n; \
1602                 for ( n = 0; n < max_size && \
1603                              (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
1604                         buf[n] = (char) c; \
1605                 if ( c == '\n' ) \
1606                         buf[n++] = (char) c; \
1607                 if ( c == EOF && ferror( yyin ) ) \
1608                         YY_FATAL_ERROR( "input in flex scanner failed" ); \
1609                 result = n; \
1610                 } \
1611         else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
1612                   && ferror( yyin ) ) \
1613                 YY_FATAL_ERROR( "input in flex scanner failed" );
1614 #endif
1615
1616 /* No semi-colon after return; correct usage is to write "yyterminate();" -
1617  * we don't want an extra ';' after the "return" because that will cause
1618  * some compilers to complain about unreachable statements.
1619  */
1620 #ifndef yyterminate
1621 #define yyterminate() return YY_NULL
1622 #endif
1623
1624 /* Number of entries by which start-condition stack grows. */
1625 #ifndef YY_START_STACK_INCR
1626 #define YY_START_STACK_INCR 25
1627 #endif
1628
1629 /* Report a fatal error. */
1630 #ifndef YY_FATAL_ERROR
1631 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
1632 #endif
1633
1634 /* Default declaration of generated scanner - a define so the user can
1635  * easily add parameters.
1636  */
1637 #ifndef YY_DECL
1638 #define YY_DECL int yylex YY_PROTO(( void ))
1639 #endif
1640
1641 /* Code executed at the beginning of each rule, after yytext and yyleng
1642  * have been set up.
1643  */
1644 #ifndef YY_USER_ACTION
1645 #define YY_USER_ACTION
1646 #endif
1647
1648 /* Code executed at the end of each rule. */
1649 #ifndef YY_BREAK
1650 #define YY_BREAK break;
1651 #endif
1652
1653 #define YY_RULE_SETUP \
1654         if ( yyleng > 0 ) \
1655                 yy_current_buffer->yy_at_bol = \
1656                                 (yytext[yyleng - 1] == '\n'); \
1657         YY_USER_ACTION
1658
1659 YY_DECL
1660         {
1661         register yy_state_type yy_current_state;
1662         register char *yy_cp, *yy_bp;
1663         register int yy_act;
1664
1665 #line 119 "toke.l"
1666
1667 #line 1667 "lex.yy.c"
1668
1669         if ( yy_init )
1670                 {
1671                 yy_init = 0;
1672
1673 #ifdef YY_USER_INIT
1674                 YY_USER_INIT;
1675 #endif
1676
1677                 if ( ! yy_start )
1678                         yy_start = 1;   /* first start state */
1679
1680                 if ( ! yyin )
1681                         yyin = stdin;
1682
1683                 if ( ! yyout )
1684                         yyout = stdout;
1685
1686                 if ( ! yy_current_buffer )
1687                         yy_current_buffer =
1688                                 yy_create_buffer( yyin, YY_BUF_SIZE );
1689
1690                 yy_load_buffer_state();
1691                 }
1692
1693         while ( 1 )             /* loops until end-of-file is reached */
1694                 {
1695                 yy_cp = yy_c_buf_p;
1696
1697                 /* Support of yytext. */
1698                 *yy_cp = yy_hold_char;
1699
1700                 /* yy_bp points to the position in yy_ch_buf of the start of
1701                  * the current run.
1702                  */
1703                 yy_bp = yy_cp;
1704
1705                 yy_current_state = yy_start;
1706                 yy_current_state += YY_AT_BOL();
1707 yy_match:
1708                 do
1709                         {
1710                         register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
1711                         if ( yy_accept[yy_current_state] )
1712                                 {
1713                                 yy_last_accepting_state = yy_current_state;
1714                                 yy_last_accepting_cpos = yy_cp;
1715                                 }
1716                         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1717                                 {
1718                                 yy_current_state = (int) yy_def[yy_current_state];
1719                                 if ( yy_current_state >= 607 )
1720                                         yy_c = yy_meta[(unsigned int) yy_c];
1721                                 }
1722                         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1723                         ++yy_cp;
1724                         }
1725                 while ( yy_base[yy_current_state] != 3665 );
1726
1727 yy_find_action:
1728                 yy_act = yy_accept[yy_current_state];
1729                 if ( yy_act == 0 )
1730                         { /* have to back up */
1731                         yy_cp = yy_last_accepting_cpos;
1732                         yy_current_state = yy_last_accepting_state;
1733                         yy_act = yy_accept[yy_current_state];
1734                         }
1735
1736                 YY_DO_BEFORE_ACTION;
1737
1738
1739 do_action:      /* This label is used only to access EOF actions. */
1740
1741
1742                 switch ( yy_act )
1743         { /* beginning of action switch */
1744                         case 0: /* must back up */
1745                         /* undo the effects of YY_DO_BEFORE_ACTION */
1746                         *yy_cp = yy_hold_char;
1747                         yy_cp = yy_last_accepting_cpos;
1748                         yy_current_state = yy_last_accepting_state;
1749                         goto yy_find_action;
1750
1751 case 1:
1752 YY_RULE_SETUP
1753 #line 120 "toke.l"
1754 {
1755                             LEXTRACE(", ");
1756                             return ',';
1757                         }                       /* return ',' */
1758         YY_BREAK
1759 case 2:
1760 YY_RULE_SETUP
1761 #line 125 "toke.l"
1762 BEGIN STARTDEFS;
1763         YY_BREAK
1764 case 3:
1765 YY_RULE_SETUP
1766 #line 127 "toke.l"
1767 {
1768                             BEGIN INDEFS;
1769                             LEXTRACE("DEFVAR ");
1770                             if (!fill(yytext, yyleng))
1771                                 yyterminate();
1772                             return DEFVAR;
1773                         }
1774         YY_BREAK
1775
1776 case 4:
1777 YY_RULE_SETUP
1778 #line 136 "toke.l"
1779 {
1780                             BEGIN STARTDEFS;
1781                             LEXTRACE(", ");
1782                             return ',';
1783                         }                       /* return ',' */
1784         YY_BREAK
1785 case 5:
1786 YY_RULE_SETUP
1787 #line 142 "toke.l"
1788 {
1789                             LEXTRACE("= ");
1790                             return '=';
1791                         }                       /* return '=' */
1792         YY_BREAK
1793 case 6:
1794 YY_RULE_SETUP
1795 #line 147 "toke.l"
1796 {
1797                             LEXTRACE("+= ");
1798                             return '+';
1799                         }                       /* return '+' */
1800         YY_BREAK
1801 case 7:
1802 YY_RULE_SETUP
1803 #line 152 "toke.l"
1804 {
1805                             LEXTRACE("-= ");
1806                             return '-';
1807                         }                       /* return '-' */
1808         YY_BREAK
1809 case 8:
1810 YY_RULE_SETUP
1811 #line 157 "toke.l"
1812 {
1813                             LEXTRACE("BEGINSTR ");
1814                             yylval.string = NULL;
1815                             prev_state = YY_START;
1816                             BEGIN INSTR;
1817                         }
1818         YY_BREAK
1819 case 9:
1820 YY_RULE_SETUP
1821 #line 164 "toke.l"
1822 {
1823                             LEXTRACE("WORD(2) ");
1824                             if (!fill(yytext, yyleng))
1825                                 yyterminate();
1826                             return WORD;
1827                         }
1828         YY_BREAK
1829
1830
1831 case 10:
1832 YY_RULE_SETUP
1833 #line 173 "toke.l"
1834 {
1835                             /* Line continuation char followed by newline. */
1836                             ++sudolineno;
1837                             continued = TRUE;
1838                         }
1839         YY_BREAK
1840 case 11:
1841 YY_RULE_SETUP
1842 #line 179 "toke.l"
1843 {
1844                             LEXTRACE("ENDSTR ");
1845                             BEGIN prev_state;
1846
1847                             if (yylval.string == NULL) {
1848                                 LEXTRACE("ERROR "); /* empty string */
1849                                 return ERROR;
1850                             }
1851                             if (prev_state == INITIAL) {
1852                                 switch (yylval.string[0]) {
1853                                 case '%':
1854                                     if (yylval.string[1] == '\0' ||
1855                                         (yylval.string[1] == ':' &&
1856                                         yylval.string[2] == '\0')) {
1857                                         LEXTRACE("ERROR "); /* empty group */
1858                                         return ERROR;
1859                                     }
1860                                     LEXTRACE("USERGROUP ");
1861                                     return USERGROUP;
1862                                 case '+':
1863                                     if (yylval.string[1] == '\0') {
1864                                         LEXTRACE("ERROR "); /* empty netgroup */
1865                                         return ERROR;
1866                                     }
1867                                     LEXTRACE("NETGROUP ");
1868                                     return NETGROUP;
1869                                 }
1870                             }
1871                             LEXTRACE("WORD(4) ");
1872                             return WORD;
1873                         }
1874         YY_BREAK
1875 case 12:
1876 YY_RULE_SETUP
1877 #line 211 "toke.l"
1878 {
1879                             LEXTRACE("BACKSLASH ");
1880                             if (!append(yytext, yyleng))
1881                                 yyterminate();
1882                         }
1883         YY_BREAK
1884 case 13:
1885 YY_RULE_SETUP
1886 #line 217 "toke.l"
1887 {
1888                             LEXTRACE("STRBODY ");
1889                             if (!append(yytext, yyleng))
1890                                 yyterminate();
1891                         }
1892         YY_BREAK
1893
1894
1895 case 14:
1896 YY_RULE_SETUP
1897 #line 225 "toke.l"
1898 {
1899                             /* quoted fnmatch glob char, pass verbatim */
1900                             LEXTRACE("QUOTEDCHAR ");
1901                             if (!fill_args(yytext, 2, sawspace))
1902                                 yyterminate();
1903                             sawspace = FALSE;
1904                         }
1905         YY_BREAK
1906 case 15:
1907 YY_RULE_SETUP
1908 #line 233 "toke.l"
1909 {
1910                             /* quoted sudoers special char, strip backslash */
1911                             LEXTRACE("QUOTEDCHAR ");
1912                             if (!fill_args(yytext + 1, 1, sawspace))
1913                                 yyterminate();
1914                             sawspace = FALSE;
1915                         }
1916         YY_BREAK
1917 case 16:
1918 YY_RULE_SETUP
1919 #line 241 "toke.l"
1920 {
1921                             BEGIN INITIAL;
1922                             yyless(0);
1923                             return COMMAND;
1924                         }                       /* end of command line args */
1925         YY_BREAK
1926 case 17:
1927 YY_RULE_SETUP
1928 #line 247 "toke.l"
1929 {
1930                             LEXTRACE("ARG ");
1931                             if (!fill_args(yytext, yyleng, sawspace))
1932                                 yyterminate();
1933                             sawspace = FALSE;
1934                         }                       /* a command line arg */
1935         YY_BREAK
1936
1937 case 18:
1938 YY_RULE_SETUP
1939 #line 255 "toke.l"
1940 {
1941                             char *path;
1942
1943                             if (continued) {
1944                                 LEXTRACE("ERROR ");
1945                                 return ERROR;
1946                             }
1947
1948                             if ((path = parse_include(yytext)) == NULL)
1949                                 yyterminate();
1950
1951                             LEXTRACE("INCLUDE\n");
1952
1953                             /* Push current buffer and switch to include file */
1954                             if (!push_include(path))
1955                                 yyterminate();
1956                         }
1957         YY_BREAK
1958 case 19:
1959 YY_RULE_SETUP
1960 #line 273 "toke.l"
1961 {
1962                             char *path;
1963
1964                             if (continued) {
1965                                 LEXTRACE("ERROR ");
1966                                 return ERROR;
1967                             }
1968
1969                             if ((path = parse_include(yytext)) == NULL)
1970                                 yyterminate();
1971
1972                             LEXTRACE("INCLUDEDIR\n");
1973
1974                             /*
1975                              * Push current buffer and switch to include file.
1976                              * We simply ignore empty directories.
1977                              */
1978                             if (!push_includedir(path) && parse_error)
1979                                 yyterminate();
1980                         }
1981         YY_BREAK
1982 case 20:
1983 YY_RULE_SETUP
1984 #line 294 "toke.l"
1985 {
1986                             char deftype;
1987                             int n;
1988
1989                             if (continued) {
1990                                 LEXTRACE("ERROR ");
1991                                 return ERROR;
1992                             }
1993
1994                             for (n = 0; isblank((unsigned char)yytext[n]); n++)
1995                                 continue;
1996                             n += sizeof("Defaults") - 1;
1997                             if ((deftype = yytext[n++]) != '\0') {
1998                                 while (isblank((unsigned char)yytext[n]))
1999                                     n++;
2000                             }
2001                             BEGIN GOTDEFS;
2002                             switch (deftype) {
2003                                 case ':':
2004                                     yyless(n);
2005                                     LEXTRACE("DEFAULTS_USER ");
2006                                     return DEFAULTS_USER;
2007                                 case '>':
2008                                     yyless(n);
2009                                     LEXTRACE("DEFAULTS_RUNAS ");
2010                                     return DEFAULTS_RUNAS;
2011                                 case '@':
2012                                     yyless(n);
2013                                     LEXTRACE("DEFAULTS_HOST ");
2014                                     return DEFAULTS_HOST;
2015                                 case '!':
2016                                     yyless(n);
2017                                     LEXTRACE("DEFAULTS_CMND ");
2018                                     return DEFAULTS_CMND;
2019                                 default:
2020                                     LEXTRACE("DEFAULTS ");
2021                                     return DEFAULTS;
2022                             }
2023                         }
2024         YY_BREAK
2025 case 21:
2026 YY_RULE_SETUP
2027 #line 334 "toke.l"
2028 {
2029                             int n;
2030
2031                             if (continued) {
2032                                 LEXTRACE("ERROR ");
2033                                 return ERROR;
2034                             }
2035
2036                             for (n = 0; isblank((unsigned char)yytext[n]); n++)
2037                                 continue;
2038                             switch (yytext[n]) {
2039                                 case 'H':
2040                                     LEXTRACE("HOSTALIAS ");
2041                                     return HOSTALIAS;
2042                                 case 'C':
2043                                     LEXTRACE("CMNDALIAS ");
2044                                     return CMNDALIAS;
2045                                 case 'U':
2046                                     LEXTRACE("USERALIAS ");
2047                                     return USERALIAS;
2048                                 case 'R':
2049                                     LEXTRACE("RUNASALIAS ");
2050                                     return RUNASALIAS;
2051                             }
2052                         }
2053         YY_BREAK
2054 case 22:
2055 YY_RULE_SETUP
2056 #line 360 "toke.l"
2057 {
2058                                 /* cmnd does not require passwd for this user */
2059                                 LEXTRACE("NOPASSWD ");
2060                                 return NOPASSWD;
2061                         }
2062         YY_BREAK
2063 case 23:
2064 YY_RULE_SETUP
2065 #line 366 "toke.l"
2066 {
2067                                 /* cmnd requires passwd for this user */
2068                                 LEXTRACE("PASSWD ");
2069                                 return PASSWD;
2070                         }
2071         YY_BREAK
2072 case 24:
2073 YY_RULE_SETUP
2074 #line 372 "toke.l"
2075 {
2076                                 LEXTRACE("NOEXEC ");
2077                                 return NOEXEC;
2078                         }
2079         YY_BREAK
2080 case 25:
2081 YY_RULE_SETUP
2082 #line 377 "toke.l"
2083 {
2084                                 LEXTRACE("EXEC ");
2085                                 return EXEC;
2086                         }
2087         YY_BREAK
2088 case 26:
2089 YY_RULE_SETUP
2090 #line 382 "toke.l"
2091 {
2092                                 LEXTRACE("SETENV ");
2093                                 return SETENV;
2094                         }
2095         YY_BREAK
2096 case 27:
2097 YY_RULE_SETUP
2098 #line 387 "toke.l"
2099 {
2100                                 LEXTRACE("NOSETENV ");
2101                                 return NOSETENV;
2102                         }
2103         YY_BREAK
2104 case 28:
2105 YY_RULE_SETUP
2106 #line 392 "toke.l"
2107 {
2108                                 LEXTRACE("LOG_OUTPUT ");
2109                                 return LOG_OUTPUT;
2110                         }
2111         YY_BREAK
2112 case 29:
2113 YY_RULE_SETUP
2114 #line 397 "toke.l"
2115 {
2116                                 LEXTRACE("NOLOG_OUTPUT ");
2117                                 return NOLOG_OUTPUT;
2118                         }
2119         YY_BREAK
2120 case 30:
2121 YY_RULE_SETUP
2122 #line 402 "toke.l"
2123 {
2124                                 LEXTRACE("LOG_INPUT ");
2125                                 return LOG_INPUT;
2126                         }
2127         YY_BREAK
2128 case 31:
2129 YY_RULE_SETUP
2130 #line 407 "toke.l"
2131 {
2132                                 LEXTRACE("NOLOG_INPUT ");
2133                                 return NOLOG_INPUT;
2134                         }
2135         YY_BREAK
2136 case 32:
2137 YY_RULE_SETUP
2138 #line 412 "toke.l"
2139 {
2140                             /* empty group or netgroup */
2141                             LEXTRACE("ERROR ");
2142                             return ERROR;
2143                         }
2144         YY_BREAK
2145 case 33:
2146 YY_RULE_SETUP
2147 #line 418 "toke.l"
2148 {
2149                             /* netgroup */
2150                             if (!fill(yytext, yyleng))
2151                                 yyterminate();
2152                             LEXTRACE("NETGROUP ");
2153                             return NETGROUP;
2154                         }
2155         YY_BREAK
2156 case 34:
2157 YY_RULE_SETUP
2158 #line 426 "toke.l"
2159 {
2160                             /* group */
2161                             if (!fill(yytext, yyleng))
2162                                 yyterminate();
2163                             LEXTRACE("USERGROUP ");
2164                             return USERGROUP;
2165                         }
2166         YY_BREAK
2167 case 35:
2168 YY_RULE_SETUP
2169 #line 434 "toke.l"
2170 {
2171                             if (!fill(yytext, yyleng))
2172                                 yyterminate();
2173                             LEXTRACE("NTWKADDR ");
2174                             return NTWKADDR;
2175                         }
2176         YY_BREAK
2177 case 36:
2178 YY_RULE_SETUP
2179 #line 441 "toke.l"
2180 {
2181                             if (!fill(yytext, yyleng))
2182                                 yyterminate();
2183                             LEXTRACE("NTWKADDR ");
2184                             return NTWKADDR;
2185                         }
2186         YY_BREAK
2187 case 37:
2188 YY_RULE_SETUP
2189 #line 448 "toke.l"
2190 {
2191                             if (!ipv6_valid(yytext)) {
2192                                 LEXTRACE("ERROR ");
2193                                 return ERROR;
2194                             }
2195                             if (!fill(yytext, yyleng))
2196                                 yyterminate();
2197                             LEXTRACE("NTWKADDR ");
2198                             return NTWKADDR;
2199                         }
2200         YY_BREAK
2201 case 38:
2202 YY_RULE_SETUP
2203 #line 459 "toke.l"
2204 {
2205                             if (!ipv6_valid(yytext)) {
2206                                 LEXTRACE("ERROR ");
2207                                 return ERROR;
2208                             }
2209                             if (!fill(yytext, yyleng))
2210                                 yyterminate();
2211                             LEXTRACE("NTWKADDR ");
2212                             return NTWKADDR;
2213                         }
2214         YY_BREAK
2215 case 39:
2216 YY_RULE_SETUP
2217 #line 470 "toke.l"
2218 {
2219                             LEXTRACE("ALL ");
2220                             return ALL;
2221
2222                         }
2223         YY_BREAK
2224 case 40:
2225 YY_RULE_SETUP
2226 #line 476 "toke.l"
2227 {
2228 #ifdef HAVE_SELINUX
2229                             LEXTRACE("ROLE ");
2230                             return ROLE;
2231 #else
2232                             goto got_alias;
2233 #endif
2234                         }
2235         YY_BREAK
2236 case 41:
2237 YY_RULE_SETUP
2238 #line 485 "toke.l"
2239 {
2240 #ifdef HAVE_SELINUX
2241                             LEXTRACE("TYPE ");
2242                             return TYPE;
2243 #else
2244                             goto got_alias;
2245 #endif
2246                         }
2247         YY_BREAK
2248 case 42:
2249 YY_RULE_SETUP
2250 #line 494 "toke.l"
2251 {
2252 #ifndef HAVE_SELINUX
2253                         got_alias:
2254 #endif
2255                             if (!fill(yytext, yyleng))
2256                                 yyterminate();
2257                             LEXTRACE("ALIAS ");
2258                             return ALIAS;
2259                         }
2260         YY_BREAK
2261 case 43:
2262 YY_RULE_SETUP
2263 #line 504 "toke.l"
2264 {
2265                             /* no command args allowed for Defaults!/path */
2266                             if (!fill_cmnd(yytext, yyleng))
2267                                 yyterminate();
2268                             LEXTRACE("COMMAND ");
2269                             return COMMAND;
2270                         }
2271         YY_BREAK
2272 case 44:
2273 YY_RULE_SETUP
2274 #line 512 "toke.l"
2275 {
2276                             BEGIN GOTCMND;
2277                             LEXTRACE("COMMAND ");
2278                             if (!fill_cmnd(yytext, yyleng))
2279                                 yyterminate();
2280                         }                       /* sudo -e */
2281         YY_BREAK
2282 case 45:
2283 YY_RULE_SETUP
2284 #line 519 "toke.l"
2285 {
2286                             /* directories can't have args... */
2287                             if (yytext[yyleng - 1] == '/') {
2288                                 LEXTRACE("COMMAND ");
2289                                 if (!fill_cmnd(yytext, yyleng))
2290                                     yyterminate();
2291                                 return COMMAND;
2292                             } else {
2293                                 BEGIN GOTCMND;
2294                                 LEXTRACE("COMMAND ");
2295                                 if (!fill_cmnd(yytext, yyleng))
2296                                     yyterminate();
2297                             }
2298                         }                       /* a pathname */
2299         YY_BREAK
2300 case 46:
2301 YY_RULE_SETUP
2302 #line 534 "toke.l"
2303 {
2304                             LEXTRACE("BEGINSTR ");
2305                             yylval.string = NULL;
2306                             prev_state = YY_START;
2307                             BEGIN INSTR;
2308                         }
2309         YY_BREAK
2310 case 47:
2311 YY_RULE_SETUP
2312 #line 541 "toke.l"
2313 {
2314                             /* a word */
2315                             if (!fill(yytext, yyleng))
2316                                 yyterminate();
2317                             LEXTRACE("WORD(5) ");
2318                             return WORD;
2319                         }
2320         YY_BREAK
2321 case 48:
2322 YY_RULE_SETUP
2323 #line 549 "toke.l"
2324 {
2325                             LEXTRACE("( ");
2326                             return '(';
2327                         }
2328         YY_BREAK
2329 case 49:
2330 YY_RULE_SETUP
2331 #line 554 "toke.l"
2332 {
2333                             LEXTRACE(") ");
2334                             return ')';
2335                         }
2336         YY_BREAK
2337 case 50:
2338 YY_RULE_SETUP
2339 #line 559 "toke.l"
2340 {
2341                             LEXTRACE(", ");
2342                             return ',';
2343                         }                       /* return ',' */
2344         YY_BREAK
2345 case 51:
2346 YY_RULE_SETUP
2347 #line 564 "toke.l"
2348 {
2349                             LEXTRACE("= ");
2350                             return '=';
2351                         }                       /* return '=' */
2352         YY_BREAK
2353 case 52:
2354 YY_RULE_SETUP
2355 #line 569 "toke.l"
2356 {
2357                             LEXTRACE(": ");
2358                             return ':';
2359                         }                       /* return ':' */
2360         YY_BREAK
2361 case 53:
2362 YY_RULE_SETUP
2363 #line 574 "toke.l"
2364 {
2365                             if (yyleng & 1) {
2366                                 LEXTRACE("!");
2367                                 return '!';     /* return '!' */
2368                             }
2369                         }
2370         YY_BREAK
2371 case 54:
2372 YY_RULE_SETUP
2373 #line 581 "toke.l"
2374 {
2375                             if (YY_START == INSTR) {
2376                                 LEXTRACE("ERROR ");
2377                                 return ERROR;   /* line break in string */
2378                             }
2379                             BEGIN INITIAL;
2380                             ++sudolineno;
2381                             continued = FALSE;
2382                             LEXTRACE("\n");
2383                             return COMMENT;
2384                         }                       /* return newline */
2385         YY_BREAK
2386 case 55:
2387 YY_RULE_SETUP
2388 #line 593 "toke.l"
2389 {                       /* throw away space/tabs */
2390                             sawspace = TRUE;    /* but remember for fill_args */
2391                         }
2392         YY_BREAK
2393 case 56:
2394 YY_RULE_SETUP
2395 #line 597 "toke.l"
2396 {
2397                             sawspace = TRUE;    /* remember for fill_args */
2398                             ++sudolineno;
2399                             continued = TRUE;
2400                         }                       /* throw away EOL after \ */
2401         YY_BREAK
2402 case 57:
2403 YY_RULE_SETUP
2404 #line 603 "toke.l"
2405 {
2406                             BEGIN INITIAL;
2407                             ++sudolineno;
2408                             continued = FALSE;
2409                             LEXTRACE("#\n");
2410                             return COMMENT;
2411                         }                       /* comment, not uid/gid */
2412         YY_BREAK
2413 case 58:
2414 YY_RULE_SETUP
2415 #line 611 "toke.l"
2416 {
2417                             LEXTRACE("ERROR ");
2418                             return ERROR;
2419                         }       /* parse error */
2420         YY_BREAK
2421 case YY_STATE_EOF(INITIAL):
2422 case YY_STATE_EOF(GOTDEFS):
2423 case YY_STATE_EOF(GOTCMND):
2424 case YY_STATE_EOF(STARTDEFS):
2425 case YY_STATE_EOF(INDEFS):
2426 case YY_STATE_EOF(INSTR):
2427 #line 616 "toke.l"
2428 {
2429                             if (YY_START != INITIAL) {
2430                                 BEGIN INITIAL;
2431                                 LEXTRACE("ERROR ");
2432                                 return ERROR;
2433                             }
2434                             if (!pop_include())
2435                                 yyterminate();
2436                         }
2437         YY_BREAK
2438 case 59:
2439 YY_RULE_SETUP
2440 #line 626 "toke.l"
2441 ECHO;
2442         YY_BREAK
2443 #line 2443 "lex.yy.c"
2444
2445         case YY_END_OF_BUFFER:
2446                 {
2447                 /* Amount of text matched not including the EOB char. */
2448                 int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
2449
2450                 /* Undo the effects of YY_DO_BEFORE_ACTION. */
2451                 *yy_cp = yy_hold_char;
2452                 YY_RESTORE_YY_MORE_OFFSET
2453
2454                 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
2455                         {
2456                         /* We're scanning a new file or input source.  It's
2457                          * possible that this happened because the user
2458                          * just pointed yyin at a new source and called
2459                          * yylex().  If so, then we have to assure
2460                          * consistency between yy_current_buffer and our
2461                          * globals.  Here is the right place to do so, because
2462                          * this is the first action (other than possibly a
2463                          * back-up) that will match for the new input source.
2464                          */
2465                         yy_n_chars = yy_current_buffer->yy_n_chars;
2466                         yy_current_buffer->yy_input_file = yyin;
2467                         yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
2468                         }
2469
2470                 /* Note that here we test for yy_c_buf_p "<=" to the position
2471                  * of the first EOB in the buffer, since yy_c_buf_p will
2472                  * already have been incremented past the NUL character
2473                  * (since all states make transitions on EOB to the
2474                  * end-of-buffer state).  Contrast this with the test
2475                  * in input().
2476                  */
2477                 if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
2478                         { /* This was really a NUL. */
2479                         yy_state_type yy_next_state;
2480
2481                         yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
2482
2483                         yy_current_state = yy_get_previous_state();
2484
2485                         /* Okay, we're now positioned to make the NUL
2486                          * transition.  We couldn't have
2487                          * yy_get_previous_state() go ahead and do it
2488                          * for us because it doesn't know how to deal
2489                          * with the possibility of jamming (and we don't
2490                          * want to build jamming into it because then it
2491                          * will run more slowly).
2492                          */
2493
2494                         yy_next_state = yy_try_NUL_trans( yy_current_state );
2495
2496                         yy_bp = yytext_ptr + YY_MORE_ADJ;
2497
2498                         if ( yy_next_state )
2499                                 {
2500                                 /* Consume the NUL. */
2501                                 yy_cp = ++yy_c_buf_p;
2502                                 yy_current_state = yy_next_state;
2503                                 goto yy_match;
2504                                 }
2505
2506                         else
2507                                 {
2508                                 yy_cp = yy_c_buf_p;
2509                                 goto yy_find_action;
2510                                 }
2511                         }
2512
2513                 else switch ( yy_get_next_buffer() )
2514                         {
2515                         case EOB_ACT_END_OF_FILE:
2516                                 {
2517                                 yy_did_buffer_switch_on_eof = 0;
2518
2519                                 if ( yywrap() )
2520                                         {
2521                                         /* Note: because we've taken care in
2522                                          * yy_get_next_buffer() to have set up
2523                                          * yytext, we can now set up
2524                                          * yy_c_buf_p so that if some total
2525                                          * hoser (like flex itself) wants to
2526                                          * call the scanner after we return the
2527                                          * YY_NULL, it'll still work - another
2528                                          * YY_NULL will get returned.
2529                                          */
2530                                         yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
2531
2532                                         yy_act = YY_STATE_EOF(YY_START);
2533                                         goto do_action;
2534                                         }
2535
2536                                 else
2537                                         {
2538                                         if ( ! yy_did_buffer_switch_on_eof )
2539                                                 YY_NEW_FILE;
2540                                         }
2541                                 break;
2542                                 }
2543
2544                         case EOB_ACT_CONTINUE_SCAN:
2545                                 yy_c_buf_p =
2546                                         yytext_ptr + yy_amount_of_matched_text;
2547
2548                                 yy_current_state = yy_get_previous_state();
2549
2550                                 yy_cp = yy_c_buf_p;
2551                                 yy_bp = yytext_ptr + YY_MORE_ADJ;
2552                                 goto yy_match;
2553
2554                         case EOB_ACT_LAST_MATCH:
2555                                 yy_c_buf_p =
2556                                 &yy_current_buffer->yy_ch_buf[yy_n_chars];
2557
2558                                 yy_current_state = yy_get_previous_state();
2559
2560                                 yy_cp = yy_c_buf_p;
2561                                 yy_bp = yytext_ptr + YY_MORE_ADJ;
2562                                 goto yy_find_action;
2563                         }
2564                 break;
2565                 }
2566
2567         default:
2568                 YY_FATAL_ERROR(
2569                         "fatal flex scanner internal error--no action found" );
2570         } /* end of action switch */
2571                 } /* end of scanning one token */
2572         } /* end of yylex */
2573
2574
2575 /* yy_get_next_buffer - try to read in a new buffer
2576  *
2577  * Returns a code representing an action:
2578  *      EOB_ACT_LAST_MATCH -
2579  *      EOB_ACT_CONTINUE_SCAN - continue scanning from current position
2580  *      EOB_ACT_END_OF_FILE - end of file
2581  */
2582
2583 static int yy_get_next_buffer()
2584         {
2585         register char *dest = yy_current_buffer->yy_ch_buf;
2586         register char *source = yytext_ptr;
2587         register int number_to_move, i;
2588         int ret_val;
2589
2590         if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
2591                 YY_FATAL_ERROR(
2592                 "fatal flex scanner internal error--end of buffer missed" );
2593
2594         if ( yy_current_buffer->yy_fill_buffer == 0 )
2595                 { /* Don't try to fill the buffer, so this is an EOF. */
2596                 if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
2597                         {
2598                         /* We matched a single character, the EOB, so
2599                          * treat this as a final EOF.
2600                          */
2601                         return EOB_ACT_END_OF_FILE;
2602                         }
2603
2604                 else
2605                         {
2606                         /* We matched some text prior to the EOB, first
2607                          * process it.
2608                          */
2609                         return EOB_ACT_LAST_MATCH;
2610                         }
2611                 }
2612
2613         /* Try to read more data. */
2614
2615         /* First move last chars to start of buffer. */
2616         number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
2617
2618         for ( i = 0; i < number_to_move; ++i )
2619                 *(dest++) = *(source++);
2620
2621         if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
2622                 /* don't do the read, it's not guaranteed to return an EOF,
2623                  * just force an EOF
2624                  */
2625                 yy_current_buffer->yy_n_chars = yy_n_chars = 0;
2626
2627         else
2628                 {
2629                 int num_to_read =
2630                         yy_current_buffer->yy_buf_size - number_to_move - 1;
2631
2632                 while ( num_to_read <= 0 )
2633                         { /* Not enough room in the buffer - grow it. */
2634 #ifdef YY_USES_REJECT
2635                         YY_FATAL_ERROR(
2636 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
2637 #else
2638
2639                         /* just a shorter name for the current buffer */
2640                         YY_BUFFER_STATE b = yy_current_buffer;
2641
2642                         int yy_c_buf_p_offset =
2643                                 (int) (yy_c_buf_p - b->yy_ch_buf);
2644
2645                         if ( b->yy_is_our_buffer )
2646                                 {
2647                                 int new_size = b->yy_buf_size * 2;
2648
2649                                 if ( new_size <= 0 )
2650                                         b->yy_buf_size += b->yy_buf_size / 8;
2651                                 else
2652                                         b->yy_buf_size *= 2;
2653
2654                                 b->yy_ch_buf = (char *)
2655                                         /* Include room in for 2 EOB chars. */
2656                                         yy_flex_realloc( (void *) b->yy_ch_buf,
2657                                                          b->yy_buf_size + 2 );
2658                                 }
2659                         else
2660                                 /* Can't grow it, we don't own it. */
2661                                 b->yy_ch_buf = 0;
2662
2663                         if ( ! b->yy_ch_buf )
2664                                 YY_FATAL_ERROR(
2665                                 "fatal error - scanner input buffer overflow" );
2666
2667                         yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
2668
2669                         num_to_read = yy_current_buffer->yy_buf_size -
2670                                                 number_to_move - 1;
2671 #endif
2672                         }
2673
2674                 if ( num_to_read > YY_READ_BUF_SIZE )
2675                         num_to_read = YY_READ_BUF_SIZE;
2676
2677                 /* Read in more data. */
2678                 YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
2679                         yy_n_chars, num_to_read );
2680
2681                 yy_current_buffer->yy_n_chars = yy_n_chars;
2682                 }
2683
2684         if ( yy_n_chars == 0 )
2685                 {
2686                 if ( number_to_move == YY_MORE_ADJ )
2687                         {
2688                         ret_val = EOB_ACT_END_OF_FILE;
2689                         yyrestart( yyin );
2690                         }
2691
2692                 else
2693                         {
2694                         ret_val = EOB_ACT_LAST_MATCH;
2695                         yy_current_buffer->yy_buffer_status =
2696                                 YY_BUFFER_EOF_PENDING;
2697                         }
2698                 }
2699
2700         else
2701                 ret_val = EOB_ACT_CONTINUE_SCAN;
2702
2703         yy_n_chars += number_to_move;
2704         yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
2705         yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
2706
2707         yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
2708
2709         return ret_val;
2710         }
2711
2712
2713 /* yy_get_previous_state - get the state just before the EOB char was reached */
2714
2715 static yy_state_type yy_get_previous_state()
2716         {
2717         register yy_state_type yy_current_state;
2718         register char *yy_cp;
2719
2720         yy_current_state = yy_start;
2721         yy_current_state += YY_AT_BOL();
2722
2723         for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
2724                 {
2725                 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
2726                 if ( yy_accept[yy_current_state] )
2727                         {
2728                         yy_last_accepting_state = yy_current_state;
2729                         yy_last_accepting_cpos = yy_cp;
2730                         }
2731                 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2732                         {
2733                         yy_current_state = (int) yy_def[yy_current_state];
2734                         if ( yy_current_state >= 607 )
2735                                 yy_c = yy_meta[(unsigned int) yy_c];
2736                         }
2737                 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2738                 }
2739
2740         return yy_current_state;
2741         }
2742
2743
2744 /* yy_try_NUL_trans - try to make a transition on the NUL character
2745  *
2746  * synopsis
2747  *      next_state = yy_try_NUL_trans( current_state );
2748  */
2749
2750 #ifdef YY_USE_PROTOS
2751 static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
2752 #else
2753 static yy_state_type yy_try_NUL_trans( yy_current_state )
2754 yy_state_type yy_current_state;
2755 #endif
2756         {
2757         register int yy_is_jam;
2758         register char *yy_cp = yy_c_buf_p;
2759
2760         register YY_CHAR yy_c = 1;
2761         if ( yy_accept[yy_current_state] )
2762                 {
2763                 yy_last_accepting_state = yy_current_state;
2764                 yy_last_accepting_cpos = yy_cp;
2765                 }
2766         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2767                 {
2768                 yy_current_state = (int) yy_def[yy_current_state];
2769                 if ( yy_current_state >= 607 )
2770                         yy_c = yy_meta[(unsigned int) yy_c];
2771                 }
2772         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2773         yy_is_jam = (yy_current_state == 606);
2774
2775         return yy_is_jam ? 0 : yy_current_state;
2776         }
2777
2778
2779 #ifndef YY_NO_UNPUT
2780 #ifdef YY_USE_PROTOS
2781 static void yyunput( int c, register char *yy_bp )
2782 #else
2783 static void yyunput( c, yy_bp )
2784 int c;
2785 register char *yy_bp;
2786 #endif
2787         {
2788         register char *yy_cp = yy_c_buf_p;
2789
2790         /* undo effects of setting up yytext */
2791         *yy_cp = yy_hold_char;
2792
2793         if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
2794                 { /* need to shift things up to make room */
2795                 /* +2 for EOB chars. */
2796                 register int number_to_move = yy_n_chars + 2;
2797                 register char *dest = &yy_current_buffer->yy_ch_buf[
2798                                         yy_current_buffer->yy_buf_size + 2];
2799                 register char *source =
2800                                 &yy_current_buffer->yy_ch_buf[number_to_move];
2801
2802                 while ( source > yy_current_buffer->yy_ch_buf )
2803                         *--dest = *--source;
2804
2805                 yy_cp += (int) (dest - source);
2806                 yy_bp += (int) (dest - source);
2807                 yy_current_buffer->yy_n_chars =
2808                         yy_n_chars = yy_current_buffer->yy_buf_size;
2809
2810                 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
2811                         YY_FATAL_ERROR( "flex scanner push-back overflow" );
2812                 }
2813
2814         *--yy_cp = (char) c;
2815
2816
2817         yytext_ptr = yy_bp;
2818         yy_hold_char = *yy_cp;
2819         yy_c_buf_p = yy_cp;
2820         }
2821 #endif  /* ifndef YY_NO_UNPUT */
2822
2823
2824 #ifndef YY_NO_INPUT
2825 #ifdef __cplusplus
2826 static int yyinput()
2827 #else
2828 static int input()
2829 #endif
2830         {
2831         int c;
2832
2833         *yy_c_buf_p = yy_hold_char;
2834
2835         if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
2836                 {
2837                 /* yy_c_buf_p now points to the character we want to return.
2838                  * If this occurs *before* the EOB characters, then it's a
2839                  * valid NUL; if not, then we've hit the end of the buffer.
2840                  */
2841                 if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
2842                         /* This was really a NUL. */
2843                         *yy_c_buf_p = '\0';
2844
2845                 else
2846                         { /* need more input */
2847                         int offset = yy_c_buf_p - yytext_ptr;
2848                         ++yy_c_buf_p;
2849
2850                         switch ( yy_get_next_buffer() )
2851                                 {
2852                                 case EOB_ACT_LAST_MATCH:
2853                                         /* This happens because yy_g_n_b()
2854                                          * sees that we've accumulated a
2855                                          * token and flags that we need to
2856                                          * try matching the token before
2857                                          * proceeding.  But for input(),
2858                                          * there's no matching to consider.
2859                                          * So convert the EOB_ACT_LAST_MATCH
2860                                          * to EOB_ACT_END_OF_FILE.
2861                                          */
2862
2863                                         /* Reset buffer status. */
2864                                         yyrestart( yyin );
2865
2866                                         /* fall through */
2867
2868                                 case EOB_ACT_END_OF_FILE:
2869                                         {
2870                                         if ( yywrap() )
2871                                                 return EOF;
2872
2873                                         if ( ! yy_did_buffer_switch_on_eof )
2874                                                 YY_NEW_FILE;
2875 #ifdef __cplusplus
2876                                         return yyinput();
2877 #else
2878                                         return input();
2879 #endif
2880                                         }
2881
2882                                 case EOB_ACT_CONTINUE_SCAN:
2883                                         yy_c_buf_p = yytext_ptr + offset;
2884                                         break;
2885                                 }
2886                         }
2887                 }
2888
2889         c = *(unsigned char *) yy_c_buf_p;      /* cast for 8-bit char's */
2890         *yy_c_buf_p = '\0';     /* preserve yytext */
2891         yy_hold_char = *++yy_c_buf_p;
2892
2893         yy_current_buffer->yy_at_bol = (c == '\n');
2894
2895         return c;
2896         }
2897 #endif  /* ifndef YY_NO_INPUT */
2898
2899
2900 #ifdef YY_USE_PROTOS
2901 void yyrestart( FILE *input_file )
2902 #else
2903 void yyrestart( input_file )
2904 FILE *input_file;
2905 #endif
2906         {
2907         if ( ! yy_current_buffer )
2908                 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
2909
2910         yy_init_buffer( yy_current_buffer, input_file );
2911         yy_load_buffer_state();
2912         }
2913
2914
2915 #ifdef YY_USE_PROTOS
2916 void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
2917 #else
2918 void yy_switch_to_buffer( new_buffer )
2919 YY_BUFFER_STATE new_buffer;
2920 #endif
2921         {
2922         if ( yy_current_buffer == new_buffer )
2923                 return;
2924
2925         if ( yy_current_buffer )
2926                 {
2927                 /* Flush out information for old buffer. */
2928                 *yy_c_buf_p = yy_hold_char;
2929                 yy_current_buffer->yy_buf_pos = yy_c_buf_p;
2930                 yy_current_buffer->yy_n_chars = yy_n_chars;
2931                 }
2932
2933         yy_current_buffer = new_buffer;
2934         yy_load_buffer_state();
2935
2936         /* We don't actually know whether we did this switch during
2937          * EOF (yywrap()) processing, but the only time this flag
2938          * is looked at is after yywrap() is called, so it's safe
2939          * to go ahead and always set it.
2940          */
2941         yy_did_buffer_switch_on_eof = 1;
2942         }
2943
2944
2945 #ifdef YY_USE_PROTOS
2946 void yy_load_buffer_state( void )
2947 #else
2948 void yy_load_buffer_state()
2949 #endif
2950         {
2951         yy_n_chars = yy_current_buffer->yy_n_chars;
2952         yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
2953         yyin = yy_current_buffer->yy_input_file;
2954         yy_hold_char = *yy_c_buf_p;
2955         }
2956
2957
2958 #ifdef YY_USE_PROTOS
2959 YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
2960 #else
2961 YY_BUFFER_STATE yy_create_buffer( file, size )
2962 FILE *file;
2963 int size;
2964 #endif
2965         {
2966         YY_BUFFER_STATE b;
2967
2968         b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
2969         if ( ! b )
2970                 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
2971
2972         b->yy_buf_size = size;
2973
2974         /* yy_ch_buf has to be 2 characters longer than the size given because
2975          * we need to put in 2 end-of-buffer characters.
2976          */
2977         b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
2978         if ( ! b->yy_ch_buf )
2979                 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
2980
2981         b->yy_is_our_buffer = 1;
2982
2983         yy_init_buffer( b, file );
2984
2985         return b;
2986         }
2987
2988
2989 #ifdef YY_USE_PROTOS
2990 void yy_delete_buffer( YY_BUFFER_STATE b )
2991 #else
2992 void yy_delete_buffer( b )
2993 YY_BUFFER_STATE b;
2994 #endif
2995         {
2996         if ( ! b )
2997                 return;
2998
2999         if ( b == yy_current_buffer )
3000                 yy_current_buffer = (YY_BUFFER_STATE) 0;
3001
3002         if ( b->yy_is_our_buffer )
3003                 yy_flex_free( (void *) b->yy_ch_buf );
3004
3005         yy_flex_free( (void *) b );
3006         }
3007
3008
3009 #ifndef YY_ALWAYS_INTERACTIVE
3010 #ifndef YY_NEVER_INTERACTIVE
3011 #include <unistd.h>
3012 #endif
3013 #endif
3014
3015 #ifdef YY_USE_PROTOS
3016 void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
3017 #else
3018 void yy_init_buffer( b, file )
3019 YY_BUFFER_STATE b;
3020 FILE *file;
3021 #endif
3022
3023
3024         {
3025         int oerrno = errno;
3026
3027         yy_flush_buffer( b );
3028
3029         b->yy_input_file = file;
3030         b->yy_fill_buffer = 1;
3031
3032 #if defined(YY_ALWAYS_INTERACTIVE) && YY_ALWAYS_INTERACTIVE
3033         b->yy_is_interactive = 1;
3034 #else
3035 #if defined(YY_NEVER_INTERACTIVE) && YY_NEVER_INTERACTIVE
3036         b->yy_is_interactive = 0;
3037 #else
3038         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
3039 #endif
3040 #endif
3041         errno = oerrno;
3042         }
3043
3044
3045 #ifdef YY_USE_PROTOS
3046 void yy_flush_buffer( YY_BUFFER_STATE b )
3047 #else
3048 void yy_flush_buffer( b )
3049 YY_BUFFER_STATE b;
3050 #endif
3051
3052         {
3053         if ( ! b )
3054                 return;
3055
3056         b->yy_n_chars = 0;
3057
3058         /* We always need two end-of-buffer characters.  The first causes
3059          * a transition to the end-of-buffer state.  The second causes
3060          * a jam in that state.
3061          */
3062         b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
3063         b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
3064
3065         b->yy_buf_pos = &b->yy_ch_buf[0];
3066
3067         b->yy_at_bol = 1;
3068         b->yy_buffer_status = YY_BUFFER_NEW;
3069
3070         if ( b == yy_current_buffer )
3071                 yy_load_buffer_state();
3072         }
3073
3074
3075 #ifndef YY_NO_SCAN_BUFFER
3076 #ifdef YY_USE_PROTOS
3077 YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
3078 #else
3079 YY_BUFFER_STATE yy_scan_buffer( base, size )
3080 char *base;
3081 yy_size_t size;
3082 #endif
3083         {
3084         YY_BUFFER_STATE b;
3085
3086         if ( size < 2 ||
3087              base[size-2] != YY_END_OF_BUFFER_CHAR ||
3088              base[size-1] != YY_END_OF_BUFFER_CHAR )
3089                 /* They forgot to leave room for the EOB's. */
3090                 return 0;
3091
3092         b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
3093         if ( ! b )
3094                 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
3095
3096         b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
3097         b->yy_buf_pos = b->yy_ch_buf = base;
3098         b->yy_is_our_buffer = 0;
3099         b->yy_input_file = 0;
3100         b->yy_n_chars = b->yy_buf_size;
3101         b->yy_is_interactive = 0;
3102         b->yy_at_bol = 1;
3103         b->yy_fill_buffer = 0;
3104         b->yy_buffer_status = YY_BUFFER_NEW;
3105
3106         yy_switch_to_buffer( b );
3107
3108         return b;
3109         }
3110 #endif
3111
3112
3113 #ifndef YY_NO_SCAN_STRING
3114 #ifdef YY_USE_PROTOS
3115 YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
3116 #else
3117 YY_BUFFER_STATE yy_scan_string( yy_str )
3118 yyconst char *yy_str;
3119 #endif
3120         {
3121         int len;
3122         for ( len = 0; yy_str[len]; ++len )
3123                 ;
3124
3125         return yy_scan_bytes( yy_str, len );
3126         }
3127 #endif
3128
3129
3130 #ifndef YY_NO_SCAN_BYTES
3131 #ifdef YY_USE_PROTOS
3132 YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
3133 #else
3134 YY_BUFFER_STATE yy_scan_bytes( bytes, len )
3135 yyconst char *bytes;
3136 int len;
3137 #endif
3138         {
3139         YY_BUFFER_STATE b;
3140         char *buf;
3141         yy_size_t n;
3142         int i;
3143
3144         /* Get memory for full buffer, including space for trailing EOB's. */
3145         n = len + 2;
3146         buf = (char *) yy_flex_alloc( n );
3147         if ( ! buf )
3148                 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
3149
3150         for ( i = 0; i < len; ++i )
3151                 buf[i] = bytes[i];
3152
3153         buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
3154
3155         b = yy_scan_buffer( buf, n );
3156         if ( ! b )
3157                 YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
3158
3159         /* It's okay to grow etc. this buffer, and we should throw it
3160          * away when we're done.
3161          */
3162         b->yy_is_our_buffer = 1;
3163
3164         return b;
3165         }
3166 #endif
3167
3168
3169 #ifndef YY_NO_PUSH_STATE
3170 #ifdef YY_USE_PROTOS
3171 static void yy_push_state( int new_state )
3172 #else
3173 static void yy_push_state( new_state )
3174 int new_state;
3175 #endif
3176         {
3177         if ( yy_start_stack_ptr >= yy_start_stack_depth )
3178                 {
3179                 yy_size_t new_size;
3180
3181                 yy_start_stack_depth += YY_START_STACK_INCR;
3182                 new_size = yy_start_stack_depth * sizeof( int );
3183
3184                 if ( ! yy_start_stack )
3185                         yy_start_stack = (int *) yy_flex_alloc( new_size );
3186
3187                 else
3188                         yy_start_stack = (int *) yy_flex_realloc(
3189                                         (void *) yy_start_stack, new_size );
3190
3191                 if ( ! yy_start_stack )
3192                         YY_FATAL_ERROR(
3193                         "out of memory expanding start-condition stack" );
3194                 }
3195
3196         yy_start_stack[yy_start_stack_ptr++] = YY_START;
3197
3198         BEGIN(new_state);
3199         }
3200 #endif
3201
3202
3203 #ifndef YY_NO_POP_STATE
3204 static void yy_pop_state()
3205         {
3206         if ( --yy_start_stack_ptr < 0 )
3207                 YY_FATAL_ERROR( "start-condition stack underflow" );
3208
3209         BEGIN(yy_start_stack[yy_start_stack_ptr]);
3210         }
3211 #endif
3212
3213
3214 #ifndef YY_NO_TOP_STATE
3215 static int yy_top_state()
3216         {
3217         return yy_start_stack[yy_start_stack_ptr - 1];
3218         }
3219 #endif
3220
3221 #ifndef YY_EXIT_FAILURE
3222 #define YY_EXIT_FAILURE 2
3223 #endif
3224
3225 #ifdef YY_USE_PROTOS
3226 static void yy_fatal_error( yyconst char msg[] )
3227 #else
3228 static void yy_fatal_error( msg )
3229 char msg[];
3230 #endif
3231         {
3232         (void) fprintf( stderr, "%s\n", msg );
3233         exit( YY_EXIT_FAILURE );
3234         }
3235
3236
3237
3238 /* Redefine yyless() so it works in section 3 code. */
3239
3240 #undef yyless
3241 #define yyless(n) \
3242         do \
3243                 { \
3244                 /* Undo effects of setting up yytext. */ \
3245                 yytext[yyleng] = yy_hold_char; \
3246                 yy_c_buf_p = yytext + n; \
3247                 yy_hold_char = *yy_c_buf_p; \
3248                 *yy_c_buf_p = '\0'; \
3249                 yyleng = n; \
3250                 } \
3251         while ( 0 )
3252
3253
3254 /* Internal utility routines. */
3255
3256 #ifndef yytext_ptr
3257 #ifdef YY_USE_PROTOS
3258 static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
3259 #else
3260 static void yy_flex_strncpy( s1, s2, n )
3261 char *s1;
3262 yyconst char *s2;
3263 int n;
3264 #endif
3265         {
3266         register int i;
3267         for ( i = 0; i < n; ++i )
3268                 s1[i] = s2[i];
3269         }
3270 #endif
3271
3272 #ifdef YY_NEED_STRLEN
3273 #ifdef YY_USE_PROTOS
3274 static int yy_flex_strlen( yyconst char *s )
3275 #else
3276 static int yy_flex_strlen( s )
3277 yyconst char *s;
3278 #endif
3279         {
3280         register int n;
3281         for ( n = 0; s[n]; ++n )
3282                 ;
3283
3284         return n;
3285         }
3286 #endif
3287
3288
3289 #ifdef YY_USE_PROTOS
3290 static void *yy_flex_alloc( yy_size_t size )
3291 #else
3292 static void *yy_flex_alloc( size )
3293 yy_size_t size;
3294 #endif
3295         {
3296         return (void *) malloc( size );
3297         }
3298
3299 #ifdef YY_USE_PROTOS
3300 static void *yy_flex_realloc( void *ptr, yy_size_t size )
3301 #else
3302 static void *yy_flex_realloc( ptr, size )
3303 void *ptr;
3304 yy_size_t size;
3305 #endif
3306         {
3307         /* The cast to (char *) in the following accommodates both
3308          * implementations that use char* generic pointers, and those
3309          * that use void* generic pointers.  It works with the latter
3310          * because both ANSI C and C++ allow castless assignment from
3311          * any pointer type to void*, and deal with argument conversions
3312          * as though doing an assignment.
3313          */
3314         return (void *) realloc( (char *) ptr, size );
3315         }
3316
3317 #ifdef YY_USE_PROTOS
3318 static void yy_flex_free( void *ptr )
3319 #else
3320 static void yy_flex_free( ptr )
3321 void *ptr;
3322 #endif
3323         {
3324         free( ptr );
3325         }
3326
3327 #if defined(YY_MAIN) && YY_MAIN
3328 int main()
3329         {
3330         yylex();
3331         return 0;
3332         }
3333 #endif
3334 #line 626 "toke.l"
3335
3336 struct path_list {
3337     char *path;
3338     struct path_list *next;
3339 };
3340
3341 struct include_stack {
3342     YY_BUFFER_STATE bs;
3343     char *path;
3344     struct path_list *more; /* more files in case of includedir */
3345     int lineno;
3346     int keepopen;
3347 };
3348
3349 static int
3350 pl_compare(const void *v1, const void *v2)
3351 {
3352     const struct path_list * const *p1 = v1;
3353     const struct path_list * const *p2 = v2;
3354
3355     return strcmp((*p1)->path, (*p2)->path);
3356 }
3357
3358 static char *
3359 switch_dir(struct include_stack *stack, char *dirpath)
3360 {
3361     DIR *dir;
3362     int i, count = 0;
3363     char *path = NULL;
3364     struct dirent *dent;
3365     struct stat sb;
3366     struct path_list *pl, *first = NULL;
3367     struct path_list **sorted = NULL;
3368
3369     if (!(dir = opendir(dirpath))) {
3370         if (errno != ENOENT) {
3371             char *errbuf;
3372             if (asprintf(&errbuf, _("%s: %s"), dirpath, strerror(errno)) != -1) {
3373                 yyerror(errbuf);
3374                 free(errbuf);
3375             } else {
3376                 yyerror(_("unable to allocate memory"));
3377             }
3378         }
3379         goto done;
3380     }
3381     while ((dent = readdir(dir))) {
3382         /* Ignore files that end in '~' or have a '.' in them. */
3383         if (dent->d_name[0] == '\0' || dent->d_name[NAMLEN(dent) - 1] == '~'
3384             || strchr(dent->d_name, '.') != NULL) {
3385             continue;
3386         }
3387         if (asprintf(&path, "%s/%s", dirpath, dent->d_name) == -1) {
3388             closedir(dir);
3389             goto bad;
3390         }
3391         if (stat(path, &sb) != 0 || !S_ISREG(sb.st_mode)) {
3392             efree(path);
3393             path = NULL;
3394             continue;
3395         }
3396         pl = malloc(sizeof(*pl));
3397         if (pl == NULL)
3398             goto bad;
3399         pl->path = path;
3400         pl->next = first;
3401         first = pl;
3402         count++;
3403     }
3404     closedir(dir);
3405
3406     if (count == 0)
3407         goto done;
3408
3409     /* Sort the list as an array. */
3410     sorted = malloc(sizeof(*sorted) * count);
3411     if (sorted == NULL)
3412         goto bad;
3413     pl = first;
3414     for (i = 0; i < count; i++) {
3415         sorted[i] = pl;
3416         pl = pl->next;
3417     }
3418     qsort(sorted, count, sizeof(*sorted), pl_compare);
3419
3420     /* Apply sorting to the list. */
3421     first = sorted[0];
3422     sorted[count - 1]->next = NULL;
3423     for (i = 1; i < count; i++)
3424         sorted[i - 1]->next = sorted[i];
3425     efree(sorted);
3426
3427     /* Pull out the first element for parsing, leave the rest for later. */
3428     if (count) {
3429         path = first->path;
3430         pl = first->next;
3431         efree(first);
3432         stack->more = pl;
3433     } else {
3434         path = NULL;
3435     }
3436 done:
3437     efree(dirpath);
3438     return path;
3439 bad:
3440     while (first != NULL) {
3441         pl = first;
3442         first = pl->next;
3443         free(pl->path);
3444         free(pl);
3445     }
3446     efree(sorted);
3447     efree(dirpath);
3448     efree(path);
3449     return NULL;
3450 }
3451
3452 #define MAX_SUDOERS_DEPTH       128
3453 #define SUDOERS_STACK_INCREMENT 16
3454
3455 static size_t istacksize, idepth;
3456 static struct include_stack *istack;
3457 static int keepopen;
3458
3459 void
3460 init_lexer(void)
3461 {
3462     struct path_list *pl;
3463
3464     while (idepth) {
3465         idepth--;
3466         while ((pl = istack[idepth].more) != NULL) {
3467             istack[idepth].more = pl->next;
3468             efree(pl->path);
3469             efree(pl);
3470         }
3471         efree(istack[idepth].path);
3472         if (idepth && !istack[idepth].keepopen)
3473             fclose(istack[idepth].bs->yy_input_file);
3474         yy_delete_buffer(istack[idepth].bs);
3475     }
3476     efree(istack);
3477     istack = NULL;
3478     istacksize = idepth = 0;
3479     sudolineno = 1;
3480     keepopen = FALSE;
3481     sawspace = FALSE;
3482     continued = FALSE;
3483     prev_state = INITIAL;
3484 }
3485
3486 static int
3487 _push_include(char *path, int isdir)
3488 {
3489     struct path_list *pl;
3490     FILE *fp;
3491
3492     /* push current state onto stack */
3493     if (idepth >= istacksize) {
3494         if (idepth > MAX_SUDOERS_DEPTH) {
3495             yyerror(_("too many levels of includes"));
3496             return FALSE;
3497         }
3498         istacksize += SUDOERS_STACK_INCREMENT;
3499         istack = (struct include_stack *) realloc(istack,
3500             sizeof(*istack) * istacksize);
3501         if (istack == NULL) {
3502             yyerror(_("unable to allocate memory"));
3503             return FALSE;
3504         }
3505     }
3506     if (isdir) {
3507         if (!(path = switch_dir(&istack[idepth], path))) {
3508             /* switch_dir() called yyerror() for us */
3509             return FALSE;
3510         }
3511         while ((fp = open_sudoers(path, FALSE, &keepopen)) == NULL) {
3512             /* Unable to open path in includedir, go to next one, if any. */
3513             efree(path);
3514             if ((pl = istack[idepth].more) == NULL)
3515                 return FALSE;
3516             path = pl->path;
3517             istack[idepth].more = pl->next;
3518             efree(pl);
3519         }
3520     } else {
3521         if ((fp = open_sudoers(path, TRUE, &keepopen)) == NULL) {
3522             char *errbuf;
3523             if (asprintf(&errbuf, _("%s: %s"), path, strerror(errno)) != -1) {
3524                 yyerror(errbuf);
3525                 free(errbuf);
3526             } else {
3527                 yyerror(_("unable to allocate memory"));
3528             }
3529             return FALSE;
3530         }
3531         istack[idepth].more = NULL;
3532     }
3533     /* Push the old (current) file and open the new one. */
3534     istack[idepth].path = sudoers; /* push old path */
3535     istack[idepth].bs = YY_CURRENT_BUFFER;
3536     istack[idepth].lineno = sudolineno;
3537     istack[idepth].keepopen = keepopen;
3538     idepth++;
3539     sudolineno = 1;
3540     sudoers = path;
3541     yy_switch_to_buffer(yy_create_buffer(fp, YY_BUF_SIZE));
3542
3543     return TRUE;
3544 }
3545
3546 static int
3547 pop_include(void)
3548 {
3549     struct path_list *pl;
3550     FILE *fp;
3551
3552     if (idepth == 0)
3553         return FALSE;
3554
3555     if (!keepopen)
3556         fclose(YY_CURRENT_BUFFER->yy_input_file);
3557     yy_delete_buffer(YY_CURRENT_BUFFER);
3558     /* If we are in an include dir, move to the next file. */
3559     while ((pl = istack[idepth - 1].more) != NULL) {
3560         fp = open_sudoers(pl->path, FALSE, &keepopen);
3561         if (fp != NULL) {
3562             istack[idepth - 1].more = pl->next;
3563             efree(sudoers);
3564             sudoers = pl->path;
3565             sudolineno = 1;
3566             yy_switch_to_buffer(yy_create_buffer(fp, YY_BUF_SIZE));
3567             efree(pl);
3568             break;
3569         }
3570         /* Unable to open path in include dir, go to next one. */
3571         istack[idepth - 1].more = pl->next;
3572         efree(pl->path);
3573         efree(pl);
3574     }
3575     /* If no path list, just pop the last dir on the stack. */
3576     if (pl == NULL) {
3577         idepth--;
3578         yy_switch_to_buffer(istack[idepth].bs);
3579         efree(sudoers);
3580         sudoers = istack[idepth].path;
3581         sudolineno = istack[idepth].lineno;
3582         keepopen = istack[idepth].keepopen;
3583     }
3584     return TRUE;
3585 }
3586
3587 static char *
3588 parse_include(char *base)
3589 {
3590     char *cp, *ep, *path;
3591     int len = 0, subst = 0;
3592     size_t shost_len = 0;
3593
3594     /* Pull out path from #include line. */
3595     cp = base + sizeof("#include");
3596     if (*cp == 'i')
3597         cp += 3; /* includedir */
3598     while (isblank((unsigned char) *cp))
3599         cp++;
3600     ep = cp;
3601     while (*ep != '\0' && !isspace((unsigned char) *ep)) {
3602         if (ep[0] == '%' && ep[1] == 'h') {
3603             shost_len = strlen(user_shost);
3604             len += shost_len - 2;
3605             subst = 1;
3606         }
3607         ep++;
3608     }
3609
3610     /* Make a copy of path and return it. */
3611     len += (int)(ep - cp);
3612     if ((path = malloc(len + 1)) == NULL) {
3613         yyerror(_("unable to allocate memory"));
3614         return NULL;
3615     }
3616     if (subst) {
3617         /* substitute for %h */
3618         char *pp = path;
3619         while (cp < ep) {
3620             if (cp[0] == '%' && cp[1] == 'h') {
3621                 memcpy(pp, user_shost, shost_len);
3622                 pp += shost_len;
3623                 cp += 2;
3624                 continue;
3625             }
3626             *pp++ = *cp++;
3627         }
3628         *pp = '\0';
3629     } else {
3630         memcpy(path, cp, len);
3631         path[len] = '\0';
3632     }
3633
3634     /* Push any excess characters (e.g. comment, newline) back to the lexer */
3635     if (*ep != '\0')
3636         yyless((int)(ep - base));
3637
3638     return path;
3639 }
3640
3641 #ifdef TRACELEXER
3642 static int
3643 sudoers_trace_print(const char *msg)
3644 {
3645     return fputs(msg, stderr);
3646 }
3647 #endif /* TRACELEXER */