2 #define yy_create_buffer sudoers_create_buffer
3 #define yy_delete_buffer sudoers_delete_buffer
4 #define yy_scan_buffer sudoers_scan_buffer
5 #define yy_scan_string sudoers_scan_string
6 #define yy_scan_bytes sudoers_scan_bytes
7 #define yy_flex_debug sudoers_flex_debug
8 #define yy_init_buffer sudoers_init_buffer
9 #define yy_flush_buffer sudoers_flush_buffer
10 #define yy_load_buffer_state sudoers_load_buffer_state
11 #define yy_switch_to_buffer sudoers_switch_to_buffer
12 #define yyin sudoersin
13 #define yyleng sudoersleng
14 #define yylex sudoerslex
15 #define yyout sudoersout
16 #define yyrestart sudoersrestart
17 #define yytext sudoerstext
19 /* $OpenBSD: flex.skl,v 1.11 2010/08/04 18:24:50 millert Exp $ */
21 /* A lexical scanner generated by flex */
23 /* Scanner skeleton version:
24 * $Header: /home/cvs/openbsd/src/usr.bin/lex/flex.skl,v 1.11 2010/08/04 18:24:50 millert Exp $
28 #define YY_FLEX_MAJOR_VERSION 2
29 #define YY_FLEX_MINOR_VERSION 5
35 /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
48 /* Use prototypes in function declarations. */
51 /* The "const" storage-class-modifier is valid. */
54 #else /* ! __cplusplus */
62 #endif /* ! __cplusplus */
81 #define YY_PROTO(proto) proto
83 #define YY_PROTO(proto) ()
86 /* Returned upon end-of-file. */
89 /* Promotes a possibly negative, possibly signed char to an unsigned
90 * integer for use as an array index. If the signed char is negative,
91 * we want to instead treat it as an 8-bit unsigned char, hence the
94 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
96 /* Enter a start condition. This macro really ought to take a parameter,
97 * but we do it the disgusting crufty way forced on us by the ()-less
98 * definition of BEGIN.
100 #define BEGIN yy_start = 1 + 2 *
102 /* Translate the current start state into a value that can be later handed
103 * to BEGIN to return to the state. The YYSTATE alias is for lex
106 #define YY_START ((yy_start - 1) / 2)
107 #define YYSTATE YY_START
109 /* Action number for EOF rule of a given start state. */
110 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
112 /* Special action meaning "start processing a new file". */
113 #define YY_NEW_FILE yyrestart( yyin )
115 #define YY_END_OF_BUFFER_CHAR 0
117 /* Size of default input buffer. */
118 #define YY_BUF_SIZE 16384
120 typedef struct yy_buffer_state *YY_BUFFER_STATE;
123 extern FILE *yyin, *yyout;
125 #define EOB_ACT_CONTINUE_SCAN 0
126 #define EOB_ACT_END_OF_FILE 1
127 #define EOB_ACT_LAST_MATCH 2
129 /* The funky do-while in the following #define is used to turn the definition
130 * int a single C statement (which needs a semi-colon terminator). This
131 * avoids problems with code like:
133 * if ( condition_holds )
136 * do_something_else();
138 * Prior to using the do-while the compiler would get upset at the
139 * "else" because it interpreted the "if" statement as being all
140 * done when it reached the ';' after the yyless() call.
143 /* Return all but the first 'n' matched characters back to the input stream. */
148 /* Undo effects of setting up yytext. */ \
149 *yy_cp = yy_hold_char; \
150 YY_RESTORE_YY_MORE_OFFSET \
151 yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
152 YY_DO_BEFORE_ACTION; /* set up yytext again */ \
156 #define unput(c) yyunput( c, yytext_ptr )
158 /* The following is because we cannot portably get our hands on size_t
159 * (without autoconf's help, which isn't available because we want
160 * flex-generated scanners to compile on their own).
162 typedef unsigned int yy_size_t;
165 struct yy_buffer_state
169 char *yy_ch_buf; /* input buffer */
170 char *yy_buf_pos; /* current position in input buffer */
172 /* Size of input buffer in bytes, not including room for EOB
175 yy_size_t yy_buf_size;
177 /* Number of characters read into yy_ch_buf, not including EOB
182 /* Whether we "own" the buffer - i.e., we know we created it,
183 * and can realloc() it to grow it, and should free() it to
186 int yy_is_our_buffer;
188 /* Whether this is an "interactive" input source; if so, and
189 * if we're using stdio for input, then we want to use getc()
190 * instead of fread(), to make sure we stop fetching input after
193 int yy_is_interactive;
195 /* Whether we're considered to be at the beginning of a line.
196 * If so, '^' rules will be active on the next match, otherwise
201 /* Whether to try to fill the input buffer when we reach the
206 int yy_buffer_status;
207 #define YY_BUFFER_NEW 0
208 #define YY_BUFFER_NORMAL 1
209 /* When an EOF's been seen but there's still some text to process
210 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
211 * shouldn't try reading from the input source any more. We might
212 * still have a bunch of tokens to match, though, because of
213 * possible backing-up.
215 * When we actually see the EOF, we change the status to "new"
216 * (via yyrestart()), so that the user can continue scanning by
217 * just pointing yyin at a new input file.
219 #define YY_BUFFER_EOF_PENDING 2
222 static YY_BUFFER_STATE yy_current_buffer = 0;
224 /* We provide macros for accessing buffer states in case in the
225 * future we want to put the buffer states in a more general
228 #define YY_CURRENT_BUFFER yy_current_buffer
231 /* yy_hold_char holds the character lost when yytext is formed. */
232 static char yy_hold_char;
234 static int yy_n_chars; /* number of characters read into yy_ch_buf */
239 /* Points to current character in buffer. */
240 static char *yy_c_buf_p = (char *) 0;
241 static int yy_init = 1; /* whether we need to initialize */
242 static int yy_start = 0; /* start state number */
244 /* Flag which is used to allow yywrap()'s to do buffer switches
245 * instead of setting up a fresh yyin. A bit of a hack ...
247 static int yy_did_buffer_switch_on_eof;
249 void yyrestart YY_PROTO(( FILE *input_file ));
251 void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
252 void yy_load_buffer_state YY_PROTO(( void ));
253 YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
254 void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
255 void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
256 void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
257 #define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
259 YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
260 YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
261 YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
263 static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
264 static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
265 static void yy_flex_free YY_PROTO(( void * ));
267 #define yy_new_buffer yy_create_buffer
269 #define yy_set_interactive(is_interactive) \
271 if ( ! yy_current_buffer ) \
272 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
273 yy_current_buffer->yy_is_interactive = is_interactive; \
276 #define yy_set_bol(at_bol) \
278 if ( ! yy_current_buffer ) \
279 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
280 yy_current_buffer->yy_at_bol = at_bol; \
283 #define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
287 #define YY_SKIP_YYWRAP
288 typedef unsigned char YY_CHAR;
289 FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
290 typedef int yy_state_type;
292 #define yytext_ptr yytext
294 static yy_state_type yy_get_previous_state YY_PROTO(( void ));
295 static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
296 static int yy_get_next_buffer YY_PROTO(( void ));
297 static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
299 /* Done after the current pattern has been matched and before the
300 * corresponding action - sets up yytext.
302 #define YY_DO_BEFORE_ACTION \
303 yytext_ptr = yy_bp; \
304 yyleng = (int) (yy_cp - yy_bp); \
305 yy_hold_char = *yy_cp; \
309 #define YY_NUM_RULES 67
310 #define YY_END_OF_BUFFER 68
311 static yyconst short int yy_accept[814] =
313 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
314 0, 0, 0, 0, 68, 55, 63, 62, 61, 54,
315 66, 34, 56, 57, 34, 58, 55, 55, 55, 55,
316 60, 59, 66, 46, 46, 46, 46, 46, 46, 46,
317 46, 46, 46, 66, 55, 55, 63, 66, 46, 46,
318 46, 46, 46, 2, 66, 1, 55, 46, 46, 55,
319 17, 16, 17, 16, 16, 66, 66, 66, 3, 9,
320 8, 9, 4, 9, 5, 66, 13, 13, 13, 11,
321 12, 66, 19, 19, 18, 18, 18, 19, 18, 18,
322 18, 19, 19, 19, 19, 19, 18, 19, 19, 55,
324 0, 63, 61, 0, 65, 0, 55, 36, 0, 34,
325 0, 35, 0, 53, 53, 0, 55, 55, 0, 55,
326 55, 55, 55, 0, 39, 46, 46, 46, 46, 46,
327 46, 46, 46, 46, 46, 46, 46, 55, 64, 55,
328 55, 63, 0, 0, 0, 0, 0, 0, 55, 55,
329 55, 55, 55, 2, 1, 0, 1, 47, 47, 0,
330 55, 17, 17, 15, 14, 15, 0, 0, 3, 9,
331 0, 6, 7, 9, 9, 13, 0, 13, 13, 0,
332 10, 36, 0, 0, 35, 19, 19, 0, 19, 0,
333 0, 18, 18, 18, 18, 18, 18, 19, 19, 46,
335 19, 19, 19, 19, 19, 19, 19, 0, 0, 0,
336 36, 55, 55, 55, 55, 55, 0, 0, 39, 39,
337 46, 41, 46, 46, 46, 46, 46, 46, 46, 46,
338 46, 46, 46, 46, 55, 55, 0, 0, 0, 0,
339 0, 0, 55, 55, 55, 55, 55, 0, 55, 10,
340 0, 0, 0, 18, 18, 18, 19, 19, 19, 19,
341 19, 19, 19, 19, 19, 19, 19, 0, 55, 55,
342 55, 55, 55, 55, 0, 40, 40, 40, 0, 0,
343 39, 39, 39, 39, 39, 39, 39, 46, 46, 46,
344 46, 46, 46, 46, 46, 46, 46, 42, 46, 43,
346 55, 55, 55, 55, 0, 0, 0, 0, 0, 0,
347 55, 55, 55, 55, 0, 0, 0, 0, 0, 18,
348 18, 19, 46, 19, 19, 19, 19, 19, 19, 19,
349 19, 19, 19, 55, 55, 55, 0, 0, 40, 40,
350 40, 0, 39, 39, 0, 39, 39, 39, 39, 39,
351 39, 39, 39, 39, 39, 39, 0, 27, 46, 46,
352 46, 46, 46, 46, 46, 46, 44, 46, 55, 55,
353 55, 55, 55, 0, 0, 0, 0, 55, 55, 55,
354 0, 0, 0, 18, 18, 46, 46, 19, 19, 19,
355 19, 19, 19, 19, 19, 19, 19, 19, 55, 55,
357 55, 55, 55, 0, 40, 0, 39, 39, 39, 0,
358 0, 0, 39, 39, 39, 39, 39, 39, 39, 39,
359 39, 39, 39, 39, 39, 46, 46, 46, 46, 46,
360 46, 46, 46, 46, 48, 49, 50, 51, 55, 0,
361 0, 0, 55, 55, 55, 0, 0, 0, 0, 0,
362 46, 46, 19, 46, 19, 19, 19, 19, 19, 19,
363 19, 19, 19, 37, 37, 37, 0, 0, 39, 39,
364 39, 39, 39, 39, 39, 0, 0, 0, 0, 0,
365 39, 39, 39, 39, 39, 39, 39, 39, 39, 39,
366 39, 39, 39, 39, 46, 46, 46, 0, 26, 46,
368 46, 46, 46, 0, 25, 0, 28, 55, 0, 0,
369 0, 55, 55, 55, 37, 37, 37, 46, 46, 46,
370 46, 19, 19, 19, 55, 37, 37, 37, 37, 0,
371 39, 0, 39, 39, 39, 39, 39, 39, 39, 39,
372 39, 39, 39, 0, 0, 0, 39, 39, 39, 39,
373 39, 39, 39, 39, 39, 39, 39, 39, 39, 46,
374 46, 46, 46, 46, 46, 46, 52, 0, 0, 0,
375 55, 22, 47, 0, 37, 37, 37, 37, 46, 46,
376 46, 46, 19, 19, 19, 38, 38, 38, 38, 39,
377 0, 0, 0, 39, 39, 39, 39, 39, 39, 39,
379 39, 39, 39, 39, 39, 39, 0, 0, 0, 0,
380 0, 39, 39, 39, 39, 39, 39, 39, 39, 46,
381 46, 46, 46, 46, 0, 24, 0, 29, 0, 22,
382 0, 0, 55, 0, 55, 38, 38, 38, 38, 46,
383 46, 46, 46, 55, 55, 38, 38, 38, 38, 0,
384 0, 0, 0, 0, 39, 39, 39, 39, 39, 39,
385 39, 39, 39, 39, 39, 39, 39, 39, 39, 39,
386 39, 39, 39, 39, 45, 0, 32, 46, 46, 46,
387 0, 0, 0, 20, 0, 23, 22, 0, 0, 0,
388 0, 0, 22, 0, 0, 0, 38, 38, 38, 38,
390 46, 46, 46, 55, 55, 55, 0, 0, 0, 39,
391 39, 39, 39, 39, 39, 39, 39, 39, 39, 39,
392 39, 39, 39, 39, 39, 39, 39, 0, 30, 46,
393 46, 23, 0, 0, 22, 0, 0, 0, 46, 46,
394 55, 55, 55, 55, 55, 0, 0, 0, 0, 0,
395 39, 39, 39, 39, 39, 39, 39, 39, 0, 33,
396 46, 0, 0, 0, 0, 0, 0, 46, 55, 55,
397 55, 39, 39, 39, 39, 39, 39, 0, 31, 0,
398 0, 21, 0, 0, 0, 55, 55, 55, 55, 55,
399 39, 39, 39, 39, 39, 0, 0, 0, 0, 0,
401 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
405 static yyconst int yy_ec[256] =
407 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
408 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
409 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
410 1, 2, 4, 5, 6, 1, 7, 1, 1, 8,
411 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
412 19, 20, 21, 22, 23, 24, 25, 26, 1, 1,
413 27, 28, 10, 29, 30, 31, 32, 33, 34, 31,
414 35, 36, 37, 38, 38, 39, 40, 41, 42, 43,
415 38, 44, 45, 46, 47, 48, 49, 50, 51, 38,
416 10, 52, 10, 1, 53, 1, 54, 55, 56, 57,
418 58, 59, 60, 61, 62, 60, 60, 63, 64, 65,
419 66, 60, 60, 67, 68, 69, 70, 60, 60, 60,
420 60, 60, 1, 1, 1, 1, 1, 1, 1, 1,
421 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
422 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
423 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
424 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
425 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
426 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
427 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
429 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
430 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
431 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
432 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
433 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
437 static yyconst int yy_meta[71] =
439 1, 2, 3, 4, 5, 6, 1, 7, 7, 1,
440 8, 9, 10, 11, 12, 13, 13, 13, 13, 13,
441 13, 13, 13, 13, 13, 14, 15, 7, 1, 16,
442 16, 16, 16, 16, 17, 17, 17, 17, 17, 17,
443 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
444 17, 18, 19, 20, 20, 20, 20, 20, 20, 21,
445 21, 21, 21, 21, 21, 21, 21, 21, 21, 21
448 static yyconst short int yy_base[931] =
450 0, 69, 71, 79, 94, 124, 175, 244, 153, 197,
451 85, 130, 314, 0, 4514, 4461, 4510, 5604, 4507, 5604,
452 382, 86, 5604, 5604, 4458, 5604, 140, 394, 195, 153,
453 4483, 5604, 5604, 453, 4383, 43, 508, 37, 4379, 65,
454 4378, 4385, 4367, 566, 581, 91, 151, 604, 39, 41,
455 4351, 34, 4348, 117, 4402, 4412, 428, 4371, 4382, 136,
456 0, 5604, 4407, 5604, 0, 606, 664, 105, 0, 4358,
457 5604, 115, 5604, 133, 5604, 138, 4357, 152, 171, 5604,
458 188, 383, 641, 694, 737, 235, 245, 794, 843, 4369,
459 157, 898, 4365, 4364, 4375, 4370, 944, 0, 206, 4351,
461 266, 4400, 4397, 4397, 5604, 263, 532, 585, 4386, 608,
462 707, 4346, 829, 648, 4345, 968, 981, 1018, 4359, 4370,
463 563, 708, 422, 4357, 371, 1062, 1106, 4343, 4347, 4340,
464 4344, 596, 4333, 4340, 4337, 4329, 4331, 644, 5604, 237,
465 137, 946, 4309, 4314, 4305, 4300, 4301, 121, 225, 530,
466 377, 369, 335, 445, 4366, 720, 4365, 931, 4314, 1018,
467 169, 0, 4361, 160, 5604, 5604, 991, 388, 0, 4312,
468 638, 5604, 5604, 4311, 661, 4310, 4356, 392, 221, 420,
469 4358, 653, 665, 1139, 4296, 1145, 0, 1173, 1201, 1210,
470 1037, 1239, 4333, 1081, 1170, 826, 1288, 1343, 4307, 0,
472 4311, 4309, 899, 4298, 4296, 4287, 4283, 4336, 4335, 1222,
473 1258, 1389, 1362, 968, 1428, 4323, 4310, 1472, 520, 1517,
474 1561, 1605, 4303, 4297, 4280, 4282, 4289, 4300, 4295, 4283,
475 4279, 4292, 4291, 4290, 654, 493, 4258, 4252, 4242, 4244,
476 4250, 534, 579, 4253, 491, 407, 506, 1413, 626, 4304,
477 4251, 4239, 1651, 1661, 4227, 1705, 0, 4197, 4164, 4155,
478 4151, 4151, 4135, 4112, 4111, 811, 4067, 4122, 1749, 378,
479 0, 0, 1041, 243, 4098, 4097, 1786, 805, 4096, 4095,
480 623, 1410, 1799, 1447, 1091, 1844, 1890, 4094, 429, 4073,
481 632, 4084, 4082, 4056, 4054, 4050, 4053, 0, 4046, 0,
483 929, 638, 544, 561, 4022, 4024, 4008, 4022, 4008, 746,
484 524, 1063, 413, 662, 1491, 4060, 4059, 4058, 1270, 1900,
485 1944, 763, 904, 4037, 4020, 4009, 4007, 3992, 3988, 818,
486 3993, 3988, 3912, 1990, 2002, 2014, 3930, 3929, 2024, 3929,
487 3912, 3911, 3910, 919, 1536, 1003, 1580, 1142, 2037, 0,
488 1626, 2083, 1680, 1372, 2128, 2174, 764, 5604, 3892, 3877,
489 3870, 3884, 3862, 3869, 3879, 3879, 0, 3863, 698, 593,
490 820, 973, 1093, 3857, 3824, 3825, 922, 897, 969, 1097,
491 3866, 3858, 2186, 2196, 3829, 3807, 3800, 3814, 3778, 3784,
492 3794, 3793, 3747, 3726, 3716, 3711, 3696, 3656, 2240, 1017,
494 2279, 2291, 1637, 3686, 3662, 3648, 3646, 2301, 1127, 3642,
495 3641, 2347, 1154, 1205, 1209, 1724, 1761, 2359, 0, 1763,
496 2405, 1774, 1457, 2450, 2496, 2521, 1024, 1127, 1181, 1190,
497 1169, 1207, 1224, 1392, 3602, 3584, 3577, 3560, 1240, 3581,
498 3547, 1313, 1391, 874, 1774, 1821, 3584, 3576, 3569, 1503,
499 3523, 3519, 869, 1379, 3515, 3511, 949, 1045, 0, 0,
500 0, 0, 3478, 2577, 1863, 1546, 3510, 3509, 3506, 1919,
501 2616, 1963, 1590, 2660, 2706, 2056, 3517, 3509, 3487, 1692,
502 1879, 1979, 2096, 2104, 2147, 2106, 2718, 0, 2217, 2764,
503 2250, 1734, 2809, 2855, 2880, 2086, 1133, 1088, 5604, 421,
505 2087, 1184, 2088, 1369, 5604, 1370, 5604, 1197, 3418, 3389,
506 1282, 2127, 1249, 1368, 3442, 3427, 2936, 3386, 3320, 3309,
507 3295, 2951, 1219, 3272, 3006, 1181, 3044, 0, 1709, 3290,
508 3263, 2260, 58, 2320, 1774, 3083, 0, 2380, 3129, 2424,
509 1831, 3173, 3219, 3270, 3265, 3231, 2336, 2462, 2464, 2471,
510 3256, 2477, 3243, 0, 2589, 3289, 2600, 1929, 3335, 3360,
511 1376, 1087, 1847, 1409, 1542, 1586, 3218, 3184, 3166, 1832,
512 1427, 2060, 3174, 2635, 3210, 3186, 3185, 2435, 3129, 3111,
513 3114, 3066, 3429, 1454, 0, 3486, 2679, 2737, 1483, 3085,
514 2989, 2839, 3525, 2819, 2003, 2280, 2783, 2381, 3537, 0,
516 2830, 3583, 3016, 2157, 3627, 3673, 3026, 2821, 2801, 2750,
517 2228, 2472, 2474, 2695, 1189, 1531, 3685, 0, 2647, 1848,
518 1925, 1602, 1522, 1849, 1587, 5604, 1664, 5604, 2692, 1967,
519 1630, 2177, 2014, 2406, 2761, 2674, 2630, 3731, 2272, 1926,
520 2155, 2500, 1927, 3741, 2076, 3780, 0, 1967, 2277, 3054,
521 2598, 2535, 2509, 2841, 2470, 2431, 2485, 2600, 3064, 2617,
522 3819, 0, 3104, 3865, 3148, 3036, 3909, 3955, 2390, 2373,
523 3966, 3118, 2338, 1742, 2298, 2129, 5604, 2743, 1825, 1738,
524 2219, 2153, 1825, 5604, 2062, 2083, 3130, 3172, 3276, 3281,
525 1984, 2880, 1920, 3360, 3192, 1912, 1877, 1858, 3274, 1744,
527 2326, 2643, 2745, 3978, 3990, 4002, 1700, 1693, 4014, 1662,
528 1623, 2856, 2951, 3496, 3084, 4026, 0, 3508, 4072, 3556,
529 3074, 0, 1599, 1510, 1503, 3319, 1423, 2328, 5604, 3154,
530 2037, 5604, 2124, 3602, 3646, 1409, 1403, 4118, 2407, 2791,
531 4130, 2334, 4142, 4154, 3659, 3704, 1390, 1286, 1251, 3418,
532 1158, 1087, 3105, 1077, 1056, 4166, 0, 3568, 2499, 5604,
533 3270, 2220, 3751, 1014, 1005, 957, 3614, 2522, 4178, 4190,
534 4202, 3761, 3790, 3800, 684, 0, 683, 2685, 5604, 658,
535 2222, 5604, 522, 382, 4214, 4226, 2335, 4238, 4250, 3840,
536 5604, 3846, 3884, 3202, 5604, 3928, 374, 208, 117, 3716,
538 4260, 4297, 4334, 4045, 4091, 4270, 59, 4371, 3941, 5604,
539 4280, 3771, 5604, 4423, 4444, 4465, 4486, 4507, 4528, 4549,
540 4570, 4591, 4600, 2074, 4620, 4641, 2383, 4662, 4683, 4704,
541 4725, 4746, 4767, 4788, 4809, 2337, 4830, 4839, 4847, 4856,
542 4876, 4897, 4918, 2474, 4939, 4960, 4981, 5002, 5011, 5030,
543 5039, 5048, 2421, 2516, 5056, 5064, 5072, 5081, 5089, 5096,
544 5104, 5112, 5121, 5131, 2600, 2694, 5139, 5147, 5155, 2695,
545 2757, 5164, 5174, 5194, 2798, 5203, 5211, 2799, 5220, 5230,
546 5250, 2228, 2615, 5259, 5271, 5280, 5290, 2803, 2825, 5299,
547 5309, 5318, 5338, 2700, 5347, 5359, 2841, 2872, 5368, 5378,
549 2873, 5387, 5397, 5417, 5438, 5459, 3115, 3116, 5479, 3168,
550 5486, 5496, 2951, 2967, 5505, 2520, 5525, 3304, 3313, 5534,
551 5544, 3517, 3314, 3318, 5552, 5562, 5582, 3814, 3319, 3430
554 static yyconst short int yy_def[931] =
556 813, 1, 1, 1, 814, 814, 815, 815, 816, 816,
557 817, 817, 813, 13, 813, 818, 813, 813, 813, 813,
558 819, 820, 813, 813, 821, 813, 822, 818, 28, 28,
559 823, 813, 813, 813, 34, 34, 34, 37, 37, 37,
560 37, 37, 37, 818, 28, 818, 813, 819, 34, 34,
561 37, 37, 37, 813, 824, 813, 825, 37, 37, 818,
562 826, 813, 826, 813, 826, 813, 819, 813, 827, 828,
563 813, 828, 813, 828, 813, 829, 830, 830, 830, 813,
564 813, 831, 832, 833, 813, 85, 85, 85, 813, 89,
565 89, 89, 92, 92, 92, 92, 85, 88, 88, 818,
567 818, 813, 813, 834, 813, 835, 813, 820, 836, 831,
568 820, 821, 821, 822, 837, 818, 818, 28, 838, 118,
569 118, 118, 118, 839, 840, 37, 126, 127, 127, 127,
570 127, 127, 127, 127, 127, 127, 127, 818, 813, 818,
571 818, 813, 813, 813, 813, 813, 813, 834, 818, 118,
572 818, 818, 818, 813, 813, 813, 813, 841, 842, 818,
573 818, 843, 843, 813, 813, 813, 835, 813, 844, 845,
574 845, 813, 813, 845, 845, 830, 813, 830, 830, 813,
575 813, 831, 831, 831, 846, 847, 88, 846, 848, 813,
576 813, 85, 192, 192, 192, 192, 813, 197, 198, 849,
578 198, 198, 198, 198, 198, 88, 88, 834, 850, 813,
579 813, 818, 212, 212, 118, 215, 851, 813, 852, 813,
580 127, 221, 222, 222, 222, 222, 222, 222, 222, 222,
581 222, 222, 222, 222, 818, 818, 813, 813, 813, 813,
582 813, 834, 818, 215, 818, 818, 818, 813, 818, 813,
583 853, 854, 813, 88, 254, 197, 198, 198, 198, 198,
584 198, 198, 198, 198, 198, 88, 88, 850, 818, 818,
585 212, 212, 212, 818, 855, 856, 856, 277, 857, 856,
586 858, 220, 813, 283, 283, 813, 283, 222, 222, 222,
587 222, 222, 222, 222, 222, 222, 222, 222, 222, 222,
589 818, 818, 818, 818, 813, 813, 813, 813, 813, 834,
590 818, 818, 818, 818, 813, 813, 853, 853, 813, 254,
591 197, 198, 859, 198, 198, 198, 198, 198, 198, 88,
592 88, 88, 88, 212, 212, 212, 813, 860, 860, 339,
593 860, 861, 862, 863, 813, 864, 286, 864, 813, 349,
594 864, 813, 352, 352, 813, 352, 813, 813, 222, 222,
595 222, 222, 222, 222, 222, 222, 222, 222, 818, 818,
596 818, 818, 818, 813, 813, 813, 834, 818, 818, 818,
597 865, 866, 813, 88, 321, 859, 859, 198, 198, 198,
598 198, 198, 198, 88, 88, 88, 88, 88, 818, 818,
600 212, 212, 818, 867, 867, 868, 869, 813, 813, 870,
601 871, 813, 872, 872, 873, 355, 873, 813, 418, 873,
602 813, 421, 421, 813, 421, 813, 426, 426, 426, 426,
603 426, 426, 426, 426, 818, 818, 818, 818, 818, 813,
604 813, 874, 818, 818, 818, 813, 813, 875, 875, 813,
605 859, 859, 198, 859, 198, 198, 198, 198, 88, 88,
606 88, 88, 88, 818, 464, 464, 813, 876, 877, 408,
607 813, 471, 471, 813, 471, 813, 813, 878, 878, 813,
608 813, 879, 879, 880, 424, 880, 813, 487, 880, 813,
609 490, 490, 813, 490, 813, 495, 495, 813, 813, 495,
611 495, 495, 495, 813, 813, 813, 813, 818, 813, 813,
612 881, 818, 818, 818, 882, 883, 813, 884, 884, 884,
613 884, 813, 522, 885, 818, 818, 818, 527, 527, 813,
614 886, 813, 887, 474, 887, 813, 536, 887, 813, 539,
615 539, 813, 539, 888, 889, 813, 813, 890, 890, 891,
616 892, 891, 813, 553, 891, 813, 556, 556, 556, 813,
617 560, 560, 560, 560, 560, 560, 818, 813, 813, 893,
618 818, 818, 818, 813, 813, 894, 894, 813, 895, 895,
619 895, 895, 813, 583, 896, 818, 586, 586, 586, 813,
620 897, 898, 813, 899, 899, 900, 542, 900, 813, 599,
622 900, 813, 602, 602, 813, 602, 813, 813, 901, 901,
623 813, 813, 902, 902, 903, 903, 813, 617, 903, 560,
624 560, 560, 560, 560, 813, 813, 813, 813, 813, 813,
625 904, 893, 818, 905, 906, 907, 908, 813, 907, 909,
626 909, 909, 909, 818, 818, 818, 646, 646, 818, 813,
627 813, 910, 910, 813, 813, 911, 911, 912, 605, 912,
628 813, 661, 912, 813, 664, 664, 813, 664, 913, 914,
629 813, 813, 915, 915, 560, 813, 813, 560, 560, 560,
630 813, 904, 904, 813, 893, 818, 905, 905, 905, 905,
631 916, 905, 917, 917, 813, 813, 907, 907, 813, 813,
633 909, 909, 909, 646, 646, 646, 918, 919, 813, 813,
634 920, 920, 921, 667, 921, 813, 716, 921, 813, 719,
635 719, 922, 813, 913, 913, 813, 813, 813, 813, 560,
636 560, 813, 893, 813, 813, 923, 924, 813, 909, 909,
637 646, 818, 646, 646, 818, 813, 813, 918, 918, 813,
638 813, 925, 925, 926, 926, 926, 756, 926, 813, 813,
639 560, 927, 813, 813, 923, 923, 813, 909, 646, 646,
640 646, 813, 813, 813, 813, 928, 928, 813, 813, 927,
641 927, 813, 929, 930, 813, 646, 818, 646, 646, 818,
642 813, 813, 813, 813, 813, 813, 813, 929, 929, 813,
644 818, 818, 818, 813, 813, 813, 818, 818, 818, 813,
645 813, 813, 0, 813, 813, 813, 813, 813, 813, 813,
646 813, 813, 813, 813, 813, 813, 813, 813, 813, 813,
647 813, 813, 813, 813, 813, 813, 813, 813, 813, 813,
648 813, 813, 813, 813, 813, 813, 813, 813, 813, 813,
649 813, 813, 813, 813, 813, 813, 813, 813, 813, 813,
650 813, 813, 813, 813, 813, 813, 813, 813, 813, 813,
651 813, 813, 813, 813, 813, 813, 813, 813, 813, 813,
652 813, 813, 813, 813, 813, 813, 813, 813, 813, 813,
653 813, 813, 813, 813, 813, 813, 813, 813, 813, 813,
655 813, 813, 813, 813, 813, 813, 813, 813, 813, 813,
656 813, 813, 813, 813, 813, 813, 813, 813, 813, 813,
657 813, 813, 813, 813, 813, 813, 813, 813, 813, 813
660 static yyconst short int yy_nxt[5675] =
662 16, 17, 18, 19, 20, 21, 22, 23, 24, 16,
663 25, 26, 16, 16, 27, 28, 29, 30, 28, 28,
664 28, 28, 28, 28, 28, 31, 32, 33, 16, 34,
665 35, 35, 35, 36, 37, 37, 37, 37, 38, 37,
666 39, 37, 40, 41, 42, 43, 37, 37, 37, 37,
667 37, 44, 16, 45, 45, 45, 45, 45, 45, 16,
668 16, 16, 16, 16, 16, 16, 16, 46, 16, 16,
669 47, 532, 54, 130, 48, 135, 55, 127, 131, 127,
670 54, 127, 56, 534, 55, 57, 78, 18, 79, 80,
671 56, 109, 129, 57, 133, 17, 62, 63, 150, 64,
673 49, 50, 149, 152, 51, 64, 168, 139, 134, 58,
674 101, 110, 52, 59, 37, 53, 37, 58, 154, 64,
675 65, 59, 37, 105, 37, 17, 62, 63, 155, 64,
676 796, 78, 18, 79, 80, 64, 81, 111, 60, 175,
677 139, 172, 101, 115, 115, 66, 60, 115, 115, 64,
678 65, 140, 142, 178, 17, 18, 19, 71, 67, 173,
679 141, 168, 139, 72, 73, 74, 171, 115, 122, 122,
680 122, 122, 122, 123, 179, 66, 17, 18, 19, 75,
681 67, 81, 143, 144, 171, 242, 145, 101, 101, 180,
682 181, 116, 176, 236, 146, 198, 140, 147, 17, 18,
684 19, 71, 67, 177, 76, 161, 201, 72, 73, 74,
685 121, 121, 121, 121, 121, 121, 121, 121, 121, 121,
686 101, 796, 177, 75, 179, 249, 68, 69, 69, 69,
687 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
688 69, 69, 69, 69, 69, 17, 18, 19, 76, 67,
689 194, 194, 194, 194, 194, 194, 194, 194, 194, 194,
690 195, 195, 195, 195, 195, 196, 206, 100, 119, 100,
691 100, 100, 177, 100, 100, 207, 101, 100, 107, 107,
692 107, 107, 107, 107, 107, 107, 107, 107, 101, 243,
693 235, 100, 100, 100, 101, 68, 69, 69, 69, 69,
695 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
696 69, 69, 69, 69, 33, 17, 18, 19, 33, 33,
697 82, 23, 24, 33, 83, 26, 33, 33, 84, 85,
698 86, 87, 85, 85, 85, 85, 85, 85, 85, 31,
699 88, 33, 33, 89, 90, 90, 90, 91, 92, 92,
700 92, 92, 93, 92, 94, 92, 95, 92, 96, 92,
701 92, 92, 92, 92, 92, 68, 33, 97, 97, 97,
702 97, 97, 97, 98, 98, 98, 98, 98, 98, 98,
703 98, 99, 98, 98, 105, 218, 101, 796, 109, 168,
704 139, 269, 247, 178, 106, 796, 220, 107, 107, 107,
706 107, 107, 107, 107, 107, 107, 107, 117, 183, 118,
707 118, 118, 118, 118, 118, 118, 118, 118, 118, 119,
708 101, 180, 181, 120, 120, 120, 120, 120, 101, 101,
709 357, 159, 159, 246, 184, 159, 159, 216, 216, 216,
710 216, 216, 216, 177, 245, 101, 154, 120, 120, 120,
711 120, 120, 120, 100, 358, 159, 155, 127, 101, 100,
712 313, 563, 100, 100, 101, 100, 100, 100, 126, 126,
713 126, 126, 126, 126, 126, 126, 126, 126, 119, 160,
714 311, 100, 126, 126, 126, 126, 126, 127, 127, 127,
715 127, 128, 127, 127, 127, 127, 127, 127, 127, 127,
717 127, 127, 127, 127, 101, 127, 120, 120, 120, 120,
718 120, 120, 100, 100, 100, 100, 100, 100, 100, 100,
719 100, 100, 100, 127, 127, 127, 127, 127, 127, 127,
720 127, 127, 127, 813, 218, 796, 105, 127, 127, 127,
721 127, 127, 101, 100, 101, 282, 127, 107, 107, 107,
722 107, 107, 107, 107, 107, 107, 107, 101, 304, 311,
723 372, 100, 100, 100, 100, 100, 100, 138, 139, 100,
724 100, 100, 311, 100, 100, 101, 378, 100, 216, 216,
725 216, 216, 216, 216, 216, 216, 216, 216, 244, 310,
726 813, 100, 100, 100, 100, 101, 120, 120, 120, 120,
728 120, 120, 120, 120, 120, 120, 105, 164, 139, 165,
729 813, 166, 101, 109, 436, 165, 106, 166, 373, 107,
730 107, 107, 107, 107, 107, 107, 107, 107, 107, 226,
731 101, 166, 166, 813, 227, 311, 111, 218, 228, 170,
732 229, 185, 170, 170, 101, 168, 139, 185, 282, 170,
733 185, 115, 115, 185, 185, 115, 115, 166, 813, 184,
734 782, 371, 168, 139, 170, 148, 105, 187, 360, 185,
735 109, 301, 302, 361, 303, 115, 167, 101, 813, 813,
736 813, 813, 813, 813, 813, 813, 813, 813, 813, 101,
737 813, 314, 188, 185, 115, 101, 532, 115, 115, 116,
739 115, 115, 115, 115, 184, 101, 115, 115, 108, 714,
740 108, 108, 171, 101, 108, 108, 184, 435, 108, 380,
741 187, 115, 115, 216, 216, 216, 216, 216, 216, 216,
742 216, 216, 216, 108, 108, 107, 107, 107, 107, 107,
743 107, 107, 107, 107, 107, 190, 115, 187, 105, 101,
744 191, 187, 192, 192, 192, 192, 192, 192, 192, 192,
745 192, 192, 119, 187, 357, 357, 193, 193, 193, 193,
746 193, 187, 187, 187, 187, 187, 187, 187, 187, 187,
747 187, 187, 187, 187, 187, 187, 187, 187, 358, 358,
748 193, 193, 193, 193, 193, 193, 187, 187, 187, 187,
750 187, 187, 187, 187, 187, 187, 187, 813, 377, 187,
751 187, 187, 187, 187, 187, 187, 187, 187, 187, 813,
752 341, 341, 341, 187, 187, 187, 187, 187, 330, 331,
753 112, 332, 112, 112, 112, 394, 112, 112, 395, 437,
754 112, 255, 255, 255, 255, 255, 255, 187, 187, 187,
755 187, 187, 187, 187, 112, 112, 112, 187, 197, 197,
756 197, 197, 197, 197, 197, 197, 197, 197, 119, 187,
757 498, 101, 197, 197, 197, 197, 197, 198, 198, 198,
758 198, 199, 198, 198, 198, 198, 198, 198, 198, 198,
759 198, 198, 198, 198, 499, 200, 193, 193, 193, 193,
761 193, 193, 187, 187, 187, 187, 187, 187, 187, 187,
762 187, 187, 187, 198, 198, 198, 198, 198, 198, 198,
763 198, 198, 198, 813, 105, 101, 443, 198, 198, 198,
764 198, 198, 260, 218, 159, 159, 198, 261, 159, 159,
765 386, 262, 513, 263, 282, 387, 369, 142, 101, 370,
766 504, 187, 187, 187, 187, 187, 187, 813, 159, 193,
767 193, 193, 193, 193, 193, 193, 193, 193, 193, 114,
768 763, 100, 100, 114, 505, 100, 100, 143, 144, 114,
769 101, 145, 160, 272, 272, 272, 272, 272, 273, 146,
770 438, 442, 147, 114, 114, 100, 212, 213, 214, 212,
772 212, 212, 212, 212, 212, 212, 813, 813, 813, 813,
773 813, 813, 813, 813, 813, 813, 345, 218, 763, 158,
774 101, 100, 100, 158, 101, 100, 100, 763, 347, 158,
775 399, 444, 101, 215, 215, 215, 215, 215, 215, 215,
776 215, 215, 215, 158, 158, 100, 506, 215, 215, 215,
777 215, 215, 251, 252, 253, 251, 251, 251, 251, 251,
778 251, 251, 100, 100, 100, 100, 496, 127, 101, 813,
779 507, 215, 215, 215, 215, 215, 215, 221, 221, 221,
780 221, 221, 221, 221, 221, 221, 221, 119, 119, 498,
781 532, 221, 221, 221, 221, 221, 255, 255, 255, 255,
783 255, 255, 255, 255, 255, 255, 350, 350, 350, 350,
784 350, 351, 714, 499, 101, 215, 215, 215, 215, 215,
785 215, 127, 127, 127, 127, 127, 127, 127, 127, 127,
786 127, 813, 379, 622, 127, 127, 127, 127, 127, 127,
787 182, 218, 182, 182, 101, 185, 182, 182, 101, 439,
788 182, 185, 282, 445, 185, 813, 218, 185, 185, 100,
789 100, 100, 100, 100, 100, 182, 182, 347, 218, 127,
790 127, 187, 497, 185, 185, 562, 185, 185, 185, 347,
791 185, 185, 498, 659, 185, 255, 255, 255, 255, 255,
792 255, 255, 255, 255, 255, 525, 188, 185, 185, 185,
794 185, 115, 345, 218, 115, 115, 499, 115, 115, 115,
795 115, 115, 127, 115, 115, 115, 565, 502, 345, 218,
796 127, 115, 345, 218, 127, 504, 500, 187, 115, 115,
797 347, 501, 101, 127, 416, 115, 115, 211, 211, 211,
798 211, 211, 211, 211, 211, 211, 211, 503, 101, 505,
799 127, 198, 190, 115, 254, 254, 254, 254, 254, 254,
800 254, 254, 254, 254, 746, 567, 584, 127, 254, 254,
801 254, 254, 254, 211, 211, 211, 211, 211, 211, 211,
802 211, 211, 211, 315, 105, 316, 316, 316, 316, 316,
803 316, 101, 254, 254, 254, 254, 254, 254, 187, 746,
805 101, 508, 187, 256, 256, 256, 256, 256, 256, 256,
806 256, 256, 256, 119, 187, 105, 572, 256, 256, 256,
807 256, 256, 198, 198, 198, 198, 198, 198, 198, 198,
808 198, 198, 198, 198, 198, 198, 198, 198, 198, 570,
809 200, 254, 254, 254, 254, 254, 254, 187, 187, 187,
810 187, 187, 187, 187, 187, 187, 187, 187, 198, 198,
811 198, 198, 198, 198, 198, 198, 198, 198, 813, 511,
812 504, 506, 198, 198, 198, 198, 198, 271, 271, 271,
813 271, 271, 271, 271, 271, 271, 271, 419, 419, 419,
814 419, 419, 420, 506, 505, 507, 187, 187, 187, 187,
816 187, 187, 269, 746, 270, 270, 270, 270, 270, 270,
817 270, 270, 270, 270, 159, 520, 763, 507, 159, 101,
818 521, 621, 763, 127, 159, 287, 287, 287, 287, 287,
819 287, 287, 287, 287, 287, 127, 573, 218, 159, 159,
820 101, 100, 101, 274, 274, 274, 274, 274, 274, 274,
821 274, 274, 274, 512, 624, 627, 127, 274, 274, 274,
822 274, 274, 349, 349, 349, 349, 349, 349, 349, 349,
823 349, 349, 488, 488, 488, 488, 488, 489, 101, 628,
824 633, 274, 274, 274, 274, 274, 274, 276, 277, 278,
825 278, 278, 278, 278, 278, 278, 278, 279, 649, 649,
827 649, 280, 280, 280, 280, 280, 381, 382, 383, 381,
828 381, 381, 381, 381, 381, 381, 446, 218, 447, 447,
829 447, 447, 447, 447, 218, 280, 280, 280, 280, 280,
830 280, 218, 283, 284, 285, 283, 283, 283, 283, 283,
831 283, 283, 286, 625, 813, 218, 287, 287, 287, 287,
832 287, 410, 411, 412, 410, 410, 410, 410, 410, 410,
833 410, 528, 528, 528, 528, 528, 529, 626, 679, 127,
834 287, 287, 287, 287, 287, 287, 288, 288, 288, 288,
835 288, 288, 288, 288, 288, 288, 119, 627, 625, 127,
836 288, 288, 288, 288, 288, 356, 356, 356, 356, 356,
838 356, 356, 356, 356, 356, 537, 537, 537, 537, 537,
839 538, 628, 626, 218, 274, 274, 274, 274, 274, 274,
840 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
841 813, 683, 684, 127, 127, 127, 127, 127, 127, 345,
842 218, 414, 414, 414, 414, 414, 414, 678, 659, 127,
843 399, 347, 400, 400, 400, 400, 400, 400, 100, 100,
844 100, 100, 100, 100, 315, 627, 318, 318, 318, 318,
845 318, 319, 316, 316, 316, 316, 320, 320, 320, 320,
846 320, 320, 320, 320, 320, 320, 119, 597, 101, 628,
847 320, 320, 320, 320, 320, 418, 418, 418, 418, 418,
849 418, 418, 418, 418, 418, 476, 746, 477, 477, 477,
850 477, 477, 477, 746, 320, 320, 320, 320, 320, 320,
851 321, 321, 321, 321, 321, 321, 321, 321, 321, 321,
852 100, 100, 100, 100, 321, 321, 321, 321, 321, 425,
853 425, 425, 425, 425, 425, 425, 425, 425, 425, 554,
854 554, 554, 554, 554, 555, 345, 218, 695, 320, 320,
855 320, 320, 320, 320, 334, 335, 336, 334, 334, 334,
856 334, 334, 334, 334, 813, 218, 345, 218, 483, 483,
857 483, 483, 483, 483, 731, 127, 416, 813, 416, 487,
858 487, 487, 487, 487, 487, 487, 487, 487, 487, 534,
860 101, 339, 339, 340, 341, 341, 341, 341, 341, 341,
861 341, 279, 345, 218, 346, 346, 346, 346, 346, 346,
862 346, 346, 346, 346, 347, 101, 683, 684, 348, 348,
863 348, 348, 348, 631, 105, 514, 515, 516, 517, 515,
864 515, 515, 515, 515, 515, 515, 600, 600, 600, 600,
865 600, 601, 348, 348, 348, 348, 348, 348, 218, 352,
866 353, 354, 352, 352, 352, 352, 352, 352, 352, 355,
867 730, 695, 127, 356, 356, 356, 356, 356, 527, 527,
868 527, 527, 527, 527, 527, 527, 527, 527, 632, 623,
869 695, 680, 675, 218, 127, 127, 127, 356, 356, 356,
871 356, 356, 356, 813, 347, 348, 348, 348, 348, 348,
872 348, 348, 348, 348, 348, 384, 384, 384, 384, 384,
873 384, 384, 384, 384, 384, 695, 676, 676, 813, 384,
874 384, 384, 384, 384, 475, 475, 475, 475, 475, 475,
875 475, 475, 475, 475, 618, 618, 618, 618, 618, 619,
876 677, 677, 813, 384, 384, 384, 384, 384, 384, 385,
877 385, 385, 385, 385, 385, 385, 385, 385, 385, 703,
878 634, 694, 127, 385, 385, 385, 385, 385, 536, 536,
879 536, 536, 536, 536, 536, 536, 536, 536, 100, 100,
880 100, 100, 634, 218, 634, 634, 734, 384, 384, 384,
882 384, 384, 384, 399, 416, 400, 400, 400, 400, 400,
883 400, 400, 400, 400, 400, 399, 532, 401, 401, 401,
884 401, 401, 401, 401, 401, 401, 401, 399, 534, 402,
885 402, 402, 402, 402, 403, 400, 400, 400, 400, 405,
886 405, 405, 405, 405, 405, 405, 405, 405, 405, 279,
887 345, 218, 414, 414, 414, 414, 414, 414, 414, 414,
888 414, 414, 347, 634, 105, 101, 413, 413, 413, 413,
889 413, 544, 545, 546, 544, 544, 544, 544, 544, 544,
890 544, 686, 761, 107, 127, 634, 107, 634, 635, 644,
891 413, 413, 413, 413, 413, 413, 345, 218, 415, 415,
893 415, 415, 415, 415, 415, 415, 415, 415, 416, 345,
894 218, 101, 417, 417, 417, 417, 417, 345, 218, 813,
895 218, 416, 127, 127, 127, 762, 105, 101, 733, 485,
896 676, 485, 561, 564, 101, 566, 417, 417, 417, 417,
897 417, 417, 218, 421, 422, 423, 421, 421, 421, 421,
898 421, 421, 421, 424, 677, 684, 813, 425, 425, 425,
899 425, 425, 494, 494, 494, 494, 494, 494, 494, 494,
900 494, 494, 662, 662, 662, 662, 662, 663, 101, 105,
901 813, 425, 425, 425, 425, 425, 425, 813, 571, 417,
902 417, 417, 417, 417, 417, 417, 417, 417, 417, 446,
904 701, 449, 449, 449, 449, 449, 450, 447, 447, 447,
905 447, 384, 384, 384, 384, 384, 384, 384, 384, 384,
906 384, 781, 782, 781, 782, 384, 384, 384, 384, 384,
907 345, 218, 549, 549, 549, 549, 549, 549, 685, 575,
908 575, 607, 485, 608, 608, 608, 608, 608, 608, 384,
909 384, 384, 384, 384, 384, 464, 465, 466, 464, 464,
910 464, 464, 464, 464, 464, 553, 553, 553, 553, 553,
911 553, 553, 553, 553, 553, 591, 592, 593, 591, 591,
912 591, 591, 591, 591, 591, 695, 732, 700, 700, 700,
913 644, 101, 399, 532, 400, 400, 400, 400, 400, 400,
915 400, 400, 400, 400, 399, 597, 400, 400, 400, 400,
916 400, 400, 400, 400, 400, 400, 471, 472, 473, 471,
917 471, 471, 471, 471, 471, 471, 474, 728, 101, 728,
918 475, 475, 475, 475, 475, 543, 543, 543, 543, 543,
919 543, 543, 543, 543, 543, 127, 211, 741, 786, 211,
920 218, 729, 218, 729, 475, 475, 475, 475, 475, 475,
921 476, 416, 479, 479, 479, 479, 479, 480, 477, 477,
922 477, 477, 345, 218, 483, 483, 483, 483, 483, 483,
923 483, 483, 483, 483, 416, 101, 101, 218, 482, 482,
924 482, 482, 482, 532, 813, 595, 595, 595, 595, 595,
926 595, 169, 169, 169, 218, 534, 597, 688, 759, 689,
927 690, 691, 482, 482, 482, 482, 482, 482, 345, 218,
928 484, 484, 484, 484, 484, 484, 484, 484, 484, 484,
929 485, 316, 760, 316, 486, 486, 486, 486, 486, 599,
930 599, 599, 599, 599, 599, 599, 599, 599, 599, 574,
931 575, 575, 575, 575, 575, 575, 597, 692, 486, 486,
932 486, 486, 486, 486, 218, 490, 491, 492, 490, 490,
933 490, 490, 490, 490, 490, 493, 218, 345, 218, 494,
934 494, 494, 494, 494, 345, 218, 218, 485, 218, 485,
935 813, 218, 169, 169, 169, 534, 551, 485, 532, 551,
937 759, 813, 551, 494, 494, 494, 494, 494, 494, 813,
938 597, 486, 486, 486, 486, 486, 486, 486, 486, 486,
939 486, 100, 650, 778, 760, 813, 317, 100, 317, 735,
940 100, 100, 735, 100, 100, 100, 127, 127, 127, 127,
941 127, 127, 127, 127, 127, 127, 702, 779, 650, 100,
942 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
943 127, 127, 127, 127, 495, 127, 127, 127, 127, 127,
944 127, 127, 101, 127, 100, 100, 100, 100, 100, 100,
945 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
946 100, 525, 526, 526, 526, 526, 526, 526, 526, 526,
948 526, 526, 345, 218, 614, 614, 614, 614, 614, 614,
949 447, 650, 447, 532, 551, 617, 617, 617, 617, 617,
950 617, 617, 617, 617, 617, 659, 576, 576, 101, 532,
951 813, 533, 533, 533, 533, 533, 533, 533, 533, 533,
952 533, 534, 659, 695, 813, 535, 535, 535, 535, 535,
953 636, 637, 638, 639, 636, 636, 636, 636, 636, 636,
954 345, 218, 674, 674, 674, 674, 674, 674, 813, 535,
955 535, 535, 535, 535, 535, 539, 540, 541, 539, 539,
956 539, 539, 539, 539, 539, 542, 778, 695, 739, 543,
957 543, 543, 543, 543, 646, 646, 646, 646, 646, 646,
959 646, 646, 646, 646, 448, 477, 448, 477, 345, 218,
960 779, 575, 575, 543, 543, 543, 543, 543, 543, 813,
961 551, 535, 535, 535, 535, 535, 535, 535, 535, 535,
962 535, 345, 218, 549, 549, 549, 549, 549, 549, 549,
963 549, 549, 549, 485, 728, 681, 813, 548, 548, 548,
964 548, 548, 647, 647, 647, 647, 647, 648, 649, 649,
965 649, 649, 688, 607, 689, 690, 691, 478, 729, 478,
966 813, 548, 548, 548, 548, 548, 548, 345, 218, 550,
967 550, 550, 550, 550, 550, 550, 550, 550, 550, 551,
968 127, 740, 813, 552, 552, 552, 552, 552, 606, 606,
970 606, 606, 606, 606, 606, 606, 606, 606, 447, 477,
971 447, 477, 694, 608, 607, 608, 813, 552, 552, 552,
972 552, 552, 552, 218, 556, 557, 558, 556, 556, 556,
973 556, 556, 556, 556, 607, 609, 768, 609, 559, 559,
974 559, 559, 559, 532, 534, 657, 657, 657, 657, 657,
975 657, 651, 650, 651, 650, 597, 651, 651, 651, 651,
976 651, 651, 559, 559, 559, 559, 559, 559, 813, 532,
977 552, 552, 552, 552, 552, 552, 552, 552, 552, 552,
978 100, 659, 652, 608, 652, 608, 100, 687, 687, 100,
979 100, 687, 100, 100, 100, 127, 127, 127, 127, 127,
981 127, 127, 127, 127, 127, 687, 687, 687, 100, 127,
982 127, 127, 127, 127, 127, 127, 560, 127, 127, 127,
983 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
984 127, 101, 127, 100, 100, 100, 100, 100, 100, 100,
985 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
986 574, 577, 577, 577, 577, 577, 578, 575, 575, 575,
987 575, 187, 723, 723, 532, 187, 198, 198, 198, 198,
988 198, 198, 198, 198, 198, 198, 714, 187, 724, 724,
989 198, 198, 198, 583, 198, 198, 198, 198, 198, 198,
990 198, 198, 198, 198, 198, 198, 198, 198, 198, 198,
992 198, 198, 650, 200, 187, 187, 187, 187, 187, 187,
993 187, 187, 187, 187, 187, 187, 187, 187, 187, 187,
994 187, 586, 587, 588, 589, 586, 586, 586, 586, 586,
995 586, 661, 661, 661, 661, 661, 661, 661, 661, 661,
996 661, 669, 670, 671, 669, 669, 669, 669, 669, 669,
997 669, 717, 717, 717, 717, 717, 718, 101, 525, 526,
998 526, 526, 526, 526, 526, 526, 526, 526, 526, 707,
999 708, 709, 707, 707, 707, 707, 707, 707, 707, 668,
1000 668, 668, 668, 668, 668, 668, 668, 668, 668, 757,
1001 757, 757, 757, 757, 758, 101, 532, 813, 595, 595,
1003 595, 595, 595, 595, 595, 595, 595, 595, 534, 714,
1004 470, 643, 594, 594, 594, 594, 594, 532, 532, 712,
1005 712, 712, 712, 712, 712, 696, 697, 696, 697, 659,
1006 714, 813, 218, 813, 813, 813, 594, 594, 594, 594,
1007 594, 594, 532, 551, 596, 596, 596, 596, 596, 596,
1008 596, 596, 596, 596, 597, 759, 642, 641, 598, 598,
1009 598, 598, 598, 716, 716, 716, 716, 716, 716, 716,
1010 716, 716, 716, 688, 640, 689, 690, 691, 651, 760,
1011 651, 692, 598, 598, 598, 598, 598, 598, 602, 603,
1012 604, 602, 602, 602, 602, 602, 602, 602, 605, 574,
1014 574, 127, 606, 606, 606, 606, 606, 736, 737, 738,
1015 736, 736, 736, 736, 736, 736, 736, 791, 791, 791,
1016 791, 791, 791, 692, 574, 101, 606, 606, 606, 606,
1017 606, 606, 813, 630, 598, 598, 598, 598, 598, 598,
1018 598, 598, 598, 598, 607, 629, 610, 610, 610, 610,
1019 610, 611, 608, 608, 608, 608, 345, 218, 614, 614,
1020 614, 614, 614, 614, 614, 614, 614, 614, 551, 101,
1021 218, 778, 613, 613, 613, 613, 613, 813, 607, 689,
1022 690, 691, 813, 607, 813, 813, 691, 695, 470, 696,
1023 696, 696, 696, 696, 696, 779, 613, 613, 613, 613,
1025 613, 613, 345, 218, 615, 615, 615, 615, 615, 615,
1026 615, 615, 615, 615, 747, 343, 747, 127, 616, 616,
1027 616, 616, 616, 748, 764, 748, 764, 692, 765, 797,
1028 765, 797, 692, 218, 723, 723, 723, 723, 723, 723,
1029 585, 582, 616, 616, 616, 616, 616, 616, 813, 581,
1030 616, 616, 616, 616, 616, 616, 616, 616, 616, 616,
1031 100, 693, 580, 693, 693, 693, 100, 693, 693, 100,
1032 100, 693, 100, 100, 100, 127, 127, 127, 127, 127,
1033 127, 127, 127, 127, 127, 693, 693, 693, 100, 127,
1034 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
1036 127, 127, 127, 127, 127, 127, 127, 620, 127, 127,
1037 127, 101, 127, 100, 100, 100, 100, 100, 100, 100,
1038 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
1039 625, 746, 579, 747, 747, 747, 747, 747, 747, 187,
1040 798, 574, 798, 187, 198, 198, 198, 198, 198, 198,
1041 198, 198, 198, 198, 626, 187, 574, 569, 198, 198,
1042 198, 198, 198, 198, 198, 198, 198, 198, 198, 198,
1043 198, 198, 198, 198, 198, 198, 198, 198, 198, 198,
1044 568, 200, 187, 187, 187, 187, 187, 187, 187, 187,
1045 187, 187, 187, 187, 187, 187, 187, 187, 187, 644,
1047 476, 645, 645, 645, 645, 645, 645, 645, 645, 645,
1048 645, 722, 722, 722, 722, 722, 722, 722, 722, 722,
1049 722, 532, 476, 753, 753, 753, 753, 753, 753, 755,
1050 476, 470, 755, 714, 343, 279, 755, 101, 650, 524,
1051 653, 653, 653, 653, 653, 654, 651, 651, 651, 651,
1052 532, 523, 657, 657, 657, 657, 657, 657, 657, 657,
1053 657, 657, 597, 522, 519, 518, 656, 656, 656, 656,
1054 656, 756, 756, 756, 756, 756, 756, 756, 756, 756,
1055 756, 532, 446, 777, 777, 777, 777, 777, 777, 446,
1056 656, 656, 656, 656, 656, 656, 532, 446, 658, 658,
1058 658, 658, 658, 658, 658, 658, 658, 658, 659, 510,
1059 509, 101, 660, 660, 660, 660, 660, 735, 735, 735,
1060 735, 735, 735, 735, 735, 735, 735, 763, 101, 764,
1061 764, 764, 764, 764, 764, 101, 660, 660, 660, 660,
1062 660, 660, 664, 665, 666, 664, 664, 664, 664, 664,
1063 664, 664, 667, 101, 476, 476, 668, 668, 668, 668,
1064 668, 735, 735, 735, 735, 735, 735, 735, 735, 735,
1065 735, 470, 741, 343, 742, 742, 742, 742, 742, 742,
1066 668, 668, 668, 668, 668, 668, 813, 279, 660, 660,
1067 660, 660, 660, 660, 660, 660, 660, 660, 345, 218,
1069 674, 674, 674, 674, 674, 674, 674, 674, 674, 674,
1070 101, 279, 463, 462, 673, 673, 673, 673, 673, 772,
1071 773, 774, 772, 772, 772, 772, 772, 772, 772, 796,
1072 461, 797, 797, 797, 797, 797, 797, 460, 673, 673,
1073 673, 673, 673, 673, 695, 459, 698, 698, 698, 698,
1074 698, 699, 700, 700, 700, 700, 704, 705, 706, 704,
1075 704, 704, 704, 704, 704, 704, 783, 784, 785, 783,
1076 783, 783, 783, 783, 783, 783, 791, 791, 791, 791,
1077 791, 791, 791, 791, 791, 791, 810, 810, 810, 810,
1078 810, 810, 101, 644, 458, 645, 645, 645, 645, 645,
1080 645, 645, 645, 645, 645, 792, 792, 792, 792, 792,
1081 792, 792, 792, 792, 792, 793, 793, 793, 793, 793,
1082 794, 791, 791, 791, 791, 457, 795, 456, 455, 795,
1083 454, 101, 532, 795, 712, 712, 712, 712, 712, 712,
1084 712, 712, 712, 712, 659, 453, 452, 451, 711, 711,
1085 711, 711, 711, 786, 813, 787, 787, 787, 787, 787,
1086 787, 791, 791, 791, 791, 791, 791, 791, 791, 791,
1087 791, 446, 711, 711, 711, 711, 711, 711, 532, 446,
1088 713, 713, 713, 713, 713, 713, 713, 713, 713, 713,
1089 714, 101, 374, 441, 715, 715, 715, 715, 715, 791,
1091 791, 791, 791, 791, 791, 791, 791, 791, 791, 440,
1092 434, 433, 432, 431, 430, 429, 428, 427, 715, 715,
1093 715, 715, 715, 715, 719, 720, 721, 719, 719, 719,
1094 719, 719, 719, 719, 426, 408, 343, 279, 722, 722,
1095 722, 722, 722, 804, 805, 806, 804, 804, 804, 804,
1096 804, 804, 804, 404, 279, 125, 807, 807, 807, 807,
1097 807, 807, 722, 722, 722, 722, 722, 722, 813, 398,
1098 715, 715, 715, 715, 715, 715, 715, 715, 715, 715,
1099 218, 725, 725, 725, 725, 725, 726, 723, 723, 723,
1100 723, 741, 101, 742, 742, 742, 742, 742, 742, 742,
1102 742, 742, 742, 741, 397, 743, 743, 743, 743, 743,
1103 743, 743, 743, 743, 743, 741, 396, 744, 744, 744,
1104 744, 744, 745, 742, 742, 742, 742, 746, 393, 749,
1105 749, 749, 749, 749, 750, 747, 747, 747, 747, 532,
1106 392, 753, 753, 753, 753, 753, 753, 753, 753, 753,
1107 753, 714, 391, 390, 389, 752, 752, 752, 752, 752,
1108 810, 810, 810, 810, 810, 810, 810, 810, 810, 810,
1109 388, 315, 315, 315, 374, 376, 374, 375, 374, 752,
1110 752, 752, 752, 752, 752, 532, 368, 754, 754, 754,
1111 754, 754, 754, 754, 754, 754, 754, 367, 366, 365,
1113 364, 755, 755, 755, 755, 755, 804, 804, 804, 804,
1114 804, 804, 804, 804, 804, 804, 363, 362, 359, 119,
1115 279, 343, 279, 125, 105, 755, 755, 755, 755, 755,
1116 755, 763, 333, 766, 766, 766, 766, 766, 767, 764,
1117 764, 764, 764, 100, 329, 769, 770, 771, 769, 769,
1118 769, 769, 769, 769, 769, 741, 328, 742, 742, 742,
1119 742, 742, 742, 742, 742, 742, 742, 741, 327, 742,
1120 742, 742, 742, 742, 742, 742, 742, 742, 742, 532,
1121 326, 777, 777, 777, 777, 777, 777, 777, 777, 777,
1122 777, 786, 325, 787, 787, 787, 787, 787, 787, 787,
1124 787, 787, 787, 786, 324, 788, 788, 788, 788, 788,
1125 788, 788, 788, 788, 788, 786, 323, 789, 789, 789,
1126 789, 789, 790, 787, 787, 787, 787, 796, 322, 799,
1127 799, 799, 799, 799, 800, 797, 797, 797, 797, 100,
1128 191, 801, 802, 803, 801, 801, 801, 801, 801, 801,
1129 801, 786, 315, 787, 787, 787, 787, 787, 787, 787,
1130 787, 787, 787, 786, 315, 787, 787, 787, 787, 787,
1131 787, 787, 787, 787, 787, 807, 807, 807, 807, 807,
1132 807, 807, 807, 807, 807, 811, 811, 811, 811, 811,
1133 812, 810, 810, 810, 810, 810, 810, 810, 810, 810,
1135 810, 810, 810, 810, 810, 250, 312, 309, 308, 307,
1136 306, 101, 801, 801, 801, 801, 801, 801, 801, 801,
1137 801, 801, 305, 300, 299, 298, 297, 296, 295, 294,
1138 293, 292, 291, 290, 289, 125, 117, 105, 105, 267,
1139 266, 265, 264, 259, 258, 257, 813, 188, 101, 808,
1140 808, 808, 808, 808, 809, 807, 807, 807, 807, 250,
1141 176, 177, 171, 171, 163, 248, 157, 157, 241, 240,
1142 239, 238, 237, 234, 233, 232, 231, 230, 225, 224,
1143 223, 222, 125, 100, 125, 101, 807, 807, 807, 807,
1144 807, 807, 807, 807, 807, 807, 190, 113, 210, 105,
1146 103, 102, 101, 205, 204, 203, 202, 198, 177, 171,
1147 163, 133, 131, 157, 156, 153, 151, 137, 136, 135,
1148 132, 127, 101, 61, 61, 61, 61, 61, 61, 61,
1149 61, 61, 61, 61, 61, 61, 61, 61, 61, 61,
1150 61, 61, 61, 61, 33, 33, 33, 33, 33, 33,
1151 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
1152 33, 33, 33, 33, 33, 70, 70, 70, 70, 70,
1153 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
1154 70, 70, 70, 70, 70, 70, 77, 77, 77, 77,
1155 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
1157 77, 77, 77, 77, 77, 77, 77, 100, 125, 113,
1158 103, 102, 101, 813, 100, 813, 100, 100, 100, 100,
1159 813, 813, 100, 100, 100, 100, 100, 100, 104, 104,
1160 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
1161 104, 104, 104, 104, 104, 104, 104, 104, 104, 108,
1162 813, 813, 813, 813, 108, 813, 108, 813, 108, 108,
1163 108, 108, 108, 813, 108, 108, 108, 108, 108, 108,
1164 112, 813, 813, 813, 813, 813, 813, 112, 813, 112,
1165 112, 112, 112, 813, 813, 112, 112, 112, 112, 112,
1166 112, 114, 813, 813, 114, 114, 813, 114, 114, 813,
1168 114, 114, 114, 114, 813, 813, 114, 114, 114, 114,
1169 114, 114, 124, 124, 813, 124, 813, 813, 813, 124,
1170 158, 813, 813, 158, 158, 813, 158, 158, 813, 158,
1171 158, 158, 158, 813, 813, 158, 158, 158, 158, 158,
1172 158, 162, 813, 813, 162, 162, 813, 162, 162, 813,
1173 162, 162, 162, 162, 813, 162, 162, 162, 813, 162,
1174 162, 162, 170, 813, 813, 170, 813, 813, 170, 170,
1175 813, 170, 170, 170, 170, 170, 813, 170, 170, 170,
1176 170, 170, 170, 174, 174, 174, 174, 174, 174, 174,
1177 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
1179 174, 174, 174, 174, 176, 176, 813, 176, 813, 176,
1180 176, 176, 176, 176, 176, 176, 176, 176, 176, 176,
1181 176, 176, 176, 176, 176, 182, 813, 813, 813, 813,
1182 182, 813, 182, 813, 182, 182, 182, 182, 182, 813,
1183 182, 182, 182, 182, 182, 182, 186, 813, 813, 813,
1184 813, 813, 813, 186, 813, 186, 186, 186, 186, 813,
1185 186, 186, 186, 186, 186, 186, 186, 189, 813, 813,
1186 189, 189, 813, 189, 189, 813, 189, 189, 189, 189,
1187 813, 189, 189, 189, 189, 189, 189, 189, 208, 208,
1188 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
1190 208, 208, 208, 208, 208, 208, 208, 208, 208, 209,
1191 209, 813, 209, 209, 209, 209, 209, 209, 209, 209,
1192 209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
1193 115, 813, 813, 115, 115, 813, 115, 115, 813, 115,
1194 115, 115, 115, 813, 813, 115, 115, 115, 115, 115,
1195 115, 124, 124, 813, 124, 813, 813, 813, 124, 217,
1196 217, 813, 217, 813, 813, 813, 217, 219, 219, 219,
1197 813, 219, 813, 813, 813, 219, 158, 813, 813, 158,
1198 158, 813, 158, 158, 813, 158, 158, 158, 158, 813,
1199 813, 158, 158, 158, 158, 158, 158, 159, 813, 813,
1201 159, 159, 813, 159, 159, 813, 159, 159, 159, 159,
1202 813, 813, 159, 159, 159, 159, 159, 159, 162, 813,
1203 813, 162, 162, 813, 162, 162, 813, 162, 162, 162,
1204 162, 813, 162, 162, 162, 813, 162, 162, 162, 170,
1205 813, 813, 170, 813, 813, 170, 170, 813, 170, 170,
1206 170, 170, 170, 813, 170, 170, 170, 170, 170, 170,
1207 185, 813, 813, 813, 813, 813, 813, 185, 813, 185,
1208 185, 185, 185, 813, 813, 185, 185, 185, 185, 185,
1209 185, 186, 813, 813, 813, 813, 813, 813, 186, 813,
1210 186, 186, 186, 186, 813, 186, 186, 186, 186, 186,
1212 186, 186, 189, 813, 813, 189, 189, 813, 189, 189,
1213 813, 189, 189, 189, 189, 813, 189, 189, 189, 189,
1214 189, 189, 189, 200, 813, 813, 200, 200, 813, 200,
1215 268, 268, 268, 268, 268, 268, 268, 268, 268, 268,
1216 268, 268, 268, 268, 268, 268, 268, 268, 268, 268,
1217 268, 275, 275, 813, 275, 813, 813, 813, 275, 281,
1218 281, 281, 813, 281, 813, 813, 813, 281, 337, 337,
1219 813, 337, 813, 813, 813, 337, 338, 338, 813, 338,
1220 813, 813, 813, 338, 342, 342, 813, 342, 813, 813,
1221 813, 342, 344, 344, 344, 813, 344, 813, 813, 813,
1223 344, 200, 813, 813, 200, 200, 813, 200, 404, 404,
1224 813, 404, 813, 813, 813, 404, 406, 406, 813, 406,
1225 813, 813, 813, 406, 407, 407, 813, 407, 813, 813,
1226 813, 407, 409, 409, 409, 813, 409, 813, 813, 813,
1227 409, 413, 413, 413, 413, 813, 413, 813, 813, 813,
1228 413, 467, 467, 813, 467, 813, 813, 813, 467, 468,
1229 468, 813, 468, 813, 813, 813, 468, 469, 469, 813,
1230 469, 813, 813, 813, 469, 481, 481, 481, 813, 481,
1231 813, 813, 813, 481, 482, 482, 482, 482, 813, 482,
1232 813, 813, 813, 482, 208, 208, 208, 208, 208, 208,
1234 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
1235 208, 208, 208, 208, 208, 530, 530, 813, 530, 813,
1236 813, 813, 530, 531, 531, 813, 531, 813, 813, 813,
1237 531, 547, 547, 547, 813, 547, 813, 813, 813, 547,
1238 548, 548, 548, 548, 813, 548, 813, 813, 813, 548,
1239 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
1240 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
1241 208, 200, 813, 813, 200, 200, 813, 200, 187, 813,
1242 813, 813, 187, 187, 813, 187, 187, 187, 813, 813,
1243 187, 187, 590, 590, 813, 590, 813, 813, 813, 590,
1245 594, 813, 594, 594, 813, 594, 813, 813, 813, 594,
1246 612, 612, 612, 813, 612, 813, 813, 813, 612, 613,
1247 613, 613, 613, 813, 613, 813, 813, 813, 613, 559,
1248 559, 813, 813, 559, 813, 813, 813, 559, 208, 208,
1249 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
1250 208, 208, 208, 208, 208, 208, 208, 208, 208, 200,
1251 813, 813, 200, 200, 813, 200, 187, 813, 813, 813,
1252 187, 187, 813, 187, 187, 187, 813, 813, 187, 187,
1253 655, 655, 813, 655, 813, 813, 813, 655, 656, 813,
1254 656, 656, 813, 656, 813, 813, 813, 656, 672, 672,
1256 672, 813, 672, 813, 813, 813, 672, 673, 673, 673,
1257 813, 813, 673, 813, 813, 813, 673, 682, 682, 682,
1258 682, 682, 682, 682, 682, 682, 682, 682, 682, 682,
1259 682, 682, 682, 682, 682, 682, 682, 682, 687, 687,
1260 813, 687, 687, 687, 813, 687, 813, 687, 687, 687,
1261 687, 813, 813, 687, 687, 687, 687, 687, 687, 693,
1262 693, 813, 693, 693, 693, 813, 693, 813, 693, 693,
1263 693, 693, 813, 813, 693, 693, 693, 693, 693, 693,
1264 200, 813, 813, 813, 813, 813, 813, 813, 813, 813,
1265 813, 200, 200, 813, 200, 200, 813, 200, 710, 710,
1267 813, 710, 813, 813, 813, 710, 711, 813, 711, 711,
1268 813, 711, 813, 813, 813, 711, 727, 727, 813, 813,
1269 727, 813, 813, 813, 727, 693, 813, 813, 813, 813,
1270 813, 813, 693, 813, 693, 693, 693, 693, 813, 813,
1271 693, 693, 693, 693, 693, 693, 751, 751, 813, 751,
1272 813, 813, 813, 751, 752, 813, 752, 752, 813, 752,
1273 813, 813, 813, 752, 775, 775, 813, 775, 813, 813,
1274 813, 775, 776, 813, 776, 813, 813, 776, 813, 813,
1275 813, 776, 780, 780, 780, 780, 780, 780, 780, 780,
1276 780, 780, 780, 780, 780, 780, 780, 780, 780, 780,
1278 780, 780, 780, 15, 813, 813, 813, 813, 813, 813,
1279 813, 813, 813, 813, 813, 813, 813, 813, 813, 813,
1280 813, 813, 813, 813, 813, 813, 813, 813, 813, 813,
1281 813, 813, 813, 813, 813, 813, 813, 813, 813, 813,
1282 813, 813, 813, 813, 813, 813, 813, 813, 813, 813,
1283 813, 813, 813, 813, 813, 813, 813, 813, 813, 813,
1284 813, 813, 813, 813, 813, 813, 813, 813, 813, 813,
1288 static yyconst short int yy_chk[5675] =
1290 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1291 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1292 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1293 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1294 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1295 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1296 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1297 2, 533, 3, 38, 2, 52, 3, 49, 38, 50,
1298 4, 36, 3, 533, 4, 3, 11, 11, 11, 11,
1299 4, 22, 36, 4, 40, 5, 5, 5, 50, 5,
1301 2, 2, 49, 52, 2, 5, 68, 68, 40, 3,
1302 807, 22, 2, 3, 3, 2, 3, 4, 54, 5,
1303 5, 4, 4, 148, 4, 6, 6, 6, 54, 6,
1304 799, 12, 12, 12, 12, 6, 11, 22, 3, 76,
1305 76, 72, 46, 27, 27, 5, 4, 27, 27, 6,
1306 6, 46, 47, 78, 9, 9, 9, 9, 9, 74,
1307 46, 164, 164, 9, 9, 9, 72, 27, 30, 30,
1308 30, 30, 30, 30, 79, 6, 7, 7, 7, 9,
1309 7, 12, 47, 47, 74, 148, 47, 60, 141, 81,
1310 81, 27, 81, 141, 47, 91, 60, 47, 10, 10,
1312 10, 10, 10, 78, 9, 60, 91, 10, 10, 10,
1313 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1314 161, 798, 79, 10, 179, 161, 7, 7, 7, 7,
1315 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
1316 7, 7, 7, 7, 7, 8, 8, 8, 10, 8,
1317 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
1318 87, 87, 87, 87, 87, 87, 99, 101, 274, 101,
1319 101, 101, 179, 101, 101, 99, 149, 101, 106, 106,
1320 106, 106, 106, 106, 106, 106, 106, 106, 140, 149,
1321 140, 101, 101, 101, 274, 8, 8, 8, 8, 8,
1323 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
1324 8, 8, 8, 8, 13, 13, 13, 13, 13, 13,
1325 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
1326 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
1327 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
1328 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
1329 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
1330 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
1331 13, 13, 13, 13, 21, 125, 153, 797, 82, 168,
1332 168, 270, 153, 178, 21, 784, 125, 21, 21, 21,
1334 21, 21, 21, 21, 21, 21, 21, 28, 82, 28,
1335 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1336 152, 180, 180, 28, 28, 28, 28, 28, 151, 270,
1337 289, 57, 57, 152, 82, 57, 57, 123, 123, 123,
1338 123, 123, 123, 178, 151, 28, 154, 28, 28, 28,
1339 28, 28, 28, 34, 289, 57, 154, 500, 246, 34,
1340 246, 500, 34, 34, 313, 34, 34, 34, 34, 34,
1341 34, 34, 34, 34, 34, 34, 34, 34, 34, 57,
1342 313, 34, 34, 34, 34, 34, 34, 34, 34, 34,
1343 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
1345 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
1346 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
1347 34, 34, 34, 37, 37, 37, 37, 37, 37, 37,
1348 37, 37, 37, 37, 219, 783, 242, 37, 37, 37,
1349 37, 37, 245, 150, 236, 219, 37, 107, 107, 107,
1350 107, 107, 107, 107, 107, 107, 107, 247, 236, 245,
1351 303, 37, 37, 37, 37, 37, 37, 44, 44, 44,
1352 44, 44, 247, 44, 44, 311, 311, 44, 121, 121,
1353 121, 121, 121, 121, 121, 121, 121, 121, 150, 242,
1354 108, 44, 44, 44, 45, 303, 45, 45, 45, 45,
1356 45, 45, 45, 45, 45, 45, 48, 66, 66, 66,
1357 108, 66, 304, 110, 370, 66, 48, 66, 304, 48,
1358 48, 48, 48, 48, 48, 48, 48, 48, 48, 132,
1359 243, 66, 66, 110, 132, 243, 108, 281, 132, 171,
1360 132, 83, 171, 171, 370, 138, 138, 83, 281, 171,
1361 83, 114, 114, 83, 83, 114, 114, 66, 182, 110,
1362 780, 302, 175, 175, 171, 48, 67, 83, 291, 83,
1363 183, 235, 235, 291, 235, 114, 67, 249, 182, 67,
1364 67, 67, 67, 67, 67, 67, 67, 67, 67, 302,
1365 183, 249, 83, 83, 84, 138, 777, 84, 84, 114,
1367 84, 84, 84, 84, 182, 235, 84, 84, 111, 775,
1368 111, 111, 175, 314, 111, 111, 183, 369, 111, 314,
1369 84, 84, 84, 122, 122, 122, 122, 122, 122, 122,
1370 122, 122, 122, 111, 111, 156, 156, 156, 156, 156,
1371 156, 156, 156, 156, 156, 84, 84, 85, 310, 369,
1372 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
1373 85, 85, 85, 85, 322, 357, 85, 85, 85, 85,
1374 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
1375 85, 85, 85, 85, 85, 85, 85, 85, 322, 357,
1376 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
1378 85, 85, 85, 85, 85, 85, 85, 88, 310, 88,
1379 88, 88, 88, 88, 88, 88, 88, 88, 88, 88,
1380 278, 278, 278, 88, 88, 88, 88, 88, 266, 266,
1381 113, 266, 113, 113, 113, 330, 113, 113, 330, 371,
1382 113, 196, 196, 196, 196, 196, 196, 88, 88, 88,
1383 88, 88, 88, 89, 113, 113, 113, 89, 89, 89,
1384 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
1385 453, 371, 89, 89, 89, 89, 89, 89, 89, 89,
1386 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
1387 89, 89, 89, 89, 453, 89, 89, 89, 89, 89,
1389 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
1390 89, 89, 89, 92, 92, 92, 92, 92, 92, 92,
1391 92, 92, 92, 92, 377, 444, 378, 92, 92, 92,
1392 92, 92, 203, 344, 158, 158, 92, 203, 158, 158,
1393 323, 203, 444, 203, 344, 323, 301, 142, 378, 301,
1394 457, 92, 92, 92, 92, 92, 92, 97, 158, 97,
1395 97, 97, 97, 97, 97, 97, 97, 97, 97, 116,
1396 766, 116, 116, 116, 457, 116, 116, 142, 142, 116,
1397 301, 142, 158, 214, 214, 214, 214, 214, 214, 142,
1398 372, 377, 142, 116, 116, 116, 117, 117, 117, 117,
1400 117, 117, 117, 117, 117, 117, 167, 167, 167, 167,
1401 167, 167, 167, 167, 167, 167, 346, 346, 765, 160,
1402 379, 160, 160, 160, 372, 160, 160, 764, 346, 160,
1403 400, 379, 117, 118, 118, 118, 118, 118, 118, 118,
1404 118, 118, 118, 160, 160, 160, 458, 118, 118, 118,
1405 118, 118, 191, 191, 191, 191, 191, 191, 191, 191,
1406 191, 191, 273, 273, 273, 273, 427, 427, 400, 755,
1407 458, 118, 118, 118, 118, 118, 118, 126, 126, 126,
1408 126, 126, 126, 126, 126, 126, 126, 126, 312, 498,
1409 754, 126, 126, 126, 126, 126, 194, 194, 194, 194,
1411 194, 194, 194, 194, 194, 194, 285, 285, 285, 285,
1412 285, 285, 752, 498, 312, 126, 126, 126, 126, 126,
1413 126, 127, 127, 127, 127, 127, 127, 127, 127, 127,
1414 127, 127, 312, 562, 562, 127, 127, 127, 127, 127,
1415 184, 409, 184, 184, 373, 186, 184, 184, 380, 373,
1416 184, 186, 409, 380, 186, 348, 348, 186, 186, 127,
1417 127, 127, 127, 127, 127, 184, 184, 348, 413, 497,
1418 428, 186, 428, 186, 188, 497, 188, 188, 188, 413,
1419 188, 188, 429, 751, 188, 195, 195, 195, 195, 195,
1420 195, 195, 195, 195, 195, 526, 186, 186, 188, 188,
1422 188, 189, 615, 615, 189, 189, 429, 189, 189, 189,
1423 189, 190, 431, 189, 189, 190, 502, 431, 414, 414,
1424 502, 190, 415, 415, 429, 433, 430, 189, 189, 189,
1425 414, 430, 526, 430, 415, 190, 190, 210, 210, 210,
1426 210, 210, 210, 210, 210, 210, 210, 432, 508, 433,
1427 432, 523, 189, 189, 192, 192, 192, 192, 192, 192,
1428 192, 192, 192, 192, 749, 508, 523, 433, 192, 192,
1429 192, 192, 192, 211, 211, 211, 211, 211, 211, 211,
1430 211, 211, 211, 319, 511, 319, 319, 319, 319, 319,
1431 319, 439, 192, 192, 192, 192, 192, 192, 197, 748,
1433 513, 439, 197, 197, 197, 197, 197, 197, 197, 197,
1434 197, 197, 197, 197, 197, 442, 513, 197, 197, 197,
1435 197, 197, 197, 197, 197, 197, 197, 197, 197, 197,
1436 197, 197, 197, 197, 197, 197, 197, 197, 197, 511,
1437 197, 197, 197, 197, 197, 197, 197, 197, 197, 197,
1438 197, 197, 197, 197, 197, 197, 197, 197, 198, 198,
1439 198, 198, 198, 198, 198, 198, 198, 198, 198, 442,
1440 504, 506, 198, 198, 198, 198, 198, 213, 213, 213,
1441 213, 213, 213, 213, 213, 213, 213, 354, 354, 354,
1442 354, 354, 354, 434, 504, 506, 198, 198, 198, 198,
1444 198, 198, 212, 747, 212, 212, 212, 212, 212, 212,
1445 212, 212, 212, 212, 248, 454, 737, 434, 248, 514,
1446 454, 561, 736, 561, 248, 282, 282, 282, 282, 282,
1447 282, 282, 282, 282, 282, 434, 514, 727, 248, 248,
1448 212, 215, 443, 215, 215, 215, 215, 215, 215, 215,
1449 215, 215, 215, 443, 564, 584, 564, 215, 215, 215,
1450 215, 215, 284, 284, 284, 284, 284, 284, 284, 284,
1451 284, 284, 423, 423, 423, 423, 423, 423, 571, 584,
1452 571, 215, 215, 215, 215, 215, 215, 218, 218, 218,
1453 218, 218, 218, 218, 218, 218, 218, 218, 589, 589,
1455 589, 218, 218, 218, 218, 218, 315, 315, 315, 315,
1456 315, 315, 315, 315, 315, 315, 450, 725, 450, 450,
1457 450, 450, 450, 450, 724, 218, 218, 218, 218, 218,
1458 218, 220, 220, 220, 220, 220, 220, 220, 220, 220,
1459 220, 220, 220, 565, 616, 616, 220, 220, 220, 220,
1460 220, 345, 345, 345, 345, 345, 345, 345, 345, 345,
1461 345, 466, 466, 466, 466, 466, 466, 565, 623, 623,
1462 220, 220, 220, 220, 220, 220, 221, 221, 221, 221,
1463 221, 221, 221, 221, 221, 221, 221, 566, 625, 565,
1464 221, 221, 221, 221, 221, 347, 347, 347, 347, 347,
1466 347, 347, 347, 347, 347, 473, 473, 473, 473, 473,
1467 473, 566, 625, 723, 221, 221, 221, 221, 221, 221,
1468 222, 222, 222, 222, 222, 222, 222, 222, 222, 222,
1469 222, 631, 631, 566, 222, 222, 222, 222, 222, 351,
1470 351, 351, 351, 351, 351, 351, 351, 622, 711, 622,
1471 403, 351, 403, 403, 403, 403, 403, 403, 222, 222,
1472 222, 222, 222, 222, 253, 627, 253, 253, 253, 253,
1473 253, 253, 253, 253, 253, 253, 254, 254, 254, 254,
1474 254, 254, 254, 254, 254, 254, 254, 710, 403, 627,
1475 254, 254, 254, 254, 254, 353, 353, 353, 353, 353,
1477 353, 353, 353, 353, 353, 480, 708, 480, 480, 480,
1478 480, 480, 480, 707, 254, 254, 254, 254, 254, 254,
1479 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
1480 529, 529, 529, 529, 256, 256, 256, 256, 256, 416,
1481 416, 416, 416, 416, 416, 416, 416, 416, 416, 492,
1482 492, 492, 492, 492, 492, 674, 674, 700, 256, 256,
1483 256, 256, 256, 256, 269, 269, 269, 269, 269, 269,
1484 269, 269, 269, 269, 417, 417, 420, 420, 420, 420,
1485 420, 420, 420, 420, 680, 680, 417, 535, 420, 422,
1486 422, 422, 422, 422, 422, 422, 422, 422, 422, 535,
1488 269, 277, 277, 277, 277, 277, 277, 277, 277, 277,
1489 277, 277, 283, 283, 283, 283, 283, 283, 283, 283,
1490 283, 283, 283, 283, 283, 445, 683, 683, 283, 283,
1491 283, 283, 283, 570, 570, 445, 446, 446, 446, 446,
1492 446, 446, 446, 446, 446, 446, 541, 541, 541, 541,
1493 541, 541, 283, 283, 283, 283, 283, 283, 286, 286,
1494 286, 286, 286, 286, 286, 286, 286, 286, 286, 286,
1495 679, 698, 679, 286, 286, 286, 286, 286, 465, 465,
1496 465, 465, 465, 465, 465, 465, 465, 465, 570, 563,
1497 697, 624, 620, 481, 563, 620, 624, 286, 286, 286,
1499 286, 286, 286, 287, 481, 287, 287, 287, 287, 287,
1500 287, 287, 287, 287, 287, 320, 320, 320, 320, 320,
1501 320, 320, 320, 320, 320, 696, 621, 640, 643, 320,
1502 320, 320, 320, 320, 470, 470, 470, 470, 470, 470,
1503 470, 470, 470, 470, 558, 558, 558, 558, 558, 558,
1504 621, 640, 643, 320, 320, 320, 320, 320, 320, 321,
1505 321, 321, 321, 321, 321, 321, 321, 321, 321, 643,
1506 630, 693, 621, 321, 321, 321, 321, 321, 472, 472,
1507 472, 472, 472, 472, 472, 472, 472, 472, 648, 648,
1508 648, 648, 630, 482, 630, 630, 691, 321, 321, 321,
1510 321, 321, 321, 334, 482, 334, 334, 334, 334, 334,
1511 334, 334, 334, 334, 334, 335, 595, 335, 335, 335,
1512 335, 335, 335, 335, 335, 335, 335, 336, 595, 336,
1513 336, 336, 336, 336, 336, 336, 336, 336, 336, 339,
1514 339, 339, 339, 339, 339, 339, 339, 339, 339, 339,
1515 349, 349, 349, 349, 349, 349, 349, 349, 349, 349,
1516 349, 349, 349, 572, 685, 633, 349, 349, 349, 349,
1517 349, 476, 476, 476, 476, 476, 476, 476, 476, 476,
1518 476, 633, 731, 824, 731, 572, 824, 572, 572, 645,
1519 349, 349, 349, 349, 349, 349, 352, 352, 352, 352,
1521 352, 352, 352, 352, 352, 352, 352, 352, 352, 483,
1522 483, 572, 352, 352, 352, 352, 352, 484, 484, 486,
1523 486, 483, 496, 501, 503, 733, 733, 645, 685, 484,
1524 676, 486, 496, 501, 686, 503, 352, 352, 352, 352,
1525 352, 352, 355, 355, 355, 355, 355, 355, 355, 355,
1526 355, 355, 355, 355, 676, 682, 641, 355, 355, 355,
1527 355, 355, 485, 485, 485, 485, 485, 485, 485, 485,
1528 485, 485, 604, 604, 604, 604, 604, 604, 512, 632,
1529 641, 355, 355, 355, 355, 355, 355, 356, 512, 356,
1530 356, 356, 356, 356, 356, 356, 356, 356, 356, 383,
1532 641, 383, 383, 383, 383, 383, 383, 383, 383, 383,
1533 383, 384, 384, 384, 384, 384, 384, 384, 384, 384,
1534 384, 762, 762, 781, 781, 384, 384, 384, 384, 384,
1535 489, 489, 489, 489, 489, 489, 489, 489, 632, 882,
1536 882, 611, 489, 611, 611, 611, 611, 611, 611, 384,
1537 384, 384, 384, 384, 384, 399, 399, 399, 399, 399,
1538 399, 399, 399, 399, 399, 491, 491, 491, 491, 491,
1539 491, 491, 491, 491, 491, 532, 532, 532, 532, 532,
1540 532, 532, 532, 532, 532, 639, 681, 639, 639, 639,
1541 649, 399, 401, 596, 401, 401, 401, 401, 401, 401,
1543 401, 401, 401, 401, 402, 596, 402, 402, 402, 402,
1544 402, 402, 402, 402, 402, 402, 408, 408, 408, 408,
1545 408, 408, 408, 408, 408, 408, 408, 701, 649, 728,
1546 408, 408, 408, 408, 408, 534, 534, 534, 534, 534,
1547 534, 534, 534, 534, 534, 675, 836, 742, 787, 836,
1548 547, 701, 673, 728, 408, 408, 408, 408, 408, 408,
1549 412, 547, 412, 412, 412, 412, 412, 412, 412, 412,
1550 412, 412, 418, 418, 418, 418, 418, 418, 418, 418,
1551 418, 418, 418, 418, 418, 742, 787, 670, 418, 418,
1552 418, 418, 418, 538, 598, 538, 538, 538, 538, 538,
1554 538, 827, 827, 827, 669, 538, 598, 634, 739, 634,
1555 634, 634, 418, 418, 418, 418, 418, 418, 421, 421,
1556 421, 421, 421, 421, 421, 421, 421, 421, 421, 421,
1557 421, 853, 739, 853, 421, 421, 421, 421, 421, 540,
1558 540, 540, 540, 540, 540, 540, 540, 540, 540, 578,
1559 578, 578, 578, 578, 578, 578, 656, 634, 421, 421,
1560 421, 421, 421, 421, 424, 424, 424, 424, 424, 424,
1561 424, 424, 424, 424, 424, 424, 548, 549, 549, 424,
1562 424, 424, 424, 424, 550, 550, 612, 548, 613, 549,
1563 552, 552, 844, 844, 844, 655, 550, 612, 657, 613,
1565 759, 642, 552, 424, 424, 424, 424, 424, 424, 425,
1566 657, 425, 425, 425, 425, 425, 425, 425, 425, 425,
1567 425, 426, 653, 768, 759, 642, 854, 426, 854, 916,
1568 426, 426, 916, 426, 426, 426, 426, 426, 426, 426,
1569 426, 426, 426, 426, 426, 426, 642, 768, 652, 426,
1570 426, 426, 426, 426, 426, 426, 426, 426, 426, 426,
1571 426, 426, 426, 426, 426, 426, 426, 426, 426, 426,
1572 426, 426, 426, 426, 426, 426, 426, 426, 426, 426,
1573 426, 426, 426, 426, 426, 426, 426, 426, 426, 426,
1574 426, 464, 464, 464, 464, 464, 464, 464, 464, 464,
1576 464, 464, 555, 555, 555, 555, 555, 555, 555, 555,
1577 865, 651, 865, 658, 555, 557, 557, 557, 557, 557,
1578 557, 557, 557, 557, 557, 658, 883, 883, 464, 471,
1579 660, 471, 471, 471, 471, 471, 471, 471, 471, 471,
1580 471, 471, 660, 637, 702, 471, 471, 471, 471, 471,
1581 574, 574, 574, 574, 574, 574, 574, 574, 574, 574,
1582 619, 619, 619, 619, 619, 619, 619, 619, 702, 471,
1583 471, 471, 471, 471, 471, 474, 474, 474, 474, 474,
1584 474, 474, 474, 474, 474, 474, 778, 636, 702, 474,
1585 474, 474, 474, 474, 587, 587, 587, 587, 587, 587,
1587 587, 587, 587, 587, 866, 870, 866, 870, 614, 614,
1588 778, 894, 894, 474, 474, 474, 474, 474, 474, 475,
1589 614, 475, 475, 475, 475, 475, 475, 475, 475, 475,
1590 475, 487, 487, 487, 487, 487, 487, 487, 487, 487,
1591 487, 487, 487, 487, 678, 629, 703, 487, 487, 487,
1592 487, 487, 588, 588, 588, 588, 588, 588, 588, 588,
1593 588, 588, 635, 610, 635, 635, 635, 871, 678, 871,
1594 703, 487, 487, 487, 487, 487, 487, 490, 490, 490,
1595 490, 490, 490, 490, 490, 490, 490, 490, 490, 490,
1596 678, 703, 740, 490, 490, 490, 490, 490, 597, 597,
1598 597, 597, 597, 597, 597, 597, 597, 597, 875, 878,
1599 875, 878, 635, 888, 609, 888, 740, 490, 490, 490,
1600 490, 490, 490, 493, 493, 493, 493, 493, 493, 493,
1601 493, 493, 493, 493, 608, 889, 740, 889, 493, 493,
1602 493, 493, 493, 601, 594, 601, 601, 601, 601, 601,
1603 601, 897, 592, 897, 654, 601, 654, 654, 654, 654,
1604 654, 654, 493, 493, 493, 493, 493, 493, 494, 712,
1605 494, 494, 494, 494, 494, 494, 494, 494, 494, 494,
1606 495, 712, 898, 901, 898, 901, 495, 692, 692, 495,
1607 495, 692, 495, 495, 495, 495, 495, 495, 495, 495,
1609 495, 495, 495, 495, 495, 692, 692, 692, 495, 495,
1610 495, 495, 495, 495, 495, 495, 495, 495, 495, 495,
1611 495, 495, 495, 495, 495, 495, 495, 495, 495, 495,
1612 495, 495, 495, 495, 495, 495, 495, 495, 495, 495,
1613 495, 495, 495, 495, 495, 495, 495, 495, 495, 495,
1614 517, 517, 517, 517, 517, 517, 517, 517, 517, 517,
1615 517, 522, 913, 913, 713, 522, 522, 522, 522, 522,
1616 522, 522, 522, 522, 522, 522, 713, 522, 914, 914,
1617 522, 522, 522, 522, 522, 522, 522, 522, 522, 522,
1618 522, 522, 522, 522, 522, 522, 522, 522, 522, 522,
1620 522, 522, 591, 522, 522, 522, 522, 522, 522, 522,
1621 522, 522, 522, 522, 522, 522, 522, 522, 522, 522,
1622 522, 525, 525, 525, 525, 525, 525, 525, 525, 525,
1623 525, 603, 603, 603, 603, 603, 603, 603, 603, 603,
1624 603, 607, 607, 607, 607, 607, 607, 607, 607, 607,
1625 607, 666, 666, 666, 666, 666, 666, 525, 527, 527,
1626 527, 527, 527, 527, 527, 527, 527, 527, 527, 650,
1627 650, 650, 650, 650, 650, 650, 650, 650, 650, 659,
1628 659, 659, 659, 659, 659, 659, 659, 659, 659, 721,
1629 721, 721, 721, 721, 721, 527, 536, 715, 536, 536,
1631 536, 536, 536, 536, 536, 536, 536, 536, 536, 715,
1632 590, 582, 536, 536, 536, 536, 536, 663, 753, 663,
1633 663, 663, 663, 663, 663, 907, 908, 907, 908, 663,
1634 753, 687, 672, 687, 687, 687, 536, 536, 536, 536,
1635 536, 536, 539, 672, 539, 539, 539, 539, 539, 539,
1636 539, 539, 539, 539, 539, 730, 581, 580, 539, 539,
1637 539, 539, 539, 665, 665, 665, 665, 665, 665, 665,
1638 665, 665, 665, 688, 579, 688, 688, 688, 910, 730,
1639 910, 687, 539, 539, 539, 539, 539, 539, 542, 542,
1640 542, 542, 542, 542, 542, 542, 542, 542, 542, 577,
1642 576, 730, 542, 542, 542, 542, 542, 695, 695, 695,
1643 695, 695, 695, 695, 695, 695, 695, 794, 794, 794,
1644 794, 794, 794, 688, 575, 573, 542, 542, 542, 542,
1645 542, 542, 543, 569, 543, 543, 543, 543, 543, 543,
1646 543, 543, 543, 543, 546, 568, 546, 546, 546, 546,
1647 546, 546, 546, 546, 546, 546, 553, 553, 553, 553,
1648 553, 553, 553, 553, 553, 553, 553, 553, 553, 567,
1649 551, 761, 553, 553, 553, 553, 553, 689, 545, 689,
1650 689, 689, 690, 544, 690, 690, 690, 699, 531, 699,
1651 699, 699, 699, 699, 699, 761, 553, 553, 553, 553,
1653 553, 553, 556, 556, 556, 556, 556, 556, 556, 556,
1654 556, 556, 556, 556, 918, 530, 918, 761, 556, 556,
1655 556, 556, 556, 919, 923, 919, 923, 689, 924, 929,
1656 924, 929, 690, 726, 726, 726, 726, 726, 726, 726,
1657 524, 521, 556, 556, 556, 556, 556, 556, 559, 520,
1658 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
1659 560, 694, 519, 694, 694, 694, 560, 694, 694, 560,
1660 560, 694, 560, 560, 560, 560, 560, 560, 560, 560,
1661 560, 560, 560, 560, 560, 694, 694, 694, 560, 560,
1662 560, 560, 560, 560, 560, 560, 560, 560, 560, 560,
1664 560, 560, 560, 560, 560, 560, 560, 560, 560, 560,
1665 560, 560, 560, 560, 560, 560, 560, 560, 560, 560,
1666 560, 560, 560, 560, 560, 560, 560, 560, 560, 560,
1667 583, 750, 518, 750, 750, 750, 750, 750, 750, 583,
1668 930, 516, 930, 583, 583, 583, 583, 583, 583, 583,
1669 583, 583, 583, 583, 583, 583, 515, 510, 583, 583,
1670 583, 583, 583, 583, 583, 583, 583, 583, 583, 583,
1671 583, 583, 583, 583, 583, 583, 583, 583, 583, 583,
1672 509, 583, 583, 583, 583, 583, 583, 583, 583, 583,
1673 583, 583, 583, 583, 583, 583, 583, 583, 583, 586,
1675 479, 586, 586, 586, 586, 586, 586, 586, 586, 586,
1676 586, 714, 714, 714, 714, 714, 714, 714, 714, 714,
1677 714, 718, 478, 718, 718, 718, 718, 718, 718, 922,
1678 477, 469, 922, 718, 468, 467, 922, 586, 593, 463,
1679 593, 593, 593, 593, 593, 593, 593, 593, 593, 593,
1680 599, 456, 599, 599, 599, 599, 599, 599, 599, 599,
1681 599, 599, 599, 455, 452, 451, 599, 599, 599, 599,
1682 599, 720, 720, 720, 720, 720, 720, 720, 720, 720,
1683 720, 758, 449, 758, 758, 758, 758, 758, 758, 448,
1684 599, 599, 599, 599, 599, 599, 602, 447, 602, 602,
1686 602, 602, 602, 602, 602, 602, 602, 602, 602, 441,
1687 440, 438, 602, 602, 602, 602, 602, 734, 734, 734,
1688 734, 734, 734, 734, 734, 734, 734, 767, 437, 767,
1689 767, 767, 767, 767, 767, 436, 602, 602, 602, 602,
1690 602, 602, 605, 605, 605, 605, 605, 605, 605, 605,
1691 605, 605, 605, 435, 411, 410, 605, 605, 605, 605,
1692 605, 735, 735, 735, 735, 735, 735, 735, 735, 735,
1693 735, 407, 745, 406, 745, 745, 745, 745, 745, 745,
1694 605, 605, 605, 605, 605, 605, 606, 405, 606, 606,
1695 606, 606, 606, 606, 606, 606, 606, 606, 617, 617,
1697 617, 617, 617, 617, 617, 617, 617, 617, 617, 617,
1698 745, 404, 398, 397, 617, 617, 617, 617, 617, 746,
1699 746, 746, 746, 746, 746, 746, 746, 746, 746, 800,
1700 396, 800, 800, 800, 800, 800, 800, 395, 617, 617,
1701 617, 617, 617, 617, 638, 394, 638, 638, 638, 638,
1702 638, 638, 638, 638, 638, 638, 644, 644, 644, 644,
1703 644, 644, 644, 644, 644, 644, 763, 763, 763, 763,
1704 763, 763, 763, 763, 763, 763, 772, 772, 772, 772,
1705 772, 772, 772, 772, 772, 772, 812, 812, 812, 812,
1706 812, 812, 644, 646, 393, 646, 646, 646, 646, 646,
1708 646, 646, 646, 646, 646, 773, 773, 773, 773, 773,
1709 773, 773, 773, 773, 773, 774, 774, 774, 774, 774,
1710 774, 774, 774, 774, 774, 392, 928, 391, 390, 928,
1711 389, 646, 661, 928, 661, 661, 661, 661, 661, 661,
1712 661, 661, 661, 661, 661, 388, 387, 386, 661, 661,
1713 661, 661, 661, 790, 385, 790, 790, 790, 790, 790,
1714 790, 792, 792, 792, 792, 792, 792, 792, 792, 792,
1715 792, 382, 661, 661, 661, 661, 661, 661, 664, 381,
1716 664, 664, 664, 664, 664, 664, 664, 664, 664, 664,
1717 664, 790, 376, 375, 664, 664, 664, 664, 664, 793,
1719 793, 793, 793, 793, 793, 793, 793, 793, 793, 374,
1720 368, 366, 365, 364, 363, 362, 361, 360, 664, 664,
1721 664, 664, 664, 664, 667, 667, 667, 667, 667, 667,
1722 667, 667, 667, 667, 359, 343, 342, 341, 667, 667,
1723 667, 667, 667, 796, 796, 796, 796, 796, 796, 796,
1724 796, 796, 796, 340, 338, 337, 809, 809, 809, 809,
1725 809, 809, 667, 667, 667, 667, 667, 667, 668, 333,
1726 668, 668, 668, 668, 668, 668, 668, 668, 668, 668,
1727 671, 671, 671, 671, 671, 671, 671, 671, 671, 671,
1728 671, 704, 809, 704, 704, 704, 704, 704, 704, 704,
1730 704, 704, 704, 705, 332, 705, 705, 705, 705, 705,
1731 705, 705, 705, 705, 705, 706, 331, 706, 706, 706,
1732 706, 706, 706, 706, 706, 706, 706, 709, 329, 709,
1733 709, 709, 709, 709, 709, 709, 709, 709, 709, 716,
1734 328, 716, 716, 716, 716, 716, 716, 716, 716, 716,
1735 716, 716, 327, 326, 325, 716, 716, 716, 716, 716,
1736 804, 804, 804, 804, 804, 804, 804, 804, 804, 804,
1737 324, 318, 317, 316, 309, 308, 307, 306, 305, 716,
1738 716, 716, 716, 716, 716, 719, 299, 719, 719, 719,
1739 719, 719, 719, 719, 719, 719, 719, 297, 296, 295,
1741 294, 719, 719, 719, 719, 719, 805, 805, 805, 805,
1742 805, 805, 805, 805, 805, 805, 293, 292, 290, 288,
1743 280, 279, 276, 275, 268, 719, 719, 719, 719, 719,
1744 719, 738, 267, 738, 738, 738, 738, 738, 738, 738,
1745 738, 738, 738, 741, 265, 741, 741, 741, 741, 741,
1746 741, 741, 741, 741, 741, 743, 264, 743, 743, 743,
1747 743, 743, 743, 743, 743, 743, 743, 744, 263, 744,
1748 744, 744, 744, 744, 744, 744, 744, 744, 744, 756,
1749 262, 756, 756, 756, 756, 756, 756, 756, 756, 756,
1750 756, 769, 261, 769, 769, 769, 769, 769, 769, 769,
1752 769, 769, 769, 770, 260, 770, 770, 770, 770, 770,
1753 770, 770, 770, 770, 770, 771, 259, 771, 771, 771,
1754 771, 771, 771, 771, 771, 771, 771, 785, 258, 785,
1755 785, 785, 785, 785, 785, 785, 785, 785, 785, 786,
1756 255, 786, 786, 786, 786, 786, 786, 786, 786, 786,
1757 786, 788, 252, 788, 788, 788, 788, 788, 788, 788,
1758 788, 788, 788, 789, 251, 789, 789, 789, 789, 789,
1759 789, 789, 789, 789, 789, 801, 801, 801, 801, 801,
1760 801, 801, 801, 801, 801, 806, 806, 806, 806, 806,
1761 806, 806, 806, 806, 806, 811, 811, 811, 811, 811,
1763 811, 811, 811, 811, 811, 250, 244, 241, 240, 239,
1764 238, 801, 802, 802, 802, 802, 802, 802, 802, 802,
1765 802, 802, 237, 234, 233, 232, 231, 230, 229, 228,
1766 227, 226, 225, 224, 223, 217, 216, 209, 208, 207,
1767 206, 205, 204, 202, 201, 199, 193, 185, 802, 803,
1768 803, 803, 803, 803, 803, 803, 803, 803, 803, 181,
1769 177, 176, 174, 170, 163, 159, 157, 155, 147, 146,
1770 145, 144, 143, 137, 136, 135, 134, 133, 131, 130,
1771 129, 128, 124, 120, 119, 803, 808, 808, 808, 808,
1772 808, 808, 808, 808, 808, 808, 115, 112, 109, 104,
1774 103, 102, 100, 96, 95, 94, 93, 90, 77, 70,
1775 63, 59, 58, 56, 55, 53, 51, 43, 42, 41,
1776 39, 35, 808, 814, 814, 814, 814, 814, 814, 814,
1777 814, 814, 814, 814, 814, 814, 814, 814, 814, 814,
1778 814, 814, 814, 814, 815, 815, 815, 815, 815, 815,
1779 815, 815, 815, 815, 815, 815, 815, 815, 815, 815,
1780 815, 815, 815, 815, 815, 816, 816, 816, 816, 816,
1781 816, 816, 816, 816, 816, 816, 816, 816, 816, 816,
1782 816, 816, 816, 816, 816, 816, 817, 817, 817, 817,
1783 817, 817, 817, 817, 817, 817, 817, 817, 817, 817,
1785 817, 817, 817, 817, 817, 817, 817, 818, 31, 25,
1786 19, 17, 16, 15, 818, 0, 818, 818, 818, 818,
1787 0, 0, 818, 818, 818, 818, 818, 818, 819, 819,
1788 819, 819, 819, 819, 819, 819, 819, 819, 819, 819,
1789 819, 819, 819, 819, 819, 819, 819, 819, 819, 820,
1790 0, 0, 0, 0, 820, 0, 820, 0, 820, 820,
1791 820, 820, 820, 0, 820, 820, 820, 820, 820, 820,
1792 821, 0, 0, 0, 0, 0, 0, 821, 0, 821,
1793 821, 821, 821, 0, 0, 821, 821, 821, 821, 821,
1794 821, 822, 0, 0, 822, 822, 0, 822, 822, 0,
1796 822, 822, 822, 822, 0, 0, 822, 822, 822, 822,
1797 822, 822, 823, 823, 0, 823, 0, 0, 0, 823,
1798 825, 0, 0, 825, 825, 0, 825, 825, 0, 825,
1799 825, 825, 825, 0, 0, 825, 825, 825, 825, 825,
1800 825, 826, 0, 0, 826, 826, 0, 826, 826, 0,
1801 826, 826, 826, 826, 0, 826, 826, 826, 0, 826,
1802 826, 826, 828, 0, 0, 828, 0, 0, 828, 828,
1803 0, 828, 828, 828, 828, 828, 0, 828, 828, 828,
1804 828, 828, 828, 829, 829, 829, 829, 829, 829, 829,
1805 829, 829, 829, 829, 829, 829, 829, 829, 829, 829,
1807 829, 829, 829, 829, 830, 830, 0, 830, 0, 830,
1808 830, 830, 830, 830, 830, 830, 830, 830, 830, 830,
1809 830, 830, 830, 830, 830, 831, 0, 0, 0, 0,
1810 831, 0, 831, 0, 831, 831, 831, 831, 831, 0,
1811 831, 831, 831, 831, 831, 831, 832, 0, 0, 0,
1812 0, 0, 0, 832, 0, 832, 832, 832, 832, 0,
1813 832, 832, 832, 832, 832, 832, 832, 833, 0, 0,
1814 833, 833, 0, 833, 833, 0, 833, 833, 833, 833,
1815 0, 833, 833, 833, 833, 833, 833, 833, 834, 834,
1816 834, 834, 834, 834, 834, 834, 834, 834, 834, 834,
1818 834, 834, 834, 834, 834, 834, 834, 834, 834, 835,
1819 835, 0, 835, 835, 835, 835, 835, 835, 835, 835,
1820 835, 835, 835, 835, 835, 835, 835, 835, 835, 835,
1821 837, 0, 0, 837, 837, 0, 837, 837, 0, 837,
1822 837, 837, 837, 0, 0, 837, 837, 837, 837, 837,
1823 837, 838, 838, 0, 838, 0, 0, 0, 838, 839,
1824 839, 0, 839, 0, 0, 0, 839, 840, 840, 840,
1825 0, 840, 0, 0, 0, 840, 841, 0, 0, 841,
1826 841, 0, 841, 841, 0, 841, 841, 841, 841, 0,
1827 0, 841, 841, 841, 841, 841, 841, 842, 0, 0,
1829 842, 842, 0, 842, 842, 0, 842, 842, 842, 842,
1830 0, 0, 842, 842, 842, 842, 842, 842, 843, 0,
1831 0, 843, 843, 0, 843, 843, 0, 843, 843, 843,
1832 843, 0, 843, 843, 843, 0, 843, 843, 843, 845,
1833 0, 0, 845, 0, 0, 845, 845, 0, 845, 845,
1834 845, 845, 845, 0, 845, 845, 845, 845, 845, 845,
1835 846, 0, 0, 0, 0, 0, 0, 846, 0, 846,
1836 846, 846, 846, 0, 0, 846, 846, 846, 846, 846,
1837 846, 847, 0, 0, 0, 0, 0, 0, 847, 0,
1838 847, 847, 847, 847, 0, 847, 847, 847, 847, 847,
1840 847, 847, 848, 0, 0, 848, 848, 0, 848, 848,
1841 0, 848, 848, 848, 848, 0, 848, 848, 848, 848,
1842 848, 848, 848, 849, 0, 0, 849, 849, 0, 849,
1843 850, 850, 850, 850, 850, 850, 850, 850, 850, 850,
1844 850, 850, 850, 850, 850, 850, 850, 850, 850, 850,
1845 850, 851, 851, 0, 851, 0, 0, 0, 851, 852,
1846 852, 852, 0, 852, 0, 0, 0, 852, 855, 855,
1847 0, 855, 0, 0, 0, 855, 856, 856, 0, 856,
1848 0, 0, 0, 856, 857, 857, 0, 857, 0, 0,
1849 0, 857, 858, 858, 858, 0, 858, 0, 0, 0,
1851 858, 859, 0, 0, 859, 859, 0, 859, 860, 860,
1852 0, 860, 0, 0, 0, 860, 861, 861, 0, 861,
1853 0, 0, 0, 861, 862, 862, 0, 862, 0, 0,
1854 0, 862, 863, 863, 863, 0, 863, 0, 0, 0,
1855 863, 864, 864, 864, 864, 0, 864, 0, 0, 0,
1856 864, 867, 867, 0, 867, 0, 0, 0, 867, 868,
1857 868, 0, 868, 0, 0, 0, 868, 869, 869, 0,
1858 869, 0, 0, 0, 869, 872, 872, 872, 0, 872,
1859 0, 0, 0, 872, 873, 873, 873, 873, 0, 873,
1860 0, 0, 0, 873, 874, 874, 874, 874, 874, 874,
1862 874, 874, 874, 874, 874, 874, 874, 874, 874, 874,
1863 874, 874, 874, 874, 874, 876, 876, 0, 876, 0,
1864 0, 0, 876, 877, 877, 0, 877, 0, 0, 0,
1865 877, 879, 879, 879, 0, 879, 0, 0, 0, 879,
1866 880, 880, 880, 880, 0, 880, 0, 0, 0, 880,
1867 881, 881, 881, 881, 881, 881, 881, 881, 881, 881,
1868 881, 881, 881, 881, 881, 881, 881, 881, 881, 881,
1869 881, 884, 0, 0, 884, 884, 0, 884, 885, 0,
1870 0, 0, 885, 885, 0, 885, 885, 885, 0, 0,
1871 885, 885, 886, 886, 0, 886, 0, 0, 0, 886,
1873 887, 0, 887, 887, 0, 887, 0, 0, 0, 887,
1874 890, 890, 890, 0, 890, 0, 0, 0, 890, 891,
1875 891, 891, 891, 0, 891, 0, 0, 0, 891, 892,
1876 892, 0, 0, 892, 0, 0, 0, 892, 893, 893,
1877 893, 893, 893, 893, 893, 893, 893, 893, 893, 893,
1878 893, 893, 893, 893, 893, 893, 893, 893, 893, 895,
1879 0, 0, 895, 895, 0, 895, 896, 0, 0, 0,
1880 896, 896, 0, 896, 896, 896, 0, 0, 896, 896,
1881 899, 899, 0, 899, 0, 0, 0, 899, 900, 0,
1882 900, 900, 0, 900, 0, 0, 0, 900, 902, 902,
1884 902, 0, 902, 0, 0, 0, 902, 903, 903, 903,
1885 0, 0, 903, 0, 0, 0, 903, 904, 904, 904,
1886 904, 904, 904, 904, 904, 904, 904, 904, 904, 904,
1887 904, 904, 904, 904, 904, 904, 904, 904, 905, 905,
1888 0, 905, 905, 905, 0, 905, 0, 905, 905, 905,
1889 905, 0, 0, 905, 905, 905, 905, 905, 905, 906,
1890 906, 0, 906, 906, 906, 0, 906, 0, 906, 906,
1891 906, 906, 0, 0, 906, 906, 906, 906, 906, 906,
1892 909, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1893 0, 909, 909, 0, 909, 909, 0, 909, 911, 911,
1895 0, 911, 0, 0, 0, 911, 912, 0, 912, 912,
1896 0, 912, 0, 0, 0, 912, 915, 915, 0, 0,
1897 915, 0, 0, 0, 915, 917, 0, 0, 0, 0,
1898 0, 0, 917, 0, 917, 917, 917, 917, 0, 0,
1899 917, 917, 917, 917, 917, 917, 920, 920, 0, 920,
1900 0, 0, 0, 920, 921, 0, 921, 921, 0, 921,
1901 0, 0, 0, 921, 925, 925, 0, 925, 0, 0,
1902 0, 925, 926, 0, 926, 0, 0, 926, 0, 0,
1903 0, 926, 927, 927, 927, 927, 927, 927, 927, 927,
1904 927, 927, 927, 927, 927, 927, 927, 927, 927, 927,
1906 927, 927, 927, 813, 813, 813, 813, 813, 813, 813,
1907 813, 813, 813, 813, 813, 813, 813, 813, 813, 813,
1908 813, 813, 813, 813, 813, 813, 813, 813, 813, 813,
1909 813, 813, 813, 813, 813, 813, 813, 813, 813, 813,
1910 813, 813, 813, 813, 813, 813, 813, 813, 813, 813,
1911 813, 813, 813, 813, 813, 813, 813, 813, 813, 813,
1912 813, 813, 813, 813, 813, 813, 813, 813, 813, 813,
1916 static yy_state_type yy_last_accepting_state;
1917 static char *yy_last_accepting_cpos;
1919 /* The intent behind this definition is that it'll catch
1920 * any uses of REJECT which flex missed.
1922 #define REJECT reject_used_but_not_detected
1923 #define yymore() yymore_used_but_not_detected
1924 #define YY_MORE_ADJ 0
1925 #define YY_RESTORE_YY_MORE_OFFSET
1931 * Copyright (c) 1996, 1998-2005, 2007-2013
1932 * Todd C. Miller <Todd.Miller@courtesan.com>
1934 * Permission to use, copy, modify, and distribute this software for any
1935 * purpose with or without fee is hereby granted, provided that the above
1936 * copyright notice and this permission notice appear in all copies.
1938 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
1939 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
1940 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
1941 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
1942 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
1943 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
1944 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
1945 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
1946 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
1947 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1949 * Sponsored in part by the Defense Advanced Research Projects
1950 * Agency (DARPA) and Air Force Research Laboratory, Air Force
1951 * Materiel Command, USAF, under agreement number F39502-99-1-0512.
1956 #include <sys/types.h>
1957 #include <sys/stat.h>
1960 # include <stdlib.h>
1961 # include <stddef.h>
1963 # ifdef HAVE_STDLIB_H
1964 # include <stdlib.h>
1966 #endif /* STDC_HEADERS */
1967 #ifdef HAVE_STRING_H
1968 # include <string.h>
1969 #endif /* HAVE_STRING_H */
1970 #ifdef HAVE_STRINGS_H
1971 # include <strings.h>
1972 #endif /* HAVE_STRINGS_H */
1973 #if defined(HAVE_STDINT_H)
1974 # include <stdint.h>
1975 #elif defined(HAVE_INTTYPES_H)
1976 # include <inttypes.h>
1978 #ifdef HAVE_UNISTD_H
1979 # include <unistd.h>
1980 #endif /* HAVE_UNISTD_H */
1981 #if defined(HAVE_MALLOC_H) && !defined(STDC_HEADERS)
1982 # include <malloc.h>
1983 #endif /* HAVE_MALLOC_H && !STDC_HEADERS */
1984 #ifdef HAVE_DIRENT_H
1985 # include <dirent.h>
1986 # define NAMLEN(dirent) strlen((dirent)->d_name)
1988 # define dirent direct
1989 # define NAMLEN(dirent) (dirent)->d_namlen
1990 # ifdef HAVE_SYS_NDIR_H
1991 # include <sys/ndir.h>
1993 # ifdef HAVE_SYS_DIR_H
1994 # include <sys/dir.h>
2002 #include "sudoers.h"
2008 #include "secure_path.h"
2010 extern YYSTYPE sudoerslval;
2011 extern bool parse_error;
2012 extern bool sudoers_warnings;
2017 /* Default sudoers path, mode and owner (may be set via sudo.conf) */
2018 const char *sudoers_file = _PATH_SUDOERS;
2019 mode_t sudoers_mode = SUDOERS_MODE;
2020 uid_t sudoers_uid = SUDOERS_UID;
2021 gid_t sudoers_gid = SUDOERS_GID;
2023 static bool continued, sawspace;
2024 static int prev_state;
2025 static int digest_len;
2027 static bool _push_include(char *, bool);
2028 static bool pop_include(void);
2029 static char *parse_include(char *);
2031 int (*trace_print)(const char *msg) = sudoers_trace_print;
2033 #define LEXRETURN(n) do { \
2038 #define ECHO ignore_result(fwrite(sudoerstext, sudoersleng, 1, sudoersout))
2040 #define push_include(_p) (_push_include((_p), false))
2041 #define push_includedir(_p) (_push_include((_p), true))
2042 #define YY_NO_INPUT 1
2043 #define YY_NO_UNPUT 1
2054 #define WANTDIGEST 6
2056 #line 2056 "lex.sudoers.c"
2058 /* Macros after this point can all be overridden by user definitions in
2062 #ifndef YY_SKIP_YYWRAP
2064 extern "C" int yywrap YY_PROTO(( void ));
2066 extern int yywrap YY_PROTO(( void ));
2071 static void yyunput YY_PROTO(( int c, char *buf_ptr ));
2075 static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
2078 #ifdef YY_NEED_STRLEN
2079 static int yy_flex_strlen YY_PROTO(( yyconst char * ));
2084 static int yyinput YY_PROTO(( void ));
2086 static int input YY_PROTO(( void ));
2090 #if defined(YY_STACK_USED) && YY_STACK_USED
2091 static int yy_start_stack_ptr = 0;
2092 static int yy_start_stack_depth = 0;
2093 static int *yy_start_stack = 0;
2094 #ifndef YY_NO_PUSH_STATE
2095 static void yy_push_state YY_PROTO(( int new_state ));
2097 #ifndef YY_NO_POP_STATE
2098 static void yy_pop_state YY_PROTO(( void ));
2100 #ifndef YY_NO_TOP_STATE
2101 static int yy_top_state YY_PROTO(( void ));
2105 #define YY_NO_PUSH_STATE 1
2106 #define YY_NO_POP_STATE 1
2107 #define YY_NO_TOP_STATE 1
2110 #ifdef YY_MALLOC_DECL
2118 /* Just try to get by without declaring the routines. This will fail
2119 * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
2120 * or sizeof(void*) != sizeof(int).
2125 /* Amount of stuff to slurp up with each read. */
2126 #ifndef YY_READ_BUF_SIZE
2127 #define YY_READ_BUF_SIZE 8192
2130 /* Copy whatever the last rule matched to the standard output. */
2133 /* This used to be an fputs(), but since the string might contain NUL's,
2134 * we now use fwrite().
2136 #define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
2139 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
2140 * is returned in "result".
2143 #define YY_INPUT(buf,result,max_size) \
2144 if ( yy_current_buffer->yy_is_interactive ) \
2147 for ( n = 0; n < max_size && \
2148 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
2149 buf[n] = (char) c; \
2151 buf[n++] = (char) c; \
2152 if ( c == EOF && ferror( yyin ) ) \
2153 YY_FATAL_ERROR( "input in flex scanner failed" ); \
2156 else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
2157 && ferror( yyin ) ) \
2158 YY_FATAL_ERROR( "input in flex scanner failed" );
2161 /* No semi-colon after return; correct usage is to write "yyterminate();" -
2162 * we don't want an extra ';' after the "return" because that will cause
2163 * some compilers to complain about unreachable statements.
2166 #define yyterminate() return YY_NULL
2169 /* Number of entries by which start-condition stack grows. */
2170 #ifndef YY_START_STACK_INCR
2171 #define YY_START_STACK_INCR 25
2174 /* Report a fatal error. */
2175 #ifndef YY_FATAL_ERROR
2176 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
2179 /* Default declaration of generated scanner - a define so the user can
2180 * easily add parameters.
2183 #define YY_DECL int yylex YY_PROTO(( void ))
2186 /* Code executed at the beginning of each rule, after yytext and yyleng
2189 #ifndef YY_USER_ACTION
2190 #define YY_USER_ACTION
2193 /* Code executed at the end of each rule. */
2195 #define YY_BREAK break;
2198 #define YY_RULE_SETUP \
2200 yy_current_buffer->yy_at_bol = \
2201 (yytext[yyleng - 1] == '\n'); \
2206 register yy_state_type yy_current_state;
2207 register char *yy_cp, *yy_bp;
2208 register int yy_act;
2212 #line 2212 "lex.sudoers.c"
2223 yy_start = 1; /* first start state */
2231 if ( ! yy_current_buffer )
2233 yy_create_buffer( yyin, YY_BUF_SIZE );
2235 yy_load_buffer_state();
2238 while ( 1 ) /* loops until end-of-file is reached */
2242 /* Support of yytext. */
2243 *yy_cp = yy_hold_char;
2245 /* yy_bp points to the position in yy_ch_buf of the start of
2250 yy_current_state = yy_start;
2251 yy_current_state += YY_AT_BOL();
2255 register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
2256 if ( yy_accept[yy_current_state] )
2258 yy_last_accepting_state = yy_current_state;
2259 yy_last_accepting_cpos = yy_cp;
2261 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2263 yy_current_state = (int) yy_def[yy_current_state];
2264 if ( yy_current_state >= 814 )
2265 yy_c = yy_meta[(unsigned int) yy_c];
2267 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2270 while ( yy_base[yy_current_state] != 5604 );
2273 yy_act = yy_accept[yy_current_state];
2275 { /* have to back up */
2276 yy_cp = yy_last_accepting_cpos;
2277 yy_current_state = yy_last_accepting_state;
2278 yy_act = yy_accept[yy_current_state];
2281 YY_DO_BEFORE_ACTION;
2284 do_action: /* This label is used only to access EOF actions. */
2288 { /* beginning of action switch */
2289 case 0: /* must back up */
2290 /* undo the effects of YY_DO_BEFORE_ACTION */
2291 *yy_cp = yy_hold_char;
2292 yy_cp = yy_last_accepting_cpos;
2293 yy_current_state = yy_last_accepting_state;
2294 goto yy_find_action;
2314 LEXTRACE("DEFVAR ");
2315 if (!fill(sudoerstext, sudoersleng))
2358 LEXTRACE("BEGINSTR ");
2359 sudoerslval.string = NULL;
2360 prev_state = YY_START;
2368 LEXTRACE("WORD(2) ");
2369 if (!fill(sudoerstext, sudoersleng))
2380 /* Line continuation char followed by newline. */
2389 LEXTRACE("ENDSTR ");
2392 if (sudoerslval.string == NULL) {
2393 LEXTRACE("ERROR "); /* empty string */
2396 if (prev_state == INITIAL) {
2397 switch (sudoerslval.string[0]) {
2399 if (sudoerslval.string[1] == '\0' ||
2400 (sudoerslval.string[1] == ':' &&
2401 sudoerslval.string[2] == '\0')) {
2402 LEXTRACE("ERROR "); /* empty group */
2405 LEXTRACE("USERGROUP ");
2406 LEXRETURN(USERGROUP);
2408 if (sudoerslval.string[1] == '\0') {
2409 LEXTRACE("ERROR "); /* empty netgroup */
2412 LEXTRACE("NETGROUP ");
2413 LEXRETURN(NETGROUP);
2416 LEXTRACE("WORD(4) ");
2424 LEXTRACE("BACKSLASH ");
2425 if (!append(sudoerstext, sudoersleng))
2433 LEXTRACE("STRBODY ");
2434 if (!append(sudoerstext, sudoersleng))
2444 /* quoted fnmatch glob char, pass verbatim */
2445 LEXTRACE("QUOTEDCHAR ");
2446 if (!fill_args(sudoerstext, 2, sawspace))
2455 /* quoted sudoers special char, strip backslash */
2456 LEXTRACE("QUOTEDCHAR ");
2457 if (!fill_args(sudoerstext + 1, 1, sawspace))
2469 } /* end of command line args */
2476 if (!fill_args(sudoerstext, sudoersleng, sawspace))
2479 } /* a command line arg */
2486 /* Only return DIGEST if the length is correct. */
2487 if (sudoersleng == digest_len * 2) {
2488 if (!fill(sudoerstext, sudoersleng))
2491 LEXTRACE("DIGEST ");
2495 yyless(sudoersleng);
2502 /* Only return DIGEST if the length is correct. */
2504 if (sudoerstext[sudoersleng - 1] == '=') {
2506 len = 4 * ((digest_len + 2) / 3);
2509 len = (4 * digest_len + 2) / 3;
2511 if (sudoersleng == len) {
2512 if (!fill(sudoerstext, sudoersleng))
2515 LEXTRACE("DIGEST ");
2519 yyless(sudoersleng);
2520 } /* base64 digest */
2533 if ((path = parse_include(sudoerstext)) == NULL)
2536 LEXTRACE("INCLUDE\n");
2538 /* Push current buffer and switch to include file */
2539 if (!push_include(path))
2554 if ((path = parse_include(sudoerstext)) == NULL)
2557 LEXTRACE("INCLUDEDIR\n");
2560 * Push current buffer and switch to include file.
2561 * We simply ignore empty directories.
2563 if (!push_includedir(path) && parse_error)
2579 for (n = 0; isblank((unsigned char)sudoerstext[n]); n++)
2581 n += sizeof("Defaults") - 1;
2582 if ((deftype = sudoerstext[n++]) != '\0') {
2583 while (isblank((unsigned char)sudoerstext[n]))
2590 LEXTRACE("DEFAULTS_USER ");
2591 LEXRETURN(DEFAULTS_USER);
2594 LEXTRACE("DEFAULTS_RUNAS ");
2595 LEXRETURN(DEFAULTS_RUNAS);
2598 LEXTRACE("DEFAULTS_HOST ");
2599 LEXRETURN(DEFAULTS_HOST);
2602 LEXTRACE("DEFAULTS_CMND ");
2603 LEXRETURN(DEFAULTS_CMND);
2605 LEXTRACE("DEFAULTS ");
2606 LEXRETURN(DEFAULTS);
2621 for (n = 0; isblank((unsigned char)sudoerstext[n]); n++)
2623 switch (sudoerstext[n]) {
2625 LEXTRACE("HOSTALIAS ");
2626 LEXRETURN(HOSTALIAS);
2628 LEXTRACE("CMNDALIAS ");
2629 LEXRETURN(CMNDALIAS);
2631 LEXTRACE("USERALIAS ");
2632 LEXRETURN(USERALIAS);
2634 LEXTRACE("RUNASALIAS ");
2635 LEXRETURN(RUNASALIAS);
2643 /* cmnd does not require passwd for this user */
2644 LEXTRACE("NOPASSWD ");
2645 LEXRETURN(NOPASSWD);
2652 /* cmnd requires passwd for this user */
2653 LEXTRACE("PASSWD ");
2661 LEXTRACE("NOEXEC ");
2677 LEXTRACE("SETENV ");
2685 LEXTRACE("NOSETENV ");
2686 LEXRETURN(NOSETENV);
2693 LEXTRACE("LOG_OUTPUT ");
2694 LEXRETURN(LOG_OUTPUT);
2701 LEXTRACE("NOLOG_OUTPUT ");
2702 LEXRETURN(NOLOG_OUTPUT);
2709 LEXTRACE("LOG_INPUT ");
2710 LEXRETURN(LOG_INPUT);
2717 LEXTRACE("NOLOG_INPUT ");
2718 LEXRETURN(NOLOG_INPUT);
2725 /* empty group or netgroup */
2735 if (!fill(sudoerstext, sudoersleng))
2737 LEXTRACE("NETGROUP ");
2738 LEXRETURN(NETGROUP);
2746 if (!fill(sudoerstext, sudoersleng))
2748 LEXTRACE("USERGROUP ");
2749 LEXRETURN(USERGROUP);
2756 if (!fill(sudoerstext, sudoersleng))
2758 LEXTRACE("NTWKADDR ");
2759 LEXRETURN(NTWKADDR);
2766 if (!fill(sudoerstext, sudoersleng))
2768 LEXTRACE("NTWKADDR ");
2769 LEXRETURN(NTWKADDR);
2776 if (!ipv6_valid(sudoerstext)) {
2780 if (!fill(sudoerstext, sudoersleng))
2782 LEXTRACE("NTWKADDR ");
2783 LEXRETURN(NTWKADDR);
2790 if (!ipv6_valid(sudoerstext)) {
2794 if (!fill(sudoerstext, sudoersleng))
2796 LEXTRACE("NTWKADDR ");
2797 LEXRETURN(NTWKADDR);
2837 #ifdef HAVE_PRIV_SET
2849 #ifdef HAVE_PRIV_SET
2850 LEXTRACE("LIMITPRIVS ");
2851 LEXRETURN(LIMITPRIVS);
2862 if (!fill(sudoerstext, sudoersleng))
2872 /* XXX - no way to specify digest for command */
2873 /* no command args allowed for Defaults!/path */
2874 if (!fill_cmnd(sudoerstext, sudoersleng))
2876 LEXTRACE("COMMAND ");
2884 digest_len = SHA224_DIGEST_LENGTH;
2886 LEXTRACE("SHA224 ");
2894 digest_len = SHA256_DIGEST_LENGTH;
2896 LEXTRACE("SHA256 ");
2904 digest_len = SHA384_DIGEST_LENGTH;
2906 LEXTRACE("SHA384 ");
2914 digest_len = SHA512_DIGEST_LENGTH;
2916 LEXTRACE("SHA512 ");
2925 LEXTRACE("COMMAND ");
2926 if (!fill_cmnd(sudoerstext, sudoersleng))
2934 /* directories can't have args... */
2935 if (sudoerstext[sudoersleng - 1] == '/') {
2936 LEXTRACE("COMMAND ");
2937 if (!fill_cmnd(sudoerstext, sudoersleng))
2942 LEXTRACE("COMMAND ");
2943 if (!fill_cmnd(sudoerstext, sudoersleng))
2952 LEXTRACE("BEGINSTR ");
2953 sudoerslval.string = NULL;
2954 prev_state = YY_START;
2963 if (!fill(sudoerstext, sudoersleng))
2965 LEXTRACE("WORD(5) ");
3013 if (sudoersleng & 1) {
3015 LEXRETURN('!'); /* return '!' */
3023 if (YY_START == INSTR) {
3025 LEXRETURN(ERROR); /* line break in string */
3032 } /* return newline */
3037 { /* throw away space/tabs */
3038 sawspace = true; /* but remember for fill_args */
3045 sawspace = true; /* remember for fill_args */
3048 } /* throw away EOL after \ */
3059 } /* comment, not uid/gid */
3069 case YY_STATE_EOF(INITIAL):
3070 case YY_STATE_EOF(GOTDEFS):
3071 case YY_STATE_EOF(GOTCMND):
3072 case YY_STATE_EOF(STARTDEFS):
3073 case YY_STATE_EOF(INDEFS):
3074 case YY_STATE_EOF(INSTR):
3075 case YY_STATE_EOF(WANTDIGEST):
3078 if (YY_START != INITIAL) {
3092 #line 3092 "lex.sudoers.c"
3094 case YY_END_OF_BUFFER:
3096 /* Amount of text matched not including the EOB char. */
3097 int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
3099 /* Undo the effects of YY_DO_BEFORE_ACTION. */
3100 *yy_cp = yy_hold_char;
3101 YY_RESTORE_YY_MORE_OFFSET
3103 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
3105 /* We're scanning a new file or input source. It's
3106 * possible that this happened because the user
3107 * just pointed yyin at a new source and called
3108 * yylex(). If so, then we have to assure
3109 * consistency between yy_current_buffer and our
3110 * globals. Here is the right place to do so, because
3111 * this is the first action (other than possibly a
3112 * back-up) that will match for the new input source.
3114 yy_n_chars = yy_current_buffer->yy_n_chars;
3115 yy_current_buffer->yy_input_file = yyin;
3116 yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
3119 /* Note that here we test for yy_c_buf_p "<=" to the position
3120 * of the first EOB in the buffer, since yy_c_buf_p will
3121 * already have been incremented past the NUL character
3122 * (since all states make transitions on EOB to the
3123 * end-of-buffer state). Contrast this with the test
3126 if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
3127 { /* This was really a NUL. */
3128 yy_state_type yy_next_state;
3130 yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
3132 yy_current_state = yy_get_previous_state();
3134 /* Okay, we're now positioned to make the NUL
3135 * transition. We couldn't have
3136 * yy_get_previous_state() go ahead and do it
3137 * for us because it doesn't know how to deal
3138 * with the possibility of jamming (and we don't
3139 * want to build jamming into it because then it
3140 * will run more slowly).
3143 yy_next_state = yy_try_NUL_trans( yy_current_state );
3145 yy_bp = yytext_ptr + YY_MORE_ADJ;
3147 if ( yy_next_state )
3149 /* Consume the NUL. */
3150 yy_cp = ++yy_c_buf_p;
3151 yy_current_state = yy_next_state;
3158 goto yy_find_action;
3162 else switch ( yy_get_next_buffer() )
3164 case EOB_ACT_END_OF_FILE:
3166 yy_did_buffer_switch_on_eof = 0;
3170 /* Note: because we've taken care in
3171 * yy_get_next_buffer() to have set up
3172 * yytext, we can now set up
3173 * yy_c_buf_p so that if some total
3174 * hoser (like flex itself) wants to
3175 * call the scanner after we return the
3176 * YY_NULL, it'll still work - another
3177 * YY_NULL will get returned.
3179 yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
3181 yy_act = YY_STATE_EOF(YY_START);
3187 if ( ! yy_did_buffer_switch_on_eof )
3193 case EOB_ACT_CONTINUE_SCAN:
3195 yytext_ptr + yy_amount_of_matched_text;
3197 yy_current_state = yy_get_previous_state();
3200 yy_bp = yytext_ptr + YY_MORE_ADJ;
3203 case EOB_ACT_LAST_MATCH:
3205 &yy_current_buffer->yy_ch_buf[yy_n_chars];
3207 yy_current_state = yy_get_previous_state();
3210 yy_bp = yytext_ptr + YY_MORE_ADJ;
3211 goto yy_find_action;
3218 "fatal flex scanner internal error--no action found" );
3219 } /* end of action switch */
3220 } /* end of scanning one token */
3221 } /* end of yylex */
3224 /* yy_get_next_buffer - try to read in a new buffer
3226 * Returns a code representing an action:
3227 * EOB_ACT_LAST_MATCH -
3228 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
3229 * EOB_ACT_END_OF_FILE - end of file
3232 static int yy_get_next_buffer()
3234 register char *dest = yy_current_buffer->yy_ch_buf;
3235 register char *source = yytext_ptr;
3236 register int number_to_move, i;
3239 if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
3241 "fatal flex scanner internal error--end of buffer missed" );
3243 if ( yy_current_buffer->yy_fill_buffer == 0 )
3244 { /* Don't try to fill the buffer, so this is an EOF. */
3245 if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
3247 /* We matched a single character, the EOB, so
3248 * treat this as a final EOF.
3250 return EOB_ACT_END_OF_FILE;
3255 /* We matched some text prior to the EOB, first
3258 return EOB_ACT_LAST_MATCH;
3262 /* Try to read more data. */
3264 /* First move last chars to start of buffer. */
3265 number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
3267 for ( i = 0; i < number_to_move; ++i )
3268 *(dest++) = *(source++);
3270 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
3271 /* don't do the read, it's not guaranteed to return an EOF,
3274 yy_current_buffer->yy_n_chars = yy_n_chars = 0;
3279 yy_current_buffer->yy_buf_size - number_to_move - 1;
3281 while ( num_to_read <= 0 )
3282 { /* Not enough room in the buffer - grow it. */
3283 #ifdef YY_USES_REJECT
3285 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
3288 /* just a shorter name for the current buffer */
3289 YY_BUFFER_STATE b = yy_current_buffer;
3291 int yy_c_buf_p_offset =
3292 (int) (yy_c_buf_p - b->yy_ch_buf);
3294 if ( b->yy_is_our_buffer )
3296 int new_size = b->yy_buf_size * 2;
3298 if ( new_size <= 0 )
3299 b->yy_buf_size += b->yy_buf_size / 8;
3301 b->yy_buf_size *= 2;
3303 b->yy_ch_buf = (char *)
3304 /* Include room in for 2 EOB chars. */
3305 yy_flex_realloc( (void *) b->yy_ch_buf,
3306 b->yy_buf_size + 2 );
3309 /* Can't grow it, we don't own it. */
3312 if ( ! b->yy_ch_buf )
3314 "fatal error - scanner input buffer overflow" );
3316 yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
3318 num_to_read = yy_current_buffer->yy_buf_size -
3323 if ( num_to_read > YY_READ_BUF_SIZE )
3324 num_to_read = YY_READ_BUF_SIZE;
3326 /* Read in more data. */
3327 YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
3328 yy_n_chars, num_to_read );
3330 yy_current_buffer->yy_n_chars = yy_n_chars;
3333 if ( yy_n_chars == 0 )
3335 if ( number_to_move == YY_MORE_ADJ )
3337 ret_val = EOB_ACT_END_OF_FILE;
3343 ret_val = EOB_ACT_LAST_MATCH;
3344 yy_current_buffer->yy_buffer_status =
3345 YY_BUFFER_EOF_PENDING;
3350 ret_val = EOB_ACT_CONTINUE_SCAN;
3352 yy_n_chars += number_to_move;
3353 yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
3354 yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
3356 yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
3362 /* yy_get_previous_state - get the state just before the EOB char was reached */
3364 static yy_state_type yy_get_previous_state()
3366 register yy_state_type yy_current_state;
3367 register char *yy_cp;
3369 yy_current_state = yy_start;
3370 yy_current_state += YY_AT_BOL();
3372 for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
3374 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
3375 if ( yy_accept[yy_current_state] )
3377 yy_last_accepting_state = yy_current_state;
3378 yy_last_accepting_cpos = yy_cp;
3380 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
3382 yy_current_state = (int) yy_def[yy_current_state];
3383 if ( yy_current_state >= 814 )
3384 yy_c = yy_meta[(unsigned int) yy_c];
3386 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
3389 return yy_current_state;
3393 /* yy_try_NUL_trans - try to make a transition on the NUL character
3396 * next_state = yy_try_NUL_trans( current_state );
3399 #ifdef YY_USE_PROTOS
3400 static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
3402 static yy_state_type yy_try_NUL_trans( yy_current_state )
3403 yy_state_type yy_current_state;
3406 register int yy_is_jam;
3407 register char *yy_cp = yy_c_buf_p;
3409 register YY_CHAR yy_c = 1;
3410 if ( yy_accept[yy_current_state] )
3412 yy_last_accepting_state = yy_current_state;
3413 yy_last_accepting_cpos = yy_cp;
3415 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
3417 yy_current_state = (int) yy_def[yy_current_state];
3418 if ( yy_current_state >= 814 )
3419 yy_c = yy_meta[(unsigned int) yy_c];
3421 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
3422 yy_is_jam = (yy_current_state == 813);
3424 return yy_is_jam ? 0 : yy_current_state;
3429 #ifdef YY_USE_PROTOS
3430 static void yyunput( int c, register char *yy_bp )
3432 static void yyunput( c, yy_bp )
3434 register char *yy_bp;
3437 register char *yy_cp = yy_c_buf_p;
3439 /* undo effects of setting up yytext */
3440 *yy_cp = yy_hold_char;
3442 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
3443 { /* need to shift things up to make room */
3444 /* +2 for EOB chars. */
3445 register int number_to_move = yy_n_chars + 2;
3446 register char *dest = &yy_current_buffer->yy_ch_buf[
3447 yy_current_buffer->yy_buf_size + 2];
3448 register char *source =
3449 &yy_current_buffer->yy_ch_buf[number_to_move];
3451 while ( source > yy_current_buffer->yy_ch_buf )
3452 *--dest = *--source;
3454 yy_cp += (int) (dest - source);
3455 yy_bp += (int) (dest - source);
3456 yy_current_buffer->yy_n_chars =
3457 yy_n_chars = yy_current_buffer->yy_buf_size;
3459 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
3460 YY_FATAL_ERROR( "flex scanner push-back overflow" );
3463 *--yy_cp = (char) c;
3467 yy_hold_char = *yy_cp;
3470 #endif /* ifndef YY_NO_UNPUT */
3475 static int yyinput()
3482 *yy_c_buf_p = yy_hold_char;
3484 if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
3486 /* yy_c_buf_p now points to the character we want to return.
3487 * If this occurs *before* the EOB characters, then it's a
3488 * valid NUL; if not, then we've hit the end of the buffer.
3490 if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
3491 /* This was really a NUL. */
3495 { /* need more input */
3496 int offset = yy_c_buf_p - yytext_ptr;
3499 switch ( yy_get_next_buffer() )
3501 case EOB_ACT_LAST_MATCH:
3502 /* This happens because yy_g_n_b()
3503 * sees that we've accumulated a
3504 * token and flags that we need to
3505 * try matching the token before
3506 * proceeding. But for input(),
3507 * there's no matching to consider.
3508 * So convert the EOB_ACT_LAST_MATCH
3509 * to EOB_ACT_END_OF_FILE.
3512 /* Reset buffer status. */
3517 case EOB_ACT_END_OF_FILE:
3522 if ( ! yy_did_buffer_switch_on_eof )
3531 case EOB_ACT_CONTINUE_SCAN:
3532 yy_c_buf_p = yytext_ptr + offset;
3538 c = *(unsigned char *) yy_c_buf_p; /* cast for 8-bit char's */
3539 *yy_c_buf_p = '\0'; /* preserve yytext */
3540 yy_hold_char = *++yy_c_buf_p;
3542 yy_current_buffer->yy_at_bol = (c == '\n');
3546 #endif /* ifndef YY_NO_INPUT */
3549 #ifdef YY_USE_PROTOS
3550 void yyrestart( FILE *input_file )
3552 void yyrestart( input_file )
3556 if ( ! yy_current_buffer )
3557 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
3559 yy_init_buffer( yy_current_buffer, input_file );
3560 yy_load_buffer_state();
3564 #ifdef YY_USE_PROTOS
3565 void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
3567 void yy_switch_to_buffer( new_buffer )
3568 YY_BUFFER_STATE new_buffer;
3571 if ( yy_current_buffer == new_buffer )
3574 if ( yy_current_buffer )
3576 /* Flush out information for old buffer. */
3577 *yy_c_buf_p = yy_hold_char;
3578 yy_current_buffer->yy_buf_pos = yy_c_buf_p;
3579 yy_current_buffer->yy_n_chars = yy_n_chars;
3582 yy_current_buffer = new_buffer;
3583 yy_load_buffer_state();
3585 /* We don't actually know whether we did this switch during
3586 * EOF (yywrap()) processing, but the only time this flag
3587 * is looked at is after yywrap() is called, so it's safe
3588 * to go ahead and always set it.
3590 yy_did_buffer_switch_on_eof = 1;
3594 #ifdef YY_USE_PROTOS
3595 void yy_load_buffer_state( void )
3597 void yy_load_buffer_state()
3600 yy_n_chars = yy_current_buffer->yy_n_chars;
3601 yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
3602 yyin = yy_current_buffer->yy_input_file;
3603 yy_hold_char = *yy_c_buf_p;
3607 #ifdef YY_USE_PROTOS
3608 YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
3610 YY_BUFFER_STATE yy_create_buffer( file, size )
3617 b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
3619 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
3621 b->yy_buf_size = size;
3623 /* yy_ch_buf has to be 2 characters longer than the size given because
3624 * we need to put in 2 end-of-buffer characters.
3626 b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
3627 if ( ! b->yy_ch_buf )
3628 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
3630 b->yy_is_our_buffer = 1;
3632 yy_init_buffer( b, file );
3638 #ifdef YY_USE_PROTOS
3639 void yy_delete_buffer( YY_BUFFER_STATE b )
3641 void yy_delete_buffer( b )
3648 if ( b == yy_current_buffer )
3649 yy_current_buffer = (YY_BUFFER_STATE) 0;
3651 if ( b->yy_is_our_buffer )
3652 yy_flex_free( (void *) b->yy_ch_buf );
3654 yy_flex_free( (void *) b );
3658 #ifndef YY_ALWAYS_INTERACTIVE
3659 #ifndef YY_NEVER_INTERACTIVE
3664 #ifdef YY_USE_PROTOS
3665 void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
3667 void yy_init_buffer( b, file )
3676 yy_flush_buffer( b );
3678 b->yy_input_file = file;
3679 b->yy_fill_buffer = 1;
3681 #if defined(YY_ALWAYS_INTERACTIVE) && YY_ALWAYS_INTERACTIVE
3682 b->yy_is_interactive = 1;
3684 #if defined(YY_NEVER_INTERACTIVE) && YY_NEVER_INTERACTIVE
3685 b->yy_is_interactive = 0;
3687 b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
3694 #ifdef YY_USE_PROTOS
3695 void yy_flush_buffer( YY_BUFFER_STATE b )
3697 void yy_flush_buffer( b )
3707 /* We always need two end-of-buffer characters. The first causes
3708 * a transition to the end-of-buffer state. The second causes
3709 * a jam in that state.
3711 b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
3712 b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
3714 b->yy_buf_pos = &b->yy_ch_buf[0];
3717 b->yy_buffer_status = YY_BUFFER_NEW;
3719 if ( b == yy_current_buffer )
3720 yy_load_buffer_state();
3724 #ifndef YY_NO_SCAN_BUFFER
3725 #ifdef YY_USE_PROTOS
3726 YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
3728 YY_BUFFER_STATE yy_scan_buffer( base, size )
3736 base[size-2] != YY_END_OF_BUFFER_CHAR ||
3737 base[size-1] != YY_END_OF_BUFFER_CHAR )
3738 /* They forgot to leave room for the EOB's. */
3741 b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
3743 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
3745 b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
3746 b->yy_buf_pos = b->yy_ch_buf = base;
3747 b->yy_is_our_buffer = 0;
3748 b->yy_input_file = 0;
3749 b->yy_n_chars = b->yy_buf_size;
3750 b->yy_is_interactive = 0;
3752 b->yy_fill_buffer = 0;
3753 b->yy_buffer_status = YY_BUFFER_NEW;
3755 yy_switch_to_buffer( b );
3762 #ifndef YY_NO_SCAN_STRING
3763 #ifdef YY_USE_PROTOS
3764 YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
3766 YY_BUFFER_STATE yy_scan_string( yy_str )
3767 yyconst char *yy_str;
3771 for ( len = 0; yy_str[len]; ++len )
3774 return yy_scan_bytes( yy_str, len );
3779 #ifndef YY_NO_SCAN_BYTES
3780 #ifdef YY_USE_PROTOS
3781 YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
3783 YY_BUFFER_STATE yy_scan_bytes( bytes, len )
3784 yyconst char *bytes;
3793 /* Get memory for full buffer, including space for trailing EOB's. */
3795 buf = (char *) yy_flex_alloc( n );
3797 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
3799 for ( i = 0; i < len; ++i )
3802 buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
3804 b = yy_scan_buffer( buf, n );
3806 YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
3808 /* It's okay to grow etc. this buffer, and we should throw it
3809 * away when we're done.
3811 b->yy_is_our_buffer = 1;
3818 #ifndef YY_NO_PUSH_STATE
3819 #ifdef YY_USE_PROTOS
3820 static void yy_push_state( int new_state )
3822 static void yy_push_state( new_state )
3826 if ( yy_start_stack_ptr >= yy_start_stack_depth )
3830 yy_start_stack_depth += YY_START_STACK_INCR;
3831 new_size = yy_start_stack_depth * sizeof( int );
3833 if ( ! yy_start_stack )
3834 yy_start_stack = (int *) yy_flex_alloc( new_size );
3837 yy_start_stack = (int *) yy_flex_realloc(
3838 (void *) yy_start_stack, new_size );
3840 if ( ! yy_start_stack )
3842 "out of memory expanding start-condition stack" );
3845 yy_start_stack[yy_start_stack_ptr++] = YY_START;
3852 #ifndef YY_NO_POP_STATE
3853 static void yy_pop_state()
3855 if ( --yy_start_stack_ptr < 0 )
3856 YY_FATAL_ERROR( "start-condition stack underflow" );
3858 BEGIN(yy_start_stack[yy_start_stack_ptr]);
3863 #ifndef YY_NO_TOP_STATE
3864 static int yy_top_state()
3866 return yy_start_stack[yy_start_stack_ptr - 1];
3870 #ifndef YY_EXIT_FAILURE
3871 #define YY_EXIT_FAILURE 2
3874 #ifdef YY_USE_PROTOS
3875 static void yy_fatal_error( yyconst char msg[] )
3877 static void yy_fatal_error( msg )
3881 (void) fprintf( stderr, "%s\n", msg );
3882 exit( YY_EXIT_FAILURE );
3887 /* Redefine yyless() so it works in section 3 code. */
3893 /* Undo effects of setting up yytext. */ \
3894 yytext[yyleng] = yy_hold_char; \
3895 yy_c_buf_p = yytext + n; \
3896 yy_hold_char = *yy_c_buf_p; \
3897 *yy_c_buf_p = '\0'; \
3903 /* Internal utility routines. */
3906 #ifdef YY_USE_PROTOS
3907 static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
3909 static void yy_flex_strncpy( s1, s2, n )
3916 for ( i = 0; i < n; ++i )
3921 #ifdef YY_NEED_STRLEN
3922 #ifdef YY_USE_PROTOS
3923 static int yy_flex_strlen( yyconst char *s )
3925 static int yy_flex_strlen( s )
3930 for ( n = 0; s[n]; ++n )
3938 #ifdef YY_USE_PROTOS
3939 static void *yy_flex_alloc( yy_size_t size )
3941 static void *yy_flex_alloc( size )
3945 return (void *) malloc( size );
3948 #ifdef YY_USE_PROTOS
3949 static void *yy_flex_realloc( void *ptr, yy_size_t size )
3951 static void *yy_flex_realloc( ptr, size )
3956 /* The cast to (char *) in the following accommodates both
3957 * implementations that use char* generic pointers, and those
3958 * that use void* generic pointers. It works with the latter
3959 * because both ANSI C and C++ allow castless assignment from
3960 * any pointer type to void*, and deal with argument conversions
3961 * as though doing an assignment.
3963 return (void *) realloc( (char *) ptr, size );
3966 #ifdef YY_USE_PROTOS
3967 static void yy_flex_free( void *ptr )
3969 static void yy_flex_free( ptr )
3976 #if defined(YY_MAIN) && YY_MAIN
3987 struct path_list *next;
3990 struct include_stack {
3993 struct path_list *more; /* more files in case of includedir */
3999 pl_compare(const void *v1, const void *v2)
4001 const struct path_list * const *p1 = v1;
4002 const struct path_list * const *p2 = v2;
4004 return strcmp((*p1)->path, (*p2)->path);
4008 switch_dir(struct include_stack *stack, char *dirpath)
4013 struct dirent *dent;
4015 struct path_list *pl, *first = NULL;
4016 struct path_list **sorted = NULL;
4017 debug_decl(switch_dir, SUDO_DEBUG_PARSER)
4019 if (!(dir = opendir(dirpath))) {
4020 if (errno != ENOENT) {
4021 warning("%s", dirpath);
4026 while ((dent = readdir(dir))) {
4027 /* Ignore files that end in '~' or have a '.' in them. */
4028 if (dent->d_name[0] == '\0' || dent->d_name[NAMLEN(dent) - 1] == '~'
4029 || strchr(dent->d_name, '.') != NULL) {
4032 if (asprintf(&path, "%s/%s", dirpath, dent->d_name) == -1) {
4036 if (stat(path, &sb) != 0 || !S_ISREG(sb.st_mode)) {
4041 pl = malloc(sizeof(*pl));
4055 /* Sort the list as an array. */
4056 sorted = malloc(sizeof(*sorted) * count);
4060 for (i = 0; i < count; i++) {
4064 qsort(sorted, count, sizeof(*sorted), pl_compare);
4066 /* Apply sorting to the list. */
4068 sorted[count - 1]->next = NULL;
4069 for (i = 1; i < count; i++)
4070 sorted[i - 1]->next = sorted[i];
4073 /* Pull out the first element for parsing, leave the rest for later. */
4084 debug_return_str(path);
4086 while (first != NULL) {
4095 debug_return_str(NULL);
4098 #define MAX_SUDOERS_DEPTH 128
4099 #define SUDOERS_STACK_INCREMENT 16
4101 static size_t istacksize, idepth;
4102 static struct include_stack *istack;
4103 static bool keepopen;
4108 struct path_list *pl;
4109 debug_decl(init_lexer, SUDO_DEBUG_PARSER)
4113 while ((pl = istack[idepth].more) != NULL) {
4114 istack[idepth].more = pl->next;
4118 efree(istack[idepth].path);
4119 if (idepth && !istack[idepth].keepopen)
4120 fclose(istack[idepth].bs->yy_input_file);
4121 sudoers_delete_buffer(istack[idepth].bs);
4125 istacksize = idepth = 0;
4130 prev_state = INITIAL;
4136 _push_include(char *path, bool isdir)
4138 struct path_list *pl;
4140 debug_decl(_push_include, SUDO_DEBUG_PARSER)
4142 /* push current state onto stack */
4143 if (idepth >= istacksize) {
4144 if (idepth > MAX_SUDOERS_DEPTH) {
4145 sudoerserror(N_("too many levels of includes"));
4146 debug_return_bool(false);
4148 istacksize += SUDOERS_STACK_INCREMENT;
4149 istack = (struct include_stack *) realloc(istack,
4150 sizeof(*istack) * istacksize);
4151 if (istack == NULL) {
4154 debug_return_bool(false);
4159 switch (sudo_secure_dir(path, sudoers_uid, sudoers_gid, &sb)) {
4160 case SUDO_PATH_SECURE:
4162 case SUDO_PATH_MISSING:
4163 debug_return_bool(false);
4164 case SUDO_PATH_BAD_TYPE:
4166 if (sudoers_warnings) {
4167 warning("%s", path);
4169 debug_return_bool(false);
4170 case SUDO_PATH_WRONG_OWNER:
4171 if (sudoers_warnings) {
4172 warningx(_("%s is owned by uid %u, should be %u"),
4173 path, (unsigned int) sb.st_uid,
4174 (unsigned int) sudoers_uid);
4176 debug_return_bool(false);
4177 case SUDO_PATH_WORLD_WRITABLE:
4178 if (sudoers_warnings) {
4179 warningx(_("%s is world writable"), path);
4181 debug_return_bool(false);
4182 case SUDO_PATH_GROUP_WRITABLE:
4183 if (sudoers_warnings) {
4184 warningx(_("%s is owned by gid %u, should be %u"),
4185 path, (unsigned int) sb.st_gid,
4186 (unsigned int) sudoers_gid);
4188 debug_return_bool(false);
4191 debug_return_bool(false);
4193 if (!(path = switch_dir(&istack[idepth], path))) {
4194 /* switch_dir() called sudoerserror() for us */
4195 debug_return_bool(false);
4197 while ((fp = open_sudoers(path, false, &keepopen)) == NULL) {
4198 /* Unable to open path in includedir, go to next one, if any. */
4200 if ((pl = istack[idepth].more) == NULL)
4201 debug_return_bool(false);
4203 istack[idepth].more = pl->next;
4207 if ((fp = open_sudoers(path, true, &keepopen)) == NULL) {
4208 /* The error was already printed by open_sudoers() */
4210 debug_return_bool(false);
4212 istack[idepth].more = NULL;
4214 /* Push the old (current) file and open the new one. */
4215 istack[idepth].path = sudoers; /* push old path */
4216 istack[idepth].bs = YY_CURRENT_BUFFER;
4217 istack[idepth].lineno = sudolineno;
4218 istack[idepth].keepopen = keepopen;
4222 sudoers_switch_to_buffer(sudoers_create_buffer(fp, YY_BUF_SIZE));
4224 debug_return_bool(true);
4230 struct path_list *pl;
4232 debug_decl(pop_include, SUDO_DEBUG_PARSER)
4235 debug_return_bool(false);
4238 fclose(YY_CURRENT_BUFFER->yy_input_file);
4239 sudoers_delete_buffer(YY_CURRENT_BUFFER);
4240 /* If we are in an include dir, move to the next file. */
4241 while ((pl = istack[idepth - 1].more) != NULL) {
4242 fp = open_sudoers(pl->path, false, &keepopen);
4244 istack[idepth - 1].more = pl->next;
4248 sudoers_switch_to_buffer(sudoers_create_buffer(fp, YY_BUF_SIZE));
4252 /* Unable to open path in include dir, go to next one. */
4253 istack[idepth - 1].more = pl->next;
4257 /* If no path list, just pop the last dir on the stack. */
4260 sudoers_switch_to_buffer(istack[idepth].bs);
4262 sudoers = istack[idepth].path;
4263 sudolineno = istack[idepth].lineno;
4264 keepopen = istack[idepth].keepopen;
4266 debug_return_bool(true);
4270 parse_include(char *base)
4272 char *cp, *ep, *path, *pp;
4273 int dirlen = 0, len = 0, subst = 0;
4274 size_t shost_len = 0;
4275 debug_decl(parse_include, SUDO_DEBUG_PARSER)
4277 /* Pull out path from #include line. */
4278 cp = base + sizeof("#include");
4280 cp += 3; /* includedir */
4281 while (isblank((unsigned char) *cp))
4284 while (*ep != '\0' && !isspace((unsigned char) *ep)) {
4285 if (ep[0] == '%' && ep[1] == 'h') {
4286 shost_len = strlen(user_shost);
4287 len += shost_len - 2;
4293 /* Relative paths are located in the same dir as the sudoers file. */
4295 char *dirend = strrchr(sudoers, '/');
4297 dirlen = (int)(dirend - sudoers) + 1;
4300 /* Make a copy of the fully-qualified path and return it. */
4301 len += (int)(ep - cp);
4302 path = pp = malloc(len + dirlen + 1);
4306 debug_return_str(NULL);
4309 memcpy(path, sudoers, dirlen);
4313 /* substitute for %h */
4315 if (cp[0] == '%' && cp[1] == 'h') {
4316 memcpy(pp, user_shost, shost_len);
4325 memcpy(pp, cp, len);
4329 /* Push any excess characters (e.g. comment, newline) back to the lexer */
4331 yyless((int)(ep - base));
4333 debug_return_str(path);
4338 sudoers_trace_print(const char *msg)
4340 return fputs(msg, stderr);
4344 sudoers_trace_print(const char *msg)
4346 static bool initialized;
4347 static struct lbuf lbuf;
4351 lbuf_init(&lbuf, NULL, 0, NULL, 0);
4354 lbuf_append(&lbuf, "%s", msg);
4355 /* XXX - assumes a final newline */
4356 if (strchr(msg, '\n') != NULL)
4358 sudo_debug_printf2(NULL, NULL, 0, SUDO_DEBUG_PARSER|SUDO_DEBUG_DEBUG,
4359 "%s:%d %s", sudoers, sudolineno, lbuf.buf);
4364 #endif /* TRACELEXER */