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