2 /* $OpenBSD: flex.skl,v 1.11 2010/08/04 18:24:50 millert Exp $ */
4 /* A lexical scanner generated by flex */
6 /* Scanner skeleton version:
7 * $Header: /home/cvs/openbsd/src/usr.bin/lex/flex.skl,v 1.11 2010/08/04 18:24:50 millert Exp $
11 #define YY_FLEX_MAJOR_VERSION 2
12 #define YY_FLEX_MINOR_VERSION 5
18 /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
31 /* Use prototypes in function declarations. */
34 /* The "const" storage-class-modifier is valid. */
37 #else /* ! __cplusplus */
45 #endif /* ! __cplusplus */
64 #define YY_PROTO(proto) proto
66 #define YY_PROTO(proto) ()
69 /* Returned upon end-of-file. */
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
77 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
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.
83 #define BEGIN yy_start = 1 + 2 *
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
89 #define YY_START ((yy_start - 1) / 2)
90 #define YYSTATE YY_START
92 /* Action number for EOF rule of a given start state. */
93 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
95 /* Special action meaning "start processing a new file". */
96 #define YY_NEW_FILE yyrestart( yyin )
98 #define YY_END_OF_BUFFER_CHAR 0
100 /* Size of default input buffer. */
101 #define YY_BUF_SIZE 16384
103 typedef struct yy_buffer_state *YY_BUFFER_STATE;
106 extern FILE *yyin, *yyout;
108 #define EOB_ACT_CONTINUE_SCAN 0
109 #define EOB_ACT_END_OF_FILE 1
110 #define EOB_ACT_LAST_MATCH 2
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:
116 * if ( condition_holds )
119 * do_something_else();
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.
126 /* Return all but the first 'n' matched characters back to the input stream. */
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 */ \
139 #define unput(c) yyunput( c, yytext_ptr )
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).
145 typedef unsigned int yy_size_t;
148 struct yy_buffer_state
152 char *yy_ch_buf; /* input buffer */
153 char *yy_buf_pos; /* current position in input buffer */
155 /* Size of input buffer in bytes, not including room for EOB
158 yy_size_t yy_buf_size;
160 /* Number of characters read into yy_ch_buf, not including EOB
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
169 int yy_is_our_buffer;
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
176 int yy_is_interactive;
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
184 /* Whether to try to fill the input buffer when we reach the
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.
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.
202 #define YY_BUFFER_EOF_PENDING 2
205 static YY_BUFFER_STATE yy_current_buffer = 0;
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
211 #define YY_CURRENT_BUFFER yy_current_buffer
214 /* yy_hold_char holds the character lost when yytext is formed. */
215 static char yy_hold_char;
217 static int yy_n_chars; /* number of characters read into yy_ch_buf */
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 */
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 ...
230 static int yy_did_buffer_switch_on_eof;
232 void yyrestart YY_PROTO(( FILE *input_file ));
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 )
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 ));
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 * ));
250 #define yy_new_buffer yy_create_buffer
252 #define yy_set_interactive(is_interactive) \
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; \
259 #define yy_set_bol(at_bol) \
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; \
266 #define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
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;
275 #define yytext_ptr yytext
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[] ));
282 /* Done after the current pattern has been matched and before the
283 * corresponding action - sets up yytext.
285 #define YY_DO_BEFORE_ACTION \
286 yytext_ptr = yy_bp; \
287 yyleng = (int) (yy_cp - yy_bp); \
288 yy_hold_char = *yy_cp; \
292 #define YY_NUM_RULES 59
293 #define YY_END_OF_BUFFER 60
294 static yyconst short int yy_accept[607] =
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,
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,
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,
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,
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,
351 37, 37, 0, 30, 42, 42, 42, 0, 0, 0,
352 18, 0, 21, 20, 0, 0, 0, 0, 0, 20,
353 0, 47, 47, 47, 0, 0, 0, 37, 37, 37,
354 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
355 37, 37, 37, 37, 37, 0, 28, 42, 42, 21,
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, 0, 19, 47,
360 47, 47, 47, 47, 37, 37, 37, 37, 37, 35,
362 35, 35, 35, 35, 35, 0
365 static yyconst int yy_ec[256] =
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,
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,
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,
397 static yyconst int yy_meta[67] =
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
408 static yyconst short int yy_base[671] =
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,
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,
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, 2201, 2178,
439 2185, 2194, 2194, 2176, 558, 2169, 2152, 2150, 648, 626,
440 530, 559, 923, 336, 1467, 1503, 964, 2171, 2140, 2139,
441 2138, 1537, 551, 1000, 1041, 1082, 653, 694, 797, 1049,
443 923, 1580, 0, 1116, 1591, 1090, 1008, 1633, 1125, 2121,
444 2082, 747, 686, 2064, 2071, 786, 926, 905, 2080, 2033,
445 679, 634, 544, 915, 1675, 1710, 1745, 2052, 2043, 2033,
446 1150, 1781, 1158, 1133, 1822, 1197, 1166, 2028, 1239, 1273,
447 1207, 950, 951, 962, 991, 1247, 1073, 1865, 0, 1283,
448 1876, 1307, 1315, 1918, 1323, 1987, 1968, 1188, 3665, 1967,
449 1951, 1929, 1913, 1286, 3665, 1336, 3665, 707, 1897, 1889,
450 786, 930, 764, 1298, 1358, 1041, 1960, 1995, 1400, 1927,
451 1879, 1348, 708, 1406, 1348, 2031, 0, 559, 2042, 1441,
452 1449, 2083, 1477, 1487, 1513, 1523, 1230, 1290, 1458, 1548,
454 1557, 1602, 2126, 0, 1613, 2137, 1650, 1565, 1660, 1806,
455 1779, 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, 1468, 1430, 1431,
460 1547, 3665, 1616, 3665, 1381, 1731, 1045, 1512, 1575, 1908,
461 1913, 1970, 1498, 2429, 2465, 1947, 1611, 1981, 1264, 2006,
462 2016, 2061, 1198, 1181, 1732, 1782, 2067, 1842, 2501, 0,
463 1181, 2512, 2100, 1904, 2553, 2110, 2155, 2164, 2189, 1769,
465 1142, 1232, 1634, 3665, 1699, 1095, 1077, 1025, 1046, 1306,
466 3665, 384, 981, 2211, 2218, 2238, 2243, 2263, 2288, 2249,
467 2307, 2596, 2632, 2668, 2304, 2354, 2395, 983, 894, 1902,
468 1928, 2362, 1929, 2704, 0, 1428, 2715, 2403, 2437, 2445,
469 867, 2454, 2474, 2483, 831, 1982, 3665, 1983, 782, 3665,
470 1511, 2489, 2529, 2537, 1895, 2758, 2794, 2573, 2579, 650,
471 2607, 2617, 2642, 629, 525, 1931, 447, 347, 2650, 0,
472 1528, 2019, 3665, 2044, 1805, 2830, 2866, 2902, 2676, 2684,
473 2692, 323, 0, 316, 2067, 3665, 166, 1845, 3665, 2733,
474 1945, 2938, 2974, 2743, 3665, 2767, 2777, 2658, 3665, 2805,
476 2813, 2847, 63, 2855, 2881, 3665, 3023, 3039, 3055, 3071,
477 3087, 3103, 3119, 3135, 3151, 3157, 3173, 3189, 2025, 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 3583, 3589, 3597, 3604, 3610, 3618, 3624, 3632, 3648, 1295
485 static yyconst short int yy_def[671] =
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,
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,
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,
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,
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, 659, 623, 611, 660,
538 661, 611, 611, 611, 611, 611, 611, 606, 606, 606,
539 606, 606, 606, 662, 662, 663, 442, 663, 663, 489,
540 489, 606, 492, 492, 606, 492, 606, 606, 606, 606,
542 664, 664, 606, 606, 35, 35, 35, 606, 659, 659,
543 606, 623, 611, 660, 660, 660, 660, 606, 660, 661,
544 661, 611, 611, 611, 606, 606, 606, 606, 665, 665,
545 666, 495, 666, 666, 534, 534, 606, 537, 537, 537,
546 606, 606, 606, 606, 606, 606, 606, 35, 35, 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, 669, 611, 611, 611, 606, 606,
550 606, 606, 670, 670, 606, 606, 669, 669, 606, 611,
551 611, 611, 611, 611, 606, 606, 606, 606, 606, 611,
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
562 static yyconst short int yy_nxt[3732] =
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,
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, 589, 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,
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,
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, 382,
600 134, 160, 160, 160, 160, 160, 160, 160, 160, 241,
601 72, 15, 16, 17, 67, 63, 532, 170, 89, 283,
602 68, 69, 70, 135, 162, 86, 214, 86, 86, 267,
603 606, 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,
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 382, 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,
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, 532, 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,
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, 487, 322, 606, 606, 606, 606, 606, 606,
636 606, 606, 78, 559, 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,
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,
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, 574, 78, 78, 421, 606, 133,
655 256, 256, 256, 256, 256, 256, 256, 256, 606, 170,
656 419, 133, 133, 78, 201, 170, 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, 170, 203, 203, 203, 203, 203, 203, 203, 203,
661 253, 170, 298, 298, 298, 298, 298, 298, 467, 83,
663 255, 302, 302, 302, 302, 302, 302, 302, 302, 303,
664 303, 303, 303, 303, 304, 79, 201, 487, 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,
674 210, 210, 210, 211, 253, 170, 434, 212, 212, 212,
675 212, 212, 79, 337, 346, 338, 338, 338, 338, 338,
676 338, 338, 338, 349, 349, 349, 349, 349, 350, 79,
677 212, 212, 212, 212, 212, 212, 170, 215, 216, 217,
678 215, 215, 215, 215, 215, 218, 510, 511, 511, 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, 550, 79,
683 220, 220, 220, 220, 220, 337, 346, 340, 340, 340,
685 340, 340, 341, 338, 338, 348, 348, 348, 348, 348,
686 348, 348, 348, 206, 206, 206, 206, 206, 206, 201,
687 549, 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, 170, 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,
696 254, 255, 529, 529, 434, 256, 256, 256, 256, 256,
697 606, 359, 385, 385, 385, 385, 385, 385, 385, 385,
698 337, 384, 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, 253, 170, 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, 478, 284, 284,
704 284, 284, 284, 284, 284, 284, 337, 364, 338, 338,
705 338, 338, 338, 338, 338, 338, 253, 170, 399, 399,
707 399, 399, 399, 399, 170, 599, 346, 510, 511, 365,
708 599, 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,
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, 508, 301, 301, 301, 301, 301, 301, 170, 305,
722 306, 307, 305, 305, 305, 305, 305, 308, 79, 565,
723 565, 309, 309, 309, 309, 309, 436, 436, 436, 436,
724 436, 436, 436, 436, 437, 437, 437, 437, 437, 438,
725 507, 253, 170, 506, 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,
729 444, 384, 445, 445, 445, 445, 445, 445, 445, 445,
730 505, 472, 575, 83, 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, 583,
734 583, 79, 332, 333, 334, 332, 332, 332, 332, 332,
735 335, 253, 170, 444, 336, 336, 336, 336, 336, 512,
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,
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, 513, 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,
751 546, 479, 479, 479, 479, 479, 479, 479, 479, 443,
752 443, 443, 443, 443, 443, 443, 443, 460, 470, 459,
753 470, 471, 547, 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,
762 383, 383, 383, 383, 384, 487, 588, 589, 385, 385,
763 385, 385, 385, 497, 498, 499, 497, 497, 497, 497,
764 497, 444, 458, 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, 588, 589, 457, 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,
773 253, 170, 331, 402, 402, 402, 402, 402, 554, 515,
774 401, 516, 517, 518, 515, 382, 516, 517, 518, 535,
775 535, 535, 535, 535, 536, 487, 402, 402, 402, 402,
776 402, 402, 170, 406, 407, 408, 406, 406, 406, 406,
777 406, 382, 606, 79, 382, 409, 409, 409, 409, 409,
778 251, 532, 532, 418, 532, 417, 519, 415, 590, 414,
779 472, 521, 473, 473, 473, 473, 473, 473, 409, 409,
780 409, 409, 409, 409, 375, 376, 376, 376, 376, 376,
781 376, 376, 376, 546, 572, 522, 523, 524, 522, 522,
782 522, 522, 522, 79, 413, 79, 525, 526, 527, 525,
784 525, 525, 525, 525, 412, 547, 573, 411, 79, 375,
785 376, 376, 376, 376, 376, 376, 376, 376, 79, 478,
786 572, 479, 479, 479, 479, 479, 479, 479, 479, 478,
787 410, 479, 479, 479, 479, 479, 479, 479, 479, 144,
788 144, 337, 573, 79, 382, 585, 432, 432, 432, 432,
789 432, 432, 432, 432, 384, 382, 331, 433, 433, 433,
790 433, 433, 433, 433, 433, 434, 251, 586, 585, 435,
791 435, 435, 435, 435, 478, 211, 479, 479, 479, 479,
792 479, 479, 496, 496, 496, 496, 496, 496, 496, 496,
793 586, 370, 435, 435, 435, 435, 435, 435, 439, 440,
795 441, 439, 439, 439, 439, 439, 442, 369, 363, 362,
796 443, 443, 443, 443, 443, 534, 534, 534, 534, 534,
797 534, 534, 534, 606, 357, 533, 533, 533, 533, 533,
798 533, 533, 533, 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 356, 331, 251, 211, 453, 453, 453, 453, 453, 170,
802 541, 541, 541, 541, 541, 541, 541, 541, 170, 542,
803 542, 542, 542, 542, 542, 542, 542, 453, 453, 453,
804 453, 453, 453, 472, 211, 473, 473, 473, 473, 473,
806 473, 473, 473, 170, 543, 543, 543, 543, 543, 544,
807 541, 541, 606, 276, 606, 606, 606, 320, 319, 515,
808 317, 516, 517, 518, 316, 315, 314, 313, 79, 472,
809 312, 474, 474, 474, 474, 474, 474, 474, 474, 606,
810 311, 516, 517, 518, 606, 310, 606, 606, 518, 292,
811 606, 251, 606, 606, 606, 211, 288, 211, 103, 519,
812 276, 278, 276, 277, 79, 472, 519, 475, 475, 475,
813 475, 475, 476, 477, 477, 552, 276, 274, 553, 553,
814 553, 553, 553, 553, 553, 553, 519, 273, 272, 271,
815 270, 519, 269, 97, 211, 514, 514, 521, 251, 514,
817 79, 472, 211, 477, 477, 477, 473, 473, 473, 473,
818 473, 514, 514, 514, 520, 520, 103, 559, 520, 560,
819 560, 560, 560, 560, 560, 560, 560, 83, 199, 239,
820 520, 520, 520, 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, 540, 540, 540,
825 540, 540, 540, 540, 540, 488, 488, 488, 488, 488,
826 488, 492, 493, 494, 492, 492, 492, 492, 492, 495,
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, 541,
835 541, 541, 541, 541, 541, 541, 541, 79, 472, 103,
836 473, 473, 473, 473, 473, 473, 473, 473, 170, 541,
837 541, 541, 541, 541, 541, 541, 541, 170, 541, 541,
839 541, 541, 541, 541, 553, 553, 553, 553, 553, 553,
840 553, 553, 95, 79, 382, 83, 530, 530, 530, 530,
841 530, 530, 530, 530, 487, 382, 83, 531, 531, 531,
842 531, 531, 531, 531, 531, 532, 199, 151, 152, 533,
843 533, 533, 533, 533, 553, 553, 553, 553, 553, 553,
844 553, 553, 576, 577, 578, 576, 576, 576, 576, 576,
845 146, 146, 533, 533, 533, 533, 533, 533, 537, 538,
846 539, 537, 537, 537, 537, 537, 138, 197, 132, 132,
847 540, 540, 540, 540, 540, 79, 554, 190, 555, 555,
848 555, 555, 555, 555, 579, 580, 581, 579, 579, 579,
850 579, 579, 189, 540, 540, 540, 540, 540, 540, 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, 595, 595, 595, 595, 595, 595, 103,
858 79, 554, 78, 557, 557, 557, 557, 557, 558, 555,
859 555, 595, 595, 595, 595, 595, 595, 595, 595, 596,
861 596, 596, 596, 596, 596, 596, 596, 597, 597, 597,
862 597, 597, 598, 595, 595, 103, 79, 382, 163, 566,
863 566, 566, 566, 566, 566, 566, 566, 532, 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, 590, 146, 591, 591,
867 591, 591, 591, 591, 138, 568, 568, 568, 568, 568,
868 568, 554, 132, 555, 555, 555, 555, 555, 555, 555,
869 555, 79, 595, 595, 595, 595, 595, 595, 595, 595,
870 128, 79, 595, 595, 595, 595, 595, 595, 595, 595,
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, 590, 606, 591, 591, 591, 591, 591,
877 591, 591, 591, 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, 590,
880 606, 592, 592, 592, 592, 592, 592, 592, 592, 606,
881 606, 606, 606, 606, 606, 79, 603, 603, 603, 603,
883 603, 603, 606, 79, 606, 606, 606, 606, 606, 606,
884 606, 606, 606, 606, 79, 590, 606, 593, 593, 593,
885 593, 593, 594, 591, 591, 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, 590, 606, 591, 591, 591, 591, 591, 591, 591,
889 591, 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, 590, 606, 591,
892 591, 591, 591, 591, 591, 591, 591, 606, 606, 606,
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,
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,
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,
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,
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,
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, 509, 509, 509, 509, 509, 509, 509, 509, 509,
955 509, 509, 509, 509, 509, 509, 509, 514, 514, 606,
956 514, 514, 514, 606, 606, 514, 514, 514, 606, 606,
957 514, 514, 514, 520, 520, 606, 520, 520, 520, 606,
958 606, 520, 520, 520, 606, 606, 520, 520, 520, 528,
960 528, 606, 606, 606, 528, 529, 606, 529, 529, 606,
961 606, 606, 529, 545, 545, 606, 606, 606, 606, 545,
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, 587, 587,
965 587, 587, 587, 587, 587, 587, 587, 587, 587, 587,
966 587, 587, 587, 587, 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,
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,
977 static yyconst short int yy_chk[3732] =
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,
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, 587, 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,
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,
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, 584,
1015 55, 87, 87, 87, 87, 87, 87, 87, 87, 198,
1016 9, 10, 10, 10, 10, 10, 582, 171, 86, 284,
1017 10, 10, 10, 55, 161, 89, 171, 89, 89, 222,
1018 568, 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, 512, 192, 10, 19,
1021 99, 99, 99, 99, 99, 99, 99, 99, 92, 19,
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, 512, 26, 26, 26,
1028 26, 26, 26, 32, 146, 238, 238, 146, 146, 32,
1029 567, 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,
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, 565, 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,
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, 564, 280, 63, 63, 63, 63, 63, 63,
1051 63, 63, 79, 560, 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,
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,
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, 549, 135, 135, 373, 219, 135,
1070 219, 219, 219, 219, 219, 219, 219, 219, 453, 453,
1071 371, 135, 135, 135, 164, 545, 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, 541, 165, 165, 165, 165, 165, 165, 165, 165,
1076 259, 259, 259, 259, 259, 259, 259, 259, 419, 419,
1078 259, 261, 261, 261, 261, 261, 261, 261, 261, 262,
1079 262, 262, 262, 262, 262, 165, 166, 529, 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,
1089 170, 170, 170, 170, 345, 345, 528, 170, 170, 170,
1090 170, 170, 287, 294, 345, 294, 294, 294, 294, 294,
1091 294, 294, 294, 307, 307, 307, 307, 307, 307, 513,
1092 170, 170, 170, 170, 170, 170, 172, 172, 172, 172,
1093 172, 172, 172, 172, 172, 172, 467, 467, 509, 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, 508, 376,
1098 173, 173, 173, 173, 173, 296, 347, 296, 296, 296,
1100 296, 296, 296, 296, 296, 306, 306, 306, 306, 306,
1101 306, 306, 306, 173, 173, 173, 173, 173, 173, 203,
1102 507, 203, 203, 203, 203, 203, 203, 203, 203, 304,
1103 304, 304, 304, 304, 304, 304, 304, 506, 309, 304,
1104 309, 309, 309, 309, 309, 309, 309, 309, 334, 334,
1105 334, 334, 334, 334, 203, 204, 501, 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,
1111 215, 215, 491, 491, 484, 215, 215, 215, 215, 215,
1112 336, 358, 336, 336, 336, 336, 336, 336, 336, 336,
1113 341, 483, 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, 502, 502, 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, 479, 242, 242,
1119 242, 242, 242, 242, 242, 242, 340, 364, 340, 340,
1120 340, 340, 340, 340, 340, 340, 350, 350, 350, 350,
1122 350, 350, 350, 350, 398, 670, 350, 510, 510, 364,
1123 670, 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,
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, 465, 260, 260, 260, 260, 260, 260, 263, 263,
1137 263, 263, 263, 263, 263, 263, 263, 263, 379, 536,
1138 536, 263, 263, 263, 263, 263, 390, 390, 390, 390,
1139 390, 390, 390, 390, 391, 391, 391, 391, 391, 391,
1140 460, 399, 399, 459, 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,
1144 394, 432, 394, 394, 394, 394, 394, 394, 394, 394,
1145 458, 473, 551, 551, 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, 571,
1149 571, 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,
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,
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,
1177 332, 332, 332, 332, 332, 486, 575, 575, 332, 332,
1178 332, 332, 332, 444, 444, 444, 444, 444, 444, 444,
1179 444, 446, 411, 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, 588, 588, 410, 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,
1188 451, 451, 381, 351, 351, 351, 351, 351, 555, 470,
1189 451, 470, 470, 470, 471, 530, 471, 471, 471, 494,
1190 494, 494, 494, 494, 494, 530, 351, 351, 351, 351,
1191 351, 351, 354, 354, 354, 354, 354, 354, 354, 354,
1192 354, 531, 533, 555, 566, 354, 354, 354, 354, 354,
1193 380, 531, 533, 370, 566, 369, 470, 363, 591, 362,
1194 476, 471, 476, 476, 476, 476, 476, 476, 354, 354,
1195 354, 354, 354, 354, 377, 377, 377, 377, 377, 377,
1196 377, 377, 377, 546, 548, 472, 472, 472, 472, 472,
1197 472, 472, 472, 591, 361, 476, 478, 478, 478, 478,
1199 478, 478, 478, 478, 360, 546, 548, 357, 377, 378,
1200 378, 378, 378, 378, 378, 378, 378, 378, 472, 480,
1201 572, 480, 480, 480, 480, 480, 480, 480, 480, 481,
1202 356, 481, 481, 481, 481, 481, 481, 481, 481, 619,
1203 619, 338, 572, 378, 386, 574, 386, 386, 386, 386,
1204 386, 386, 386, 386, 386, 389, 330, 389, 389, 389,
1205 389, 389, 389, 389, 389, 389, 329, 574, 585, 389,
1206 389, 389, 389, 389, 482, 328, 482, 482, 482, 482,
1207 482, 482, 487, 487, 487, 487, 487, 487, 487, 487,
1208 585, 320, 389, 389, 389, 389, 389, 389, 392, 392,
1210 392, 392, 392, 392, 392, 392, 392, 319, 315, 314,
1211 392, 392, 392, 392, 392, 493, 493, 493, 493, 493,
1212 493, 493, 493, 496, 311, 496, 496, 496, 496, 496,
1213 496, 496, 496, 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 310, 291, 290, 289, 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, 288, 423, 423, 423, 423, 423,
1221 423, 423, 423, 499, 499, 499, 499, 499, 499, 499,
1222 499, 499, 514, 278, 514, 514, 514, 277, 276, 515,
1223 274, 515, 515, 515, 273, 272, 271, 270, 423, 424,
1224 269, 424, 424, 424, 424, 424, 424, 424, 424, 516,
1225 268, 516, 516, 516, 517, 267, 517, 517, 517, 251,
1226 520, 250, 520, 520, 520, 249, 248, 246, 245, 514,
1227 236, 235, 234, 233, 424, 425, 515, 425, 425, 425,
1228 425, 425, 425, 425, 425, 518, 232, 229, 518, 518,
1229 518, 518, 518, 518, 518, 518, 516, 227, 226, 225,
1230 224, 517, 223, 220, 212, 519, 519, 520, 211, 519,
1232 425, 426, 208, 426, 426, 426, 426, 426, 426, 426,
1233 426, 519, 519, 519, 521, 521, 207, 525, 521, 525,
1234 525, 525, 525, 525, 525, 525, 525, 200, 199, 193,
1235 521, 521, 521, 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, 526, 181, 526,
1239 526, 526, 526, 526, 526, 526, 526, 532, 532, 532,
1240 532, 532, 532, 532, 532, 439, 439, 439, 439, 439,
1241 439, 442, 442, 442, 442, 442, 442, 442, 442, 442,
1243 180, 179, 178, 442, 442, 442, 442, 442, 527, 177,
1244 527, 527, 527, 527, 527, 527, 527, 527, 538, 538,
1245 538, 538, 538, 538, 538, 538, 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, 539, 539, 539, 539, 539, 539, 540, 175,
1249 540, 540, 540, 540, 540, 540, 540, 540, 542, 542,
1250 542, 542, 542, 542, 542, 542, 542, 474, 475, 169,
1251 475, 475, 475, 475, 475, 475, 475, 475, 543, 543,
1252 543, 543, 543, 543, 543, 543, 543, 544, 544, 544,
1254 544, 544, 544, 544, 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,
1265 559, 559, 121, 495, 495, 495, 495, 495, 495, 522,
1266 120, 522, 522, 522, 522, 522, 522, 522, 522, 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, 522, 523, 108, 523, 523, 523,
1270 523, 523, 523, 523, 523, 563, 107, 563, 563, 563,
1271 563, 563, 563, 569, 106, 569, 569, 569, 569, 569,
1272 569, 569, 569, 598, 598, 598, 598, 598, 598, 102,
1273 523, 524, 98, 524, 524, 524, 524, 524, 524, 524,
1274 524, 579, 579, 579, 579, 579, 579, 579, 579, 580,
1276 580, 580, 580, 580, 580, 580, 580, 581, 581, 581,
1277 581, 581, 581, 581, 581, 97, 524, 534, 93, 534,
1278 534, 534, 534, 534, 534, 534, 534, 534, 537, 90,
1279 537, 537, 537, 537, 537, 537, 537, 537, 82, 81,
1280 80, 78, 537, 537, 537, 537, 537, 73, 590, 590,
1281 590, 590, 590, 590, 590, 590, 594, 66, 594, 594,
1282 594, 594, 594, 594, 59, 537, 537, 537, 537, 537,
1283 537, 556, 54, 556, 556, 556, 556, 556, 556, 556,
1284 556, 590, 596, 596, 596, 596, 596, 596, 596, 596,
1285 51, 594, 597, 597, 597, 597, 597, 597, 597, 597,
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,
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, 592, 0, 592, 592, 592, 592, 592, 592, 592,
1304 592, 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, 592, 593, 0, 593,
1307 593, 593, 593, 593, 593, 593, 593, 0, 0, 0,
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, 593, 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,
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,
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,
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,
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,
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, 659, 659, 659, 659, 659, 659, 659,
1370 659, 659, 659, 659, 659, 659, 659, 660, 660, 0,
1371 660, 660, 660, 0, 0, 660, 660, 660, 0, 0,
1372 660, 660, 660, 661, 661, 0, 661, 661, 661, 0,
1373 0, 661, 661, 661, 0, 0, 661, 661, 661, 662,
1375 662, 0, 0, 0, 662, 663, 0, 663, 663, 0,
1376 0, 0, 663, 664, 664, 0, 0, 0, 0, 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, 669, 669,
1380 669, 669, 669, 669, 669, 669, 669, 669, 669, 669,
1381 669, 669, 669, 669, 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,
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,
1392 static yy_state_type yy_last_accepting_state;
1393 static char *yy_last_accepting_cpos;
1395 /* The intent behind this definition is that it'll catch
1396 * any uses of REJECT which flex missed.
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
1407 * Copyright (c) 1996, 1998-2005, 2007-2011
1408 * Todd C. Miller <Todd.Miller@courtesan.com>
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.
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.
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.
1432 #include <sys/types.h>
1433 #include <sys/param.h>
1434 #include <sys/stat.h>
1437 # include <stdlib.h>
1438 # include <stddef.h>
1440 # ifdef HAVE_STDLIB_H
1441 # include <stdlib.h>
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)
1460 # define dirent direct
1461 # define NAMLEN(dirent) (dirent)->d_namlen
1462 # ifdef HAVE_SYS_NDIR_H
1463 # include <sys/ndir.h>
1465 # ifdef HAVE_SYS_DIR_H
1466 # include <sys/dir.h>
1474 #include "sudoers.h"
1480 extern YYSTYPE yylval;
1481 extern bool parse_error;
1486 static bool continued, sawspace;
1487 static int prev_state;
1489 static bool _push_include(char *, bool);
1490 static bool pop_include(void);
1491 static char *parse_include(char *);
1493 static int sudoers_trace_print(const char *msg);
1494 int (*trace_print)(const char *msg) = sudoers_trace_print;
1496 #define LEXRETURN(n) do { \
1501 #define push_include(_p) (_push_include((_p), false))
1502 #define push_includedir(_p) (_push_include((_p), true))
1503 #define YY_NO_INPUT 1
1504 #define YY_NO_UNPUT 1
1515 #line 1515 "lex.yy.c"
1517 /* Macros after this point can all be overridden by user definitions in
1521 #ifndef YY_SKIP_YYWRAP
1523 extern "C" int yywrap YY_PROTO(( void ));
1525 extern int yywrap YY_PROTO(( void ));
1530 static void yyunput YY_PROTO(( int c, char *buf_ptr ));
1534 static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
1537 #ifdef YY_NEED_STRLEN
1538 static int yy_flex_strlen YY_PROTO(( yyconst char * ));
1543 static int yyinput YY_PROTO(( void ));
1545 static int input YY_PROTO(( void ));
1549 #if defined(YY_STACK_USED) && YY_STACK_USED
1550 static int yy_start_stack_ptr = 0;
1551 static int yy_start_stack_depth = 0;
1552 static int *yy_start_stack = 0;
1553 #ifndef YY_NO_PUSH_STATE
1554 static void yy_push_state YY_PROTO(( int new_state ));
1556 #ifndef YY_NO_POP_STATE
1557 static void yy_pop_state YY_PROTO(( void ));
1559 #ifndef YY_NO_TOP_STATE
1560 static int yy_top_state YY_PROTO(( void ));
1564 #define YY_NO_PUSH_STATE 1
1565 #define YY_NO_POP_STATE 1
1566 #define YY_NO_TOP_STATE 1
1569 #ifdef YY_MALLOC_DECL
1577 /* Just try to get by without declaring the routines. This will fail
1578 * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
1579 * or sizeof(void*) != sizeof(int).
1584 /* Amount of stuff to slurp up with each read. */
1585 #ifndef YY_READ_BUF_SIZE
1586 #define YY_READ_BUF_SIZE 8192
1589 /* Copy whatever the last rule matched to the standard output. */
1592 /* This used to be an fputs(), but since the string might contain NUL's,
1593 * we now use fwrite().
1595 #define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
1598 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
1599 * is returned in "result".
1602 #define YY_INPUT(buf,result,max_size) \
1603 if ( yy_current_buffer->yy_is_interactive ) \
1606 for ( n = 0; n < max_size && \
1607 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
1608 buf[n] = (char) c; \
1610 buf[n++] = (char) c; \
1611 if ( c == EOF && ferror( yyin ) ) \
1612 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1615 else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
1616 && ferror( yyin ) ) \
1617 YY_FATAL_ERROR( "input in flex scanner failed" );
1620 /* No semi-colon after return; correct usage is to write "yyterminate();" -
1621 * we don't want an extra ';' after the "return" because that will cause
1622 * some compilers to complain about unreachable statements.
1625 #define yyterminate() return YY_NULL
1628 /* Number of entries by which start-condition stack grows. */
1629 #ifndef YY_START_STACK_INCR
1630 #define YY_START_STACK_INCR 25
1633 /* Report a fatal error. */
1634 #ifndef YY_FATAL_ERROR
1635 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
1638 /* Default declaration of generated scanner - a define so the user can
1639 * easily add parameters.
1642 #define YY_DECL int yylex YY_PROTO(( void ))
1645 /* Code executed at the beginning of each rule, after yytext and yyleng
1648 #ifndef YY_USER_ACTION
1649 #define YY_USER_ACTION
1652 /* Code executed at the end of each rule. */
1654 #define YY_BREAK break;
1657 #define YY_RULE_SETUP \
1659 yy_current_buffer->yy_at_bol = \
1660 (yytext[yyleng - 1] == '\n'); \
1665 register yy_state_type yy_current_state;
1666 register char *yy_cp, *yy_bp;
1667 register int yy_act;
1671 #line 1671 "lex.yy.c"
1682 yy_start = 1; /* first start state */
1690 if ( ! yy_current_buffer )
1692 yy_create_buffer( yyin, YY_BUF_SIZE );
1694 yy_load_buffer_state();
1697 while ( 1 ) /* loops until end-of-file is reached */
1701 /* Support of yytext. */
1702 *yy_cp = yy_hold_char;
1704 /* yy_bp points to the position in yy_ch_buf of the start of
1709 yy_current_state = yy_start;
1710 yy_current_state += YY_AT_BOL();
1714 register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
1715 if ( yy_accept[yy_current_state] )
1717 yy_last_accepting_state = yy_current_state;
1718 yy_last_accepting_cpos = yy_cp;
1720 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1722 yy_current_state = (int) yy_def[yy_current_state];
1723 if ( yy_current_state >= 607 )
1724 yy_c = yy_meta[(unsigned int) yy_c];
1726 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1729 while ( yy_base[yy_current_state] != 3665 );
1732 yy_act = yy_accept[yy_current_state];
1734 { /* have to back up */
1735 yy_cp = yy_last_accepting_cpos;
1736 yy_current_state = yy_last_accepting_state;
1737 yy_act = yy_accept[yy_current_state];
1740 YY_DO_BEFORE_ACTION;
1743 do_action: /* This label is used only to access EOF actions. */
1747 { /* beginning of action switch */
1748 case 0: /* must back up */
1749 /* undo the effects of YY_DO_BEFORE_ACTION */
1750 *yy_cp = yy_hold_char;
1751 yy_cp = yy_last_accepting_cpos;
1752 yy_current_state = yy_last_accepting_state;
1753 goto yy_find_action;
1773 LEXTRACE("DEFVAR ");
1774 if (!fill(yytext, yyleng))
1817 LEXTRACE("BEGINSTR ");
1818 yylval.string = NULL;
1819 prev_state = YY_START;
1827 LEXTRACE("WORD(2) ");
1828 if (!fill(yytext, yyleng))
1839 /* Line continuation char followed by newline. */
1848 LEXTRACE("ENDSTR ");
1851 if (yylval.string == NULL) {
1852 LEXTRACE("ERROR "); /* empty string */
1855 if (prev_state == INITIAL) {
1856 switch (yylval.string[0]) {
1858 if (yylval.string[1] == '\0' ||
1859 (yylval.string[1] == ':' &&
1860 yylval.string[2] == '\0')) {
1861 LEXTRACE("ERROR "); /* empty group */
1864 LEXTRACE("USERGROUP ");
1865 LEXRETURN(USERGROUP);
1867 if (yylval.string[1] == '\0') {
1868 LEXTRACE("ERROR "); /* empty netgroup */
1871 LEXTRACE("NETGROUP ");
1872 LEXRETURN(NETGROUP);
1875 LEXTRACE("WORD(4) ");
1883 LEXTRACE("BACKSLASH ");
1884 if (!append(yytext, yyleng))
1892 LEXTRACE("STRBODY ");
1893 if (!append(yytext, yyleng))
1903 /* quoted fnmatch glob char, pass verbatim */
1904 LEXTRACE("QUOTEDCHAR ");
1905 if (!fill_args(yytext, 2, sawspace))
1914 /* quoted sudoers special char, strip backslash */
1915 LEXTRACE("QUOTEDCHAR ");
1916 if (!fill_args(yytext + 1, 1, sawspace))
1928 } /* end of command line args */
1935 if (!fill_args(yytext, yyleng, sawspace))
1938 } /* a command line arg */
1952 if ((path = parse_include(yytext)) == NULL)
1955 LEXTRACE("INCLUDE\n");
1957 /* Push current buffer and switch to include file */
1958 if (!push_include(path))
1973 if ((path = parse_include(yytext)) == NULL)
1976 LEXTRACE("INCLUDEDIR\n");
1979 * Push current buffer and switch to include file.
1980 * We simply ignore empty directories.
1982 if (!push_includedir(path) && parse_error)
1998 for (n = 0; isblank((unsigned char)yytext[n]); n++)
2000 n += sizeof("Defaults") - 1;
2001 if ((deftype = yytext[n++]) != '\0') {
2002 while (isblank((unsigned char)yytext[n]))
2009 LEXTRACE("DEFAULTS_USER ");
2010 LEXRETURN(DEFAULTS_USER);
2013 LEXTRACE("DEFAULTS_RUNAS ");
2014 LEXRETURN(DEFAULTS_RUNAS);
2017 LEXTRACE("DEFAULTS_HOST ");
2018 LEXRETURN(DEFAULTS_HOST);
2021 LEXTRACE("DEFAULTS_CMND ");
2022 LEXRETURN(DEFAULTS_CMND);
2024 LEXTRACE("DEFAULTS ");
2025 LEXRETURN(DEFAULTS);
2040 for (n = 0; isblank((unsigned char)yytext[n]); n++)
2042 switch (yytext[n]) {
2044 LEXTRACE("HOSTALIAS ");
2045 LEXRETURN(HOSTALIAS);
2047 LEXTRACE("CMNDALIAS ");
2048 LEXRETURN(CMNDALIAS);
2050 LEXTRACE("USERALIAS ");
2051 LEXRETURN(USERALIAS);
2053 LEXTRACE("RUNASALIAS ");
2054 LEXRETURN(RUNASALIAS);
2062 /* cmnd does not require passwd for this user */
2063 LEXTRACE("NOPASSWD ");
2064 LEXRETURN(NOPASSWD);
2071 /* cmnd requires passwd for this user */
2072 LEXTRACE("PASSWD ");
2080 LEXTRACE("NOEXEC ");
2096 LEXTRACE("SETENV ");
2104 LEXTRACE("NOSETENV ");
2105 LEXRETURN(NOSETENV);
2112 LEXTRACE("LOG_OUTPUT ");
2113 LEXRETURN(LOG_OUTPUT);
2120 LEXTRACE("NOLOG_OUTPUT ");
2121 LEXRETURN(NOLOG_OUTPUT);
2128 LEXTRACE("LOG_INPUT ");
2129 LEXRETURN(LOG_INPUT);
2136 LEXTRACE("NOLOG_INPUT ");
2137 LEXRETURN(NOLOG_INPUT);
2144 /* empty group or netgroup */
2154 if (!fill(yytext, yyleng))
2156 LEXTRACE("NETGROUP ");
2157 LEXRETURN(NETGROUP);
2165 if (!fill(yytext, yyleng))
2167 LEXTRACE("USERGROUP ");
2168 LEXRETURN(USERGROUP);
2175 if (!fill(yytext, yyleng))
2177 LEXTRACE("NTWKADDR ");
2178 LEXRETURN(NTWKADDR);
2185 if (!fill(yytext, yyleng))
2187 LEXTRACE("NTWKADDR ");
2188 LEXRETURN(NTWKADDR);
2195 if (!ipv6_valid(yytext)) {
2199 if (!fill(yytext, yyleng))
2201 LEXTRACE("NTWKADDR ");
2202 LEXRETURN(NTWKADDR);
2209 if (!ipv6_valid(yytext)) {
2213 if (!fill(yytext, yyleng))
2215 LEXTRACE("NTWKADDR ");
2216 LEXRETURN(NTWKADDR);
2256 #ifndef HAVE_SELINUX
2259 if (!fill(yytext, yyleng))
2269 /* no command args allowed for Defaults!/path */
2270 if (!fill_cmnd(yytext, yyleng))
2272 LEXTRACE("COMMAND ");
2281 LEXTRACE("COMMAND ");
2282 if (!fill_cmnd(yytext, yyleng))
2290 /* directories can't have args... */
2291 if (yytext[yyleng - 1] == '/') {
2292 LEXTRACE("COMMAND ");
2293 if (!fill_cmnd(yytext, yyleng))
2298 LEXTRACE("COMMAND ");
2299 if (!fill_cmnd(yytext, yyleng))
2308 LEXTRACE("BEGINSTR ");
2309 yylval.string = NULL;
2310 prev_state = YY_START;
2319 if (!fill(yytext, yyleng))
2321 LEXTRACE("WORD(5) ");
2371 LEXRETURN('!'); /* return '!' */
2379 if (YY_START == INSTR) {
2381 LEXRETURN(ERROR); /* line break in string */
2388 } /* return newline */
2393 { /* throw away space/tabs */
2394 sawspace = true; /* but remember for fill_args */
2401 sawspace = true; /* remember for fill_args */
2404 } /* throw away EOL after \ */
2415 } /* comment, not uid/gid */
2425 case YY_STATE_EOF(INITIAL):
2426 case YY_STATE_EOF(GOTDEFS):
2427 case YY_STATE_EOF(GOTCMND):
2428 case YY_STATE_EOF(STARTDEFS):
2429 case YY_STATE_EOF(INDEFS):
2430 case YY_STATE_EOF(INSTR):
2433 if (YY_START != INITIAL) {
2447 #line 2447 "lex.yy.c"
2449 case YY_END_OF_BUFFER:
2451 /* Amount of text matched not including the EOB char. */
2452 int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
2454 /* Undo the effects of YY_DO_BEFORE_ACTION. */
2455 *yy_cp = yy_hold_char;
2456 YY_RESTORE_YY_MORE_OFFSET
2458 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
2460 /* We're scanning a new file or input source. It's
2461 * possible that this happened because the user
2462 * just pointed yyin at a new source and called
2463 * yylex(). If so, then we have to assure
2464 * consistency between yy_current_buffer and our
2465 * globals. Here is the right place to do so, because
2466 * this is the first action (other than possibly a
2467 * back-up) that will match for the new input source.
2469 yy_n_chars = yy_current_buffer->yy_n_chars;
2470 yy_current_buffer->yy_input_file = yyin;
2471 yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
2474 /* Note that here we test for yy_c_buf_p "<=" to the position
2475 * of the first EOB in the buffer, since yy_c_buf_p will
2476 * already have been incremented past the NUL character
2477 * (since all states make transitions on EOB to the
2478 * end-of-buffer state). Contrast this with the test
2481 if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
2482 { /* This was really a NUL. */
2483 yy_state_type yy_next_state;
2485 yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
2487 yy_current_state = yy_get_previous_state();
2489 /* Okay, we're now positioned to make the NUL
2490 * transition. We couldn't have
2491 * yy_get_previous_state() go ahead and do it
2492 * for us because it doesn't know how to deal
2493 * with the possibility of jamming (and we don't
2494 * want to build jamming into it because then it
2495 * will run more slowly).
2498 yy_next_state = yy_try_NUL_trans( yy_current_state );
2500 yy_bp = yytext_ptr + YY_MORE_ADJ;
2502 if ( yy_next_state )
2504 /* Consume the NUL. */
2505 yy_cp = ++yy_c_buf_p;
2506 yy_current_state = yy_next_state;
2513 goto yy_find_action;
2517 else switch ( yy_get_next_buffer() )
2519 case EOB_ACT_END_OF_FILE:
2521 yy_did_buffer_switch_on_eof = 0;
2525 /* Note: because we've taken care in
2526 * yy_get_next_buffer() to have set up
2527 * yytext, we can now set up
2528 * yy_c_buf_p so that if some total
2529 * hoser (like flex itself) wants to
2530 * call the scanner after we return the
2531 * YY_NULL, it'll still work - another
2532 * YY_NULL will get returned.
2534 yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
2536 yy_act = YY_STATE_EOF(YY_START);
2542 if ( ! yy_did_buffer_switch_on_eof )
2548 case EOB_ACT_CONTINUE_SCAN:
2550 yytext_ptr + yy_amount_of_matched_text;
2552 yy_current_state = yy_get_previous_state();
2555 yy_bp = yytext_ptr + YY_MORE_ADJ;
2558 case EOB_ACT_LAST_MATCH:
2560 &yy_current_buffer->yy_ch_buf[yy_n_chars];
2562 yy_current_state = yy_get_previous_state();
2565 yy_bp = yytext_ptr + YY_MORE_ADJ;
2566 goto yy_find_action;
2573 "fatal flex scanner internal error--no action found" );
2574 } /* end of action switch */
2575 } /* end of scanning one token */
2576 } /* end of yylex */
2579 /* yy_get_next_buffer - try to read in a new buffer
2581 * Returns a code representing an action:
2582 * EOB_ACT_LAST_MATCH -
2583 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
2584 * EOB_ACT_END_OF_FILE - end of file
2587 static int yy_get_next_buffer()
2589 register char *dest = yy_current_buffer->yy_ch_buf;
2590 register char *source = yytext_ptr;
2591 register int number_to_move, i;
2594 if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
2596 "fatal flex scanner internal error--end of buffer missed" );
2598 if ( yy_current_buffer->yy_fill_buffer == 0 )
2599 { /* Don't try to fill the buffer, so this is an EOF. */
2600 if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
2602 /* We matched a single character, the EOB, so
2603 * treat this as a final EOF.
2605 return EOB_ACT_END_OF_FILE;
2610 /* We matched some text prior to the EOB, first
2613 return EOB_ACT_LAST_MATCH;
2617 /* Try to read more data. */
2619 /* First move last chars to start of buffer. */
2620 number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
2622 for ( i = 0; i < number_to_move; ++i )
2623 *(dest++) = *(source++);
2625 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
2626 /* don't do the read, it's not guaranteed to return an EOF,
2629 yy_current_buffer->yy_n_chars = yy_n_chars = 0;
2634 yy_current_buffer->yy_buf_size - number_to_move - 1;
2636 while ( num_to_read <= 0 )
2637 { /* Not enough room in the buffer - grow it. */
2638 #ifdef YY_USES_REJECT
2640 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
2643 /* just a shorter name for the current buffer */
2644 YY_BUFFER_STATE b = yy_current_buffer;
2646 int yy_c_buf_p_offset =
2647 (int) (yy_c_buf_p - b->yy_ch_buf);
2649 if ( b->yy_is_our_buffer )
2651 int new_size = b->yy_buf_size * 2;
2653 if ( new_size <= 0 )
2654 b->yy_buf_size += b->yy_buf_size / 8;
2656 b->yy_buf_size *= 2;
2658 b->yy_ch_buf = (char *)
2659 /* Include room in for 2 EOB chars. */
2660 yy_flex_realloc( (void *) b->yy_ch_buf,
2661 b->yy_buf_size + 2 );
2664 /* Can't grow it, we don't own it. */
2667 if ( ! b->yy_ch_buf )
2669 "fatal error - scanner input buffer overflow" );
2671 yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
2673 num_to_read = yy_current_buffer->yy_buf_size -
2678 if ( num_to_read > YY_READ_BUF_SIZE )
2679 num_to_read = YY_READ_BUF_SIZE;
2681 /* Read in more data. */
2682 YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
2683 yy_n_chars, num_to_read );
2685 yy_current_buffer->yy_n_chars = yy_n_chars;
2688 if ( yy_n_chars == 0 )
2690 if ( number_to_move == YY_MORE_ADJ )
2692 ret_val = EOB_ACT_END_OF_FILE;
2698 ret_val = EOB_ACT_LAST_MATCH;
2699 yy_current_buffer->yy_buffer_status =
2700 YY_BUFFER_EOF_PENDING;
2705 ret_val = EOB_ACT_CONTINUE_SCAN;
2707 yy_n_chars += number_to_move;
2708 yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
2709 yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
2711 yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
2717 /* yy_get_previous_state - get the state just before the EOB char was reached */
2719 static yy_state_type yy_get_previous_state()
2721 register yy_state_type yy_current_state;
2722 register char *yy_cp;
2724 yy_current_state = yy_start;
2725 yy_current_state += YY_AT_BOL();
2727 for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
2729 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
2730 if ( yy_accept[yy_current_state] )
2732 yy_last_accepting_state = yy_current_state;
2733 yy_last_accepting_cpos = yy_cp;
2735 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2737 yy_current_state = (int) yy_def[yy_current_state];
2738 if ( yy_current_state >= 607 )
2739 yy_c = yy_meta[(unsigned int) yy_c];
2741 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2744 return yy_current_state;
2748 /* yy_try_NUL_trans - try to make a transition on the NUL character
2751 * next_state = yy_try_NUL_trans( current_state );
2754 #ifdef YY_USE_PROTOS
2755 static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
2757 static yy_state_type yy_try_NUL_trans( yy_current_state )
2758 yy_state_type yy_current_state;
2761 register int yy_is_jam;
2762 register char *yy_cp = yy_c_buf_p;
2764 register YY_CHAR yy_c = 1;
2765 if ( yy_accept[yy_current_state] )
2767 yy_last_accepting_state = yy_current_state;
2768 yy_last_accepting_cpos = yy_cp;
2770 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2772 yy_current_state = (int) yy_def[yy_current_state];
2773 if ( yy_current_state >= 607 )
2774 yy_c = yy_meta[(unsigned int) yy_c];
2776 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2777 yy_is_jam = (yy_current_state == 606);
2779 return yy_is_jam ? 0 : yy_current_state;
2784 #ifdef YY_USE_PROTOS
2785 static void yyunput( int c, register char *yy_bp )
2787 static void yyunput( c, yy_bp )
2789 register char *yy_bp;
2792 register char *yy_cp = yy_c_buf_p;
2794 /* undo effects of setting up yytext */
2795 *yy_cp = yy_hold_char;
2797 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
2798 { /* need to shift things up to make room */
2799 /* +2 for EOB chars. */
2800 register int number_to_move = yy_n_chars + 2;
2801 register char *dest = &yy_current_buffer->yy_ch_buf[
2802 yy_current_buffer->yy_buf_size + 2];
2803 register char *source =
2804 &yy_current_buffer->yy_ch_buf[number_to_move];
2806 while ( source > yy_current_buffer->yy_ch_buf )
2807 *--dest = *--source;
2809 yy_cp += (int) (dest - source);
2810 yy_bp += (int) (dest - source);
2811 yy_current_buffer->yy_n_chars =
2812 yy_n_chars = yy_current_buffer->yy_buf_size;
2814 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
2815 YY_FATAL_ERROR( "flex scanner push-back overflow" );
2818 *--yy_cp = (char) c;
2822 yy_hold_char = *yy_cp;
2825 #endif /* ifndef YY_NO_UNPUT */
2830 static int yyinput()
2837 *yy_c_buf_p = yy_hold_char;
2839 if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
2841 /* yy_c_buf_p now points to the character we want to return.
2842 * If this occurs *before* the EOB characters, then it's a
2843 * valid NUL; if not, then we've hit the end of the buffer.
2845 if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
2846 /* This was really a NUL. */
2850 { /* need more input */
2851 int offset = yy_c_buf_p - yytext_ptr;
2854 switch ( yy_get_next_buffer() )
2856 case EOB_ACT_LAST_MATCH:
2857 /* This happens because yy_g_n_b()
2858 * sees that we've accumulated a
2859 * token and flags that we need to
2860 * try matching the token before
2861 * proceeding. But for input(),
2862 * there's no matching to consider.
2863 * So convert the EOB_ACT_LAST_MATCH
2864 * to EOB_ACT_END_OF_FILE.
2867 /* Reset buffer status. */
2872 case EOB_ACT_END_OF_FILE:
2877 if ( ! yy_did_buffer_switch_on_eof )
2886 case EOB_ACT_CONTINUE_SCAN:
2887 yy_c_buf_p = yytext_ptr + offset;
2893 c = *(unsigned char *) yy_c_buf_p; /* cast for 8-bit char's */
2894 *yy_c_buf_p = '\0'; /* preserve yytext */
2895 yy_hold_char = *++yy_c_buf_p;
2897 yy_current_buffer->yy_at_bol = (c == '\n');
2901 #endif /* ifndef YY_NO_INPUT */
2904 #ifdef YY_USE_PROTOS
2905 void yyrestart( FILE *input_file )
2907 void yyrestart( input_file )
2911 if ( ! yy_current_buffer )
2912 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
2914 yy_init_buffer( yy_current_buffer, input_file );
2915 yy_load_buffer_state();
2919 #ifdef YY_USE_PROTOS
2920 void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
2922 void yy_switch_to_buffer( new_buffer )
2923 YY_BUFFER_STATE new_buffer;
2926 if ( yy_current_buffer == new_buffer )
2929 if ( yy_current_buffer )
2931 /* Flush out information for old buffer. */
2932 *yy_c_buf_p = yy_hold_char;
2933 yy_current_buffer->yy_buf_pos = yy_c_buf_p;
2934 yy_current_buffer->yy_n_chars = yy_n_chars;
2937 yy_current_buffer = new_buffer;
2938 yy_load_buffer_state();
2940 /* We don't actually know whether we did this switch during
2941 * EOF (yywrap()) processing, but the only time this flag
2942 * is looked at is after yywrap() is called, so it's safe
2943 * to go ahead and always set it.
2945 yy_did_buffer_switch_on_eof = 1;
2949 #ifdef YY_USE_PROTOS
2950 void yy_load_buffer_state( void )
2952 void yy_load_buffer_state()
2955 yy_n_chars = yy_current_buffer->yy_n_chars;
2956 yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
2957 yyin = yy_current_buffer->yy_input_file;
2958 yy_hold_char = *yy_c_buf_p;
2962 #ifdef YY_USE_PROTOS
2963 YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
2965 YY_BUFFER_STATE yy_create_buffer( file, size )
2972 b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
2974 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
2976 b->yy_buf_size = size;
2978 /* yy_ch_buf has to be 2 characters longer than the size given because
2979 * we need to put in 2 end-of-buffer characters.
2981 b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
2982 if ( ! b->yy_ch_buf )
2983 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
2985 b->yy_is_our_buffer = 1;
2987 yy_init_buffer( b, file );
2993 #ifdef YY_USE_PROTOS
2994 void yy_delete_buffer( YY_BUFFER_STATE b )
2996 void yy_delete_buffer( b )
3003 if ( b == yy_current_buffer )
3004 yy_current_buffer = (YY_BUFFER_STATE) 0;
3006 if ( b->yy_is_our_buffer )
3007 yy_flex_free( (void *) b->yy_ch_buf );
3009 yy_flex_free( (void *) b );
3013 #ifndef YY_ALWAYS_INTERACTIVE
3014 #ifndef YY_NEVER_INTERACTIVE
3019 #ifdef YY_USE_PROTOS
3020 void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
3022 void yy_init_buffer( b, file )
3031 yy_flush_buffer( b );
3033 b->yy_input_file = file;
3034 b->yy_fill_buffer = 1;
3036 #if defined(YY_ALWAYS_INTERACTIVE) && YY_ALWAYS_INTERACTIVE
3037 b->yy_is_interactive = 1;
3039 #if defined(YY_NEVER_INTERACTIVE) && YY_NEVER_INTERACTIVE
3040 b->yy_is_interactive = 0;
3042 b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
3049 #ifdef YY_USE_PROTOS
3050 void yy_flush_buffer( YY_BUFFER_STATE b )
3052 void yy_flush_buffer( b )
3062 /* We always need two end-of-buffer characters. The first causes
3063 * a transition to the end-of-buffer state. The second causes
3064 * a jam in that state.
3066 b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
3067 b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
3069 b->yy_buf_pos = &b->yy_ch_buf[0];
3072 b->yy_buffer_status = YY_BUFFER_NEW;
3074 if ( b == yy_current_buffer )
3075 yy_load_buffer_state();
3079 #ifndef YY_NO_SCAN_BUFFER
3080 #ifdef YY_USE_PROTOS
3081 YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
3083 YY_BUFFER_STATE yy_scan_buffer( base, size )
3091 base[size-2] != YY_END_OF_BUFFER_CHAR ||
3092 base[size-1] != YY_END_OF_BUFFER_CHAR )
3093 /* They forgot to leave room for the EOB's. */
3096 b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
3098 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
3100 b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
3101 b->yy_buf_pos = b->yy_ch_buf = base;
3102 b->yy_is_our_buffer = 0;
3103 b->yy_input_file = 0;
3104 b->yy_n_chars = b->yy_buf_size;
3105 b->yy_is_interactive = 0;
3107 b->yy_fill_buffer = 0;
3108 b->yy_buffer_status = YY_BUFFER_NEW;
3110 yy_switch_to_buffer( b );
3117 #ifndef YY_NO_SCAN_STRING
3118 #ifdef YY_USE_PROTOS
3119 YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
3121 YY_BUFFER_STATE yy_scan_string( yy_str )
3122 yyconst char *yy_str;
3126 for ( len = 0; yy_str[len]; ++len )
3129 return yy_scan_bytes( yy_str, len );
3134 #ifndef YY_NO_SCAN_BYTES
3135 #ifdef YY_USE_PROTOS
3136 YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
3138 YY_BUFFER_STATE yy_scan_bytes( bytes, len )
3139 yyconst char *bytes;
3148 /* Get memory for full buffer, including space for trailing EOB's. */
3150 buf = (char *) yy_flex_alloc( n );
3152 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
3154 for ( i = 0; i < len; ++i )
3157 buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
3159 b = yy_scan_buffer( buf, n );
3161 YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
3163 /* It's okay to grow etc. this buffer, and we should throw it
3164 * away when we're done.
3166 b->yy_is_our_buffer = 1;
3173 #ifndef YY_NO_PUSH_STATE
3174 #ifdef YY_USE_PROTOS
3175 static void yy_push_state( int new_state )
3177 static void yy_push_state( new_state )
3181 if ( yy_start_stack_ptr >= yy_start_stack_depth )
3185 yy_start_stack_depth += YY_START_STACK_INCR;
3186 new_size = yy_start_stack_depth * sizeof( int );
3188 if ( ! yy_start_stack )
3189 yy_start_stack = (int *) yy_flex_alloc( new_size );
3192 yy_start_stack = (int *) yy_flex_realloc(
3193 (void *) yy_start_stack, new_size );
3195 if ( ! yy_start_stack )
3197 "out of memory expanding start-condition stack" );
3200 yy_start_stack[yy_start_stack_ptr++] = YY_START;
3207 #ifndef YY_NO_POP_STATE
3208 static void yy_pop_state()
3210 if ( --yy_start_stack_ptr < 0 )
3211 YY_FATAL_ERROR( "start-condition stack underflow" );
3213 BEGIN(yy_start_stack[yy_start_stack_ptr]);
3218 #ifndef YY_NO_TOP_STATE
3219 static int yy_top_state()
3221 return yy_start_stack[yy_start_stack_ptr - 1];
3225 #ifndef YY_EXIT_FAILURE
3226 #define YY_EXIT_FAILURE 2
3229 #ifdef YY_USE_PROTOS
3230 static void yy_fatal_error( yyconst char msg[] )
3232 static void yy_fatal_error( msg )
3236 (void) fprintf( stderr, "%s\n", msg );
3237 exit( YY_EXIT_FAILURE );
3242 /* Redefine yyless() so it works in section 3 code. */
3248 /* Undo effects of setting up yytext. */ \
3249 yytext[yyleng] = yy_hold_char; \
3250 yy_c_buf_p = yytext + n; \
3251 yy_hold_char = *yy_c_buf_p; \
3252 *yy_c_buf_p = '\0'; \
3258 /* Internal utility routines. */
3261 #ifdef YY_USE_PROTOS
3262 static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
3264 static void yy_flex_strncpy( s1, s2, n )
3271 for ( i = 0; i < n; ++i )
3276 #ifdef YY_NEED_STRLEN
3277 #ifdef YY_USE_PROTOS
3278 static int yy_flex_strlen( yyconst char *s )
3280 static int yy_flex_strlen( s )
3285 for ( n = 0; s[n]; ++n )
3293 #ifdef YY_USE_PROTOS
3294 static void *yy_flex_alloc( yy_size_t size )
3296 static void *yy_flex_alloc( size )
3300 return (void *) malloc( size );
3303 #ifdef YY_USE_PROTOS
3304 static void *yy_flex_realloc( void *ptr, yy_size_t size )
3306 static void *yy_flex_realloc( ptr, size )
3311 /* The cast to (char *) in the following accommodates both
3312 * implementations that use char* generic pointers, and those
3313 * that use void* generic pointers. It works with the latter
3314 * because both ANSI C and C++ allow castless assignment from
3315 * any pointer type to void*, and deal with argument conversions
3316 * as though doing an assignment.
3318 return (void *) realloc( (char *) ptr, size );
3321 #ifdef YY_USE_PROTOS
3322 static void yy_flex_free( void *ptr )
3324 static void yy_flex_free( ptr )
3331 #if defined(YY_MAIN) && YY_MAIN
3342 struct path_list *next;
3345 struct include_stack {
3348 struct path_list *more; /* more files in case of includedir */
3354 pl_compare(const void *v1, const void *v2)
3356 const struct path_list * const *p1 = v1;
3357 const struct path_list * const *p2 = v2;
3359 return strcmp((*p1)->path, (*p2)->path);
3363 switch_dir(struct include_stack *stack, char *dirpath)
3368 struct dirent *dent;
3370 struct path_list *pl, *first = NULL;
3371 struct path_list **sorted = NULL;
3372 debug_decl(switch_dir, SUDO_DEBUG_PARSER)
3374 if (!(dir = opendir(dirpath))) {
3375 if (errno != ENOENT) {
3377 if (asprintf(&errbuf, _("%s: %s"), dirpath, strerror(errno)) != -1) {
3381 yyerror(_("unable to allocate memory"));
3386 while ((dent = readdir(dir))) {
3387 /* Ignore files that end in '~' or have a '.' in them. */
3388 if (dent->d_name[0] == '\0' || dent->d_name[NAMLEN(dent) - 1] == '~'
3389 || strchr(dent->d_name, '.') != NULL) {
3392 if (asprintf(&path, "%s/%s", dirpath, dent->d_name) == -1) {
3396 if (stat(path, &sb) != 0 || !S_ISREG(sb.st_mode)) {
3401 pl = malloc(sizeof(*pl));
3414 /* Sort the list as an array. */
3415 sorted = malloc(sizeof(*sorted) * count);
3419 for (i = 0; i < count; i++) {
3423 qsort(sorted, count, sizeof(*sorted), pl_compare);
3425 /* Apply sorting to the list. */
3427 sorted[count - 1]->next = NULL;
3428 for (i = 1; i < count; i++)
3429 sorted[i - 1]->next = sorted[i];
3432 /* Pull out the first element for parsing, leave the rest for later. */
3443 debug_return_str(path);
3445 while (first != NULL) {
3454 debug_return_str(NULL);
3457 #define MAX_SUDOERS_DEPTH 128
3458 #define SUDOERS_STACK_INCREMENT 16
3460 static size_t istacksize, idepth;
3461 static struct include_stack *istack;
3462 static bool keepopen;
3467 struct path_list *pl;
3468 debug_decl(init_lexer, SUDO_DEBUG_PARSER)
3472 while ((pl = istack[idepth].more) != NULL) {
3473 istack[idepth].more = pl->next;
3477 efree(istack[idepth].path);
3478 if (idepth && !istack[idepth].keepopen)
3479 fclose(istack[idepth].bs->yy_input_file);
3480 yy_delete_buffer(istack[idepth].bs);
3484 istacksize = idepth = 0;
3489 prev_state = INITIAL;
3495 _push_include(char *path, bool isdir)
3497 struct path_list *pl;
3499 debug_decl(_push_include, SUDO_DEBUG_PARSER)
3501 /* push current state onto stack */
3502 if (idepth >= istacksize) {
3503 if (idepth > MAX_SUDOERS_DEPTH) {
3504 yyerror(_("too many levels of includes"));
3505 debug_return_bool(false);
3507 istacksize += SUDOERS_STACK_INCREMENT;
3508 istack = (struct include_stack *) realloc(istack,
3509 sizeof(*istack) * istacksize);
3510 if (istack == NULL) {
3511 yyerror(_("unable to allocate memory"));
3512 debug_return_bool(false);
3516 if (!(path = switch_dir(&istack[idepth], path))) {
3517 /* switch_dir() called yyerror() for us */
3518 debug_return_bool(false);
3520 while ((fp = open_sudoers(path, false, &keepopen)) == NULL) {
3521 /* Unable to open path in includedir, go to next one, if any. */
3523 if ((pl = istack[idepth].more) == NULL)
3524 debug_return_bool(false);
3526 istack[idepth].more = pl->next;
3530 if ((fp = open_sudoers(path, true, &keepopen)) == NULL) {
3532 if (asprintf(&errbuf, _("%s: %s"), path, strerror(errno)) != -1) {
3536 yyerror(_("unable to allocate memory"));
3538 debug_return_bool(false);
3540 istack[idepth].more = NULL;
3542 /* Push the old (current) file and open the new one. */
3543 istack[idepth].path = sudoers; /* push old path */
3544 istack[idepth].bs = YY_CURRENT_BUFFER;
3545 istack[idepth].lineno = sudolineno;
3546 istack[idepth].keepopen = keepopen;
3550 yy_switch_to_buffer(yy_create_buffer(fp, YY_BUF_SIZE));
3552 debug_return_bool(true);
3558 struct path_list *pl;
3560 debug_decl(pop_include, SUDO_DEBUG_PARSER)
3563 debug_return_bool(false);
3566 fclose(YY_CURRENT_BUFFER->yy_input_file);
3567 yy_delete_buffer(YY_CURRENT_BUFFER);
3568 /* If we are in an include dir, move to the next file. */
3569 while ((pl = istack[idepth - 1].more) != NULL) {
3570 fp = open_sudoers(pl->path, false, &keepopen);
3572 istack[idepth - 1].more = pl->next;
3576 yy_switch_to_buffer(yy_create_buffer(fp, YY_BUF_SIZE));
3580 /* Unable to open path in include dir, go to next one. */
3581 istack[idepth - 1].more = pl->next;
3585 /* If no path list, just pop the last dir on the stack. */
3588 yy_switch_to_buffer(istack[idepth].bs);
3590 sudoers = istack[idepth].path;
3591 sudolineno = istack[idepth].lineno;
3592 keepopen = istack[idepth].keepopen;
3594 debug_return_bool(true);
3598 parse_include(char *base)
3600 char *cp, *ep, *path, *pp;
3601 int dirlen = 0, len = 0, subst = 0;
3602 size_t shost_len = 0;
3603 debug_decl(parse_include, SUDO_DEBUG_PARSER)
3605 /* Pull out path from #include line. */
3606 cp = base + sizeof("#include");
3608 cp += 3; /* includedir */
3609 while (isblank((unsigned char) *cp))
3612 while (*ep != '\0' && !isspace((unsigned char) *ep)) {
3613 if (ep[0] == '%' && ep[1] == 'h') {
3614 shost_len = strlen(user_shost);
3615 len += shost_len - 2;
3621 /* Relative paths are located in the same dir as the sudoers file. */
3623 char *dirend = strrchr(sudoers, '/');
3625 dirlen = (int)(dirend - sudoers) + 1;
3628 /* Make a copy of the fully-qualified path and return it. */
3629 len += (int)(ep - cp);
3630 path = pp = malloc(len + dirlen + 1);
3632 yyerror(_("unable to allocate memory"));
3633 debug_return_str(NULL);
3636 memcpy(path, sudoers, dirlen);
3640 /* substitute for %h */
3642 if (cp[0] == '%' && cp[1] == 'h') {
3643 memcpy(pp, user_shost, shost_len);
3652 memcpy(pp, cp, len);
3656 /* Push any excess characters (e.g. comment, newline) back to the lexer */
3658 yyless((int)(ep - base));
3660 debug_return_str(path);
3665 sudoers_trace_print(const char *msg)
3667 return fputs(msg, stderr);
3671 sudoers_trace_print(const char *msg)
3673 static bool initialized;
3674 static struct lbuf lbuf;
3678 lbuf_init(&lbuf, NULL, 0, NULL, 0);
3681 lbuf_append(&lbuf, "%s", msg);
3682 /* XXX - assumes a final newline */
3683 if (strchr(msg, '\n') != NULL)
3685 sudo_debug_printf2(SUDO_DEBUG_PARSER|SUDO_DEBUG_DEBUG, "%s:%d %s",
3686 sudoers, sudolineno, lbuf.buf);
3691 #endif /* TRACELEXER */