Coverage Report

Created: 2025-10-28 06:14

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/sudo/plugins/sudoers/toke.c
Line
Count
Source
1
#include <config.h>
2
3
#line 3 "toke.c"
4
5
#define  YY_INT_ALIGNED short int
6
7
/* A lexical scanner generated by flex */
8
9
1
#define yy_create_buffer sudoers_create_buffer
10
0
#define yy_delete_buffer sudoers_delete_buffer
11
0
#define yy_scan_buffer sudoers_scan_buffer
12
#define yy_scan_string sudoers_scan_string
13
0
#define yy_scan_bytes sudoers_scan_bytes
14
11
#define yy_init_buffer sudoers_init_buffer
15
11
#define yy_flush_buffer sudoers_flush_buffer
16
21
#define yy_load_buffer_state sudoers_load_buffer_state
17
0
#define yy_switch_to_buffer sudoers_switch_to_buffer
18
#define yypush_buffer_state sudoerspush_buffer_state
19
0
#define yypop_buffer_state sudoerspop_buffer_state
20
1
#define yyensure_buffer_stack sudoersensure_buffer_stack
21
0
#define yy_flex_debug sudoers_flex_debug
22
33
#define yyin sudoersin
23
741k
#define yyleng sudoersleng
24
#define yylex sudoerslex
25
0
#define yylineno sudoerslineno
26
2
#define yyout sudoersout
27
5
#define yyrestart sudoersrestart
28
496k
#define yytext sudoerstext
29
5
#define yywrap sudoerswrap
30
3
#define yyalloc sudoersalloc
31
3
#define yyrealloc sudoersrealloc
32
0
#define yyfree sudoersfree
33
34
#define FLEX_SCANNER
35
#define YY_FLEX_MAJOR_VERSION 2
36
#define YY_FLEX_MINOR_VERSION 6
37
#define YY_FLEX_SUBMINOR_VERSION 4
38
#if YY_FLEX_SUBMINOR_VERSION > 0
39
#define FLEX_BETA
40
#endif
41
42
#ifdef yy_create_buffer
43
#define sudoers_create_buffer_ALREADY_DEFINED
44
#else
45
#define yy_create_buffer sudoers_create_buffer
46
#endif
47
48
#ifdef yy_delete_buffer
49
#define sudoers_delete_buffer_ALREADY_DEFINED
50
#else
51
#define yy_delete_buffer sudoers_delete_buffer
52
#endif
53
54
#ifdef yy_scan_buffer
55
#define sudoers_scan_buffer_ALREADY_DEFINED
56
#else
57
#define yy_scan_buffer sudoers_scan_buffer
58
#endif
59
60
#ifdef yy_scan_string
61
#define sudoers_scan_string_ALREADY_DEFINED
62
#else
63
#define yy_scan_string sudoers_scan_string
64
#endif
65
66
#ifdef yy_scan_bytes
67
#define sudoers_scan_bytes_ALREADY_DEFINED
68
#else
69
#define yy_scan_bytes sudoers_scan_bytes
70
#endif
71
72
#ifdef yy_init_buffer
73
#define sudoers_init_buffer_ALREADY_DEFINED
74
#else
75
#define yy_init_buffer sudoers_init_buffer
76
#endif
77
78
#ifdef yy_flush_buffer
79
#define sudoers_flush_buffer_ALREADY_DEFINED
80
#else
81
#define yy_flush_buffer sudoers_flush_buffer
82
#endif
83
84
#ifdef yy_load_buffer_state
85
#define sudoers_load_buffer_state_ALREADY_DEFINED
86
#else
87
#define yy_load_buffer_state sudoers_load_buffer_state
88
#endif
89
90
#ifdef yy_switch_to_buffer
91
#define sudoers_switch_to_buffer_ALREADY_DEFINED
92
#else
93
#define yy_switch_to_buffer sudoers_switch_to_buffer
94
#endif
95
96
#ifdef yypush_buffer_state
97
#define sudoerspush_buffer_state_ALREADY_DEFINED
98
#else
99
#define yypush_buffer_state sudoerspush_buffer_state
100
#endif
101
102
#ifdef yypop_buffer_state
103
#define sudoerspop_buffer_state_ALREADY_DEFINED
104
#else
105
#define yypop_buffer_state sudoerspop_buffer_state
106
#endif
107
108
#ifdef yyensure_buffer_stack
109
#define sudoersensure_buffer_stack_ALREADY_DEFINED
110
#else
111
#define yyensure_buffer_stack sudoersensure_buffer_stack
112
#endif
113
114
#ifdef yylex
115
#define sudoerslex_ALREADY_DEFINED
116
#else
117
#define yylex sudoerslex
118
#endif
119
120
#ifdef yyrestart
121
#define sudoersrestart_ALREADY_DEFINED
122
#else
123
#define yyrestart sudoersrestart
124
#endif
125
126
#ifdef yylex_init
127
#define sudoerslex_init_ALREADY_DEFINED
128
#else
129
#define yylex_init sudoerslex_init
130
#endif
131
132
#ifdef yylex_init_extra
133
#define sudoerslex_init_extra_ALREADY_DEFINED
134
#else
135
#define yylex_init_extra sudoerslex_init_extra
136
#endif
137
138
#ifdef yylex_destroy
139
#define sudoerslex_destroy_ALREADY_DEFINED
140
#else
141
#define yylex_destroy sudoerslex_destroy
142
#endif
143
144
#ifdef yyget_debug
145
#define sudoersget_debug_ALREADY_DEFINED
146
#else
147
#define yyget_debug sudoersget_debug
148
#endif
149
150
#ifdef yyset_debug
151
#define sudoersset_debug_ALREADY_DEFINED
152
#else
153
#define yyset_debug sudoersset_debug
154
#endif
155
156
#ifdef yyget_extra
157
#define sudoersget_extra_ALREADY_DEFINED
158
#else
159
#define yyget_extra sudoersget_extra
160
#endif
161
162
#ifdef yyset_extra
163
#define sudoersset_extra_ALREADY_DEFINED
164
#else
165
#define yyset_extra sudoersset_extra
166
#endif
167
168
#ifdef yyget_in
169
#define sudoersget_in_ALREADY_DEFINED
170
#else
171
#define yyget_in sudoersget_in
172
#endif
173
174
#ifdef yyset_in
175
#define sudoersset_in_ALREADY_DEFINED
176
#else
177
#define yyset_in sudoersset_in
178
#endif
179
180
#ifdef yyget_out
181
#define sudoersget_out_ALREADY_DEFINED
182
#else
183
#define yyget_out sudoersget_out
184
#endif
185
186
#ifdef yyset_out
187
#define sudoersset_out_ALREADY_DEFINED
188
#else
189
#define yyset_out sudoersset_out
190
#endif
191
192
#ifdef yyget_leng
193
#define sudoersget_leng_ALREADY_DEFINED
194
#else
195
#define yyget_leng sudoersget_leng
196
#endif
197
198
#ifdef yyget_text
199
#define sudoersget_text_ALREADY_DEFINED
200
#else
201
#define yyget_text sudoersget_text
202
#endif
203
204
#ifdef yyget_lineno
205
#define sudoersget_lineno_ALREADY_DEFINED
206
#else
207
#define yyget_lineno sudoersget_lineno
208
#endif
209
210
#ifdef yyset_lineno
211
#define sudoersset_lineno_ALREADY_DEFINED
212
#else
213
#define yyset_lineno sudoersset_lineno
214
#endif
215
216
#ifdef yywrap
217
#define sudoerswrap_ALREADY_DEFINED
218
#else
219
#define yywrap sudoerswrap
220
#endif
221
222
#ifdef yyalloc
223
#define sudoersalloc_ALREADY_DEFINED
224
#else
225
#define yyalloc sudoersalloc
226
#endif
227
228
#ifdef yyrealloc
229
#define sudoersrealloc_ALREADY_DEFINED
230
#else
231
#define yyrealloc sudoersrealloc
232
#endif
233
234
#ifdef yyfree
235
#define sudoersfree_ALREADY_DEFINED
236
#else
237
#define yyfree sudoersfree
238
#endif
239
240
#ifdef yytext
241
#define sudoerstext_ALREADY_DEFINED
242
#else
243
#define yytext sudoerstext
244
#endif
245
246
#ifdef yyleng
247
#define sudoersleng_ALREADY_DEFINED
248
#else
249
#define yyleng sudoersleng
250
#endif
251
252
#ifdef yyin
253
#define sudoersin_ALREADY_DEFINED
254
#else
255
#define yyin sudoersin
256
#endif
257
258
#ifdef yyout
259
#define sudoersout_ALREADY_DEFINED
260
#else
261
#define yyout sudoersout
262
#endif
263
264
#ifdef yy_flex_debug
265
#define sudoers_flex_debug_ALREADY_DEFINED
266
#else
267
#define yy_flex_debug sudoers_flex_debug
268
#endif
269
270
#ifdef yylineno
271
#define sudoerslineno_ALREADY_DEFINED
272
#else
273
#define yylineno sudoerslineno
274
#endif
275
276
/* First, we deal with  platform-specific or compiler-specific issues. */
277
278
/* begin standard C headers. */
279
#include <stdio.h>
280
#include <string.h>
281
#include <errno.h>
282
#include <stdlib.h>
283
284
/* end standard C headers. */
285
286
/* flex integer type definitions */
287
288
#ifndef FLEXINT_H
289
#define FLEXINT_H
290
291
/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
292
293
#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
294
295
/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
296
 * if you want the limit (max/min) macros for int types. 
297
 */
298
#ifndef __STDC_LIMIT_MACROS
299
#define __STDC_LIMIT_MACROS 1
300
#endif
301
302
#include <inttypes.h>
303
typedef int8_t flex_int8_t;
304
typedef uint8_t flex_uint8_t;
305
typedef int16_t flex_int16_t;
306
typedef uint16_t flex_uint16_t;
307
typedef int32_t flex_int32_t;
308
typedef uint32_t flex_uint32_t;
309
#else
310
typedef signed char flex_int8_t;
311
typedef short int flex_int16_t;
312
typedef int flex_int32_t;
313
typedef unsigned char flex_uint8_t; 
314
typedef unsigned short int flex_uint16_t;
315
typedef unsigned int flex_uint32_t;
316
317
/* Limits of integral types. */
318
#ifndef INT8_MIN
319
#define INT8_MIN               (-128)
320
#endif
321
#ifndef INT16_MIN
322
#define INT16_MIN              (-32767-1)
323
#endif
324
#ifndef INT32_MIN
325
#define INT32_MIN              (-2147483647-1)
326
#endif
327
#ifndef INT8_MAX
328
#define INT8_MAX               (127)
329
#endif
330
#ifndef INT16_MAX
331
#define INT16_MAX              (32767)
332
#endif
333
#ifndef INT32_MAX
334
#define INT32_MAX              (2147483647)
335
#endif
336
#ifndef UINT8_MAX
337
#define UINT8_MAX              (255U)
338
#endif
339
#ifndef UINT16_MAX
340
#define UINT16_MAX             (65535U)
341
#endif
342
#ifndef UINT32_MAX
343
#define UINT32_MAX             (4294967295U)
344
#endif
345
346
#ifndef SIZE_MAX
347
#define SIZE_MAX               (~(size_t)0)
348
#endif
349
350
#endif /* ! C99 */
351
352
#endif /* ! FLEXINT_H */
353
354
/* begin standard C++ headers. */
355
356
/* TODO: this is always defined, so inline it */
357
#define yyconst const
358
359
#if defined(__GNUC__) && __GNUC__ >= 3
360
#define yynoreturn __attribute__((__noreturn__))
361
#else
362
#define yynoreturn
363
#endif
364
365
/* Returned upon end-of-file. */
366
5
#define YY_NULL 0
367
368
/* Promotes a possibly negative, possibly signed char to an
369
 *   integer in range [0..255] for use as an array index.
370
 */
371
6.10M
#define YY_SC_TO_UI(c) ((YY_CHAR) (c))
372
373
/* Enter a start condition.  This macro really ought to take a parameter,
374
 * but we do it the disgusting crufty way forced on us by the ()-less
375
 * definition of BEGIN.
376
 */
377
45.9k
#define BEGIN (yy_start) = 1 + 2 *
378
/* Translate the current start state into a value that can be later handed
379
 * to BEGIN to return to the state.  The YYSTATE alias is for lex
380
 * compatibility.
381
 */
382
33
#define YY_START (((yy_start) - 1) / 2)
383
#define YYSTATE YY_START
384
/* Action number for EOF rule of a given start state. */
385
55
#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
386
/* Special action meaning "start processing a new file". */
387
0
#define YY_NEW_FILE yyrestart( yyin  )
388
610
#define YY_END_OF_BUFFER_CHAR 0
389
390
/* Size of default input buffer. */
391
#ifndef YY_BUF_SIZE
392
#ifdef __ia64__
393
/* On IA-64, the buffer size is 16k, not 8k.
394
 * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
395
 * Ditto for the __ia64__ case accordingly.
396
 */
397
#define YY_BUF_SIZE 32768
398
#else
399
1
#define YY_BUF_SIZE 16384
400
#endif /* __ia64__ */
401
#endif
402
403
/* The state buf must be large enough to hold one state per character in the main buffer.
404
 */
405
#define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
406
407
#ifndef YY_TYPEDEF_YY_BUFFER_STATE
408
#define YY_TYPEDEF_YY_BUFFER_STATE
409
typedef struct yy_buffer_state *YY_BUFFER_STATE;
410
#endif
411
412
#ifndef YY_TYPEDEF_YY_SIZE_T
413
#define YY_TYPEDEF_YY_SIZE_T
414
typedef size_t yy_size_t;
415
#endif
416
417
extern int yyleng;
418
419
extern FILE *yyin, *yyout;
420
421
578
#define EOB_ACT_CONTINUE_SCAN 0
422
10
#define EOB_ACT_END_OF_FILE 1
423
0
#define EOB_ACT_LAST_MATCH 2
424
    
425
    #define YY_LESS_LINENO(n)
426
    #define YY_LINENO_REWIND_TO(ptr)
427
    
428
/* Return all but the first "n" matched characters back to the input stream. */
429
#define yyless(n) \
430
2
  do \
431
2
    { \
432
2
    /* Undo effects of setting up yytext. */ \
433
2
        int yyless_macro_arg = (n); \
434
2
        YY_LESS_LINENO(yyless_macro_arg);\
435
2
    *yy_cp = (yy_hold_char); \
436
2
    YY_RESTORE_YY_MORE_OFFSET \
437
2
    (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
438
2
    YY_DO_BEFORE_ACTION; /* set up yytext again */ \
439
2
    } \
440
2
  while ( 0 )
441
#define unput(c) yyunput( c, (yytext_ptr)  )
442
443
#ifndef YY_STRUCT_YY_BUFFER_STATE
444
#define YY_STRUCT_YY_BUFFER_STATE
445
struct yy_buffer_state
446
  {
447
  FILE *yy_input_file;
448
449
  char *yy_ch_buf;    /* input buffer */
450
  char *yy_buf_pos;   /* current position in input buffer */
451
452
  /* Size of input buffer in bytes, not including room for EOB
453
   * characters.
454
   */
455
  int yy_buf_size;
456
457
  /* Number of characters read into yy_ch_buf, not including EOB
458
   * characters.
459
   */
460
  int yy_n_chars;
461
462
  /* Whether we "own" the buffer - i.e., we know we created it,
463
   * and can realloc() it to grow it, and should free() it to
464
   * delete it.
465
   */
466
  int yy_is_our_buffer;
467
468
  /* Whether this is an "interactive" input source; if so, and
469
   * if we're using stdio for input, then we want to use getc()
470
   * instead of fread(), to make sure we stop fetching input after
471
   * each newline.
472
   */
473
  int yy_is_interactive;
474
475
  /* Whether we're considered to be at the beginning of a line.
476
   * If so, '^' rules will be active on the next match, otherwise
477
   * not.
478
   */
479
  int yy_at_bol;
480
481
    int yy_bs_lineno; /**< The line count. */
482
    int yy_bs_column; /**< The column count. */
483
484
  /* Whether to try to fill the input buffer when we reach the
485
   * end of it.
486
   */
487
  int yy_fill_buffer;
488
489
  int yy_buffer_status;
490
491
305
#define YY_BUFFER_NEW 0
492
5
#define YY_BUFFER_NORMAL 1
493
  /* When an EOF's been seen but there's still some text to process
494
   * then we mark the buffer as YY_EOF_PENDING, to indicate that we
495
   * shouldn't try reading from the input source any more.  We might
496
   * still have a bunch of tokens to match, though, because of
497
   * possible backing-up.
498
   *
499
   * When we actually see the EOF, we change the status to "new"
500
   * (via yyrestart()), so that the user can continue scanning by
501
   * just pointing yyin at a new input file.
502
   */
503
294
#define YY_BUFFER_EOF_PENDING 2
504
505
  };
506
#endif /* !YY_STRUCT_YY_BUFFER_STATE */
507
508
/* Stack of input buffers. */
509
static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
510
static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
511
static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */
512
513
/* We provide macros for accessing buffer states in case in the
514
 * future we want to put the buffer states in a more general
515
 * "scanner state".
516
 *
517
 * Returns the top of the stack, or NULL.
518
 */
519
45
#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
520
45
                          ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
521
45
                          : NULL)
522
/* Same as previous macro, but useful when we know that the buffer stack is not
523
 * NULL or when we need an lvalue. For internal use only.
524
 */
525
498k
#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
526
527
/* yy_hold_char holds the character lost when yytext is formed. */
528
static char yy_hold_char;
529
static int yy_n_chars;    /* number of characters read into yy_ch_buf */
530
int yyleng;
531
532
/* Points to current character in buffer. */
533
static char *yy_c_buf_p = NULL;
534
static int yy_init = 0;   /* whether we need to initialize */
535
static int yy_start = 0;  /* start state number */
536
537
/* Flag which is used to allow yywrap()'s to do buffer switches
538
 * instead of setting up a fresh yyin.  A bit of a hack ...
539
 */
540
static int yy_did_buffer_switch_on_eof;
541
542
void yyrestart ( FILE *input_file  );
543
void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer  );
544
YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size  );
545
void yy_delete_buffer ( YY_BUFFER_STATE b  );
546
void yy_flush_buffer ( YY_BUFFER_STATE b  );
547
void yypush_buffer_state ( YY_BUFFER_STATE new_buffer  );
548
void yypop_buffer_state ( void );
549
550
static void yyensure_buffer_stack ( void );
551
static void yy_load_buffer_state ( void );
552
static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file  );
553
#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER )
554
555
YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size  );
556
YY_BUFFER_STATE yy_scan_string ( const char *yy_str  );
557
YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len  );
558
559
void *yyalloc ( yy_size_t  );
560
void *yyrealloc ( void *, yy_size_t  );
561
void yyfree ( void *  );
562
563
#define yy_new_buffer yy_create_buffer
564
#define yy_set_interactive(is_interactive) \
565
  { \
566
  if ( ! YY_CURRENT_BUFFER ){ \
567
        yyensure_buffer_stack (); \
568
    YY_CURRENT_BUFFER_LVALUE =    \
569
            yy_create_buffer( yyin, YY_BUF_SIZE ); \
570
  } \
571
  YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
572
  }
573
#define yy_set_bol(at_bol) \
574
2
  { \
575
2
  if ( ! YY_CURRENT_BUFFER ){\
576
0
        yyensure_buffer_stack (); \
577
0
    YY_CURRENT_BUFFER_LVALUE =    \
578
0
            yy_create_buffer( yyin, YY_BUF_SIZE ); \
579
0
  } \
580
2
  YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
581
2
  }
582
247k
#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
583
584
/* Begin user sect3 */
585
586
5
#define sudoerswrap() (/*CONSTCOND*/1)
587
#define YY_SKIP_YYWRAP
588
typedef flex_uint8_t YY_CHAR;
589
590
FILE *yyin = NULL, *yyout = NULL;
591
592
typedef int yy_state_type;
593
594
extern int yylineno;
595
int yylineno = 1;
596
597
extern char *yytext;
598
#ifdef yytext_ptr
599
#undef yytext_ptr
600
#endif
601
249k
#define yytext_ptr yytext
602
603
static yy_state_type yy_get_previous_state ( void );
604
static yy_state_type yy_try_NUL_trans ( yy_state_type current_state  );
605
static int yy_get_next_buffer ( void );
606
static void yynoreturn yy_fatal_error ( const char* msg  );
607
608
/* Done after the current pattern has been matched and before the
609
 * corresponding action - sets up yytext.
610
 */
611
#define YY_DO_BEFORE_ACTION \
612
247k
  (yytext_ptr) = yy_bp; \
613
247k
  yyleng = (int) (yy_cp - yy_bp); \
614
247k
  (yy_hold_char) = *yy_cp; \
615
247k
  *yy_cp = '\0'; \
616
247k
  (yy_c_buf_p) = yy_cp;
617
#define YY_NUM_RULES 89
618
349
#define YY_END_OF_BUFFER 90
619
/* This struct is not used in this scanner,
620
   but its presence is necessary. */
621
struct yy_trans_info
622
  {
623
  flex_int32_t yy_verify;
624
  flex_int32_t yy_nxt;
625
  };
626
static const flex_int16_t yy_accept[1242] =
627
    {   0,
628
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
629
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
630
       90,   75,   85,   84,   88,   83,   74,   87,   46,   78,
631
       79,   46,   80,   75,   75,   75,   75,   82,   81,   88,
632
       75,   64,   64,   64,   64,   64,   64,   64,   64,   64,
633
       64,   64,   64,   64,   64,   88,   75,   75,   75,   85,
634
       87,   64,   64,   64,   64,   64,    2,   88,    1,   75,
635
       64,   64,   64,   64,   75,   75,   17,   16,   16,   17,
636
       16,   16,   88,   21,   21,   19,   19,   21,   19,   20,
637
       88,   87,   88,    3,    9,    8,    9,    4,    9,    5,
638
639
       88,   13,   13,   13,   11,   12,   88,   23,   23,   22,
640
       22,   22,   23,   22,   22,   22,   22,   23,   23,   23,
641
       23,   23,   23,   23,   88,   22,   23,   23,   76,   76,
642
       77,   76,   71,   71,   71,   71,   71,   71,   71,   64,
643
       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
644
       88,   71,   71,   71,   75,    0,   85,   84,   83,   87,
645
       87,    0,    0,   75,   48,    0,   46,    0,   47,    0,
646
       72,   72,    0,   75,   75,    0,   75,   75,   75,   75,
647
        0,   51,   75,   64,   64,   64,   64,   64,   64,   64,
648
       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
649
650
       64,   64,    0,   86,   75,   75,   75,    0,   73,    0,
651
       75,   75,   85,    0,    0,    0,    0,    0,   87,   75,
652
       75,   75,   75,   75,    2,    1,    0,    1,   65,   65,
653
        0,   64,   75,    0,   65,    0,   75,   17,   17,   15,
654
        0,   14,   15,   21,   21,   21,   18,   18,    0,    3,
655
        9,    0,    6,    7,    9,    9,   13,    0,   13,   13,
656
        0,   10,    0,   48,    0,    0,   47,   23,   23,    0,
657
       23,    0,    0,   22,   22,   22,   22,   22,   22,   23,
658
       23,   64,   23,   23,   23,   23,   23,   23,   23,   23,
659
       73,    0,   23,   23,   76,   76,   76,   71,    0,   48,
660
661
        0,   47,    0,   71,   71,    0,   71,   71,   71,   71,
662
       71,   71,   64,   64,   64,   64,   64,   64,   64,   64,
663
       64,   64,   64,   71,   71,   71,   71,    0,   71,   71,
664
       87,   87,   87,    0,   48,   75,   75,   75,   75,   75,
665
        0,    0,   51,   51,   75,   64,   53,   64,   64,   57,
666
       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
667
       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
668
       73,   75,   75,   75,    0,    0,    0,    0,    0,   87,
669
       75,   75,   75,   75,   75,   75,    0,   65,    0,   65,
670
       75,   75,   10,    0,    0,    0,   22,   22,   22,   23,
671
672
       23,   23,   23,   23,   23,   23,   23,   23,   23,   23,
673
       23,   23,   23,   23,   73,   23,   23,    0,   71,   71,
674
       71,   71,   71,   64,   53,   64,   64,   64,   64,   64,
675
       64,   64,   64,   64,   64,   64,   64,   64,   64,   71,
676
       71,   71,   71,   87,   87,   87,   75,   75,   75,   75,
677
       75,   75,    0,   52,   52,   52,    0,    0,   51,   51,
678
       51,   51,   51,   51,   51,   75,   64,   64,   64,   64,
679
       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
680
       64,   64,   64,   64,   64,   64,   59,   64,   64,   60,
681
       75,   75,   75,   75,    0,    0,    0,    0,    0,    0,
682
683
       87,   75,   75,   75,   65,   75,    0,    0,    0,    0,
684
        0,   22,   22,   23,   23,   23,   64,   23,   23,   23,
685
       23,   23,   23,   23,   23,   23,   23,   23,   23,   23,
686
       23,   71,   71,   71,   71,   71,   71,   64,   64,   64,
687
       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
688
       64,   64,   71,   71,   71,   71,   75,   75,   75,    0,
689
        0,   52,   52,   52,    0,   51,   51,    0,   51,   51,
690
       51,   51,   51,   51,   51,   51,   51,   51,   51,   75,
691
       64,   64,    0,   33,   64,   64,   64,   64,   64,    0,
692
       42,   64,   64,   64,   64,   64,   64,   64,   64,   64,
693
694
       64,   62,   64,   64,   75,   75,   75,   75,   75,    0,
695
        0,    0,   87,   75,   75,   75,    0,    0,    0,   22,
696
       22,   23,   23,   64,   64,   23,   23,   23,   23,   23,
697
       23,   23,   23,   23,   23,   23,   23,   23,   23,   71,
698
       71,   71,   64,   64,   64,   64,   64,   64,   64,   64,
699
       64,   64,   64,   64,   64,   71,   71,   71,   71,   71,
700
       75,   75,   75,   75,   75,    0,   52,    0,   51,   51,
701
       51,    0,    0,    0,   51,   51,   51,   51,   51,   51,
702
       51,   51,   51,   51,   51,   51,   51,   75,   64,   58,
703
       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
704
705
       64,   64,   64,   64,   64,   64,   64,   66,   67,   68,
706
       69,   75,    0,    0,   87,   75,   75,   75,    0,    0,
707
        0,    0,    0,   23,   23,   64,   64,   23,   23,   23,
708
       64,   23,   23,   23,   23,   23,   23,   23,   23,   23,
709
       23,   71,   71,   71,   71,   71,   64,   64,   64,   64,
710
       64,   64,   64,   64,   64,   64,   64,   64,   64,   66,
711
       67,   68,   69,   71,   49,   49,   49,    0,    0,   51,
712
       51,   51,   51,   51,   51,   51,    0,    0,    0,    0,
713
        0,   51,   51,   51,   51,   51,   51,   51,   51,   51,
714
       51,   51,   51,   51,   51,   75,   64,    0,   44,   64,
715
716
       64,   64,   64,    0,   32,   64,   64,   64,   64,    0,
717
       43,   64,   64,   64,   64,    0,   31,    0,   36,   54,
718
       75,    0,    0,   87,   75,   75,   75,   49,   49,   49,
719
       23,   64,   64,   23,   23,   64,   64,   23,   23,   23,
720
       49,   49,   49,   64,   64,   64,   64,   64,   64,   64,
721
       64,   64,   71,   75,   49,   49,   49,   49,    0,   51,
722
        0,   51,   51,   51,   51,   51,   51,   51,   51,   51,
723
       51,   51,    0,    0,    0,   51,   51,   51,   51,   51,
724
       51,   51,   51,   51,   51,   51,   51,   51,   24,   64,
725
       64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
726
727
       56,   64,   70,    0,    0,   87,   75,   28,   65,    0,
728
       49,   49,   49,   49,   23,   64,   64,   23,   23,   64,
729
       64,   23,   23,   23,   71,   49,   49,   49,   49,   64,
730
       64,   64,   64,   64,   64,   64,   64,   64,   70,   50,
731
       50,   50,   50,   51,    0,    0,    0,   51,   51,   51,
732
       51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
733
        0,    0,    0,    0,    0,   51,   51,   51,   51,   51,
734
       51,   51,   51,   75,   64,   64,   64,   64,   64,    0,
735
       45,   64,   64,   64,    0,   30,    0,   37,   55,    0,
736
       28,   26,   87,   29,    0,   75,   50,   50,   50,   50,
737
738
       23,   64,   64,   23,   64,   64,   50,   50,   50,   50,
739
       64,   64,   64,   64,   64,   64,   75,   75,   50,   50,
740
       50,   50,    0,    0,    0,    0,    0,   51,   51,   51,
741
       51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
742
       51,   51,   51,   51,   51,   51,   51,   75,   64,    0,
743
       34,   63,    0,   40,   64,   64,   64,   64,   29,   26,
744
       26,   26,   26,   87,   28,    0,    0,    0,    0,    0,
745
       28,    0,    0,    0,   50,   50,   50,   50,   64,   23,
746
       64,   64,   71,   71,   50,   50,   50,   50,   64,   64,
747
       64,   64,   75,   75,   75,    0,    0,    0,   51,   51,
748
749
       51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
750
       51,   51,   51,   51,   51,   51,   25,   64,    0,   38,
751
       64,   64,   64,   26,   87,    0,   28,    0,    0,    0,
752
       23,   64,   64,   71,   71,   71,   64,   64,   64,   75,
753
       75,   75,   75,   75,    0,    0,    0,    0,    0,   51,
754
       51,   51,   51,   51,   51,   51,   51,   64,    0,   35,
755
        0,   41,   64,   27,    0,    0,    0,    0,    0,   64,
756
       71,   71,   71,   71,   71,   64,   75,   75,   75,   51,
757
       51,   51,   51,   51,   51,   64,    0,   39,   27,   27,
758
       27,   27,    0,    0,    0,   71,   71,   71,   75,   75,
759
760
       75,   75,   75,   51,   51,   51,   51,   51,   64,   27,
761
        0,    0,    0,    0,    0,   71,   71,   71,   71,   71,
762
       49,   49,   49,   64,   49,   49,   49,   49,   49,   49,
763
       49,   49,   49,   61,   49,   49,   49,   49,   49,   49,
764
        0
765
    } ;
766
767
static const YY_CHAR yy_ec[256] =
768
    {   0,
769
        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
770
        4,    4,    5,    1,    1,    1,    1,    1,    1,    1,
771
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
772
        1,    6,    7,    8,    9,   10,   11,    1,    1,   12,
773
       13,   14,   15,   16,   17,   18,   19,   20,   21,   22,
774
       23,   24,   25,   26,   27,   28,   29,   30,    1,    1,
775
       31,   32,   14,   33,   34,   35,   36,   37,   38,   39,
776
       40,   41,   42,   43,   43,   44,   45,   46,   47,   48,
777
       43,   49,   50,   51,   52,   53,   54,   55,   56,   43,
778
       14,   57,   14,   58,   59,    1,   60,   61,   62,   63,
779
780
       64,   65,   66,   67,   68,   66,   66,   69,   70,   71,
781
       72,   66,   66,   73,   74,   75,   76,   66,   66,   66,
782
       66,   66,    1,    1,    1,    1,    1,    1,    1,    1,
783
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
784
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
785
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
786
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
787
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
788
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
789
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
790
791
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
792
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
793
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
794
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
795
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
796
        1,    1,    1,    1,    1
797
    } ;
798
799
static const YY_CHAR yy_meta[77] =
800
    {   0,
801
        1,    2,    3,    4,    3,    2,    5,    6,    7,    8,
802
        1,    9,    9,    1,   10,   11,    1,   12,   13,   14,
803
       14,   14,   14,   14,   14,   14,   14,   14,   14,   15,
804
       16,    9,    1,   14,   14,   14,   14,   14,   14,   17,
805
       17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
806
       17,   17,   17,   17,   17,   17,   18,    1,   19,   20,
807
       20,   20,   20,   20,   20,   21,   21,   21,   21,   21,
808
       21,   21,   21,   21,   21,   21
809
    } ;
810
811
static const flex_int16_t yy_base[1366] =
812
    {   0,
813
        0,   75,  126,  199,   83,   91,   99,  180,  272,  347,
814
      422,  478,  131,  147,  535,    0,  189,  219,  611,    0,
815
     6517, 6458,   76, 9534, 6501, 6471, 9534,  685,  101, 9534,
816
     9534, 6409, 9534,  199,  697,  238,  143, 6428, 9534, 9534,
817
       23,  762,   35,  103,   71,  132,  819, 6411,   76, 6422,
818
     6385,  112, 6373, 6374,   61,  883,  914,  262,  152,  266,
819
      969,  251,  166, 6339,  122, 6336,  197,  338,  123,  369,
820
     6350, 6335, 6334, 6344, 1036,  177,    0, 9534, 6364, 6335,
821
     9534,    0, 1092,    0,  214, 9534, 6338, 6331, 9534, 9534,
822
      236, 1148,  249,    0, 6280, 9534,  239, 9534,  240, 9534,
823
824
      306, 6245,  311,  262, 9534,  320,  172, 1177, 1236, 1281,
825
      363,  349, 1340, 1391, 6257,   86,  254, 1448, 6231, 6215,
826
     6227, 6200, 6212, 6207,  294,  422,    0,  173, 6187,  323,
827
     9534,  397, 6180,  348, 6168,  450, 1496,  444,  373, 1561,
828
     6135,  272,  388, 1618, 6117, 6113, 6125, 6109, 6121, 6114,
829
     1682, 1713,  490,  421, 6089,  737,  304, 9534, 6138,  168,
830
     9534, 6141,  500,  671, 6086,  848,  446,  926, 6085,  971,
831
      893, 6064, 1769,  984, 1784, 6077, 6088,  939,  994,  887,
832
     6075,  422,  243, 1849, 1906, 6050, 6034, 6002, 6013, 5988,
833
     5981, 5972, 5966, 5970, 5967, 1012, 5912, 5905, 5900, 5892,
834
835
     5894, 5885,  496, 9534,  376, 1022, 1970,  449, 5868, 1024,
836
      417,  433, 1033, 5854, 5859, 5849, 5841, 5839,  847,  684,
837
      683,  418,  434,  673,  935,  318, 1089,  454, 1064, 5850,
838
     2026, 1086, 2057,  694, 5842, 1078,  707,    0, 5891,  528,
839
     5894, 9534, 9534,    0,  498, 5862, 9534, 1135, 1134,    0,
840
     5801, 1184, 9534, 9534, 5792, 1140, 5772, 5820,  860,  682,
841
     1177,  750, 5822,  943, 1075, 1250, 5767, 2114,    0, 1377,
842
     2173, 1196, 1196, 2215, 5793, 1250, 1263, 1208, 2266, 2323,
843
     5759,    0, 5764, 5757, 5732, 5726, 5715, 1451, 5705, 5692,
844
     9534, 1021, 5670, 5664, 5669,  891,  721, 5667, 1536, 5655,
845
846
     1725, 5654, 1756, 1660, 5646, 2387, 1679, 2402, 5670, 1769,
847
     1804, 1374, 2467, 2524, 5629, 5634, 5619, 5555, 5550, 5541,
848
     1621, 5532, 5528,  737, 1746, 2588, 5516, 1194,  714,  841,
849
      431,  856,  944, 1926, 1936, 2628, 2668, 2708, 2746, 5552,
850
     5529, 2792,  910, 2839,  866, 2904, 2961, 5517, 5503,    0,
851
     5511, 5489, 5494, 5489, 5436, 5450, 5438, 5445, 5424, 5392,
852
     5404, 5380, 5375,  259, 5361, 5346, 5360, 5359, 5290, 5288,
853
     3025, 3081, 1184,  830,   24, 5240, 5230, 5232, 5238, 1042,
854
      896,  912, 5235,  718,  925,  821, 1979, 9534, 1043, 3137,
855
     3193,  983,  858, 1993, 2023, 2054, 3231, 5269, 3282, 3339,
856
857
     5250, 5241, 5246, 5181, 5195, 5183, 5165, 5154, 5145, 5157,
858
     5156, 5126, 5102, 5106, 1063, 1036, 5071, 2089, 3387, 3427,
859
     3467, 3507, 5079, 3553,    0, 5048, 5027, 5031, 5008, 4998,
860
     4976, 4970, 4935, 4932, 4930, 4929, 4911, 4897, 4883, 3617,
861
     3673, 1480, 1018, 9534, 1086, 1124, 2113,  160, 3713, 3753,
862
     1969,  708, 4889, 4884, 2128, 1239, 4880, 4869,  924,  951,
863
     3793, 2139, 1814, 3840, 2174, 1050, 3905, 1103,  889, 1183,
864
     1056, 1117, 1308, 1508, 1498, 1342, 1208, 1341, 1062, 1449,
865
     1114, 1464, 1109, 1343, 1394, 1215, 4857, 1234, 1137, 4849,
866
     1366, 1008, 1506, 1424, 4818, 4813, 4815, 4786, 4792, 4778,
867
868
     1671,   86, 1516, 1240, 1330, 1472, 2187, 4814, 2199, 2237,
869
     2079, 3962, 4013, 4088, 2006, 2060, 1522, 1716, 2367, 2368,
870
     1973, 2361, 2374, 2404, 2405, 2444, 2562, 1189, 4798, 4793,
871
     4742, 2549, 1536, 4136, 4176, 2603, 1450, 4775, 1850, 4757,
872
     4708, 1628, 2268, 4698, 4691, 4682, 4687, 4676, 4660, 4658,
873
     4654, 4647, 1636, 1682, 1629, 1483, 4216, 4256, 4296, 4625,
874
     4624, 2609, 4605, 4584, 4583, 4575,  969, 2641, 1824, 2651,
875
     2066, 4336,    0, 2592, 4384, 2678, 2688, 4431, 2720, 1494,
876
     1268, 1728, 2442, 9534, 1681, 1717, 1679, 1720, 1810, 2443,
877
     9534, 1724, 1698, 1468, 1966, 1729, 1647, 1686, 1954, 1967,
878
879
     1821, 4534, 1977, 2041, 1759, 1758, 1980, 1517, 1798, 4489,
880
     4446, 4424, 2103, 2053, 2054, 1966, 2732, 2768, 2814, 4460,
881
     4459, 2445, 2877, 4442, 4430, 2880, 2999, 2842, 3000, 3006,
882
     3012, 2879, 3009, 2882, 4448, 4445, 4440, 4441, 4399, 4479,
883
     4519, 4559, 4389, 4389, 4371, 4364, 4333, 4324, 4329, 4287,
884
     4300, 4265, 4274, 4274, 4257, 2037, 2029, 2089, 1916, 1997,
885
     2694, 2050, 4599, 4639, 3043, 4257, 4242, 4240, 4217, 4677,
886
     2097, 2869, 3051, 3081, 2159, 2253, 2336, 3094, 2360, 4725,
887
        0, 3106, 4773, 3134, 3150, 4820, 3158, 2112, 2082, 4202,
888
     2577, 1827, 2199, 2096, 2216, 3014, 2146, 2326, 2226, 3135,
889
890
     1944, 2188, 2334, 2252, 3186, 3187, 2351, 4173, 4135, 4111,
891
     4098, 2314, 4078, 4077, 2577, 2385, 2358, 2401, 3206, 4111,
892
     3218, 3253, 3190, 3284, 3387, 4073, 4055, 3388, 3389, 3390,
893
     2366, 3427, 3428, 3429, 3435, 3436,    0,    0,    0,    0,
894
     4003, 3480, 2125, 4868, 4908, 3456, 3467, 4008, 3997, 3979,
895
     3508, 3973, 3869, 2367, 3509, 3863, 3868, 3510, 3517, 3856,
896
     3854, 3838, 3835, 2498, 4947, 4986, 5025, 3861, 3843, 3821,
897
     3359, 5065, 3528, 3538, 5111, 3575, 3614, 3808, 3632, 3644,
898
     3587, 2537, 2572, 2974, 3030, 3670, 3066, 5159,    0, 3688,
899
     5207, 3699, 3723, 5254, 3731, 2419, 5319, 3759, 9534, 2275,
900
901
     2756, 1190, 2412, 3760, 9534, 2403,  667, 2319, 2592, 3761,
902
     9534, 2406, 2068, 3776, 3758, 3762, 9534, 3794, 9534, 3745,
903
     2524, 3725, 3675, 2759, 2624, 2585, 2776, 3814, 3861, 3983,
904
     5381, 3680, 3668, 2549, 2557, 3669, 3649, 2610, 2634, 3625,
905
     5439, 5478, 5517, 5574, 2752, 3598, 2955, 2691, 1603, 2797,
906
     2980, 2858, 2977, 4075, 2073, 5632, 5671, 4114, 3614, 3601,
907
     4152, 2769, 4162, 2989, 5711,    0, 4188, 5724, 4199, 3763,
908
     5770, 4228, 4240, 4268, 4280, 3021, 3028, 3116, 3269, 4306,
909
     3442, 5818,    0, 4318, 5866, 4356, 3781, 4406, 3029, 5931,
910
     2506, 3089, 2994, 3081, 4479, 2787, 3022, 3139, 4519, 4559,
911
912
     3563, 2812, 3529, 3525, 3492, 3844, 3147, 3864, 3508, 4366,
913
     3502, 4491, 4531, 3994, 5993, 3466, 3416, 3842, 1729, 3415,
914
     3395, 4560, 4561,    0, 4572, 2744, 6051, 6090, 4417, 6147,
915
     3371, 2428, 4600, 3113, 2962, 3347, 4601, 4602, 3314, 6206,
916
     6246, 6286, 6326, 3218, 4506, 4615, 4651, 3192, 3189, 3219,
917
     4661, 3254, 6366,    0, 4699, 6379, 4745, 4120, 6425, 4795,
918
     4755, 3114, 4842, 4880, 4455, 3147, 3270, 3602, 2759, 3178,
919
     6473,    0, 4550, 3364, 3535, 4918, 3347, 4921, 3411, 3906,
920
     9534, 3628, 3412, 3629, 4229, 9534, 4269, 9534, 2995, 2920,
921
     3765, 3421, 3215, 2813, 4936, 4976, 4932, 4974, 4998, 5037,
922
923
     4823, 4726, 2796, 3047, 2772, 2754, 6485, 6525, 6565, 6605,
924
     4911, 5026, 2728, 3392, 3211, 3435, 5085, 3134, 6645, 6685,
925
     5016, 3410, 5095, 2706, 5133, 5181, 5145, 2653, 2613, 3633,
926
     3684, 5227, 3699, 6725,    0, 5276, 6738, 5237, 4625, 6784,
927
     5451, 5462, 5489, 5500, 3880, 2590, 3321, 2863, 3750, 4728,
928
     9534, 2411, 4909, 9534, 5528, 3467, 3970, 3793, 9534, 1934,
929
     4164, 9534, 3367, 4342, 5547, 5660, 5668, 5699, 5540, 5319,
930
     5707, 5906, 5658, 2403, 5747, 5792, 5193, 2359, 4910, 2196,
931
     2137, 1988, 5839, 3588, 6832, 6872, 5852, 3751, 5820, 1948,
932
     1830, 3447, 6912, 6952, 6992, 6063, 6075, 6102, 1787, 1666,
933
934
     4075, 4089, 6112, 4177, 7032,    0, 6218, 7045, 6229, 4966,
935
     6258, 1645, 6269, 6297, 5288, 1558, 1440, 4170, 4916, 9534,
936
     5546, 5904, 4069, 9534, 4481, 6307, 6336, 6348, 6401, 6447,
937
     5910, 5066, 1398, 7093, 7133, 7173, 6514, 6525, 1288, 6512,
938
     3880, 7213, 7253, 6501, 6575, 1183, 6587, 6617, 6413, 1096,
939
     1034, 4640, 1014,  885, 6629,    0, 4323, 3525, 5068, 9534,
940
     5821, 9534, 6618, 4689, 6658,  833, 6670, 6697, 6459, 6147,
941
     6712, 4013, 7293, 7333, 6760, 6784, 7373, 7413, 7453, 6804,
942
     6842, 6852,  699,    0,  514, 3256, 6148, 9534, 3517, 4825,
943
     9534, 3623, 6884, 6896, 6924, 7493, 7533, 7573, 6934, 4073,
944
945
     7613, 7653, 6965, 9534, 6972, 7003, 5698, 9534, 2225, 9534,
946
     7013,  471, 7067, 7105, 6539, 7115, 4074, 7693, 7733, 7146,
947
     7153, 7191, 7229, 3226, 7239, 7267, 7277, 7306, 7316, 7354,
948
      404, 7392, 7164,  316, 9534, 7430, 5757,  179, 7440, 7346,
949
     9534, 7790, 7811, 7832, 7853, 7874, 7895, 7916, 7937, 7958,
950
     7979, 8000, 4595, 8021, 8042, 8063, 8084, 8105, 8126, 3974,
951
     8147, 8168, 8189, 8210, 8231, 8252, 8273, 8294, 8315, 8336,
952
     8357, 8378, 8399, 8420, 8441, 8462, 8483, 8504, 8525, 8546,
953
     4711, 4858, 8555, 8575, 8596, 8617, 8638, 8659, 8680, 8701,
954
     8722, 4195, 8743, 8764, 8785, 8806, 8818, 8839, 5061, 8860,
955
956
     8881, 8902, 8923, 8944, 8965, 8986, 9007, 9028, 9049, 5015,
957
     9058, 9078, 9099, 9120, 9141, 5557, 5566, 5900, 9150, 9158,
958
     9178, 9199, 5062, 6245, 6285, 6325, 9208, 9217, 6365, 6552,
959
     6559, 9225, 9234, 6773, 6777, 9242, 9251, 9271, 5308, 9283,
960
     9304, 6822, 9314, 9322, 9331, 9351, 6561, 9363, 9384, 6868,
961
     9394, 9402, 9411, 9431, 9452, 9473, 6871, 9483, 5651, 6951,
962
     9492, 6988, 5690, 9512, 3664
963
    } ;
964
965
static const flex_int16_t yy_def[1366] =
966
    {   0,
967
     1241,    1,    1,    1, 1242, 1242, 1243, 1243, 1244, 1244,
968
     1245, 1245, 1246, 1246, 1241,   15, 1247, 1247, 1241,   19,
969
     1241, 1248, 1241, 1241, 1241, 1241, 1241, 1249, 1250, 1241,
970
     1241, 1251, 1241, 1252, 1248,   35,   35, 1253, 1241, 1241,
971
     1248, 1241,   42,   42,   42,   42,   42,   47,   47,   47,
972
       47,   47,   47,   47,   47, 1248, 1254,   35, 1248, 1241,
973
     1249,   42,   42,   47,   47,   47, 1241, 1241, 1241, 1255,
974
       42,   47,   47,   47, 1256, 1248, 1257, 1241, 1241, 1257,
975
     1241, 1257, 1241, 1258, 1258, 1241, 1241, 1258, 1241, 1241,
976
     1259, 1249, 1241, 1260, 1261, 1241, 1261, 1241, 1261, 1241,
977
978
     1262, 1263, 1263, 1263, 1241, 1241, 1264, 1265, 1266, 1241,
979
      110,  110,  110, 1241,  114,  114,  114,  114,  118,  118,
980
      118,  118,  118,  118, 1267,  110,  113,  113, 1268, 1268,
981
     1241, 1268, 1269, 1270, 1271, 1272, 1269,  137,  137, 1241,
982
      140,  140,  140,  140,  144,  144,  144,  144,  144,  144,
983
     1269, 1273,  137, 1269, 1274, 1274, 1241, 1241, 1241, 1275,
984
     1241, 1241, 1276, 1241, 1277, 1241, 1264, 1277, 1278, 1278,
985
     1279, 1280, 1274, 1274, 1274, 1281,  175,  175,  175,  175,
986
     1282, 1283, 1274, 1241,  184,  185,  185,  185,  185,  185,
987
      185,  185,  185,  185,  185,  185,  185,  185,  185,  185,
988
989
      185,  185, 1241, 1241, 1274, 1274, 1284, 1285, 1274, 1284,
990
     1274, 1274, 1241, 1241, 1241, 1241, 1241, 1241, 1275, 1274,
991
      175, 1274, 1274, 1274, 1241, 1241, 1241, 1241, 1286, 1287,
992
     1274,  185, 1288, 1289, 1274, 1288, 1274, 1290, 1290, 1241,
993
     1241, 1241, 1241, 1291, 1291, 1291, 1241, 1241, 1276, 1292,
994
     1293, 1293, 1241, 1241, 1293, 1293, 1294, 1241, 1294, 1294,
995
     1241, 1241, 1241, 1264, 1264, 1264, 1295, 1296, 1297, 1295,
996
     1298, 1241, 1241, 1297,  274,  274,  274,  274, 1241,  279,
997
      280, 1299,  280,  280,  280,  280,  280,  280,  280,  280,
998
     1241, 1285, 1297, 1297, 1300, 1300, 1300, 1301, 1301, 1302,
999
1000
     1302, 1303, 1303, 1304, 1305, 1301, 1301, 1301,  308,  308,
1001
      308,  308, 1241,  313,  314,  314,  314,  314,  314,  314,
1002
      314,  314,  314, 1301, 1301, 1306, 1301, 1306, 1301, 1301,
1003
     1307, 1307, 1308, 1241, 1241, 1309, 1309, 1309, 1309,  339,
1004
     1310, 1241, 1311, 1241, 1309, 1241,  346,  347,  347,  347,
1005
      347,  347,  347,  347,  347,  347,  347,  347,  347,  347,
1006
      347,  347,  347,  347,  347,  347,  347,  347,  347,  347,
1007
     1312, 1312, 1309, 1309, 1241, 1241, 1241, 1241, 1241, 1307,
1008
     1309, 1309,  339, 1309, 1309, 1309, 1241, 1241, 1313, 1314,
1009
     1314, 1309, 1241, 1241, 1241, 1241, 1297,  397, 1241,  399,
1010
1011
      400,  400,  400,  400,  400,  400,  400,  400,  400,  400,
1012
      400,  400,  400,  400, 1315, 1297, 1297, 1241, 1301, 1301,
1013
     1301,  308,  422,  313,  314,  314,  314,  314,  314,  314,
1014
      314,  314,  314,  314,  314,  314,  314,  314,  314, 1306,
1015
     1306, 1301, 1301, 1241, 1308, 1308, 1309, 1309, 1309, 1309,
1016
     1309, 1309, 1316, 1317, 1317,  455, 1318, 1317, 1319, 1320,
1017
     1241,  461,  461, 1241,  461, 1309, 1241,  467,  467,  467,
1018
      467,  467,  467,  467,  467,  467,  467,  467,  467,  467,
1019
      467,  467,  467,  467,  467,  467,  467,  467,  467,  467,
1020
     1309, 1309, 1309, 1309, 1241, 1241, 1241, 1241, 1241, 1241,
1021
1022
     1321, 1309, 1309, 1309, 1322, 1309, 1241, 1241, 1241, 1241,
1023
     1241, 1297, 1241,  513,  514,  514, 1323,  514,  514,  514,
1024
      514,  514,  514,  514,  514,  514,  514, 1297, 1297, 1297,
1025
     1297, 1301, 1301, 1301, 1301, 1301, 1301,  314,  314,  314,
1026
      314,  314,  314,  314,  314,  314,  314,  314,  314,  314,
1027
      314,  314, 1301, 1301, 1301, 1301, 1309, 1309, 1309, 1241,
1028
     1324, 1324,  562, 1324, 1325, 1326, 1327, 1241, 1328,  464,
1029
     1328, 1241,  572, 1328, 1241,  575,  575, 1241,  575, 1309,
1030
      467,  467, 1241, 1241,  467,  467,  467,  467,  467, 1241,
1031
     1241,  467,  467,  467,  467,  467,  467,  467,  467,  467,
1032
1033
      467,  467,  467,  467, 1309, 1309, 1309, 1309, 1309, 1241,
1034
     1241, 1241, 1321, 1309, 1309, 1309, 1241, 1241, 1241,  512,
1035
      513,  514,  514, 1323, 1323,  514,  514,  514,  514,  514,
1036
      514,  514,  514,  514, 1297, 1297, 1297, 1297, 1297, 1301,
1037
     1301, 1301,  314,  314,  314,  314,  314,  314,  314,  314,
1038
      314,  314,  314,  314,  314, 1301, 1301, 1301, 1301, 1301,
1039
     1309, 1309, 1309, 1309, 1309, 1329, 1329, 1330, 1331, 1241,
1040
     1241, 1241, 1241, 1241, 1332, 1332, 1333,  578, 1333, 1241,
1041
      680, 1333, 1241,  683,  683, 1241,  683, 1309,  467,  467,
1042
      467,  467,  467,  467,  467,  467,  467,  467,  467,  467,
1043
1044
      467,  467,  467,  467,  467,  467,  467, 1309, 1309, 1309,
1045
     1309, 1309, 1241, 1241, 1321, 1309, 1309, 1309, 1241, 1241,
1046
     1241, 1241, 1241,  514,  514, 1323, 1323,  514,  514,  514,
1047
     1323,  514,  514,  514,  514,  514, 1297, 1297, 1297, 1297,
1048
     1297, 1301, 1301, 1301, 1301, 1301,  314,  314,  314,  314,
1049
      314,  314,  314,  314,  314,  314,  314,  314,  314, 1301,
1050
     1301, 1301, 1301, 1301, 1309, 1309, 1309, 1241, 1334, 1335,
1051
      670, 1241,  772,  772, 1241,  772, 1241, 1241, 1241, 1241,
1052
     1241, 1241, 1336, 1336, 1337,  686, 1337, 1241,  788, 1337,
1053
     1241,  791,  791, 1241,  791, 1309, 1241, 1241, 1241,  797,
1054
1055
      797,  797,  797, 1241, 1241,  797,  797,  797,  797, 1241,
1056
     1241,  797,  797,  797,  797, 1241, 1241, 1241, 1241,  797,
1057
     1309, 1241, 1241, 1338, 1309, 1309, 1309, 1241, 1241, 1241,
1058
     1241, 1339, 1339,  831,  831, 1339, 1339,  831,  831, 1340,
1059
     1341, 1341, 1341, 1241,  844,  844,  844,  844,  844,  844,
1060
      844,  844, 1341, 1309, 1309, 1309, 1309, 1309, 1241, 1342,
1061
     1241, 1343,  775, 1343, 1343,  865, 1343, 1241,  868,  868,
1062
     1241,  868, 1241, 1241, 1241, 1241, 1344, 1344, 1345,  794,
1063
     1345, 1241,  882, 1345, 1241,  885,  885,  885, 1309, 1241,
1064
      890,  890,  890,  890,  890,  890,  890,  890,  890,  890,
1065
1066
      890,  890, 1309, 1241, 1241, 1346, 1309, 1309, 1309, 1241,
1067
     1241, 1241, 1241, 1241, 1241, 1347, 1347,  915,  915, 1347,
1068
     1347,  915,  915, 1348, 1349, 1349, 1349, 1349, 1349, 1241,
1069
      930,  930,  930,  930,  930,  930,  930,  930, 1349, 1309,
1070
     1309, 1309, 1309, 1241, 1241, 1241, 1241, 1350, 1350, 1351,
1071
      871, 1351, 1351,  953, 1351, 1241,  956,  956, 1241,  956,
1072
     1241, 1241, 1241, 1241, 1241, 1241, 1352, 1352, 1353, 1353,
1073
     1353,  971, 1353, 1309,  890,  890,  890,  890,  890, 1241,
1074
     1241,  890,  890,  890, 1241, 1241, 1241, 1241,  890, 1241,
1075
     1241, 1354, 1346, 1309, 1355, 1356, 1241, 1241, 1241, 1241,
1076
1077
      915, 1347, 1347,  915, 1347, 1347, 1349, 1349, 1349, 1349,
1078
      930,  930,  930,  930,  930,  930, 1309, 1309, 1309, 1309,
1079
     1309, 1309, 1241, 1241, 1241, 1241, 1241, 1241, 1357, 1357,
1080
     1358,  959, 1358, 1358, 1034, 1358, 1241, 1037, 1037, 1241,
1081
     1037, 1241, 1241, 1241, 1241, 1359, 1359, 1309,  890, 1241,
1082
     1241,  890, 1241, 1241,  890,  890,  890,  890, 1241, 1354,
1083
     1354, 1241, 1354, 1346, 1355, 1355, 1355, 1355, 1241, 1355,
1084
     1356, 1356, 1241, 1241, 1241, 1241, 1241, 1241, 1347,  915,
1085
     1347, 1347, 1349, 1349, 1349, 1349, 1349, 1349,  930,  930,
1086
      930,  930, 1309, 1309, 1309, 1241, 1241, 1241, 1241, 1360,
1087
1088
     1360, 1361, 1040, 1361, 1361, 1105, 1361, 1241, 1108, 1108,
1089
     1108, 1241, 1241, 1241, 1241, 1241, 1309,  890, 1241, 1241,
1090
      890,  890,  890, 1241, 1346, 1241, 1241, 1241, 1241, 1241,
1091
      915, 1347, 1347, 1349, 1349, 1349,  930,  930,  930, 1309,
1092
     1309, 1309, 1309, 1309, 1241, 1241, 1241, 1241, 1241, 1241,
1093
     1362, 1362, 1363, 1363, 1363, 1155, 1155,  890, 1241, 1241,
1094
     1241, 1241,  890, 1364, 1241, 1241, 1241, 1241, 1241, 1347,
1095
     1349, 1349, 1349, 1349, 1349,  930, 1309, 1309, 1309, 1241,
1096
     1241, 1241, 1241, 1365, 1365,  890, 1241, 1241, 1364, 1364,
1097
     1241, 1364, 1241, 1241, 1241, 1349, 1349, 1349, 1309, 1309,
1098
1099
     1309, 1309, 1309, 1241, 1241, 1241, 1241, 1241,  890, 1241,
1100
     1241, 1241, 1241, 1241, 1241, 1349, 1349, 1349, 1349, 1349,
1101
     1309, 1309, 1309,  890, 1241, 1241, 1241, 1349, 1349, 1349,
1102
     1309, 1309, 1309,  890, 1241, 1241, 1241, 1349, 1349, 1349,
1103
        0, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1104
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1105
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1106
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1107
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1108
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1109
1110
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1111
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1112
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1113
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1114
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1115
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1116
     1241, 1241, 1241, 1241, 1241
1117
    } ;
1118
1119
static const flex_int16_t yy_nxt[9611] =
1120
    {   0,
1121
       22,   23,   24,   22,   25,   23,   26,   27,   28,   22,
1122
       29,   30,   31,   22,   32,   33,   22,   22,   34,   35,
1123
       36,   37,   35,   35,   35,   35,   35,   35,   35,   38,
1124
       39,   40,   41,   42,   43,   44,   43,   45,   46,   47,
1125
       47,   48,   47,   49,   50,   51,   47,   52,   53,   54,
1126
       55,   47,   47,   47,   47,   47,   56,   57,   22,   58,
1127
       58,   58,   58,   58,   58,   22,   22,   22,   22,   22,
1128
       22,   22,   22,   59,   22,   22,   60,  157,  185,  156,
1129
       60,  157,  185,   61,   23,   78,  495,   79,   23,   80,
1130
      183,   81,   23,   78,  496,   79,   23,   80,   81,   81,
1131
1132
       85,   86,  201,   87,   85,   88,   81,   89,   90,  166,
1133
       62,   63,   81,   82,  185,   64,  202,  193,  185,  614,
1134
       81,   82,  194,   65,  228,  190,   66,   67,  228,  280,
1135
      167,   67,  103,   24,   68,   25,  103,  104,  105,   83,
1136
      283,   69,  156,  188,   70,  197,  185,   83,  103,   24,
1137
      185,   25,  103,  104,  105,   91,  189,  168,   22,   71,
1138
      198,   43,  179,  179,  179,  179,  179,  180,  199,   72,
1139
      161,   73,  332,   74,   47,  185,   47,  447,  191,  185,
1140
      166,   85,   86,   75,   87,   85,   88,  106,   89,   90,
1141
       23,   24,   40,   25,   23,  130,  131,  223,  225,   76,
1142
1143
       67,  265,  225,  106,   67,  172,  172,   68,  156,  185,
1144
      172,  172,  226,  185,   69,  245,  156,   70,  211,  245,
1145
       23,   24,   40,   25,   23,  130,  131,  212,  266,  221,
1146
      172,   22,   71,  156,   43,  299,   91,  248,  204,  293,
1147
      241,  248,   72,  211,   73,  132,   74,   47,  294,   47,
1148
      203,  204,  237,  241,  203,  173,   75,  178,  178,  178,
1149
      178,  178,  178,  178,  178,  178,  178,  213,  260,  253,
1150
      254,  213,   76,   23,   24,  132,   25,   23,   26,  155,
1151
       92,  177,  177,  177,  177,  177,  177,  177,  177,  177,
1152
      177,  188,  483,  484,  185,  252,  252,  280,  185,  156,
1153
1154
      284,  214,  215,  291,  189,  157,  216,  256,  204,  157,
1155
      241,  256,  259,  345,  217,  314,  259,  218,  258,  228,
1156
      220,  261,  262,  228,  263,  261,  316,  257,   93,  297,
1157
       94,   94,   94,   94,   94,   94,   94,   94,   94,   94,
1158
       94,   94,   94,   94,   94,   94,   94,   94,   23,   24,
1159
      292,   25,   23,   26,  227,   92,  166,  164,  164,  164,
1160
      164,  164,  164,  164,  164,  164,  164,  258,  277,  277,
1161
      277,  277,  277,  278,  185,  230,  230,  265,  204,  296,
1162
      230,  230,  276,  276,  276,  276,  276,  276,  276,  276,
1163
      276,  276,  311,  311,  311,  311,  311,  312,  203,  204,
1164
1165
      230,  241,  203,   93,  301,   94,   94,   94,   94,   94,
1166
       94,   94,   94,   94,   94,   94,   94,   94,   94,   94,
1167
       94,   94,   94,   23,   24,  231,   25,   23,   26,   96,
1168
       92,  314,  156,  161,  317,  332,   97,   98,   99, 1241,
1169
      342,  275,  275,  275,  275,  275,  275,  275,  275,  275,
1170
      275,  344,  100,  296,  166,  228,  305,  305,  291,  228,
1171
      156,  305,  305,  310,  310,  310,  310,  310,  310,  310,
1172
      310,  310,  310,  156,  156, 1241,  373,  299,  101,   23,
1173
       24,  305,   25,   23,   26,   96,   92,  329, 1211,  156,
1174
      156,  384,   97,   98,   99,  374,  330,  203,  204,  245,
1175
1176
      241,  203,  266,  245,  385,  292,  306,  298,  100,  309,
1177
      309,  309,  309,  309,  309,  309,  309,  309,  309,  164,
1178
      164,  164,  164,  164,  164,  164,  164,  164,  164,  203,
1179
      204,  861,  241,  203,  101,   40,   23,   24,   40,   25,
1180
       23,   26,   40,   40,   40,  107,   30,   31,   40,  108,
1181
       33,   40,   40,  109,  110,  111,  112,  110,  110,  110,
1182
      110,  110,  110,  110,   38,  113,   40,   40,  114,  115,
1183
      115,  115,  116,  117,  118,  118,  119,  118,  120,  121,
1184
      122,  118,  123,  118,  124,  118,  118,  118,  118,  118,
1185
      118,   93,  125,   40,  126,  126,  126,  126,  126,  126,
1186
1187
      127,  127,  127,  127,  127,  127,  127,  127,  128,  127,
1188
      127,  133,   23,   24,  133,   25,   23,   26,   27,   40,
1189
      133,  134,   30,   31,  133,  135,   33,  133,  133,  136,
1190
      137,  138,  139,  137,  137,  137,  137,  137,  137,  137,
1191
       38,   39,   40,  133,  140,  141,  141,  141,  142,  143,
1192
      144,  144,  145,  144,  146,  147,  148,  144,  149,  144,
1193
      150,  144,  144,  144,  144,  144,  144,  151,  152,  133,
1194
      153,  153,  153,  153,  153,  153,  133,  133,  133,  133,
1195
      133,  133,  133,  133,  154,  133,  133,  161,  260,  162,
1196
      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
1197
1198
      155,  163,  896,  388,  164,  164,  164,  164,  164,  164,
1199
      164,  164,  164,  164,  174,  185,  175,  175,  175,  175,
1200
      175,  175,  175,  175,  175,  175,  176,  297, 1103,  156,
1201
      177,  177,  177,  177,  177,  177,  386,  176,  258,  204,
1202
      156,  155,  155,  155,  155,  155,  381,  383,  155,  155,
1203
      389,  393,  155,  156,  382,  393,  177,  177,  177,  177,
1204
      177,  177,  155,  156,  156,  155,  155,  155,  155,  392,
1205
      299,  155,  155,  442,  156,  155,  155,  296,  155,  155,
1206
      155,  184,  184,  184,  184,  184,  184,  184,  184,  184,
1207
      184,  176,  381,  299,  155,  184,  184,  184,  184,  184,
1208
1209
      184,  185,  185,  185,  185,  186,  185,  185,  185,  187,
1210
      185,  185,  185,  185,  185,  185,  185,  185,  156,  155,
1211
      185,  177,  177,  177,  177,  177,  177,  155,  155,  155,
1212
      155,  155,  155,  155,  155,  155,  155,  155,  185,  185,
1213
      185,  185,  185,  185,  185,  185,  185,  185, 1241,  161,
1214
     1165,  332,  185,  185,  185,  185,  185,  185,  444,  393,
1215
      332,  259,  185,  393,  334,  259,  185,  335,  335,  335,
1216
      335,  335,  335,  335,  335,  335,  335,  156,  155,  155,
1217
      155,  155,  155,  155,  203,  204,  156,  205,  206,  155,
1218
      155,  155,  295,  381,  155,  155,  295,  299,  155,  172,
1219
1220
      172,  494, 1241,  443,  172,  172,  340,  340,  340,  340,
1221
      340,  340,  155,  155,  155,  208,  258,  380, 1241,  208,
1222
      208,  208,  156,  209,  172,  208,  208,  466,  342,  208,
1223
      165,  165,  165,  165,  165,  582,  225,  165,  165,  460,
1224
      225,  165,  342,  208,  208,  208,  161,  296,  446,  173,
1225
      226, 1241,  156,  460,  502,  165,  165,  165,  340,  340,
1226
      340,  340,  340,  340,  340,  340,  340,  340,  156,  342,
1227
      210,  161, 1241,  162,  381,  169,  169,  169,  169,  169,
1228
      464,  156,  169,  169,  504,  163,  169,  342,  164,  164,
1229
      164,  164,  164,  164,  164,  164,  164,  164,  460,  266,
1230
1231
      169,  169,  169,  336,  337,  338,  336,  336,  336,  336,
1232
      336,  336,  336,  340,  340,  340,  340,  340,  340,  340,
1233
      340,  340,  340,  203,  204,  208,  241,  203,  155,  208,
1234
      415,  861,  207,  371,  213,  607,  219,  234,  213,  156,
1235
      156,  234,  234,  234,  161,  235,  332,  234,  234,  357,
1236
      358,  234,  505,  359,  506,  360,  361,  528,  529,  362,
1237
      530,  363,  364, 1103,  156,  234,  234,  234,  214,  215,
1238
      230,  230,  291,  216,  299,  230,  230,  292,  156,  234,
1239
      372,  217,  155,  166,  218, 1241,  233,  390,  161,  556,
1240
      446, 1241,  236,  240,  204,  230,  241,  240,  242,  389,
1241
1242
      243,  595,  585,  501, 1241,  242,  156,  243,  164,  164,
1243
      164,  164,  164,  164,  164,  164,  164,  164,  580,  292,
1244
      231,  243,  243,  357,  358, 1032,  444,  359,  446,  360,
1245
      361,  266, 1241,  362,  391,  363,  203,  204, 1241,  241,
1246
      203,  203,  204, 1241,  241,  203, 1241,  599,  243,  242,
1247
      161,  581,  162, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1248
     1241, 1241, 1241,  597,  249,  586, 1241, 1241, 1241, 1241,
1249
     1241, 1241, 1241, 1241, 1241, 1241, 1241,  267,  261,  262,
1250
      267,  263,  261,  604,  583,  251,  267,  267,  583,  251,
1251
      267,  251,  251,  267,  267,  208,  252,  172,  298,  251,
1252
1253
     1145,  172,  326,  440,  172,  491,  492,  269,  493,  267,
1254
      635,  172,  584,  636,  251,  394,  395,  396,  394,  394,
1255
      394,  394,  394,  394,  394,  172,  172,  398,  398,  398,
1256
      398,  398,  398,  270,  267,  267,  172, 1241,  185,  172,
1257
      156,  893,  172,  172, 1241,  172,  172,  172,  172,  172,
1258
      441,  593,  172,  172,  264,  264,  264,  264,  564,  564,
1259
      564,  264,  264, 1241,  602,  264,  269,  172,  172,  398,
1260
      398,  398,  398,  398,  398,  398,  398,  398,  398,  603,
1261
      264,  264,  398,  398,  398,  398,  398,  398,  398,  398,
1262
      398,  398,  272,  172,  172,  269,  156, 1241,  273,  269,
1263
1264
      274,  274,  274,  274,  274,  274,  274,  274,  274,  274,
1265
      176,  269,  689,  381,  275,  275,  275,  275,  275,  275,
1266
      269,  269,  269,  269,  269,  269,  269,  269,  269,  269,
1267
      269,  269,  269,  269,  269,  269,  269, 1241, 1176,  388,
1268
      275,  275,  275,  275,  275,  275,  269,  269,  269,  269,
1269
      269,  269,  269,  269,  269,  269,  269, 1241,  587,  269,
1270
      269,  269,  269,  269,  269,  269,  269,  269,  269, 1241,
1271
     1241, 1241, 1241,  269,  269,  269,  269,  269,  269,  592,
1272
      600,  267,  267,  267,  267,  267,  389,  605,  267,  267,
1273
      606,  594,  267,  423,  423,  423,  423,  423,  423,  269,
1274
1275
      269,  269,  269,  269,  269,  269,  267,  267,  267,  269,
1276
      279,  279,  279,  279,  279,  279,  279,  279,  279,  279,
1277
      176,  269,  156, 1241,  279,  279,  279,  279,  279,  279,
1278
      280,  280,  280,  280,  281,  280,  280,  280,  280,  280,
1279
      280,  280,  280,  280,  280,  280,  280,  601, 1170,  282,
1280
      275,  275,  275,  275,  275,  275,  269,  269,  269,  269,
1281
      269,  269,  269,  269,  269,  269,  269,  280,  280,  280,
1282
      280,  280,  280,  280,  280,  280,  280, 1241, 1241,  176,
1283
      156,  280,  280,  280,  280,  280,  280,  609,  406,  407,
1284
      596,  280,  408, 1241,  409,  410,  156, 1241,  411,  590,
1285
1286
      412,  553,  554,  590,  555,  698,  299,  269,  269,  269,
1287
      269,  269,  269,  307,  598,  308,  308,  308,  308,  308,
1288
      308,  308,  308,  308,  308,  176,  608,  591,  156,  309,
1289
      309,  309,  309,  309,  309,  616,  299, 1241,  711,  299,
1290
      298,  298,  298,  298,  298,  176,  660,  298,  298,  588,
1291
      156,  298,  299,  532,  589,  309,  309,  309,  309,  309,
1292
      309,  298,  156,  624,  298,  298,  298,  298,  625,  688,
1293
      298,  298,  156,  156,  298,  298,  342,  298,  298,  298,
1294
      313,  313,  313,  313,  313,  313,  313,  313,  313,  313,
1295
      176,  615,  299,  298,  313,  313,  313,  313,  313,  313,
1296
1297
      314,  314,  314,  314,  315,  314,  314,  314,  314,  314,
1298
      314,  314,  314,  314,  314,  314,  314,  299,  298,  314,
1299
      309,  309,  309,  309,  309,  309,  298,  298,  298,  298,
1300
      298,  298,  298,  298,  298,  298,  298,  314,  314,  314,
1301
      314,  314,  314,  314,  314,  314,  314, 1241,  935,  659,
1302
      314,  314,  314,  314,  314,  314,  314,  656,  431,  432,
1303
      657,  314,  433,  342,  434,  435,  305,  305,  436,  645,
1304
      437,  305,  305,  161,  646,  332, 1241,  298,  298,  298,
1305
      298,  298,  298,  203,  204,  299,  324,  325,  298,  298,
1306
      298,  305,  299,  298,  298, 1032,  701,  298,  419,  420,
1307
1308
      421,  419,  419,  419,  419,  419,  419,  419, 1241,  658,
1309
     1241,  298,  298,  298,  208, 1241,  306,  590,  208,  208,
1310
      208,  590,  327,  702,  208,  208,  693, 1241,  208,  300,
1311
      300,  300,  300,  300,  691,  299,  300,  300,  299,  613,
1312
      300,  697,  208,  208,  208,  591, 1241,  203,  204, 1241,
1313
      241,  203,  692, 1241,  300,  300,  300, 1241, 1241,  696,
1314
      302,  302,  302,  302,  302,  694, 1004,  302,  302,  328,
1315
      172,  302,  700,  155,  171,  155,  155,  171,  690,  280,
1316
      155,  155,  708,  709,  171,  302,  302,  302,  423,  423,
1317
      423,  423,  423,  423,  423,  423,  423,  423,  171,  171,
1318
1319
      155,  174,  299,  339,  339,  339,  339,  339,  339,  339,
1320
      339,  339,  339,  176,  156,  156,  951,  339,  339,  339,
1321
      339,  339,  339,  423,  423,  423,  423,  423,  423,  423,
1322
      423,  423,  423,  573,  573,  573,  573,  573,  574, 1241,
1323
      156,  568,  342,  339,  339,  339,  339,  339,  339,  155,
1324
     1241,  583,  155,  570,  156,  583, 1241,  705,  155,  155,
1325
      712,  695,  155,  155,  800,  155,  155,  155,  346,  346,
1326
      346,  346,  346,  346,  346,  346,  346,  346,  176,  584,
1327
     1138,  155,  346,  346,  346,  346,  346,  346,  185,  185,
1328
      185,  185,  185,  185,  185,  185,  185,  185,  185,  185,
1329
1330
      185,  185,  185,  185,  185,  156,  155,  185,  339,  339,
1331
      339,  339,  339,  339,  155,  155,  155,  155,  155,  155,
1332
      155,  155,  155,  155,  155,  185,  185,  185,  185,  185,
1333
      185,  185,  185,  185,  185, 1241, 1062,  763, 1063,  185,
1334
      185,  185,  185,  185,  185,  335,  335,  335,  335,  335,
1335
      335,  335,  335,  335,  335,  335,  335,  335,  335,  335,
1336
      335,  335,  335,  335,  335,  155,  155,  155,  155,  155,
1337
      155,  208,  299, 1241, 1241,  208,  208,  208, 1241,  209,
1338
      230,  208,  208, 1241,  230,  208,  447,  230,  448,  448,
1339
      448,  448,  448,  448,  230, 1241, 1241,  812, 1137,  208,
1340
1341
      208,  208, 1241,  710,  703,  704, 1241, 1241,  230,  230,
1342
      507, 1241,  508,  508,  508,  508,  508,  508,  508,  508,
1343
      508,  508,  156,  628,  699,  156,  210,  230,  718,  706,
1344
      155,  229,  155,  155,  229, 1241,  156,  155,  155, 1133,
1345
      507,  229,  509,  509,  509,  509,  509,  509,  509,  509,
1346
      509,  509,  622,  299,  761,  229,  229,  155,  234,  764,
1347
      760, 1241,  234,  234,  234, 1241,  235,  661,  234,  234,
1348
     1241,  507,  234,  510,  510,  510,  510,  510,  511,  508,
1349
      508,  508,  508, 1241,  342,  299,  234,  234,  234, 1241,
1350
      305,  854,  707,  299,  305,  570,  507,  305,  508,  508,
1351
1352
      508,  508,  508,  508,  305,  161,  156,  332,  623,  156,
1353
      156, 1241,  762,  236,  267,  342,  185,  267,  305,  305,
1354
      900,  716,  717,  267,  267, 1241,  460,  267,  797,  156,
1355
      267,  267,  557,  558,  559,  557,  557,  557,  557,  557,
1356
      557,  557,  742,  802,  269,  299,  267,  562,  562,  563,
1357
      564,  564,  564,  564,  564,  564,  564,  457,  572,  572,
1358
      572,  572,  572,  572,  572,  572,  572,  572,  156,  156,
1359
      270,  267,  267,  172,  796, 1241,  172,  342,  715,  172,
1360
      172,  299,  172,  172,  172,  172,  172, 1132,  570,  172,
1361
      172, 1241,  806,  571,  571,  571,  571,  571,  571,  571,
1362
1363
      571,  571,  571,  269,  172,  172,  617,  618,  619,  617,
1364
      617,  617,  617,  617,  617,  617,  507, 1241,  508,  508,
1365
      508,  508,  508,  508,  508,  508,  508,  508, 1241,  272,
1366
      172,  172,  273,  813,  397,  397,  397,  397,  397,  397,
1367
      397,  397,  397,  397,  176, 1241, 1131,  801,  397,  397,
1368
      397,  397,  397,  397,  507, 1241,  508,  508,  508,  508,
1369
      508,  508,  508,  508,  508,  508,  803,  808, 1224,  590,
1370
      568,  342,  809,  590,  397,  397,  397,  397,  397,  397,
1371
      269, 1241,  570,  185,  269,  399,  399,  399,  399,  399,
1372
      399,  399,  399,  399,  399,  176,  269,  591,  815,  399,
1373
1374
      399,  399,  399,  399,  399,  280,  280,  280,  280,  280,
1375
      280,  280,  280,  280,  280,  280,  280,  280,  280,  280,
1376
      280,  280,  891,  185,  282,  397,  397,  397,  397,  397,
1377
      397,  269,  269,  269,  269,  269,  269,  269,  269,  269,
1378
      269,  269,  280,  280,  280,  280,  280,  280,  280,  280,
1379
      280,  280, 1241,  568,  342, 1241,  280,  280,  280,  280,
1380
      280,  280, 1241, 1241,  897,  678, 1241,  185, 1241, 1241,
1381
      156,  814, 1241, 1241,  807, 1241, 1073, 1241,  342, 1241,
1382
     1241,  821,  269,  269,  269,  269,  269,  269,  305,  678,
1383
     1241,  298,  304,  298,  298,  304, 1241, 1241,  298,  298,
1384
1385
      629,  820,  304, 1241,  626, 1241, 1241,  836,  849, 1241,
1386
     1241,  627,  837,  850,  156,  630,  304,  304,  298,  307,
1387
     1073,  422,  422,  422,  422,  422,  422,  422,  422,  422,
1388
      422,  176,  826, 1241, 1241,  422,  422,  422,  422,  422,
1389
      422,  156,  899,  583,  590, 1241, 1241,  583,  590, 1241,
1390
     1241,  185,  825,  631,  185,  632,  895,  156,  299,  894,
1391
      185,  422,  422,  422,  422,  422,  422,  298,  827,  185,
1392
      298,  584,  591, 1241, 1241,  156,  298,  298,  314, 1013,
1393
      298,  298,  889,  298,  298,  298,  424,  424,  424,  424,
1394
      424,  424,  424,  424,  424,  424,  176,  633,  724,  298,
1395
1396
      424,  424,  424,  424,  424,  424,  314,  314,  314,  314,
1397
      314,  314,  314,  314,  314,  314,  314,  314,  314,  314,
1398
      314,  314,  314,  299,  298,  314,  422,  422,  422,  422,
1399
      422,  422,  298,  298,  298,  298,  298,  298,  298,  298,
1400
      298,  298,  298,  314,  314,  314,  314,  314,  314,  314,
1401
      314,  314,  314, 1241,  299,  342,  976,  314,  314,  314,
1402
      314,  314,  314, 1241,  185,  853,  570, 1241,  640,  641,
1403
      642,  640,  640,  640,  640,  640,  640,  640,  798,  161,
1404
      156,  332,  798,  298,  298,  298,  298,  298,  298,  208,
1405
      342, 1241,  919,  208,  208,  208,  280,  327,  903,  208,
1406
1407
      208,  678,  918,  208,  280,  299,  799,  634,  342,  568,
1408
      342,  676,  676,  676,  676,  676,  676,  208,  208,  208,
1409
      532,  570,  533,  533,  533,  533,  533,  533,  667,  667,
1410
      667,  667,  667,  667,  667,  667,  667,  667,  457,  824,
1411
      185,  156,  951,  898,  328,  447,  922,  448,  448,  448,
1412
      448,  448,  448,  448,  448,  448,  448,  280,  908,  299,
1413
      672,  673,  674,  672,  672,  672,  672,  672,  672,  672,
1414
      579,  579,  579,  579,  579,  579,  579,  579,  579,  579,
1415
      156,  280,  863,  907,  156,  447,  923,  449,  449,  449,
1416
      449,  449,  449,  449,  449,  449,  449,  680,  680,  680,
1417
1418
      680,  680,  680,  680,  680,  680,  680,  681,  681,  681,
1419
      681,  681,  682,  765,  766,  767,  765,  765,  765,  765,
1420
      765,  765,  765, 1023,  156,  447,  934,  450,  450,  450,
1421
      450,  450,  451,  448,  448,  448,  448, 1241,  314,  679,
1422
      679,  679,  679,  679,  679,  679,  679,  679,  679,  719,
1423
      156,  720,  720,  720,  720,  720,  720,  720,  720,  720,
1424
      720,  161,  925,  332,  156,  452,  452,  452,  452,  452,
1425
      452,  452,  452,  452,  452,  176,  568,  342, 1089,  452,
1426
      452,  452,  452,  452,  452,  719,  861,  721,  721,  721,
1427
      721,  721,  721,  721,  721,  721,  721,  892,  863,  314,
1428
1429
      299, 1082,  156,  931,  185,  452,  452,  452,  452,  452,
1430
      452,  454,  455,  456,  456,  456,  456,  456,  456,  456,
1431
      456,  457,  906, 1081,  982,  458,  458,  458,  458,  458,
1432
      458,  719,  156,  722,  722,  722,  722,  722,  723,  720,
1433
      720,  720,  720, 1241,  314,  185, 1079, 1241,  936,  989,
1434
      909,  458,  458,  458,  458,  458,  458,  342,  461,  462,
1435
      463,  461,  461,  461,  461,  461,  461,  461,  464,  156,
1436
      185, 1241,  465,  465,  465,  465,  465,  465, 1241,  730,
1437
     1241, 1241, 1241, 1241, 1241, 1241,  777, 1241,  778,  778,
1438
      778,  778,  778,  778,  778,  778,  778,  778,  465,  465,
1439
1440
      465,  465,  465,  465,  155,  314, 1241,  155, 1241, 1241,
1441
      938, 1241,  725,  155,  155,  728,  734,  155,  155,  156,
1442
      155,  155,  155,  467,  467,  467,  467,  467,  467,  467,
1443
      467,  467,  467,  176,  736, 1117,  155,  467,  467,  467,
1444
      467,  467,  467,  185,  185,  185,  185,  185,  185,  185,
1445
      185,  185,  185,  185,  185,  185,  185,  185,  185,  185,
1446
      156,  155,  185,  452,  452,  452,  452,  452,  452,  155,
1447
      155,  155,  155,  155,  155,  155,  155,  155,  155,  155,
1448
      185,  185,  185,  185,  185,  185,  185,  185,  185,  185,
1449
     1241,  568,  342, 1059,  185,  185,  185,  185,  185,  185,
1450
1451
     1241, 1241,  314,  678, 1241, 1241, 1241, 1241,  933, 1015,
1452
     1241, 1241,  314, 1241, 1241,  804,  937, 1241,  863,  804,
1453
      155,  155,  155,  155,  155,  155,  208,  314, 1241, 1241,
1454
      208,  208,  208,  299,  209, 1241,  208,  208, 1241,  342,
1455
      208, 1241,  729,  805,  978,  735,  342,  568,  342,  732,
1456
      678,  939,  185,  185,  208,  208,  208,  786,  731,  786,
1457
      661,  733,  662,  662,  662,  662,  662,  662,  777,  983,
1458
      779,  779,  779,  779,  779,  779,  779,  779,  779,  779,
1459
      185,  210,  208, 1241,  342,  156,  208,  208,  208,  208,
1460
      371,  974,  208,  208, 1080,  786,  208,  280,  777,  156,
1461
1462
      780,  780,  780,  780,  780,  781,  778,  778,  778,  778,
1463
      208,  208,  208,  687,  687,  687,  687,  687,  687,  687,
1464
      687,  687,  687,  568,  342,  784,  784,  784,  784,  784,
1465
      784,  961,  979,  568,  342,  678,  810,  210,  234,  185,
1466
      810,  977,  234,  234,  234,  786,  235,  185,  234,  234,
1467
     1014, 1017,  234,  788,  788,  788,  788,  788,  788,  788,
1468
      788,  788,  788,  314,  811,  342,  234,  234,  234,  789,
1469
      789,  789,  789,  789,  790, 1241,  786,  787,  787,  787,
1470
      787,  787,  787,  787,  787,  787,  787,  816,  818,  984,
1471
      156,  816,  818,  236,  234, 1241,  342,  185,  234,  234,
1472
1473
      234,  234,  390,  156,  234,  234,  861,  719,  234,  720,
1474
      720,  720,  720,  720,  720,  817,  819,  161,  863,  332,
1475
      994,  863,  234,  234,  234,  828,  829,  830,  828,  828,
1476
      828,  828,  828,  828,  828,  719,  861,  720,  720,  720,
1477
      720,  720,  720,  720,  720,  720,  720,  771,  951,  236,
1478
      512,  512,  512,  512,  512,  512,  512,  512,  512,  512,
1479
      176,  314, 1091, 1234,  512,  512,  512,  512,  512,  512,
1480
      719, 1241,  720,  720,  720,  720,  720,  720,  720,  720,
1481
      720,  720, 1064,  951,  185,  798,  568,  342,  342,  798,
1482
      512,  512,  512,  512,  512,  512,  269, 1209,  880,  880,
1483
1484
      269,  513,  513,  513,  513,  513,  513,  513,  513,  513,
1485
      513,  176,  269,  799,  185,  513,  513,  513,  513,  513,
1486
      513,  280,  280,  280,  280,  280,  280,  280,  280,  280,
1487
      280,  280,  280,  280,  280,  280,  280,  280,  568,  342,
1488
      282,  512,  512,  512,  512,  512,  512,  269,  269,  269,
1489
      269,  269,  269,  269,  269,  269,  269,  269,  280,  280,
1490
      280,  280,  280,  280,  280,  280,  280,  280, 1241, 1124,
1491
      299, 1063,  280,  280,  280,  280,  280,  280,  776,  776,
1492
      776,  776,  776,  776,  776,  776,  776,  776, 1241,  804,
1493
     1241, 1241, 1241,  804, 1241, 1241, 1052, 1016,  269,  269,
1494
1495
      269,  269,  269,  269,  532,  185,  533,  533,  533,  533,
1496
      533,  533,  533,  533,  533,  533, 1241,  805, 1241, 1241,
1497
      156, 1012, 1061, 1062,  831, 1063, 1061, 1017,  810, 1241,
1498
     1241, 1048,  810, 1241, 1241,  834,  816,  818,  835, 1090,
1499
      816,  818,  314,  299,  532, 1006,  534,  534,  534,  534,
1500
      534,  534,  534,  534,  534,  534,  811, 1241, 1241, 1241,
1501
      342, 1055, 1005, 1057,  817,  819,  156, 1003,  798,  185,
1502
      185,  880,  798,  742,  839,  743,  743,  743,  743,  743,
1503
      743,  838, 1092,  299,  532,  314,  535,  535,  535,  535,
1504
      535,  536,  533,  533,  533,  533,  799,  314, 1139,  841,
1505
1506
      842,  843,  841,  841,  841,  841,  841,  841,  841,  804,
1507
      810,  816,  299,  804,  810,  816, 1002, 1121,  818, 1191,
1508
      910, 1192,  818,  299,  298,  185,  537,  537,  537,  537,
1509
      537,  537,  537,  537,  537,  537,  299,  805,  811,  817,
1510
      537,  537,  537,  537,  537,  537,  819,  865,  865,  865,
1511
      865,  865,  865,  865,  865,  865,  865,  866,  866,  866,
1512
      866,  866,  867, 1186,  156,  991,  537,  537,  537,  537,
1513
      537,  537,  538,  538,  538,  538,  538,  538,  538,  538,
1514
      538,  538, 1049,  185,  990,  156,  538,  538,  538,  538,
1515
      538,  538, 1241,  185,  864,  864,  864,  864,  864,  864,
1516
1517
      864,  864,  864,  864,  777, 1083,  778,  778,  778,  778,
1518
      778,  778,  537,  537,  537,  537,  537,  537,  208,  568,
1519
      342,  185,  208,  208,  208, 1210,  327, 1192,  208,  208,
1520
      771,  880,  208,  873,  874,  875,  873,  873,  873,  873,
1521
      873,  873,  873,  566,  299,  932,  208,  208,  208,  777,
1522
      861,  778,  778,  778,  778,  778,  778,  778,  778,  778,
1523
      778,  777,  951,  778,  778,  778,  778,  778,  778,  778,
1524
      778,  778,  778,  328,  208, 1056, 1058, 1208,  208,  208,
1525
      208,  208,  440, 1208,  208,  208,  185,  185,  208,  795,
1526
      795,  795,  795,  795,  795,  795,  795,  795,  795,  924,
1527
1528
      921,  861,  208,  208,  208,  568,  342,  878,  878,  878,
1529
      878,  878,  878, 1032,  920,  917, 1241,  786,  882,  882,
1530
      882,  882,  882,  882,  882,  882,  882,  882, 1032,  328,
1531
      447,  916,  448,  448,  448,  448,  448,  448,  448,  448,
1532
      448,  448,  883,  883,  883,  883,  883,  884, 1241,  905,
1533
      881,  881,  881,  881,  881,  881,  881,  881,  881,  881,
1534
      798,  804,  810,  816,  798,  804,  810,  816, 1083,  156,
1535
      447,  995,  448,  448,  448,  448,  448,  448,  448,  448,
1536
      448,  448,  954,  954,  954,  954,  954,  955,  799,  805,
1537
      811,  817,  904,  185,  995,  818,  995,  995, 1118,  818,
1538
1539
      972,  972,  972,  972,  972,  973,  902,  299,  185,  156,
1540
      568,  342,  569,  569,  569,  569,  569,  569,  569,  569,
1541
      569,  569,  570,  819,  901,  777,  571,  571,  571,  571,
1542
      571,  571,  910,  911,  911,  911,  911,  911,  911,  911,
1543
      911,  911,  911,  980, 1123,  992,  161,  980,  332,  992,
1544
      771,  185,  571,  571,  571,  571,  571,  571,  342,  575,
1545
      576,  577,  575,  575,  575,  575,  575,  575,  575,  578,
1546
      995,  981,  566,  579,  579,  579,  579,  579,  579,  910,
1547
      912,  912,  912,  912,  912,  912,  912,  912,  912,  912,
1548
      457,  299,  280,  995,  299,  995,  996, 1140,  342,  579,
1549
1550
      579,  579,  579,  579,  579,  155,  993,  980,  155,  880,
1551
      299,  980,  299,  852,  155,  155,  851,  848,  155,  155,
1552
      156,  155,  155,  155,  185,  185,  185,  185,  185,  185,
1553
      185,  185,  185,  185,  176,  981,  156,  155,  185,  185,
1554
      185,  185,  185,  185,  185,  185,  185,  185,  185,  185,
1555
      185,  185,  185,  185,  185,  185,  185,  185,  185,  185,
1556
      185,  156,  155,  185,  155,  155,  155,  155,  155,  155,
1557
      155,  155,  155,  155,  155,  155,  155,  155,  155,  155,
1558
      155,  620,  620,  620,  620,  620,  620,  620,  620,  620,
1559
      620,  176,  250,  250,  250,  620,  620,  620,  620,  620,
1560
1561
      620,  910,  913,  913,  913,  913,  913,  914,  911,  911,
1562
      911,  911,  910,  911,  911,  911,  911,  911,  911,  847,
1563
     1122,  620,  620,  620,  620,  620,  620,  269,  185,  846,
1564
     1171,  269,  621,  621,  621,  621,  621,  621,  621,  621,
1565
      621,  621,  176,  269,  845,  844,  621,  621,  621,  621,
1566
      621,  621,  280,  280,  280,  280,  280,  280,  280,  280,
1567
      280,  280,  280,  280,  280,  280,  280,  280,  280,  299,
1568
      840,  282,  620,  620,  620,  620,  620,  620,  269,  269,
1569
      269,  269,  269,  269,  269,  269,  269,  269,  269,  583,
1570
     1199, 1216,  861,  583,  940,  941,  942,  943,  940,  940,
1571
1572
      940,  940,  940,  940, 1032,  833,  861,  280,  280,  280,
1573
      280,  280,  280,  280,  280,  280,  280,  584, 1103, 1163,
1574
      832,  280,  280,  280,  280,  280,  280,  185,  719,  156,
1575
      299,  156,  854,  855,  855,  855,  855,  855,  855, 1035,
1576
     1035, 1035, 1035, 1035, 1036,  823,  822,  269,  269,  269,
1577
      269,  269,  269,  532,  156,  533,  533,  533,  533,  533,
1578
      533,  533,  533,  533,  533, 1061, 1062,  156, 1063, 1061,
1579
      156,  945,  946,  947,  945,  945,  945,  945,  945,  945,
1580
      945,  872,  872,  872,  872,  872,  872,  872,  872,  872,
1581
      872,  156,  299,  532, 1241,  533,  533,  533,  533,  533,
1582
1583
      533,  533,  533,  533,  533,  861, 1103,  949,  949,  949,
1584
      949,  949,  949,  250,  250,  250, 1158,  863,  953,  953,
1585
      953,  953,  953,  953,  953,  953,  953,  953,  185,  156,
1586
      985, 1241,  299,  661,  985,  662,  662,  662,  662,  662,
1587
      662,  662,  662,  662,  662, 1241,  771,  952,  952,  952,
1588
      952,  952,  952,  952,  952,  952,  952,  961,  986,  962,
1589
      962,  962,  962,  962,  962,  962,  962,  962,  962,  566,
1590
      987,  457,  156,  661,  987,  663,  663,  663,  663,  663,
1591
      663,  663,  663,  663,  663,  961,  457,  963,  963,  963,
1592
      963,  963,  963,  963,  963,  963,  963,  961,  988,  964,
1593
1594
      964,  964,  964,  964,  965,  962,  962,  962,  962,  759,
1595
      758,  757,  156,  661,  756,  664,  664,  664,  664,  664,
1596
      665,  662,  662,  662,  662,  888,  888,  888,  888,  888,
1597
      888,  888,  888,  888,  888,  568,  342,  968,  968,  968,
1598
      968,  968,  968,  755,  161,  754,  332,  880, 1184, 1184,
1599
     1184, 1184,  156,  568,  342,  676,  676,  676,  676,  676,
1600
      676,  676,  676,  676,  676,  570,  753,  752,  751,  675,
1601
      675,  675,  675,  675,  675,  971,  971,  971,  971,  971,
1602
      971,  971,  971,  971,  971,  997,  998,  999, 1000,  997,
1603
      997,  997,  997,  997,  997,  675,  675,  675,  675,  675,
1604
1605
      675,  568,  342,  677,  677,  677,  677,  677,  677,  677,
1606
      677,  677,  677,  678, 1125,  750,  749,  679,  679,  679,
1607
      679,  679,  679, 1241,  748,  970,  970,  970,  970,  970,
1608
      970,  970,  970,  970,  970,  925,  926,  926,  926,  926,
1609
      926,  926,  747,  679,  679,  679,  679,  679,  679,  342,
1610
      683,  684,  685,  683,  683,  683,  683,  683,  683,  683,
1611
      686,  741,  740,  739,  687,  687,  687,  687,  687,  687,
1612
      738,  737,  961,  299,  962,  962,  962,  962,  962,  962,
1613
      980,  727, 1164,  161,  980,  332, 1164,  726, 1241, 1241,
1614
      687,  687,  687,  687,  687,  687,  742,  495,  743,  743,
1615
1616
      743,  743,  743,  743,  743,  743,  743,  743,  981,  910,
1617
      911,  911,  911,  911,  911,  911,  911,  911,  911,  911,
1618
      985,  714,  713, 1023,  985, 1024, 1024, 1024, 1024, 1024,
1619
     1024, 1024, 1024, 1024, 1024,  299,  742,  185,  744,  744,
1620
      744,  744,  744,  744,  744,  744,  744,  744,  986,  910,
1621
      911,  911,  911,  911,  911,  911,  911,  911,  911,  911,
1622
      987,  985,  987, 1241,  987,  985,  987,  568,  342, 1047,
1623
     1047, 1047, 1047, 1047, 1047,  299,  742,  185,  745,  745,
1624
      745,  745,  745,  746,  743,  743,  743,  743,  988,  986,
1625
      988, 1007, 1008, 1009, 1010, 1007, 1007, 1007, 1007, 1007,
1626
1627
     1007,  980,  985,  987,  670,  980,  985,  987,  181,  181,
1628
      280,  280,  566,  457,  181,  299,  661,  185,  662,  662,
1629
      662,  662,  662,  662,  662,  662,  662,  662,  299,  981,
1630
      986,  988, 1023,  666, 1025, 1025, 1025, 1025, 1025, 1025,
1631
     1025, 1025, 1025, 1025, 1106, 1106, 1106, 1106, 1106, 1107,
1632
      314,  314,  314,  457,  182,  156,  661,  861,  662,  662,
1633
      662,  662,  662,  662,  662,  662,  662,  662, 1023, 1103,
1634
     1026, 1026, 1026, 1026, 1026, 1027, 1024, 1024, 1024, 1024,
1635
      960,  960,  960,  960,  960,  960,  960,  960,  960,  960,
1636
     1190, 1191,  655, 1192, 1190,  156,  772,  773,  774,  772,
1637
1638
      772,  772,  772,  772,  772,  772,  775,  654,  653,  652,
1639
      776,  776,  776,  776,  776,  776,  861,  651, 1030, 1030,
1640
     1030, 1030, 1030, 1030,  181,  181,  650, 1053,  951, 1050,
1641
      181, 1053,  649, 1050,  648,  647,  776,  776,  776,  776,
1642
      776,  776,  568,  342,  784,  784,  784,  784,  784,  784,
1643
      784,  784,  784,  784,  678, 1054,  644, 1051,  783,  783,
1644
      783,  783,  783,  783, 1034, 1034, 1034, 1034, 1034, 1034,
1645
     1034, 1034, 1034, 1034, 1042, 1043, 1044, 1042, 1042, 1042,
1646
     1042, 1042, 1042, 1042,  783,  783,  783,  783,  783,  783,
1647
      568,  342,  785,  785,  785,  785,  785,  785,  785,  785,
1648
1649
      785,  785,  786,  643,  176,  639,  787,  787,  787,  787,
1650
      787,  787, 1241,  638, 1033, 1033, 1033, 1033, 1033, 1033,
1651
     1033, 1033, 1033, 1033, 1050,  637, 1190, 1191, 1050, 1192,
1652
     1190,  507,  787,  787,  787,  787,  787,  787,  342,  791,
1653
      792,  793,  791,  791,  791,  791,  791,  791,  791,  794,
1654
      495,  612, 1051,  795,  795,  795,  795,  795,  795,  961,
1655
      495,  962,  962,  962,  962,  962,  962,  962,  962,  962,
1656
      962,  341,  341,  280,  611,  495,  610,  341, 1241,  795,
1657
      795,  795,  795,  795,  795,  742, 1241,  743,  743,  743,
1658
      743,  743,  743,  743,  743,  743,  743,  961,  457,  962,
1659
1660
      962,  962,  962,  962,  962,  962,  962,  962,  962,  566,
1661
     1053, 1119, 1050,  457, 1053, 1119, 1050, 1119,  182, 1050,
1662
      552, 1119, 1053, 1050,  299,  742, 1053,  743,  743,  743,
1663
      743,  743,  743,  743,  743,  743,  743, 1066, 1054, 1120,
1664
     1051, 1066, 1067, 1068, 1069, 1120,  551, 1051,  550, 1073,
1665
     1054, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074,
1666
     1074,  314,  549,  548,  299,  854,  855,  855,  855,  855,
1667
      855,  855,  855,  855,  855,  855,  185, 1066,  547,  185,
1668
      546, 1066, 1067, 1068, 1069, 1156, 1156, 1156, 1156, 1156,
1669
     1157, 1073, 1070, 1075, 1075, 1075, 1075, 1075, 1075, 1075,
1670
1671
     1075, 1075, 1075,  156,  854,  856,  856,  856,  856,  856,
1672
      856,  856,  856,  856,  856, 1073,  545, 1076, 1076, 1076,
1673
     1076, 1076, 1077, 1078, 1078, 1078, 1078, 1053,  453,  453,
1674
      544, 1053, 1072, 1017,  453, 1018, 1018, 1018, 1018, 1018,
1675
     1018,  543,  156,  854,  857,  857,  857,  857,  857,  858,
1676
      855,  855,  855,  855, 1073, 1054, 1078, 1078, 1078, 1074,
1677
     1074, 1074, 1074, 1074, 1074, 1074,  542, 1161,  541, 1159,
1678
      540, 1161,  156, 1159,  282,  282,  314,  282,  282,  282,
1679
      282,  156,  861,  539,  862,  862,  862,  862,  862,  862,
1680
      862,  862,  862,  862,  863, 1162,  307, 1160,  864,  864,
1681
1682
      864,  864,  864,  864, 1093, 1094, 1095, 1093, 1093, 1093,
1683
     1093, 1093, 1093, 1093, 1096, 1097, 1098, 1096, 1096, 1096,
1684
     1096, 1096, 1096, 1096,  864,  864,  864,  864,  864,  864,
1685
      868,  869,  870,  868,  868,  868,  868,  868,  868,  868,
1686
      871,  156,  531,  527,  872,  872,  872,  872,  872,  872,
1687
     1023,  526, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
1688
     1024, 1024, 1023,  525, 1024, 1024, 1024, 1024, 1024, 1024,
1689
      872,  872,  872,  872,  872,  872,  568,  342,  878,  878,
1690
      878,  878,  878,  878,  878,  878,  878,  878,  786,  524,
1691
      523,  522,  877,  877,  877,  877,  877,  877, 1023,  521,
1692
1693
     1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024, 1024,
1694
     1073,  520, 1074, 1074, 1074, 1074, 1074, 1074,  877,  877,
1695
      877,  877,  877,  877,  568,  342,  879,  879,  879,  879,
1696
      879,  879,  879,  879,  879,  879,  880,  519,  518,  517,
1697
      881,  881,  881,  881,  881,  881, 1041, 1041, 1041, 1041,
1698
     1041, 1041, 1041, 1041, 1041, 1041, 1105, 1105, 1105, 1105,
1699
     1105, 1105, 1105, 1105, 1105, 1105,  881,  881,  881,  881,
1700
      881,  881,  342,  885,  886,  887,  885,  885,  885,  885,
1701
      885,  885,  885,  516,  515,  514,  273,  888,  888,  888,
1702
      888,  888,  888,  861,  503, 1101, 1101, 1101, 1101, 1101,
1703
1704
     1101,  500,  499,  498,  497, 1032,  342, 1112, 1112, 1112,
1705
     1112, 1112, 1112,  888,  888,  888,  888,  888,  888,  155,
1706
     1241,  282,  155, 1065,  282,  490,  282,  489,  155,  155,
1707
     1065, 1065,  155,  155, 1065,  155,  155,  155,  185,  185,
1708
      185,  185,  185,  185,  185,  185,  185,  185, 1065, 1065,
1709
     1065,  155,  185,  185,  185,  185,  185,  185,  185,  185,
1710
      185,  185,  185,  185,  185,  185,  185,  890,  185,  185,
1711
      185,  185,  185,  185,  185,  156,  155,  185,  155,  155,
1712
      155,  155,  155,  155,  155,  155,  155,  155,  155,  155,
1713
      155,  155,  155,  155,  155,  269,  488,  487,  486,  269,
1714
1715
      280,  280,  280,  280,  280,  280,  280,  280,  280,  280,
1716
      485,  269,  482,  481,  280,  280,  280,  280,  280,  280,
1717
      280,  280,  280,  280,  280,  280,  280,  280,  915,  280,
1718
      280,  280,  280,  280,  280,  280,  280,  480,  479,  282,
1719
      269,  269,  269,  269,  269,  269,  269,  269,  269,  269,
1720
      269,  269,  269,  269,  269,  269,  269,  925,  926,  926,
1721
      926,  926,  926,  926,  926,  926,  926,  926, 1241,  478,
1722
     1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104, 1104,
1723
      342, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112,
1724
     1112,  477,  476,  475,  474,  299,  925,  927,  927,  927,
1725
1726
      927,  927,  927,  927,  927,  927,  927,  342, 1113, 1113,
1727
     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,  342, 1114,
1728
     1114, 1114, 1114, 1114, 1115, 1112, 1112, 1112, 1112, 1119,
1729
      473,  472,  471, 1119,  299,  925,  928,  928,  928,  928,
1730
      928,  929,  926,  926,  926,  926,  470, 1159, 1241,  469,
1731
      468, 1159, 1241, 1241, 1241, 1241, 1126, 1120,  182, 1127,
1732
     1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127, 1127,  174,
1733
      560,  560,  299,  299,  298, 1160,  560,  298,  439,  561,
1734
      561,  438,  430,  298,  298,  561,  185,  298,  298,  429,
1735
      298,  298,  298,  314,  314,  314,  314,  314,  314,  314,
1736
1737
      314,  314,  314, 1070,  185,  428,  298,  314,  314,  314,
1738
      314,  314,  314,  314,  314,  314,  314,  314,  314,  314,
1739
      314,  930,  314,  314,  314,  314,  314,  314,  314,  314,
1740
      299,  298,  314,  298,  298,  298,  298,  298,  298,  298,
1741
      298,  298,  298,  298,  298,  298,  298,  298,  298,  298,
1742
      854,  855,  855,  855,  855,  855,  855,  855,  855,  855,
1743
      855, 1066,  427, 1116, 1116, 1066, 1067, 1068, 1069, 1241,
1744
     1116,  426,  425, 1241, 1067, 1068, 1069, 1128, 1129, 1130,
1745
     1128, 1128, 1128, 1128, 1128, 1128, 1128,  298,  156,  854,
1746
      855,  855,  855,  855,  855,  855,  855,  855,  855,  855,
1747
1748
     1241, 1184,  418, 1184, 1241, 1241, 1241, 1069, 1241, 1184,
1749
      303,  301, 1241, 1241, 1241, 1241, 1070, 1204, 1204, 1204,
1750
     1204, 1204, 1204,  299, 1070,  296,  417,  156,  861,  416,
1751
      949,  949,  949,  949,  949,  949,  949,  949,  949,  949,
1752
      863,  861,  414,  950,  950,  950,  950,  950,  950,  950,
1753
      950,  950,  950,  951,  413, 1070,  405,  952,  952,  952,
1754
      952,  952,  952, 1072, 1073,  404, 1074, 1074, 1074, 1074,
1755
     1074, 1074, 1074, 1074, 1074, 1074, 1235, 1235, 1235, 1235,
1756
     1235, 1235,  403,  952,  952,  952,  952,  952,  952,  956,
1757
      957,  958,  956,  956,  956,  956,  956,  956,  956,  959,
1758
1759
      402,  401,  400,  960,  960,  960,  960,  960,  960, 1073,
1760
     1241, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074,
1761
     1074, 1119, 1161,  270,  262, 1119, 1161,  257,  258,  960,
1762
      960,  960,  960,  960,  960,  568,  342,  968,  968,  968,
1763
      968,  968,  968,  968,  968,  968,  968,  880,  252, 1120,
1764
     1162,  967,  967,  967,  967,  967,  967,  252, 1134, 1135,
1765
     1136, 1134, 1134, 1134, 1134, 1134, 1134, 1134,  246, 1083,
1766
      314, 1084, 1084, 1084, 1084, 1084, 1084,  967,  967,  967,
1767
      967,  967,  967,  568,  342,  969,  969,  969,  969,  969,
1768
      969,  969,  969,  969,  969,  299,  204,  239,  156,  970,
1769
1770
      970,  970,  970,  970,  970, 1161,  387, 1241,  299, 1161,
1771
     1071, 1159,  379,  565,  565, 1159,  378, 1071, 1071,  565,
1772
      377, 1071,  376,  375,  156,  970,  970,  970,  970,  970,
1773
      970,  155,  370, 1162,  155, 1071, 1071, 1071,  369, 1160,
1774
      155,  155,  368,  367,  155,  155,  366,  155,  155,  155,
1775
      185,  185,  185,  185,  185,  185,  185,  185,  185,  185,
1776
      280,  365,  185,  155,  185,  185,  185,  185,  185,  185,
1777
      185,  185,  185,  185,  185,  185,  185,  185,  185,  185,
1778
      185,  185,  185,  185,  185,  185,  185,  156,  155,  975,
1779
      155,  155,  155,  155,  155,  155,  155,  155,  155,  155,
1780
1781
      155,  155,  155,  155,  155,  155,  155,  269,  356,  355,
1782
      354,  269,  280,  280,  280,  280,  280,  280,  280,  280,
1783
      280,  280,  353,  269,  352,  351,  280,  280,  280,  280,
1784
      280,  280,  280,  280,  280,  280,  280,  280,  280,  280,
1785
      280,  280,  280, 1001,  280,  280,  280,  280,  280,  350,
1786
      349,  282,  269,  269,  269,  269,  269,  269,  269,  269,
1787
      269,  269,  269,  269,  269,  269,  269,  269,  269,  925,
1788
      926,  926,  926,  926,  926,  926,  926,  926,  926,  926,
1789
     1145,  348, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146,
1790
     1146, 1146, 1145,  347, 1147, 1147, 1147, 1147, 1147, 1147,
1791
1792
     1147, 1147, 1147, 1147,  182,  155,  182,  299,  925,  926,
1793
      926,  926,  926,  926,  926,  926,  926,  926,  926, 1145,
1794
      272, 1148, 1148, 1148, 1148, 1148, 1149, 1146, 1146, 1146,
1795
     1146, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111, 1111,
1796
     1111,  170,  168,  161,  159,  156,  299,  298, 1187, 1187,
1797
      298,  323, 1187, 1187,  322,  321,  298,  298,  320,  319,
1798
      298,  298,  318,  298,  298,  298,  314,  314,  314,  314,
1799
      314,  314,  314,  314,  314,  314, 1188, 1188,  314,  298,
1800
      314,  314,  314,  314,  314,  314,  314,  314,  314,  314,
1801
      314,  314,  314,  314,  314,  314,  314, 1011,  314,  314,
1802
1803
      314,  314,  314,  299,  298,  314,  298,  298,  298,  298,
1804
      298,  298,  298,  298,  298,  298,  298,  298,  298,  298,
1805
      298,  298,  298, 1017,  303, 1018, 1018, 1018, 1018, 1018,
1806
     1018, 1018, 1018, 1018, 1018,  861,  299, 1152, 1152, 1152,
1807
     1152, 1152, 1152,  296,  290,  289,  288, 1103, 1155, 1155,
1808
     1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155,  666,  666,
1809
      287,  286,  156, 1017,  666, 1019, 1019, 1019, 1019, 1019,
1810
     1019, 1019, 1019, 1019, 1019, 1241,  285, 1154, 1154, 1154,
1811
     1154, 1154, 1154, 1154, 1154, 1154, 1154,  342, 1112, 1112,
1812
     1112, 1112, 1112, 1112, 1112, 1112, 1112, 1112,  668,  668,
1813
1814
      280,  258,  156, 1017,  668, 1020, 1020, 1020, 1020, 1020,
1815
     1021, 1022, 1022, 1022, 1022,  342, 1112, 1112, 1112, 1112,
1816
     1112, 1112, 1112, 1112, 1112, 1112, 1127, 1127, 1127, 1127,
1817
     1127, 1127, 1127, 1127, 1127, 1127,  252,  246,  669,  669,
1818
      158,  239,  156, 1017,  669, 1022, 1022, 1022, 1018, 1018,
1819
     1018, 1018, 1018, 1018, 1018, 1127, 1127, 1127, 1127, 1127,
1820
     1127, 1127, 1127, 1127, 1127, 1165,  158, 1166, 1166, 1166,
1821
     1166, 1166, 1166, 1166, 1166, 1166, 1166,  197,  768,  768,
1822
      232,  194,  156,  861,  768, 1030, 1030, 1030, 1030, 1030,
1823
     1030, 1030, 1030, 1030, 1030,  951,  861,  185, 1031, 1031,
1824
1825
     1031, 1031, 1031, 1031, 1031, 1031, 1031, 1031, 1032,  224,
1826
      222,  200, 1033, 1033, 1033, 1033, 1033, 1033, 1165,  199,
1827
     1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167,
1828
     1145,  196, 1146, 1146, 1146, 1146, 1146, 1146, 1033, 1033,
1829
     1033, 1033, 1033, 1033, 1037, 1038, 1039, 1037, 1037, 1037,
1830
     1037, 1037, 1037, 1037, 1040,  195,  192,  182, 1041, 1041,
1831
     1041, 1041, 1041, 1041, 1165,  170, 1168, 1168, 1168, 1168,
1832
     1168, 1169, 1166, 1166, 1166, 1166, 1165,  159, 1166, 1166,
1833
     1166, 1166, 1166, 1166, 1041, 1041, 1041, 1041, 1041, 1041,
1834
      568,  342, 1047, 1047, 1047, 1047, 1047, 1047, 1047, 1047,
1835
1836
     1047, 1047, 1083,  158, 1084, 1084, 1084, 1084, 1084, 1084,
1837
     1084, 1084, 1084, 1084,  156, 1159, 1241, 1241, 1140, 1159,
1838
     1141, 1141, 1141, 1141, 1141, 1141, 1161, 1241, 1241, 1241,
1839
     1161, 1177, 1178, 1179, 1177, 1177, 1177, 1177, 1177, 1177,
1840
     1177,  299, 1083, 1160, 1085, 1085, 1085, 1085, 1085, 1085,
1841
     1085, 1085, 1085, 1085, 1162, 1241, 1211,  156, 1212, 1212,
1842
     1212, 1212, 1212, 1212,  314,  769,  769, 1241,  156, 1241,
1843
     1241,  769,  770,  770,  282,  314, 1241,  282,  770,  282,
1844
     1241,  299, 1083, 1241, 1086, 1086, 1086, 1086, 1086, 1087,
1845
     1088, 1088, 1088, 1088, 1180, 1181, 1182, 1180, 1180, 1180,
1846
1847
     1180, 1180, 1180, 1180, 1145, 1241, 1146, 1146, 1146, 1146,
1848
     1146, 1146, 1146, 1146, 1146, 1146, 1241, 1241, 1241, 1187,
1849
     1241,  299, 1083, 1187, 1088, 1088, 1088, 1084, 1084, 1084,
1850
     1084, 1084, 1084, 1084, 1145, 1241, 1146, 1146, 1146, 1146,
1851
     1146, 1146, 1146, 1146, 1146, 1146,  861, 1188, 1185, 1185,
1852
     1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1241, 1241,
1853
     1241,  299, 1017, 1241, 1018, 1018, 1018, 1018, 1018, 1018,
1854
     1018, 1018, 1018, 1018, 1241, 1241,  185, 1193, 1194, 1195,
1855
     1193, 1193, 1193, 1193, 1193, 1193, 1193, 1165, 1241, 1166,
1856
     1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 1241,
1857
1858
     1241,  156, 1017, 1241, 1018, 1018, 1018, 1018, 1018, 1018,
1859
     1018, 1018, 1018, 1018, 1165, 1241, 1166, 1166, 1166, 1166,
1860
     1166, 1166, 1166, 1166, 1166, 1166, 1241, 1241, 1241, 1241,
1861
     1241, 1196, 1197, 1198, 1196, 1196, 1196, 1196, 1196, 1196,
1862
     1196,  156,  861, 1241, 1101, 1101, 1101, 1101, 1101, 1101,
1863
     1101, 1101, 1101, 1101, 1032,  861, 1241, 1102, 1102, 1102,
1864
     1102, 1102, 1102, 1102, 1102, 1102, 1102, 1103,  299, 1241,
1865
     1241, 1104, 1104, 1104, 1104, 1104, 1104, 1171, 1241, 1172,
1866
     1172, 1172, 1172, 1172, 1172, 1187,  859,  859, 1241, 1187,
1867
      860,  860,  859, 1241, 1241, 1241,  860, 1104, 1104, 1104,
1868
1869
     1104, 1104, 1104, 1108, 1109, 1110, 1108, 1108, 1108, 1108,
1870
     1108, 1108, 1108, 1188, 1241, 1241,  299, 1111, 1111, 1111,
1871
     1111, 1111, 1111, 1204, 1204, 1204, 1204, 1204, 1204, 1204,
1872
     1204, 1204, 1204, 1241,  314,  944,  944, 1241, 1241, 1241,
1873
     1241,  944, 1241, 1111, 1111, 1111, 1111, 1111, 1111, 1083,
1874
     1241, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084,
1875
     1084, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205,
1876
     1205, 1206, 1206, 1206, 1206, 1206, 1207, 1204, 1204, 1204,
1877
     1204, 1028, 1028, 1241, 1099, 1099, 1241, 1028,  299, 1083,
1878
     1099, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084, 1084,
1879
1880
     1084, 1211, 1241, 1212, 1212, 1212, 1212, 1212, 1212, 1212,
1881
     1212, 1212, 1212, 1211, 1241, 1213, 1213, 1213, 1213, 1213,
1882
     1213, 1213, 1213, 1213, 1213, 1241, 1241, 1241,  299, 1140,
1883
     1241, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141,
1884
     1141, 1211, 1241, 1214, 1214, 1214, 1214, 1214, 1215, 1212,
1885
     1212, 1212, 1212, 1221, 1222, 1223, 1221, 1221, 1221, 1221,
1886
     1221, 1221, 1221, 1241, 1150, 1150, 1241, 1241,  156, 1140,
1887
     1150, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142,
1888
     1142, 1241, 1199, 1241, 1200, 1200, 1200, 1200, 1200, 1200,
1889
      156, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204,
1890
1891
     1204, 1183, 1183, 1241, 1241, 1241, 1241, 1183,  156, 1140,
1892
     1241, 1143, 1143, 1143, 1143, 1143, 1144, 1141, 1141, 1141,
1893
     1141,  156, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204,
1894
     1204, 1204, 1225, 1226, 1227, 1225, 1225, 1225, 1225, 1225,
1895
     1225, 1225, 1241, 1241, 1241, 1241, 1241, 1241,  156,  861,
1896
     1241, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
1897
     1152, 1103,  861, 1241, 1153, 1153, 1153, 1153, 1153, 1153,
1898
     1153, 1153, 1153, 1153, 1241, 1241, 1241, 1241, 1154, 1154,
1899
     1154, 1154, 1154, 1154, 1211, 1241, 1212, 1212, 1212, 1212,
1900
     1212, 1212, 1212, 1212, 1212, 1212, 1241, 1241, 1241, 1241,
1901
1902
     1241, 1241, 1241, 1241, 1154, 1154, 1154, 1154, 1154, 1154,
1903
     1171, 1241, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172,
1904
     1172, 1172, 1211, 1241, 1212, 1212, 1212, 1212, 1212, 1212,
1905
     1212, 1212, 1212, 1212, 1228, 1229, 1230, 1228, 1228, 1228,
1906
     1228, 1228, 1228, 1228, 1241, 1241, 1241, 1241, 1241,  299,
1907
     1171, 1241, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173,
1908
     1173, 1173, 1241, 1216, 1241, 1217, 1217, 1217, 1217, 1217,
1909
     1217,  299, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
1910
     1231, 1231, 1241, 1231, 1231, 1231, 1231, 1231, 1231,  299,
1911
     1171, 1241, 1174, 1174, 1174, 1174, 1174, 1175, 1172, 1172,
1912
1913
     1172, 1172,  299, 1241, 1241, 1241, 1241, 1241, 1241,  156,
1914
     1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221,
1915
      156, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  299,
1916
     1140, 1241, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141,
1917
     1141, 1141, 1241, 1241, 1241, 1241, 1241,  156, 1232, 1232,
1918
     1232, 1232, 1232, 1233, 1231, 1231, 1231, 1231, 1235, 1235,
1919
     1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1241,  156,
1920
     1140, 1241, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141,
1921
     1141, 1141, 1241, 1241, 1241,  156, 1225, 1225, 1225, 1225,
1922
     1225, 1225, 1225, 1225, 1225, 1225, 1236, 1236, 1236, 1236,
1923
1924
     1236, 1237, 1235, 1235, 1235, 1235, 1241, 1241, 1241,  156,
1925
     1171, 1241, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172,
1926
     1172, 1172, 1241, 1241, 1241, 1238, 1238, 1238, 1238, 1238,
1927
     1238, 1238, 1238, 1238, 1238, 1228, 1228, 1228, 1228, 1228,
1928
     1228, 1228, 1228, 1228, 1228, 1241, 1241, 1241, 1241,  299,
1929
     1171, 1241, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172,
1930
     1172, 1172,  299, 1241, 1241, 1238, 1238, 1238, 1238, 1238,
1931
     1238, 1241,  299, 1239, 1239, 1239, 1239, 1239, 1240, 1238,
1932
     1238, 1238, 1238, 1241, 1241, 1241, 1241, 1241, 1241,  299,
1933
     1199, 1241, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200,
1934
1935
     1200, 1200,  299, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1936
      299, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
1937
     1231, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  156,
1938
     1199, 1241, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201,
1939
     1201, 1201, 1241, 1241, 1241, 1241, 1241, 1241,  156, 1235,
1940
     1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1235, 1238,
1941
     1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238,  156,
1942
     1199, 1241, 1202, 1202, 1202, 1202, 1202, 1203, 1200, 1200,
1943
     1200, 1200, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1944
     1241, 1241, 1241, 1241, 1241, 1241,  299, 1241, 1241, 1241,
1945
1946
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  156,
1947
     1216, 1241, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217,
1948
     1217, 1217, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1949
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1950
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  299,
1951
     1216, 1241, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218,
1952
     1218, 1218, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1953
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1954
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  299,
1955
     1216, 1241, 1219, 1219, 1219, 1219, 1219, 1220, 1217, 1217,
1956
1957
     1217, 1217, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1958
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1959
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  299,
1960
     1199, 1241, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200,
1961
     1200, 1200, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1962
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1963
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  156,
1964
     1199, 1241, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200,
1965
     1200, 1200, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1966
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1967
1968
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  156,
1969
     1216, 1241, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217,
1970
     1217, 1217, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1971
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1972
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  299,
1973
     1216, 1241, 1217, 1217, 1217, 1217, 1217, 1217, 1217, 1217,
1974
     1217, 1217, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1975
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
1976
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,  299,
1977
       77,   77,   77,   77,   77,   77,   77,   77,   77,   77,
1978
1979
       77,   77,   77,   77,   77,   77,   77,   77,   77,   77,
1980
       77,   84,   84,   84,   84,   84,   84,   84,   84,   84,
1981
       84,   84,   84,   84,   84,   84,   84,   84,   84,   84,
1982
       84,   84,   40,   40,   40,   40,   40,   40,   40,   40,
1983
       40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
1984
       40,   40,   40,   95,   95,   95,   95,   95,   95,   95,
1985
       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
1986
       95,   95,   95,   95,  102,  102,  102,  102,  102,  102,
1987
      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
1988
      102,  102,  102,  102,  102,  129,  129,  129,  129,  129,
1989
1990
      129,  129,  129,  129,  129,  129,  129,  129,  129,  129,
1991
      129,  129,  129,  129,  129,  129,  155, 1241, 1241,  155,
1992
     1241, 1241, 1241,  155, 1241,  155, 1241,  155,  155,  155,
1993
     1241, 1241,  155,  155,  155,  155,  155,  160,  160,  160,
1994
      160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
1995
      160,  160,  160,  160,  160,  160,  160,  160,  165, 1241,
1996
     1241,  165, 1241, 1241,  165,  165, 1241,  165, 1241,  165,
1997
      165,  165,  165, 1241,  165,  165,  165,  165,  165,  169,
1998
     1241, 1241,  169, 1241, 1241, 1241,  169, 1241,  169, 1241,
1999
      169,  169,  169, 1241, 1241,  169,  169,  169,  169,  169,
2000
2001
      171, 1241, 1241,  171,  171,  171, 1241,  171,  171,  171,
2002
     1241,  171,  171,  171, 1241, 1241,  171,  171,  171,  171,
2003
      171,  207,  207, 1241,  207,  207,  207, 1241,  207,  207,
2004
      207,  207,  207,  207,  207,  207,  207,  207,  207,  207,
2005
      207,  207,  229, 1241, 1241,  229,  229,  229, 1241,  229,
2006
      229,  229, 1241,  229,  229,  229, 1241, 1241,  229,  229,
2007
      229,  229,  229,  233,  233, 1241,  233,  233,  233, 1241,
2008
      233,  233,  233,  233,  233,  233,  233,  233,  233,  233,
2009
      233,  233,  233,  233,  238, 1241, 1241,  238,  238,  238,
2010
     1241,  238,  238,  238, 1241,  238,  238,  238, 1241,  238,
2011
2012
      238, 1241,  238,  238,  238,  244,  244, 1241,  244,  244,
2013
      244, 1241, 1241,  244,  244,  244,  244,  244,  244,  244,
2014
      244,  244, 1241,  244,  244,  244,  247,  247,  247,  247,
2015
      247,  247,  247,  247,  247,  247,  247,  247,  247,  247,
2016
      247,  247,  247,  247,  247,  247,  247,  251, 1241, 1241,
2017
      251,  251, 1241, 1241,  251,  251,  251, 1241,  251,  251,
2018
      251,  251, 1241,  251,  251,  251,  251,  251,  255,  255,
2019
      255,  255,  255,  255,  255,  255,  255,  255,  255,  255,
2020
      255,  255,  255,  255,  255,  255,  255,  255,  255,  257,
2021
      257, 1241,  257,  257, 1241,  257,  257,  257,  257,  257,
2022
2023
      257,  257,  257,  257,  257,  257,  257,  257,  257,  257,
2024
      264, 1241, 1241,  264, 1241, 1241,  264,  264, 1241,  264,
2025
     1241,  264,  264,  264,  264, 1241,  264,  264,  264,  264,
2026
      264,  268, 1241, 1241,  268, 1241, 1241, 1241,  268, 1241,
2027
      268, 1241,  268,  268,  268, 1241,  268,  268,  268,  268,
2028
      268,  268,  271, 1241, 1241,  271,  271,  271, 1241,  271,
2029
      271,  271, 1241,  271,  271,  271, 1241,  271,  271,  271,
2030
      271,  271,  271,  208,  208, 1241,  208,  208,  208, 1241,
2031
      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
2032
      208,  208,  208,  208,  295, 1241, 1241, 1241,  295,  295,
2033
2034
      295,  295,  295,  295,  295,  295,  295,  295,  295,  295,
2035
      295,  295,  295,  295,  295,  298, 1241, 1241,  298, 1241,
2036
     1241, 1241,  298, 1241,  298, 1241,  298,  298,  298, 1241,
2037
     1241,  298,  298,  298,  298,  298,  300, 1241, 1241,  300,
2038
     1241, 1241,  300,  300, 1241,  300, 1241,  300,  300,  300,
2039
      300, 1241,  300,  300,  300,  300,  300,  302, 1241, 1241,
2040
      302, 1241, 1241, 1241,  302, 1241,  302, 1241,  302,  302,
2041
      302, 1241, 1241,  302,  302,  302,  302,  302,  304, 1241,
2042
     1241,  304,  304,  304, 1241,  304,  304,  304, 1241,  304,
2043
      304,  304, 1241, 1241,  304,  304,  304,  304,  304,  326,
2044
2045
      326, 1241,  326,  326,  326, 1241,  326,  326,  326,  326,
2046
      326,  326,  326,  326,  326,  326,  326,  326,  326,  326,
2047
      155, 1241, 1241,  155, 1241, 1241, 1241,  155, 1241,  155,
2048
     1241,  155,  155,  155, 1241, 1241,  155,  155,  155,  155,
2049
      155,  331,  331,  331,  331,  331,  331,  331,  331,  331,
2050
      331,  331,  331,  331,  331,  331,  331,  331,  331,  331,
2051
      331,  331,  333,  333, 1241,  333,  333,  333,  333,  333,
2052
      333,  333,  333,  333,  333,  333,  333,  333,  333,  333,
2053
      333,  333,  333,  165, 1241, 1241,  165, 1241, 1241, 1241,
2054
      165, 1241,  165, 1241,  165,  165,  165, 1241, 1241,  165,
2055
2056
      165,  165,  165,  165,  169, 1241, 1241,  169, 1241, 1241,
2057
     1241,  169, 1241,  169, 1241,  169,  169,  169, 1241, 1241,
2058
      169,  169,  169,  169,  169,  171, 1241, 1241,  171,  171,
2059
      171, 1241,  171,  171,  171, 1241,  171,  171,  171, 1241,
2060
     1241,  171,  171,  171,  171,  171,  172, 1241, 1241,  172,
2061
      172,  172, 1241,  172,  172,  172, 1241,  172,  172,  172,
2062
     1241, 1241,  172,  172,  172,  172,  172,  343,  343,  343,
2063
     1241, 1241, 1241, 1241,  343,  207,  207, 1241,  207,  207,
2064
      207, 1241,  207,  207,  207,  207,  207,  207,  207,  207,
2065
      207,  207,  207,  207,  207,  207,  208,  208, 1241,  208,
2066
2067
      208,  208, 1241,  208,  208,  208,  208,  208,  208,  208,
2068
      208,  208,  208,  208,  208,  208,  208,  229, 1241, 1241,
2069
      229,  229,  229, 1241,  229,  229,  229, 1241,  229,  229,
2070
      229, 1241, 1241,  229,  229,  229,  229,  229,  230, 1241,
2071
     1241,  230,  230,  230, 1241,  230,  230,  230, 1241,  230,
2072
      230,  230, 1241, 1241,  230,  230,  230,  230,  230,  233,
2073
      233, 1241,  233,  233,  233, 1241,  233,  233,  233,  233,
2074
      233,  233,  233,  233,  233,  233,  233,  233,  233,  233,
2075
      234,  234, 1241,  234,  234,  234, 1241,  234,  234,  234,
2076
      234,  234,  234,  234,  234,  234,  234,  234,  234,  234,
2077
2078
      234,  238, 1241, 1241,  238,  238,  238, 1241,  238,  238,
2079
      238, 1241,  238,  238,  238, 1241,  238,  238, 1241,  238,
2080
      238,  238,  244,  244, 1241,  244,  244,  244, 1241, 1241,
2081
      244,  244,  244,  244,  244,  244,  244,  244,  244, 1241,
2082
      244,  244,  244,  251, 1241, 1241,  251,  251, 1241, 1241,
2083
      251,  251,  251, 1241,  251,  251,  251,  251, 1241,  251,
2084
      251,  251,  251,  251,  257,  257, 1241,  257,  257, 1241,
2085
      257,  257,  257,  257,  257,  257,  257,  257,  257,  257,
2086
      257,  257,  257,  257,  257,  267, 1241, 1241,  267, 1241,
2087
     1241, 1241,  267, 1241,  267, 1241,  267,  267,  267, 1241,
2088
2089
     1241,  267,  267,  267,  267,  267,  268, 1241, 1241,  268,
2090
     1241, 1241, 1241,  268, 1241,  268, 1241,  268,  268,  268,
2091
     1241,  268,  268,  268,  268,  268,  268,  269, 1241, 1241,
2092
      269,  269, 1241,  269,  269, 1241, 1241,  269,  269,  271,
2093
     1241, 1241,  271,  271,  271, 1241,  271,  271,  271, 1241,
2094
      271,  271,  271, 1241,  271,  271,  271,  271,  271,  271,
2095
      295, 1241, 1241, 1241,  295,  295,  295,  295,  295,  295,
2096
      295,  295,  295,  295,  295,  295,  295,  295,  295,  295,
2097
      295,  298, 1241, 1241,  298, 1241, 1241, 1241,  298, 1241,
2098
      298, 1241,  298,  298,  298, 1241, 1241,  298,  298,  298,
2099
2100
      298,  298,  300, 1241, 1241,  300, 1241, 1241, 1241,  300,
2101
     1241,  300, 1241,  300,  300,  300, 1241, 1241,  300,  300,
2102
      300,  300,  300,  302, 1241, 1241,  302, 1241, 1241, 1241,
2103
      302, 1241,  302, 1241,  302,  302,  302, 1241, 1241,  302,
2104
      302,  302,  302,  302,  304, 1241, 1241,  304,  304,  304,
2105
     1241,  304,  304,  304, 1241,  304,  304,  304, 1241, 1241,
2106
      304,  304,  304,  304,  304,  305, 1241, 1241,  305,  305,
2107
      305, 1241,  305,  305,  305, 1241,  305,  305,  305, 1241,
2108
     1241,  305,  305,  305,  305,  305,  326,  326, 1241,  326,
2109
      326,  326, 1241,  326,  326,  326,  326,  326,  326,  326,
2110
2111
      326,  326,  326,  326,  326,  326,  326,  331,  331,  331,
2112
      331,  331,  331,  331,  331,  331,  331,  331,  331,  331,
2113
      331,  331,  331,  331,  331,  331,  331,  331,  445,  445,
2114
      445,  445,  445,  445,  445,  445,  445,  445,  445,  445,
2115
      445,  445,  445,  445,  445,  445,  445,  445,  445,  155,
2116
     1241, 1241,  155, 1241, 1241, 1241,  155, 1241,  155, 1241,
2117
      155,  155,  155, 1241, 1241,  155,  155,  155,  155,  155,
2118
      459,  459,  459, 1241, 1241, 1241, 1241,  459,  207,  207,
2119
     1241,  207,  207,  207, 1241,  207,  207,  207,  207,  207,
2120
      207,  207,  207,  207,  207,  207,  207,  207,  207,  234,
2121
2122
      234, 1241,  234,  234,  234,  234,  234,  234,  234,  234,
2123
      234,  234,  234,  234,  234,  234,  234,  234,  234,  234,
2124
      233,  233, 1241,  233,  233,  233, 1241,  233,  233,  233,
2125
      233,  233,  233,  233,  233,  233,  233,  233,  233,  233,
2126
      233,  208,  208, 1241,  208,  208,  208, 1241,  208,  208,
2127
      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
2128
      208,  208,  567,  567,  567, 1241, 1241, 1241, 1241,  567,
2129
      465,  465,  465, 1241, 1241, 1241, 1241,  465,  331,  331,
2130
      331,  331,  331,  331,  331,  331,  331,  331,  331,  331,
2131
      331,  331,  331,  331,  331,  331,  331,  331,  331,  234,
2132
2133
      234, 1241,  234,  234,  234, 1241,  234,  234,  234,  234,
2134
      234,  234,  234,  234,  234,  234,  234,  234,  234,  234,
2135
      671,  671,  671, 1241, 1241, 1241, 1241,  671,  675,  675,
2136
      675,  675, 1241, 1241, 1241, 1241,  675,  782,  782,  782,
2137
     1241, 1241, 1241, 1241,  782,  783,  783,  783,  783, 1241,
2138
     1241, 1241, 1241,  783,  876,  876,  876, 1241, 1241, 1241,
2139
     1241,  876,  877,  877,  877,  877, 1241, 1241, 1241, 1241,
2140
      877,  331,  331,  331,  331,  331,  331,  331,  331,  331,
2141
      331,  331,  331,  331,  331,  331,  331,  331,  331,  331,
2142
      331,  331,  269, 1241, 1241,  269,  269, 1241,  269,  269,
2143
2144
     1241, 1241,  269,  269,  298, 1241, 1241,  298, 1241, 1241,
2145
     1241,  298, 1241,  298, 1241,  298,  298,  298, 1241, 1241,
2146
      298,  298,  298,  298,  298,  948, 1241,  948,  948, 1241,
2147
     1241, 1241, 1241,  948,  966,  966,  966, 1241, 1241, 1241,
2148
     1241,  966,  967,  967,  967,  967, 1241, 1241, 1241, 1241,
2149
      967,  331,  331,  331,  331,  331,  331,  331,  331,  331,
2150
      331,  331,  331,  331,  331,  331,  331,  331,  331,  331,
2151
      331,  331,  269, 1241, 1241,  269,  269, 1241,  269,  269,
2152
     1241, 1241,  269,  269,  298, 1241, 1241,  298, 1241, 1241,
2153
     1241,  298, 1241,  298, 1241,  298,  298,  298, 1241, 1241,
2154
2155
      298,  298,  298,  298,  298, 1029, 1241, 1029, 1029, 1241,
2156
     1241, 1241, 1241, 1029, 1045, 1045, 1045, 1241, 1241, 1241,
2157
     1241, 1045, 1046, 1046, 1046, 1241, 1241, 1241, 1241, 1241,
2158
     1046, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060,
2159
     1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060, 1060,
2160
     1060, 1060, 1065, 1065, 1241, 1065, 1065, 1065, 1065, 1065,
2161
     1241, 1065, 1241, 1065, 1065, 1065, 1241, 1241, 1065, 1065,
2162
     1065, 1065, 1065, 1071, 1071, 1241, 1071, 1071, 1071, 1071,
2163
     1071, 1241, 1071, 1241, 1071, 1071, 1071, 1241, 1241, 1071,
2164
     1071, 1071, 1071, 1071, 1100, 1241, 1100, 1100, 1241, 1241,
2165
2166
     1241, 1241, 1100, 1151, 1241, 1151, 1151, 1241, 1241, 1241,
2167
     1241, 1151, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189,
2168
     1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189, 1189,
2169
     1189, 1189, 1189,   21, 1241, 1241, 1241, 1241, 1241, 1241,
2170
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
2171
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
2172
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
2173
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
2174
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
2175
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
2176
2177
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241
2178
    } ;
2179
2180
static const flex_int16_t yy_chk[9611] =
2181
    {   0,
2182
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
2183
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
2184
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
2185
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
2186
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
2187
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
2188
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
2189
        1,    1,    1,    1,    1,    1,    2,   23,   43,   41,
2190
        2,   23,   43,    2,    5,    5,  375,    5,    5,    5,
2191
       41,    5,    6,    6,  375,    6,    6,    6,    5,    6,
2192
2193
        7,    7,   55,    7,    7,    7,    6,    7,    7,   29,
2194
        2,    2,    5,    5,   45,    2,   55,   49,   45,  502,
2195
        6,    6,   49,    2,   69,   45,    2,    3,   69,  116,
2196
       29,    3,   13,   13,    3,   13,   13,   13,   13,    5,
2197
      116,    3,  502,   44,    3,   52,   44,    6,   14,   14,
2198
       44,   14,   14,   14,   14,    7,   44,   29,    3,    3,
2199
       52,    3,   37,   37,   37,   37,   37,   37,   65,    3,
2200
      160,    3,  160,    3,    3,   46,    3,  448,   46,   46,
2201
      107,    8,    8,    3,    8,    8,    8,   13,    8,    8,
2202
       17,   17,   17,   17,   17,   17,   17,   65,   67,    3,
2203
2204
        4,  107,   67,   14,    4,   34,   34,    4,   59,   63,
2205
       34,   34,   67,   63,    4,   85,  448,    4,   59,   85,
2206
       18,   18,   18,   18,   18,   18,   18,   59,  107,   63,
2207
       34,    4,    4,   76,    4, 1238,    8,   91,   91,  128,
2208
       91,   91,    4,   76,    4,   17,    4,    4,  128,    4,
2209
       93,   93,   76,   93,   93,   34,    4,   36,   36,   36,
2210
       36,   36,   36,   36,   36,   36,   36,   60,  104,   97,
2211
       99,   60,    4,    9,    9,   18,    9,    9,    9,   58,
2212
        9,   58,   58,   58,   58,   58,   58,   58,   58,   58,
2213
       58,   62,  364,  364,   62,   97,   99,  117,   62,  183,
2214
2215
      117,   60,   60,  125,   62,  157,   60,  101,  101,  157,
2216
      101,  101,  103,  183,   60,  142,  103,   60,  104,  226,
2217
       62,  106,  106,  226,  106,  106,  142,  106,    9,  130,
2218
        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
2219
        9,    9,    9,    9,    9,    9,    9,    9,   10,   10,
2220
      125,   10,   10,   10,   68,   10,  134,   68,   68,   68,
2221
       68,   68,   68,   68,   68,   68,   68,  103,  112,  112,
2222
      112,  112,  112,  112, 1234,   70,   70,  134,  205,  130,
2223
       70,   70,  111,  111,  111,  111,  111,  111,  111,  111,
2224
      111,  111,  139,  139,  139,  139,  139,  139,  132,  132,
2225
2226
       70,  132,  132,   10,  134,   10,   10,   10,   10,   10,
2227
       10,   10,   10,   10,   10,   10,   10,   10,   10,   10,
2228
       10,   10,   10,   11,   11,   70,   11,   11,   11,   11,
2229
       11,  143,  205,  331,  143,  331,   11,   11,   11,  126,
2230
      182,  126,  126,  126,  126,  126,  126,  126,  126,  126,
2231
      126,  182,   11,  132,  167,  228,  136,  136,  208,  228,
2232
     1231,  136,  136,  138,  138,  138,  138,  138,  138,  138,
2233
      138,  138,  138,  211,  222,  167,  211,  154,   11,   12,
2234
       12,  136,   12,   12,   12,   12,   12,  154, 1212,  212,
2235
      223,  222,   12,   12,   12,  212,  154,  203,  203,  245,
2236
2237
      203,  203,  167,  245,  223,  208,  136,  153,   12,  153,
2238
      153,  153,  153,  153,  153,  153,  153,  153,  153,  163,
2239
      163,  163,  163,  163,  163,  163,  163,  163,  163,  240,
2240
      240, 1185,  240,  240,   12,   15,   15,   15,   15,   15,
2241
       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
2242
       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
2243
       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
2244
       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
2245
       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
2246
       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
2247
2248
       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
2249
       15,   19,   19,   19,   19,   19,   19,   19,   19,   19,
2250
       19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
2251
       19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
2252
       19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
2253
       19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
2254
       19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
2255
       19,   19,   19,   19,   19,   19,   19,   19,   19,   19,
2256
       19,   19,   19,   19,   19,   19,   19,   28,  260,   28,
2257
      164,  164,  164,  164,  164,  164,  164,  164,  164,  164,
2258
2259
      221,   28,  807,  234,   28,   28,   28,   28,   28,   28,
2260
       28,   28,   28,   28,   35,  807,   35,   35,   35,   35,
2261
       35,   35,   35,   35,   35,   35,   35,  297, 1183,  224,
2262
       35,   35,   35,   35,   35,   35,  224,  452,  260,  324,
2263
      220,  156,  156,  156,  156,  156,  220,  221,  156,  156,
2264
      234,  262,  156,   35,  220,  262,   35,   35,   35,   35,
2265
       35,   35,   42,  237,  452,   42,  156,  156,  156,  237,
2266
      329,   42,   42,  329,  384,   42,   42,  297,   42,   42,
2267
       42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
2268
       42,   42,  384,  324,   42,   42,   42,   42,   42,   42,
2269
2270
       42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
2271
       42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
2272
       42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
2273
       42,   42,   42,   42,   42,   42,   42,   42,   47,   47,
2274
       47,   47,   47,   47,   47,   47,   47,   47,   47,  219,
2275
     1166,  219,   47,   47,   47,   47,   47,   47,  332,  393,
2276
      332,  259,   47,  393,  166,  259,   47,  166,  166,  166,
2277
      166,  166,  166,  166,  166,  166,  166,  386,   47,   47,
2278
       47,   47,   47,   47,   56,   56,  374,   56,   56,   56,
2279
       56,   56,  296,  386,   56,   56,  296,  330,   56,  171,
2280
2281
      171,  374, 1154,  330,  171,  171,  180,  180,  180,  180,
2282
      180,  180,   56,   56,   56,   57,  259,  219,  469,   57,
2283
       57,   57,  345,   57,  171,   57,   57,  345,  343,   57,
2284
      168,  168,  168,  168,  168,  469,  225,  168,  168,  343,
2285
      225,  168,  459,   57,   57,   57,  333,  296,  333,  171,
2286
      225,  264,  381,  459,  381,  168,  168,  168,  178,  178,
2287
      178,  178,  178,  178,  178,  178,  178,  178,  382,  460,
2288
       57,   61,  264,   61,  382,  170,  170,  170,  170,  170,
2289
      460,  385,  170,  170,  385,   61,  170,  567,   61,   61,
2290
       61,   61,   61,   61,   61,   61,   61,   61,  567,  264,
2291
2292
      170,  170,  170,  174,  174,  174,  174,  174,  174,  174,
2293
      174,  174,  174,  179,  179,  179,  179,  179,  179,  179,
2294
      179,  179,  179,  206,  206,  210,  206,  206,  210,  292,
2295
      292, 1153,  210,  210,  213,  492,   61,   75,  213,  392,
2296
      174,   75,   75,   75,  380,   75,  380,   75,   75,  196,
2297
      196,   75,  389,  196,  392,  196,  196,  416,  416,  196,
2298
      416,  196,  196, 1151,  492,   75,   75,   75,  213,  213,
2299
      229,  229,  415,  213,  443,  229,  229,  292,  206,  236,
2300
      210,  213,  236,  265,  213,  471,  236,  236,  445,  443,
2301
      445,  479,   75,   83,   83,  229,   83,   83,   83,  389,
2302
2303
       83,  479,  471,  380,  265,   83,  466,   83,  227,  227,
2304
      227,  227,  227,  227,  227,  227,  227,  227,  466,  415,
2305
      229,   83,   83,  232,  232, 1150,  446,  232,  446,  232,
2306
      232,  265,  468,  232,  236,  232,  248,  248,  483,  248,
2307
      248,  256,  256,  481,  256,  256,  472,  483,   83,   83,
2308
       92,  468,   92,  249,  249,  249,  249,  249,  249,  249,
2309
      249,  249,  249,  481,   92,  472,  489,   92,   92,   92,
2310
       92,   92,   92,   92,   92,   92,   92,  108,  261,  261,
2311
      108,  261,  261,  489,  470,  252,  108,  108,  470,  252,
2312
      108,  252,  252,  108,  108,  328,  256,  272,  328,  252,
2313
2314
     1146,  272,  328,  328,  272,  373,  373,  108,  373,  108,
2315
      528,  272,  470,  528,  252,  273,  273,  273,  273,  273,
2316
      273,  273,  273,  273,  273,  272,  272,  278,  278,  278,
2317
      278,  278,  278,  108,  108,  108,  109,  477,  802,  109,
2318
      373,  802,  109,  109,  486,  109,  109,  109,  109,  109,
2319
      328,  477,  109,  109,  266,  266,  266,  266,  456,  456,
2320
      456,  266,  266,  488,  486,  266,  109,  109,  109,  276,
2321
      276,  276,  276,  276,  276,  276,  276,  276,  276,  488,
2322
      266,  266,  277,  277,  277,  277,  277,  277,  277,  277,
2323
      277,  277,  109,  109,  109,  110,  504,  581,  110,  110,
2324
2325
      110,  110,  110,  110,  110,  110,  110,  110,  110,  110,
2326
      110,  110,  581,  504,  110,  110,  110,  110,  110,  110,
2327
      110,  110,  110,  110,  110,  110,  110,  110,  110,  110,
2328
      110,  110,  110,  110,  110,  110,  110,  473, 1139,  505,
2329
      110,  110,  110,  110,  110,  110,  110,  110,  110,  110,
2330
      110,  110,  110,  110,  110,  110,  110,  113,  473,  113,
2331
      113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
2332
      478,  476,  484,  113,  113,  113,  113,  113,  113,  476,
2333
      484,  270,  270,  270,  270,  270,  505,  491,  270,  270,
2334
      491,  478,  270,  312,  312,  312,  312,  312,  312,  113,
2335
2336
      113,  113,  113,  113,  113,  114,  270,  270,  270,  114,
2337
      114,  114,  114,  114,  114,  114,  114,  114,  114,  114,
2338
      114,  114,  491,  485,  114,  114,  114,  114,  114,  114,
2339
      114,  114,  114,  114,  114,  114,  114,  114,  114,  114,
2340
      114,  114,  114,  114,  114,  114,  114,  485, 1133,  114,
2341
      114,  114,  114,  114,  114,  114,  114,  114,  114,  114,
2342
      114,  114,  114,  114,  114,  114,  114,  118,  118,  118,
2343
      118,  118,  118,  118,  118,  118,  118,  118,  480,  537,
2344
      494,  118,  118,  118,  118,  118,  118,  494,  288,  288,
2345
      480,  118,  288,  482,  288,  288, 1117,  594,  288,  475,
2346
2347
      288,  442,  442,  475,  442,  594,  537,  118,  118,  118,
2348
      118,  118,  118,  137,  482,  137,  137,  137,  137,  137,
2349
      137,  137,  137,  137,  137,  137,  493,  475,  506,  137,
2350
      137,  137,  137,  137,  137,  506,  442,  474,  608,  556,
2351
      299,  299,  299,  299,  299,  503,  556,  299,  299,  474,
2352
      580,  299,  137,  533,  474,  137,  137,  137,  137,  137,
2353
      137,  140,  493,  517,  140,  299,  299,  299,  517,  580,
2354
      140,  140,  503,  608,  140,  140, 1116,  140,  140,  140,
2355
      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
2356
      140,  503,  533,  140,  140,  140,  140,  140,  140,  140,
2357
2358
      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
2359
      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
2360
      140,  140,  140,  140,  140,  140,  140,  140,  140,  140,
2361
      140,  140,  140,  140,  140,  140,  140,  144,  144,  144,
2362
      144,  144,  144,  144,  144,  144,  144,  144,  849,  555,
2363
      849,  144,  144,  144,  144,  144,  144,  553,  321,  321,
2364
      553,  144,  321, 1112,  321,  321,  304,  304,  321,  542,
2365
      321,  304,  304,  501,  542,  501,  597,  144,  144,  144,
2366
      144,  144,  144,  151,  151,  555,  151,  151,  151,  151,
2367
      151,  304,  553,  151,  151, 1100,  597,  151,  307,  307,
2368
2369
      307,  307,  307,  307,  307,  307,  307,  307,  587,  554,
2370
      585,  151,  151,  151,  152,  598,  304,  518,  152,  152,
2371
      152,  518,  152,  598,  152,  152,  587,  593,  152,  301,
2372
      301,  301,  301,  301,  585,  307,  301,  301,  554,  501,
2373
      301,  593,  152,  152,  152,  518,  586,  325,  325,  588,
2374
      325,  325,  586,  592,  301,  301,  301,  582,  596,  592,
2375
      303,  303,  303,  303,  303,  588,  919,  303,  303,  152,
2376
      173,  303,  596,  173,  173,  173,  173,  173,  582,  919,
2377
      173,  173,  605,  606,  173,  303,  303,  303,  310,  310,
2378
      310,  310,  310,  310,  310,  310,  310,  310,  173,  173,
2379
2380
      173,  175,  325,  175,  175,  175,  175,  175,  175,  175,
2381
      175,  175,  175,  175,  606,  605, 1099,  175,  175,  175,
2382
      175,  175,  175,  311,  311,  311,  311,  311,  311,  311,
2383
      311,  311,  311,  463,  463,  463,  463,  463,  463,  589,
2384
      175,  569,  569,  175,  175,  175,  175,  175,  175,  184,
2385
      601,  539,  184,  569,  609,  539,  692,  601,  184,  184,
2386
      609,  589,  184,  184,  692,  184,  184,  184,  184,  184,
2387
      184,  184,  184,  184,  184,  184,  184,  184,  184,  539,
2388
     1091,  184,  184,  184,  184,  184,  184,  184,  184,  184,
2389
      184,  184,  184,  184,  184,  184,  184,  184,  184,  184,
2390
2391
      184,  184,  184,  184,  184,  184,  184,  184,  184,  184,
2392
      184,  184,  184,  184,  184,  184,  184,  184,  184,  184,
2393
      184,  184,  184,  184,  184,  185,  185,  185,  185,  185,
2394
      185,  185,  185,  185,  185,  185, 1060,  659, 1060,  185,
2395
      185,  185,  185,  185,  185,  334,  334,  334,  334,  334,
2396
      334,  334,  334,  334,  334,  335,  335,  335,  335,  335,
2397
      335,  335,  335,  335,  335,  185,  185,  185,  185,  185,
2398
      185,  207,  659,  701,  521,  207,  207,  207,  521,  207,
2399
      387,  207,  207,  599,  387,  207,  451,  387,  451,  451,
2400
      451,  451,  451,  451,  387,  595,  600,  701, 1090,  207,
2401
2402
      207,  207,  521,  607,  599,  600,  603,  515,  387,  387,
2403
      394,  515,  394,  394,  394,  394,  394,  394,  394,  394,
2404
      394,  394,  616,  521,  595,  451,  207,  231,  616,  603,
2405
      231,  231,  231,  231,  231,  515,  607,  231,  231, 1082,
2406
      395,  231,  395,  395,  395,  395,  395,  395,  395,  395,
2407
      395,  395,  515,  660,  657,  231,  231,  231,  233,  660,
2408
      656,  516,  233,  233,  233,  516,  233,  662,  233,  233,
2409
      604,  396,  233,  396,  396,  396,  396,  396,  396,  396,
2410
      396,  396,  396,  571,  571,  657,  233,  233,  233,  516,
2411
      418,  855,  604,  656,  418,  571,  511,  418,  511,  511,
2412
2413
      511,  511,  511,  511,  418,  613,  662,  613,  516,  614,
2414
      615,  689,  658,  233,  268,  671,  813,  268,  418,  418,
2415
      813,  614,  615,  268,  268,  694,  671,  268,  689,  855,
2416
      268,  268,  447,  447,  447,  447,  447,  447,  447,  447,
2417
      447,  447,  743,  694,  268,  658,  268,  455,  455,  455,
2418
      455,  455,  455,  455,  455,  455,  455,  455,  462,  462,
2419
      462,  462,  462,  462,  462,  462,  462,  462,  688,  447,
2420
      268,  268,  268,  271,  688,  697,  271,  675,  613,  271,
2421
      271,  743,  271,  271,  271,  271,  271, 1081,  675,  271,
2422
      271,  465,  697,  465,  465,  465,  465,  465,  465,  465,
2423
2424
      465,  465,  465,  271,  271,  271,  507,  507,  507,  507,
2425
      507,  507,  507,  507,  507,  507,  509,  702,  509,  509,
2426
      509,  509,  509,  509,  509,  509,  509,  509,  693,  271,
2427
      271,  271,  274,  702,  274,  274,  274,  274,  274,  274,
2428
      274,  274,  274,  274,  274,  695, 1080,  693,  274,  274,
2429
      274,  274,  274,  274,  510,  699,  510,  510,  510,  510,
2430
      510,  510,  510,  510,  510,  510,  695,  699, 1209,  543,
2431
      676,  676,  699,  543,  274,  274,  274,  274,  274,  274,
2432
      279,  704,  676, 1209,  279,  279,  279,  279,  279,  279,
2433
      279,  279,  279,  279,  279,  279,  279,  543,  704,  279,
2434
2435
      279,  279,  279,  279,  279,  279,  279,  279,  279,  279,
2436
      279,  279,  279,  279,  279,  279,  279,  279,  279,  279,
2437
      279,  279,  800,  800,  279,  279,  279,  279,  279,  279,
2438
      279,  279,  279,  279,  279,  279,  279,  279,  279,  279,
2439
      279,  279,  280,  280,  280,  280,  280,  280,  280,  280,
2440
      280,  280,  280,  677,  677,  698,  280,  280,  280,  280,
2441
      280,  280,  522,  703,  808,  677,  522,  808,  519,  520,
2442
      712,  703,  519,  520,  698,  523, 1078,  679,  679,  523,
2443
      707,  712,  280,  280,  280,  280,  280,  280,  306,  679,
2444
      522,  306,  306,  306,  306,  306,  519,  520,  306,  306,
2445
2446
      522,  707,  306,  523,  519,  524,  525,  731,  754,  524,
2447
      525,  520,  731,  754,  717,  523,  306,  306,  306,  308,
2448
     1074,  308,  308,  308,  308,  308,  308,  308,  308,  308,
2449
      308,  308,  717,  524,  525,  308,  308,  308,  308,  308,
2450
      308,  716,  812,  583,  590,  526,  622,  583,  590,  526,
2451
      622,  806,  716,  524,  812,  525,  806,  718,  308,  803,
2452
      803,  308,  308,  308,  308,  308,  308,  313,  718, 1052,
2453
      313,  583,  590,  526,  622,  796,  313,  313,  932,  932,
2454
      313,  313,  796,  313,  313,  313,  313,  313,  313,  313,
2455
      313,  313,  313,  313,  313,  313,  313,  526,  622,  313,
2456
2457
      313,  313,  313,  313,  313,  313,  313,  313,  313,  313,
2458
      313,  313,  313,  313,  313,  313,  313,  313,  313,  313,
2459
      313,  313,  313,  313,  313,  313,  313,  313,  313,  313,
2460
      313,  313,  313,  313,  313,  313,  313,  313,  313,  313,
2461
      313,  313,  313,  314,  314,  314,  314,  314,  314,  314,
2462
      314,  314,  314,  314,  764,  782,  891,  314,  314,  314,
2463
      314,  314,  314,  527,  891,  764,  782,  527,  532,  532,
2464
      532,  532,  532,  532,  532,  532,  532,  532,  691,  715,
2465
      821,  715,  691,  314,  314,  314,  314,  314,  314,  326,
2466
      783,  527,  835,  326,  326,  326,  834,  326,  821,  326,
2467
2468
      326,  783,  834,  326,  835,  532,  691,  527, 1046,  574,
2469
      574,  574,  574,  574,  574,  574,  574,  326,  326,  326,
2470
      536,  574,  536,  536,  536,  536,  536,  536,  562,  562,
2471
      562,  562,  562,  562,  562,  562,  562,  562,  562,  715,
2472
      809,  826, 1029,  809,  326,  336,  838,  336,  336,  336,
2473
      336,  336,  336,  336,  336,  336,  336,  838,  826,  536,
2474
      568,  568,  568,  568,  568,  568,  568,  568,  568,  568,
2475
      570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
2476
      825,  839, 1028,  825,  336,  337,  839,  337,  337,  337,
2477
      337,  337,  337,  337,  337,  337,  337,  576,  576,  576,
2478
2479
      576,  576,  576,  576,  576,  576,  576,  577,  577,  577,
2480
      577,  577,  577,  661,  661,  661,  661,  661,  661,  661,
2481
      661,  661,  661, 1024,  337,  338,  848,  338,  338,  338,
2482
      338,  338,  338,  338,  338,  338,  338,  579,  848,  579,
2483
      579,  579,  579,  579,  579,  579,  579,  579,  579,  617,
2484
      661,  617,  617,  617,  617,  617,  617,  617,  617,  617,
2485
      617,  824,  926,  824,  338,  339,  339,  339,  339,  339,
2486
      339,  339,  339,  339,  339,  339,  969,  969, 1013,  339,
2487
      339,  339,  339,  339,  339,  618,  862,  618,  618,  618,
2488
      618,  618,  618,  618,  618,  618,  618,  801,  862,  845,
2489
2490
      926, 1006,  339,  845,  801,  339,  339,  339,  339,  339,
2491
      339,  342,  342,  342,  342,  342,  342,  342,  342,  342,
2492
      342,  342,  824, 1005,  896,  342,  342,  342,  342,  342,
2493
      342,  619,  827,  619,  619,  619,  619,  619,  619,  619,
2494
      619,  619,  619,  628,  850,  896, 1003,  628,  850,  902,
2495
      827,  342,  342,  342,  342,  342,  342,  344,  344,  344,
2496
      344,  344,  344,  344,  344,  344,  344,  344,  344,  994,
2497
      902,  628,  344,  344,  344,  344,  344,  344,  623,  628,
2498
      632,  626,  623,  634,  632,  626,  672,  634,  672,  672,
2499
      672,  672,  672,  672,  672,  672,  672,  672,  344,  344,
2500
2501
      344,  344,  344,  344,  346,  852,  623,  346,  632,  626,
2502
      852,  634,  623,  346,  346,  626,  632,  346,  346, 1048,
2503
      346,  346,  346,  346,  346,  346,  346,  346,  346,  346,
2504
      346,  346,  346,  346,  634, 1048,  346,  346,  346,  346,
2505
      346,  346,  346,  346,  346,  346,  346,  346,  346,  346,
2506
      346,  346,  346,  346,  346,  346,  346,  346,  346,  346,
2507
      346,  346,  346,  346,  346,  346,  346,  346,  346,  346,
2508
      346,  346,  346,  346,  346,  346,  346,  346,  346,  346,
2509
      347,  347,  347,  347,  347,  347,  347,  347,  347,  347,
2510
      347,  784,  784,  990,  347,  347,  347,  347,  347,  347,
2511
2512
      627,  629,  847,  784,  627,  629,  864,  630,  847,  935,
2513
      633,  630,  935,  631,  633,  696,  851,  631,  864,  696,
2514
      347,  347,  347,  347,  347,  347,  371,  851,  627,  629,
2515
      371,  371,  371,  853,  371,  630,  371,  371,  633,  876,
2516
      371,  631,  627,  696,  893,  633,  877,  785,  785,  630,
2517
      876,  853,  893,  989,  371,  371,  371,  877,  629,  785,
2518
      665,  631,  665,  665,  665,  665,  665,  665,  673,  897,
2519
      673,  673,  673,  673,  673,  673,  673,  673,  673,  673,
2520
      897,  371,  372,  787,  787,  889,  372,  372,  372,  372,
2521
      372,  889,  372,  372, 1004,  787,  372, 1004,  674,  665,
2522
2523
      674,  674,  674,  674,  674,  674,  674,  674,  674,  674,
2524
      372,  372,  372,  678,  678,  678,  678,  678,  678,  678,
2525
      678,  678,  678,  682,  682,  682,  682,  682,  682,  682,
2526
      682,  962,  894,  878,  878,  682,  700,  372,  390,  894,
2527
      700,  892,  390,  390,  390,  878,  390,  892,  390,  390,
2528
      934, 1018,  390,  684,  684,  684,  684,  684,  684,  684,
2529
      684,  684,  684,  934,  700,  966,  390,  390,  390,  685,
2530
      685,  685,  685,  685,  685,  687,  966,  687,  687,  687,
2531
      687,  687,  687,  687,  687,  687,  687,  705,  706,  898,
2532
     1018,  705,  706,  390,  391,  970,  970,  898,  391,  391,
2533
2534
      391,  391,  391,  907,  391,  391,  949,  723,  391,  723,
2535
      723,  723,  723,  723,  723,  705,  706,  993,  949,  993,
2536
      907,  948,  391,  391,  391,  719,  719,  719,  719,  719,
2537
      719,  719,  719,  719,  719,  721,  950,  721,  721,  721,
2538
      721,  721,  721,  721,  721,  721,  721,  944,  950,  391,
2539
      397,  397,  397,  397,  397,  397,  397,  397,  397,  397,
2540
      397, 1015, 1015, 1224,  397,  397,  397,  397,  397,  397,
2541
      722,  952,  722,  722,  722,  722,  722,  722,  722,  722,
2542
      722,  722,  993,  952, 1224,  724,  879,  879,  967,  724,
2543
      397,  397,  397,  397,  397,  397,  399, 1186,  879,  967,
2544
2545
      399,  399,  399,  399,  399,  399,  399,  399,  399,  399,
2546
      399,  399,  399,  724, 1186,  399,  399,  399,  399,  399,
2547
      399,  399,  399,  399,  399,  399,  399,  399,  399,  399,
2548
      399,  399,  399,  399,  399,  399,  399,  399, 1047, 1047,
2549
      399,  399,  399,  399,  399,  399,  399,  399,  399,  399,
2550
      399,  399,  399,  399,  399,  399,  399,  399,  400,  400,
2551
      400,  400,  400,  400,  400,  400,  400,  400,  400, 1063,
2552
      939, 1063,  400,  400,  400,  400,  400,  400,  771,  771,
2553
      771,  771,  771,  771,  771,  771,  771,  771,  725,  728,
2554
      729,  730,  725,  728,  729,  730,  977,  936,  400,  400,
2555
2556
      400,  400,  400,  400,  419,  977,  419,  419,  419,  419,
2557
      419,  419,  419,  419,  419,  419,  725,  728,  729,  730,
2558
      974,  931,  992,  992,  725,  992,  992, 1022,  732,  733,
2559
      734,  974,  732,  733,  734,  729,  735,  736,  730, 1014,
2560
      735,  736, 1014,  419,  420,  921,  420,  420,  420,  420,
2561
      420,  420,  420,  420,  420,  420,  732,  733,  734,  881,
2562
      881,  979,  920,  983,  735,  736, 1022,  917,  747,  979,
2563
      983,  881,  747,  746,  734,  746,  746,  746,  746,  746,
2564
      746,  733, 1016,  420,  421, 1016,  421,  421,  421,  421,
2565
      421,  421,  421,  421,  421,  421,  747, 1092, 1092,  742,
2566
2567
      742,  742,  742,  742,  742,  742,  742,  742,  742,  751,
2568
      755,  758,  746,  751,  755,  758,  916, 1056,  759, 1189,
2569
      911, 1189,  759,  421,  422, 1056,  422,  422,  422,  422,
2570
      422,  422,  422,  422,  422,  422,  742,  751,  755,  758,
2571
      422,  422,  422,  422,  422,  422,  759,  773,  773,  773,
2572
      773,  773,  773,  773,  773,  773,  773,  774,  774,  774,
2573
      774,  774,  774, 1158,  909,  905,  422,  422,  422,  422,
2574
      422,  422,  424,  424,  424,  424,  424,  424,  424,  424,
2575
      424,  424,  975, 1158,  904,  903,  424,  424,  424,  424,
2576
      424,  424,  776,  975,  776,  776,  776,  776,  776,  776,
2577
2578
      776,  776,  776,  776,  781, 1084,  781,  781,  781,  781,
2579
      781,  781,  424,  424,  424,  424,  424,  424,  440,  968,
2580
      968,  901,  440,  440,  440, 1192,  440, 1192,  440,  440,
2581
      860,  968,  440,  777,  777,  777,  777,  777,  777,  777,
2582
      777,  777,  777,  859, 1084,  846,  440,  440,  440,  779,
2583
     1030,  779,  779,  779,  779,  779,  779,  779,  779,  779,
2584
      779,  780, 1030,  780,  780,  780,  780,  780,  780,  780,
2585
      780,  780,  780,  440,  441,  982,  984, 1365,  441,  441,
2586
      441,  441,  441, 1365,  441,  441,  982,  984,  441,  786,
2587
      786,  786,  786,  786,  786,  786,  786,  786,  786,  840,
2588
2589
      837, 1031,  441,  441,  441,  790,  790,  790,  790,  790,
2590
      790,  790,  790, 1031,  836,  833, 1033,  790,  792,  792,
2591
      792,  792,  792,  792,  792,  792,  792,  792, 1033,  441,
2592
      449,  832,  449,  449,  449,  449,  449,  449,  449,  449,
2593
      449,  449,  793,  793,  793,  793,  793,  793,  795,  823,
2594
      795,  795,  795,  795,  795,  795,  795,  795,  795,  795,
2595
      798,  804,  810,  816,  798,  804,  810,  816, 1088,  449,
2596
      450,  991,  450,  450,  450,  450,  450,  450,  450,  450,
2597
      450,  450,  870,  870,  870,  870,  870,  870,  798,  804,
2598
      810,  816,  822,  820,  991,  818,  991,  991, 1049,  818,
2599
2600
      887,  887,  887,  887,  887,  887,  815, 1088, 1049,  450,
2601
      461,  461,  461,  461,  461,  461,  461,  461,  461,  461,
2602
      461,  461,  461,  818,  814,  778,  461,  461,  461,  461,
2603
      461,  461,  828,  828,  828,  828,  828,  828,  828,  828,
2604
      828,  828,  828,  918, 1058,  906,  906,  918,  906,  906,
2605
      770, 1058,  461,  461,  461,  461,  461,  461,  464,  464,
2606
      464,  464,  464,  464,  464,  464,  464,  464,  464,  464,
2607
      908,  918,  769,  464,  464,  464,  464,  464,  464,  829,
2608
      829,  829,  829,  829,  829,  829,  829,  829,  829,  829,
2609
      768,  763,  918,  908,  762,  908,  908, 1141, 1045,  464,
2610
2611
      464,  464,  464,  464,  464,  467,  906,  980,  467, 1045,
2612
      761,  980,  760,  757,  467,  467,  756,  753,  467,  467,
2613
      908,  467,  467,  467,  467,  467,  467,  467,  467,  467,
2614
      467,  467,  467,  467,  467,  980, 1141,  467,  467,  467,
2615
      467,  467,  467,  467,  467,  467,  467,  467,  467,  467,
2616
      467,  467,  467,  467,  467,  467,  467,  467,  467,  467,
2617
      467,  467,  467,  467,  467,  467,  467,  467,  467,  467,
2618
      467,  467,  467,  467,  467,  467,  467,  467,  467,  467,
2619
      467,  512,  512,  512,  512,  512,  512,  512,  512,  512,
2620
      512,  512, 1260, 1260, 1260,  512,  512,  512,  512,  512,
2621
2622
      512,  830,  830,  830,  830,  830,  830,  830,  830,  830,
2623
      830,  830,  914,  914,  914,  914,  914,  914,  914,  752,
2624
     1057,  512,  512,  512,  512,  512,  512,  513, 1057,  750,
2625
     1172,  513,  513,  513,  513,  513,  513,  513,  513,  513,
2626
      513,  513,  513,  513,  749,  748,  513,  513,  513,  513,
2627
      513,  513,  513,  513,  513,  513,  513,  513,  513,  513,
2628
      513,  513,  513,  513,  513,  513,  513,  513,  513, 1172,
2629
      741,  513,  513,  513,  513,  513,  513,  513,  513,  513,
2630
      513,  513,  513,  513,  513,  513,  513,  513,  513,  514,
2631
     1200, 1217, 1101,  514,  854,  854,  854,  854,  854,  854,
2632
2633
      854,  854,  854,  854, 1101,  727, 1102,  514,  514,  514,
2634
      514,  514,  514,  514,  514,  514,  514,  514, 1102, 1123,
2635
      726,  514,  514,  514,  514,  514,  514, 1123,  720, 1200,
2636
     1217,  854,  858,  858,  858,  858,  858,  858,  858,  958,
2637
      958,  958,  958,  958,  958,  714,  713,  514,  514,  514,
2638
      514,  514,  514,  534,  711,  534,  534,  534,  534,  534,
2639
      534,  534,  534,  534,  534, 1061, 1061,  710, 1061, 1061,
2640
      858,  861,  861,  861,  861,  861,  861,  861,  861,  861,
2641
      861,  863,  863,  863,  863,  863,  863,  863,  863,  863,
2642
      863,  709,  534,  535, 1104,  535,  535,  535,  535,  535,
2643
2644
      535,  535,  535,  535,  535,  867, 1104,  867,  867,  867,
2645
      867,  867,  867, 1292, 1292, 1292, 1118,  867,  869,  869,
2646
      869,  869,  869,  869,  869,  869,  869,  869, 1118,  708,
2647
      985,  690,  535,  557,  985,  557,  557,  557,  557,  557,
2648
      557,  557,  557,  557,  557,  872,  669,  872,  872,  872,
2649
      872,  872,  872,  872,  872,  872,  872,  873,  985,  873,
2650
      873,  873,  873,  873,  873,  873,  873,  873,  873,  668,
2651
      987,  667,  557,  558,  987,  558,  558,  558,  558,  558,
2652
      558,  558,  558,  558,  558,  874,  666,  874,  874,  874,
2653
      874,  874,  874,  874,  874,  874,  874,  875,  987,  875,
2654
2655
      875,  875,  875,  875,  875,  875,  875,  875,  875,  655,
2656
      654,  653,  558,  559,  652,  559,  559,  559,  559,  559,
2657
      559,  559,  559,  559,  559,  880,  880,  880,  880,  880,
2658
      880,  880,  880,  880,  880,  884,  884,  884,  884,  884,
2659
      884,  884,  884,  651, 1064,  650, 1064,  884, 1157, 1157,
2660
     1157, 1157,  559,  572,  572,  572,  572,  572,  572,  572,
2661
      572,  572,  572,  572,  572,  572,  649,  648,  647,  572,
2662
      572,  572,  572,  572,  572,  886,  886,  886,  886,  886,
2663
      886,  886,  886,  886,  886,  910,  910,  910,  910,  910,
2664
      910,  910,  910,  910,  910,  572,  572,  572,  572,  572,
2665
2666
      572,  575,  575,  575,  575,  575,  575,  575,  575,  575,
2667
      575,  575,  575,  575, 1064,  646,  645,  575,  575,  575,
2668
      575,  575,  575,  888,  644,  888,  888,  888,  888,  888,
2669
      888,  888,  888,  888,  888,  929,  929,  929,  929,  929,
2670
      929,  929,  643,  575,  575,  575,  575,  575,  575,  578,
2671
      578,  578,  578,  578,  578,  578,  578,  578,  578,  578,
2672
      578,  639,  638,  637,  578,  578,  578,  578,  578,  578,
2673
      636,  635,  965,  929,  965,  965,  965,  965,  965,  965,
2674
      895,  625, 1125, 1125,  895, 1125, 1125,  624,  621,  620,
2675
      578,  578,  578,  578,  578,  578,  640,  612,  640,  640,
2676
2677
      640,  640,  640,  640,  640,  640,  640,  640,  895,  912,
2678
      912,  912,  912,  912,  912,  912,  912,  912,  912,  912,
2679
      899,  611,  610,  945,  899,  945,  945,  945,  945,  945,
2680
      945,  945,  945,  945,  945,  640,  641,  895,  641,  641,
2681
      641,  641,  641,  641,  641,  641,  641,  641,  899,  913,
2682
      913,  913,  913,  913,  913,  913,  913,  913,  913,  913,
2683
      900,  922,  923,  602,  900,  922,  923,  973,  973,  973,
2684
      973,  973,  973,  973,  973,  641,  642,  899,  642,  642,
2685
      642,  642,  642,  642,  642,  642,  642,  642,  900,  922,
2686
      923,  925,  925,  925,  925,  925,  925,  925,  925,  925,
2687
2688
      925,  933,  937,  938,  566,  933,  937,  938, 1253, 1253,
2689
      922,  923,  565,  564, 1253,  642,  663,  900,  663,  663,
2690
      663,  663,  663,  663,  663,  663,  663,  663,  925,  933,
2691
      937,  938,  946,  563,  946,  946,  946,  946,  946,  946,
2692
      946,  946,  946,  946, 1039, 1039, 1039, 1039, 1039, 1039,
2693
      933,  937,  938,  561,  560,  663,  664, 1152,  664,  664,
2694
      664,  664,  664,  664,  664,  664,  664,  664,  947, 1152,
2695
      947,  947,  947,  947,  947,  947,  947,  947,  947,  947,
2696
      951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
2697
     1164, 1164,  552, 1164, 1164,  664,  670,  670,  670,  670,
2698
2699
      670,  670,  670,  670,  670,  670,  670,  551,  550,  549,
2700
      670,  670,  670,  670,  670,  670,  955,  548,  955,  955,
2701
      955,  955,  955,  955, 1281, 1281,  547, 1002,  955, 1050,
2702
     1281, 1002,  546, 1050,  545,  544,  670,  670,  670,  670,
2703
      670,  670,  680,  680,  680,  680,  680,  680,  680,  680,
2704
      680,  680,  680,  680,  680, 1002,  541, 1050,  680,  680,
2705
      680,  680,  680,  680,  957,  957,  957,  957,  957,  957,
2706
      957,  957,  957,  957,  961,  961,  961,  961,  961,  961,
2707
      961,  961,  961,  961,  680,  680,  680,  680,  680,  680,
2708
      683,  683,  683,  683,  683,  683,  683,  683,  683,  683,
2709
2710
      683,  683,  683,  540,  538,  531,  683,  683,  683,  683,
2711
      683,  683,  960,  530,  960,  960,  960,  960,  960,  960,
2712
      960,  960,  960,  960, 1001,  529, 1190, 1190, 1001, 1190,
2713
     1190,  508,  683,  683,  683,  683,  683,  683,  686,  686,
2714
      686,  686,  686,  686,  686,  686,  686,  686,  686,  686,
2715
      500,  499, 1001,  686,  686,  686,  686,  686,  686,  963,
2716
      498,  963,  963,  963,  963,  963,  963,  963,  963,  963,
2717
      963, 1282, 1282, 1001,  497,  496,  495, 1282,  490,  686,
2718
      686,  686,  686,  686,  686,  744,  487,  744,  744,  744,
2719
      744,  744,  744,  744,  744,  744,  744,  964,  458,  964,
2720
2721
      964,  964,  964,  964,  964,  964,  964,  964,  964,  457,
2722
     1053, 1079, 1011,  454, 1053, 1079, 1011, 1119,  453,  976,
2723
      439, 1119,  978,  976,  744,  745,  978,  745,  745,  745,
2724
      745,  745,  745,  745,  745,  745,  745,  995, 1053, 1079,
2725
     1011,  995,  995,  995,  995, 1119,  438,  976,  437,  997,
2726
      978,  997,  997,  997,  997,  997,  997,  997,  997,  997,
2727
      997, 1011,  436,  435,  745,  765,  765,  765,  765,  765,
2728
      765,  765,  765,  765,  765,  765,  976,  996,  434,  978,
2729
      433,  996,  996,  996,  996, 1110, 1110, 1110, 1110, 1110,
2730
     1110,  998,  995,  998,  998,  998,  998,  998,  998,  998,
2731
2732
      998,  998,  998,  765,  766,  766,  766,  766,  766,  766,
2733
      766,  766,  766,  766,  766,  999,  432,  999,  999,  999,
2734
      999,  999,  999,  999,  999,  999,  999, 1012, 1310, 1310,
2735
      431, 1012,  996, 1021, 1310, 1021, 1021, 1021, 1021, 1021,
2736
     1021,  430,  766,  767,  767,  767,  767,  767,  767,  767,
2737
      767,  767,  767,  767, 1000, 1012, 1000, 1000, 1000, 1000,
2738
     1000, 1000, 1000, 1000, 1000, 1000,  429, 1132,  428, 1159,
2739
      427, 1132, 1021, 1159, 1299, 1323, 1012, 1299, 1323, 1299,
2740
     1323,  767,  772,  426,  772,  772,  772,  772,  772,  772,
2741
      772,  772,  772,  772,  772, 1132,  423, 1159,  772,  772,
2742
2743
      772,  772,  772,  772, 1017, 1017, 1017, 1017, 1017, 1017,
2744
     1017, 1017, 1017, 1017, 1023, 1023, 1023, 1023, 1023, 1023,
2745
     1023, 1023, 1023, 1023,  772,  772,  772,  772,  772,  772,
2746
      775,  775,  775,  775,  775,  775,  775,  775,  775,  775,
2747
      775, 1017,  417,  414,  775,  775,  775,  775,  775,  775,
2748
     1025,  413, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025,
2749
     1025, 1025, 1027,  412, 1027, 1027, 1027, 1027, 1027, 1027,
2750
      775,  775,  775,  775,  775,  775,  788,  788,  788,  788,
2751
      788,  788,  788,  788,  788,  788,  788,  788,  788,  411,
2752
      410,  409,  788,  788,  788,  788,  788,  788, 1026,  408,
2753
2754
     1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026,
2755
     1077,  407, 1077, 1077, 1077, 1077, 1077, 1077,  788,  788,
2756
      788,  788,  788,  788,  791,  791,  791,  791,  791,  791,
2757
      791,  791,  791,  791,  791,  791,  791,  406,  405,  404,
2758
      791,  791,  791,  791,  791,  791, 1032, 1032, 1032, 1032,
2759
     1032, 1032, 1032, 1032, 1032, 1032, 1038, 1038, 1038, 1038,
2760
     1038, 1038, 1038, 1038, 1038, 1038,  791,  791,  791,  791,
2761
      791,  791,  794,  794,  794,  794,  794,  794,  794,  794,
2762
      794,  794,  794,  403,  402,  401,  398,  794,  794,  794,
2763
      794,  794,  794, 1036,  383, 1036, 1036, 1036, 1036, 1036,
2764
2765
     1036,  379,  378,  377,  376, 1036, 1115, 1115, 1115, 1115,
2766
     1115, 1115, 1115,  794,  794,  794,  794,  794,  794,  797,
2767
     1070, 1339,  797, 1070, 1339,  370, 1339,  369,  797,  797,
2768
     1070, 1070,  797,  797, 1070,  797,  797,  797,  797,  797,
2769
      797,  797,  797,  797,  797,  797,  797,  797, 1070, 1070,
2770
     1070,  797,  797,  797,  797,  797,  797,  797,  797,  797,
2771
      797,  797,  797,  797,  797,  797,  797,  797,  797,  797,
2772
      797,  797,  797,  797,  797,  797,  797,  797,  797,  797,
2773
      797,  797,  797,  797,  797,  797,  797,  797,  797,  797,
2774
      797,  797,  797,  797,  797,  831,  368,  367,  366,  831,
2775
2776
      831,  831,  831,  831,  831,  831,  831,  831,  831,  831,
2777
      365,  831,  363,  362,  831,  831,  831,  831,  831,  831,
2778
      831,  831,  831,  831,  831,  831,  831,  831,  831,  831,
2779
      831,  831,  831,  831,  831,  831,  831,  361,  360,  831,
2780
      831,  831,  831,  831,  831,  831,  831,  831,  831,  831,
2781
      831,  831,  831,  831,  831,  831,  831,  841,  841,  841,
2782
      841,  841,  841,  841,  841,  841,  841,  841, 1041,  359,
2783
     1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041, 1041,
2784
     1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042,
2785
     1042,  358,  357,  356,  355,  841,  842,  842,  842,  842,
2786
2787
      842,  842,  842,  842,  842,  842,  842, 1043, 1043, 1043,
2788
     1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1044, 1044,
2789
     1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1055,
2790
      354,  353,  352, 1055,  842,  843,  843,  843,  843,  843,
2791
      843,  843,  843,  843,  843,  843,  351, 1121, 1065,  349,
2792
      348, 1121, 1065, 1065, 1065, 1065, 1069, 1055,  341, 1069,
2793
     1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069, 1069,  340,
2794
     1316, 1316,  327,  843,  844, 1121, 1316,  844,  323, 1317,
2795
     1317,  322,  320,  844,  844, 1317, 1055,  844,  844,  319,
2796
      844,  844,  844,  844,  844,  844,  844,  844,  844,  844,
2797
2798
      844,  844,  844, 1065, 1121,  318,  844,  844,  844,  844,
2799
      844,  844,  844,  844,  844,  844,  844,  844,  844,  844,
2800
      844,  844,  844,  844,  844,  844,  844,  844,  844,  844,
2801
      844,  844,  844,  844,  844,  844,  844,  844,  844,  844,
2802
      844,  844,  844,  844,  844,  844,  844,  844,  844,  844,
2803
      856,  856,  856,  856,  856,  856,  856,  856,  856,  856,
2804
      856, 1066,  317, 1359, 1359, 1066, 1066, 1066, 1066, 1067,
2805
     1359,  316,  315, 1067, 1067, 1067, 1067, 1073, 1073, 1073,
2806
     1073, 1073, 1073, 1073, 1073, 1073, 1073,  309,  856,  857,
2807
      857,  857,  857,  857,  857,  857,  857,  857,  857,  857,
2808
2809
     1068, 1363,  305, 1363, 1068, 1068, 1068, 1068, 1071, 1363,
2810
      302,  300, 1071, 1071, 1071, 1071, 1066, 1207, 1207, 1207,
2811
     1207, 1207, 1207,  298, 1067,  295,  294,  857,  865,  293,
2812
      865,  865,  865,  865,  865,  865,  865,  865,  865,  865,
2813
      865,  868,  290,  868,  868,  868,  868,  868,  868,  868,
2814
      868,  868,  868,  868,  289, 1068,  287,  868,  868,  868,
2815
      868,  868,  868, 1071, 1075,  286, 1075, 1075, 1075, 1075,
2816
     1075, 1075, 1075, 1075, 1075, 1075, 1237, 1237, 1237, 1237,
2817
     1237, 1237,  285,  868,  868,  868,  868,  868,  868,  871,
2818
      871,  871,  871,  871,  871,  871,  871,  871,  871,  871,
2819
2820
      284,  283,  281,  871,  871,  871,  871,  871,  871, 1076,
2821
      275, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076,
2822
     1076, 1089, 1161,  267,  263, 1089, 1161,  258,  257,  871,
2823
      871,  871,  871,  871,  871,  882,  882,  882,  882,  882,
2824
      882,  882,  882,  882,  882,  882,  882,  882,  255, 1089,
2825
     1161,  882,  882,  882,  882,  882,  882,  251, 1083, 1083,
2826
     1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083,  246, 1087,
2827
     1089, 1087, 1087, 1087, 1087, 1087, 1087,  882,  882,  882,
2828
      882,  882,  882,  885,  885,  885,  885,  885,  885,  885,
2829
      885,  885,  885,  885,  885, 1083,  241,  239,  235,  885,
2830
2831
      885,  885,  885,  885,  885, 1122,  230, 1072, 1087, 1122,
2832
     1072, 1131,  218, 1318, 1318, 1131,  217, 1072, 1072, 1318,
2833
      216, 1072,  215,  214,  209,  885,  885,  885,  885,  885,
2834
      885,  890,  202, 1122,  890, 1072, 1072, 1072,  201, 1131,
2835
      890,  890,  200,  199,  890,  890,  198,  890,  890,  890,
2836
      890,  890,  890,  890,  890,  890,  890,  890,  890,  890,
2837
     1131,  197, 1122,  890,  890,  890,  890,  890,  890,  890,
2838
      890,  890,  890,  890,  890,  890,  890,  890,  890,  890,
2839
      890,  890,  890,  890,  890,  890,  890,  890,  890,  890,
2840
      890,  890,  890,  890,  890,  890,  890,  890,  890,  890,
2841
2842
      890,  890,  890,  890,  890,  890,  890,  915,  195,  194,
2843
      193,  915,  915,  915,  915,  915,  915,  915,  915,  915,
2844
      915,  915,  192,  915,  191,  190,  915,  915,  915,  915,
2845
      915,  915,  915,  915,  915,  915,  915,  915,  915,  915,
2846
      915,  915,  915,  915,  915,  915,  915,  915,  915,  189,
2847
      188,  915,  915,  915,  915,  915,  915,  915,  915,  915,
2848
      915,  915,  915,  915,  915,  915,  915,  915,  915,  927,
2849
      927,  927,  927,  927,  927,  927,  927,  927,  927,  927,
2850
     1096,  187, 1096, 1096, 1096, 1096, 1096, 1096, 1096, 1096,
2851
     1096, 1096, 1097,  186, 1097, 1097, 1097, 1097, 1097, 1097,
2852
2853
     1097, 1097, 1097, 1097,  181,  177,  176,  927,  928,  928,
2854
      928,  928,  928,  928,  928,  928,  928,  928,  928, 1098,
2855
      172, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098,
2856
     1098, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1103,
2857
     1103,  169,  165,  162,  159,  155,  928,  930, 1170, 1187,
2858
      930,  150, 1170, 1187,  149,  148,  930,  930,  147,  146,
2859
      930,  930,  145,  930,  930,  930,  930,  930,  930,  930,
2860
      930,  930,  930,  930,  930,  930, 1170, 1187,  141,  930,
2861
      930,  930,  930,  930,  930,  930,  930,  930,  930,  930,
2862
      930,  930,  930,  930,  930,  930,  930,  930,  930,  930,
2863
2864
      930,  930,  930,  930,  930,  930,  930,  930,  930,  930,
2865
      930,  930,  930,  930,  930,  930,  930,  930,  930,  930,
2866
      930,  930,  930,  940,  135,  940,  940,  940,  940,  940,
2867
      940,  940,  940,  940,  940, 1107,  133, 1107, 1107, 1107,
2868
     1107, 1107, 1107,  129,  124,  123,  122, 1107, 1109, 1109,
2869
     1109, 1109, 1109, 1109, 1109, 1109, 1109, 1109, 1324, 1324,
2870
      121,  120,  940,  941, 1324,  941,  941,  941,  941,  941,
2871
      941,  941,  941,  941,  941, 1111,  119, 1111, 1111, 1111,
2872
     1111, 1111, 1111, 1111, 1111, 1111, 1111, 1113, 1113, 1113,
2873
     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1325, 1325,
2874
2875
      115,  102,  941,  942, 1325,  942,  942,  942,  942,  942,
2876
      942,  942,  942,  942,  942, 1114, 1114, 1114, 1114, 1114,
2877
     1114, 1114, 1114, 1114, 1114, 1114, 1126, 1126, 1126, 1126,
2878
     1126, 1126, 1126, 1126, 1126, 1126,   95,   88, 1326, 1326,
2879
       87,   80,  942,  943, 1326,  943,  943,  943,  943,  943,
2880
      943,  943,  943,  943,  943, 1127, 1127, 1127, 1127, 1127,
2881
     1127, 1127, 1127, 1127, 1127, 1128,   79, 1128, 1128, 1128,
2882
     1128, 1128, 1128, 1128, 1128, 1128, 1128,   74, 1329, 1329,
2883
       73,   72,  943,  953, 1329,  953,  953,  953,  953,  953,
2884
      953,  953,  953,  953,  953,  953,  956,   71,  956,  956,
2885
2886
      956,  956,  956,  956,  956,  956,  956,  956,  956,   66,
2887
       64,   54,  956,  956,  956,  956,  956,  956, 1129,   53,
2888
     1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129, 1129,
2889
     1149,   51, 1149, 1149, 1149, 1149, 1149, 1149,  956,  956,
2890
      956,  956,  956,  956,  959,  959,  959,  959,  959,  959,
2891
      959,  959,  959,  959,  959,   50,   48,   38,  959,  959,
2892
      959,  959,  959,  959, 1130,   32, 1130, 1130, 1130, 1130,
2893
     1130, 1130, 1130, 1130, 1130, 1130, 1169,   26, 1169, 1169,
2894
     1169, 1169, 1169, 1169,  959,  959,  959,  959,  959,  959,
2895
      971,  971,  971,  971,  971,  971,  971,  971,  971,  971,
2896
2897
      971,  971, 1007,   25, 1007, 1007, 1007, 1007, 1007, 1007,
2898
     1007, 1007, 1007, 1007,   22, 1137,   21,    0, 1144, 1137,
2899
     1144, 1144, 1144, 1144, 1144, 1144, 1138,    0,    0,    0,
2900
     1138, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140,
2901
     1140, 1007, 1008, 1137, 1008, 1008, 1008, 1008, 1008, 1008,
2902
     1008, 1008, 1008, 1008, 1138,    0, 1215, 1144, 1215, 1215,
2903
     1215, 1215, 1215, 1215, 1137, 1330, 1330,    0, 1140,    0,
2904
        0, 1330, 1331, 1331, 1347, 1138,    0, 1347, 1331, 1347,
2905
        0, 1008, 1009,    0, 1009, 1009, 1009, 1009, 1009, 1009,
2906
     1009, 1009, 1009, 1009, 1145, 1145, 1145, 1145, 1145, 1145,
2907
2908
     1145, 1145, 1145, 1145, 1147,    0, 1147, 1147, 1147, 1147,
2909
     1147, 1147, 1147, 1147, 1147, 1147,    0,    0,    0, 1163,
2910
        0, 1009, 1010, 1163, 1010, 1010, 1010, 1010, 1010, 1010,
2911
     1010, 1010, 1010, 1010, 1148,    0, 1148, 1148, 1148, 1148,
2912
     1148, 1148, 1148, 1148, 1148, 1148, 1155, 1163, 1155, 1155,
2913
     1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155,    0,    0,
2914
        0, 1010, 1019,    0, 1019, 1019, 1019, 1019, 1019, 1019,
2915
     1019, 1019, 1019, 1019,    0,    0, 1163, 1165, 1165, 1165,
2916
     1165, 1165, 1165, 1165, 1165, 1165, 1165, 1167,    0, 1167,
2917
     1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167,    0,
2918
2919
        0, 1019, 1020,    0, 1020, 1020, 1020, 1020, 1020, 1020,
2920
     1020, 1020, 1020, 1020, 1168,    0, 1168, 1168, 1168, 1168,
2921
     1168, 1168, 1168, 1168, 1168, 1168,    0,    0,    0,    0,
2922
        0, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
2923
     1171, 1020, 1034,    0, 1034, 1034, 1034, 1034, 1034, 1034,
2924
     1034, 1034, 1034, 1034, 1034, 1037,    0, 1037, 1037, 1037,
2925
     1037, 1037, 1037, 1037, 1037, 1037, 1037, 1037, 1171,    0,
2926
        0, 1037, 1037, 1037, 1037, 1037, 1037, 1175,    0, 1175,
2927
     1175, 1175, 1175, 1175, 1175, 1176, 1334, 1334,    0, 1176,
2928
     1335, 1335, 1334,    0,    0,    0, 1335, 1037, 1037, 1037,
2929
2930
     1037, 1037, 1037, 1040, 1040, 1040, 1040, 1040, 1040, 1040,
2931
     1040, 1040, 1040, 1176,    0,    0, 1175, 1040, 1040, 1040,
2932
     1040, 1040, 1040, 1180, 1180, 1180, 1180, 1180, 1180, 1180,
2933
     1180, 1180, 1180,    0, 1176, 1342, 1342,    0,    0,    0,
2934
        0, 1342,    0, 1040, 1040, 1040, 1040, 1040, 1040, 1085,
2935
        0, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085,
2936
     1085, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181, 1181,
2937
     1181, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1182,
2938
     1182, 1350, 1350,    0, 1357, 1357,    0, 1350, 1085, 1086,
2939
     1357, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086,
2940
2941
     1086, 1193,    0, 1193, 1193, 1193, 1193, 1193, 1193, 1193,
2942
     1193, 1193, 1193, 1194,    0, 1194, 1194, 1194, 1194, 1194,
2943
     1194, 1194, 1194, 1194, 1194,    0,    0,    0, 1086, 1093,
2944
        0, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093,
2945
     1093, 1195,    0, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
2946
     1195, 1195, 1195, 1199, 1199, 1199, 1199, 1199, 1199, 1199,
2947
     1199, 1199, 1199,    0, 1360, 1360,    0,    0, 1093, 1094,
2948
     1360, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094, 1094,
2949
     1094,    0, 1203,    0, 1203, 1203, 1203, 1203, 1203, 1203,
2950
     1199, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205, 1205,
2951
2952
     1205, 1362, 1362,    0,    0,    0,    0, 1362, 1094, 1095,
2953
        0, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095,
2954
     1095, 1203, 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1206,
2955
     1206, 1206, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
2956
     1211, 1211,    0,    0,    0,    0,    0,    0, 1095, 1105,
2957
        0, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105, 1105,
2958
     1105, 1105, 1108,    0, 1108, 1108, 1108, 1108, 1108, 1108,
2959
     1108, 1108, 1108, 1108,    0,    0,    0,    0, 1108, 1108,
2960
     1108, 1108, 1108, 1108, 1213,    0, 1213, 1213, 1213, 1213,
2961
     1213, 1213, 1213, 1213, 1213, 1213,    0,    0,    0,    0,
2962
2963
        0,    0,    0,    0, 1108, 1108, 1108, 1108, 1108, 1108,
2964
     1134,    0, 1134, 1134, 1134, 1134, 1134, 1134, 1134, 1134,
2965
     1134, 1134, 1214,    0, 1214, 1214, 1214, 1214, 1214, 1214,
2966
     1214, 1214, 1214, 1214, 1216, 1216, 1216, 1216, 1216, 1216,
2967
     1216, 1216, 1216, 1216,    0,    0,    0,    0,    0, 1134,
2968
     1135,    0, 1135, 1135, 1135, 1135, 1135, 1135, 1135, 1135,
2969
     1135, 1135,    0, 1220,    0, 1220, 1220, 1220, 1220, 1220,
2970
     1220, 1216, 1221, 1221, 1221, 1221, 1221, 1221, 1221, 1221,
2971
     1221, 1221,    0, 1233, 1233, 1233, 1233, 1233, 1233, 1135,
2972
     1136,    0, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
2973
2974
     1136, 1136, 1220,    0,    0,    0,    0,    0,    0, 1221,
2975
     1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222,
2976
     1233,    0,    0,    0,    0,    0,    0,    0,    0, 1136,
2977
     1142,    0, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142,
2978
     1142, 1142,    0,    0,    0,    0,    0, 1222, 1223, 1223,
2979
     1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1225, 1225,
2980
     1225, 1225, 1225, 1225, 1225, 1225, 1225, 1225,    0, 1142,
2981
     1143,    0, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143,
2982
     1143, 1143,    0,    0,    0, 1223, 1226, 1226, 1226, 1226,
2983
     1226, 1226, 1226, 1226, 1226, 1226, 1227, 1227, 1227, 1227,
2984
2985
     1227, 1227, 1227, 1227, 1227, 1227,    0,    0,    0, 1143,
2986
     1173,    0, 1173, 1173, 1173, 1173, 1173, 1173, 1173, 1173,
2987
     1173, 1173,    0,    0,    0, 1228, 1228, 1228, 1228, 1228,
2988
     1228, 1228, 1228, 1228, 1228, 1229, 1229, 1229, 1229, 1229,
2989
     1229, 1229, 1229, 1229, 1229,    0,    0,    0,    0, 1173,
2990
     1174,    0, 1174, 1174, 1174, 1174, 1174, 1174, 1174, 1174,
2991
     1174, 1174, 1228,    0,    0, 1240, 1240, 1240, 1240, 1240,
2992
     1240,    0, 1229, 1230, 1230, 1230, 1230, 1230, 1230, 1230,
2993
     1230, 1230, 1230,    0,    0,    0,    0,    0,    0, 1174,
2994
     1177,    0, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177,
2995
2996
     1177, 1177, 1240,    0,    0,    0,    0,    0,    0,    0,
2997
     1230, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232,
2998
     1232,    0,    0,    0,    0,    0,    0,    0,    0, 1177,
2999
     1178,    0, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178,
3000
     1178, 1178,    0,    0,    0,    0,    0,    0, 1232, 1236,
3001
     1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1236, 1239,
3002
     1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1239, 1178,
3003
     1179,    0, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179,
3004
     1179, 1179,    0,    0,    0,    0,    0,    0,    0,    0,
3005
        0,    0,    0,    0,    0,    0, 1239,    0,    0,    0,
3006
3007
        0,    0,    0,    0,    0,    0,    0,    0,    0, 1179,
3008
     1196,    0, 1196, 1196, 1196, 1196, 1196, 1196, 1196, 1196,
3009
     1196, 1196,    0,    0,    0,    0,    0,    0,    0,    0,
3010
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
3011
        0,    0,    0,    0,    0,    0,    0,    0,    0, 1196,
3012
     1197,    0, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197,
3013
     1197, 1197,    0,    0,    0,    0,    0,    0,    0,    0,
3014
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
3015
        0,    0,    0,    0,    0,    0,    0,    0,    0, 1197,
3016
     1198,    0, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198,
3017
3018
     1198, 1198,    0,    0,    0,    0,    0,    0,    0,    0,
3019
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
3020
        0,    0,    0,    0,    0,    0,    0,    0,    0, 1198,
3021
     1201,    0, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1201,
3022
     1201, 1201,    0,    0,    0,    0,    0,    0,    0,    0,
3023
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
3024
        0,    0,    0,    0,    0,    0,    0,    0,    0, 1201,
3025
     1202,    0, 1202, 1202, 1202, 1202, 1202, 1202, 1202, 1202,
3026
     1202, 1202,    0,    0,    0,    0,    0,    0,    0,    0,
3027
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
3028
3029
        0,    0,    0,    0,    0,    0,    0,    0,    0, 1202,
3030
     1218,    0, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218,
3031
     1218, 1218,    0,    0,    0,    0,    0,    0,    0,    0,
3032
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
3033
        0,    0,    0,    0,    0,    0,    0,    0,    0, 1218,
3034
     1219,    0, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
3035
     1219, 1219,    0,    0,    0,    0,    0,    0,    0,    0,
3036
        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
3037
        0,    0,    0,    0,    0,    0,    0,    0,    0, 1219,
3038
     1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242,
3039
3040
     1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242,
3041
     1242, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243,
3042
     1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243, 1243,
3043
     1243, 1243, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244,
3044
     1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244, 1244,
3045
     1244, 1244, 1244, 1245, 1245, 1245, 1245, 1245, 1245, 1245,
3046
     1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245, 1245,
3047
     1245, 1245, 1245, 1245, 1246, 1246, 1246, 1246, 1246, 1246,
3048
     1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246, 1246,
3049
     1246, 1246, 1246, 1246, 1246, 1247, 1247, 1247, 1247, 1247,
3050
3051
     1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247, 1247,
3052
     1247, 1247, 1247, 1247, 1247, 1247, 1248,    0,    0, 1248,
3053
        0,    0,    0, 1248,    0, 1248,    0, 1248, 1248, 1248,
3054
        0,    0, 1248, 1248, 1248, 1248, 1248, 1249, 1249, 1249,
3055
     1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249,
3056
     1249, 1249, 1249, 1249, 1249, 1249, 1249, 1249, 1250,    0,
3057
        0, 1250,    0,    0, 1250, 1250,    0, 1250,    0, 1250,
3058
     1250, 1250, 1250,    0, 1250, 1250, 1250, 1250, 1250, 1251,
3059
        0,    0, 1251,    0,    0,    0, 1251,    0, 1251,    0,
3060
     1251, 1251, 1251,    0,    0, 1251, 1251, 1251, 1251, 1251,
3061
3062
     1252,    0,    0, 1252, 1252, 1252,    0, 1252, 1252, 1252,
3063
        0, 1252, 1252, 1252,    0,    0, 1252, 1252, 1252, 1252,
3064
     1252, 1254, 1254,    0, 1254, 1254, 1254,    0, 1254, 1254,
3065
     1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254, 1254,
3066
     1254, 1254, 1255,    0,    0, 1255, 1255, 1255,    0, 1255,
3067
     1255, 1255,    0, 1255, 1255, 1255,    0,    0, 1255, 1255,
3068
     1255, 1255, 1255, 1256, 1256,    0, 1256, 1256, 1256,    0,
3069
     1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256, 1256,
3070
     1256, 1256, 1256, 1256, 1257,    0,    0, 1257, 1257, 1257,
3071
        0, 1257, 1257, 1257,    0, 1257, 1257, 1257,    0, 1257,
3072
3073
     1257,    0, 1257, 1257, 1257, 1258, 1258,    0, 1258, 1258,
3074
     1258,    0,    0, 1258, 1258, 1258, 1258, 1258, 1258, 1258,
3075
     1258, 1258,    0, 1258, 1258, 1258, 1259, 1259, 1259, 1259,
3076
     1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259, 1259,
3077
     1259, 1259, 1259, 1259, 1259, 1259, 1259, 1261,    0,    0,
3078
     1261, 1261,    0,    0, 1261, 1261, 1261,    0, 1261, 1261,
3079
     1261, 1261,    0, 1261, 1261, 1261, 1261, 1261, 1262, 1262,
3080
     1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262,
3081
     1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1262, 1263,
3082
     1263,    0, 1263, 1263,    0, 1263, 1263, 1263, 1263, 1263,
3083
3084
     1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263,
3085
     1264,    0,    0, 1264,    0,    0, 1264, 1264,    0, 1264,
3086
        0, 1264, 1264, 1264, 1264,    0, 1264, 1264, 1264, 1264,
3087
     1264, 1265,    0,    0, 1265,    0,    0,    0, 1265,    0,
3088
     1265,    0, 1265, 1265, 1265,    0, 1265, 1265, 1265, 1265,
3089
     1265, 1265, 1266,    0,    0, 1266, 1266, 1266,    0, 1266,
3090
     1266, 1266,    0, 1266, 1266, 1266,    0, 1266, 1266, 1266,
3091
     1266, 1266, 1266, 1267, 1267,    0, 1267, 1267, 1267,    0,
3092
     1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267,
3093
     1267, 1267, 1267, 1267, 1268,    0,    0,    0, 1268, 1268,
3094
3095
     1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268,
3096
     1268, 1268, 1268, 1268, 1268, 1269,    0,    0, 1269,    0,
3097
        0,    0, 1269,    0, 1269,    0, 1269, 1269, 1269,    0,
3098
        0, 1269, 1269, 1269, 1269, 1269, 1270,    0,    0, 1270,
3099
        0,    0, 1270, 1270,    0, 1270,    0, 1270, 1270, 1270,
3100
     1270,    0, 1270, 1270, 1270, 1270, 1270, 1271,    0,    0,
3101
     1271,    0,    0,    0, 1271,    0, 1271,    0, 1271, 1271,
3102
     1271,    0,    0, 1271, 1271, 1271, 1271, 1271, 1272,    0,
3103
        0, 1272, 1272, 1272,    0, 1272, 1272, 1272,    0, 1272,
3104
     1272, 1272,    0,    0, 1272, 1272, 1272, 1272, 1272, 1273,
3105
3106
     1273,    0, 1273, 1273, 1273,    0, 1273, 1273, 1273, 1273,
3107
     1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273, 1273,
3108
     1274,    0,    0, 1274,    0,    0,    0, 1274,    0, 1274,
3109
        0, 1274, 1274, 1274,    0,    0, 1274, 1274, 1274, 1274,
3110
     1274, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275,
3111
     1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275,
3112
     1275, 1275, 1276, 1276,    0, 1276, 1276, 1276, 1276, 1276,
3113
     1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276,
3114
     1276, 1276, 1276, 1277,    0,    0, 1277,    0,    0,    0,
3115
     1277,    0, 1277,    0, 1277, 1277, 1277,    0,    0, 1277,
3116
3117
     1277, 1277, 1277, 1277, 1278,    0,    0, 1278,    0,    0,
3118
        0, 1278,    0, 1278,    0, 1278, 1278, 1278,    0,    0,
3119
     1278, 1278, 1278, 1278, 1278, 1279,    0,    0, 1279, 1279,
3120
     1279,    0, 1279, 1279, 1279,    0, 1279, 1279, 1279,    0,
3121
        0, 1279, 1279, 1279, 1279, 1279, 1280,    0,    0, 1280,
3122
     1280, 1280,    0, 1280, 1280, 1280,    0, 1280, 1280, 1280,
3123
        0,    0, 1280, 1280, 1280, 1280, 1280, 1283, 1283, 1283,
3124
        0,    0,    0,    0, 1283, 1284, 1284,    0, 1284, 1284,
3125
     1284,    0, 1284, 1284, 1284, 1284, 1284, 1284, 1284, 1284,
3126
     1284, 1284, 1284, 1284, 1284, 1284, 1285, 1285,    0, 1285,
3127
3128
     1285, 1285,    0, 1285, 1285, 1285, 1285, 1285, 1285, 1285,
3129
     1285, 1285, 1285, 1285, 1285, 1285, 1285, 1286,    0,    0,
3130
     1286, 1286, 1286,    0, 1286, 1286, 1286,    0, 1286, 1286,
3131
     1286,    0,    0, 1286, 1286, 1286, 1286, 1286, 1287,    0,
3132
        0, 1287, 1287, 1287,    0, 1287, 1287, 1287,    0, 1287,
3133
     1287, 1287,    0,    0, 1287, 1287, 1287, 1287, 1287, 1288,
3134
     1288,    0, 1288, 1288, 1288,    0, 1288, 1288, 1288, 1288,
3135
     1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288, 1288,
3136
     1289, 1289,    0, 1289, 1289, 1289,    0, 1289, 1289, 1289,
3137
     1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289,
3138
3139
     1289, 1290,    0,    0, 1290, 1290, 1290,    0, 1290, 1290,
3140
     1290,    0, 1290, 1290, 1290,    0, 1290, 1290,    0, 1290,
3141
     1290, 1290, 1291, 1291,    0, 1291, 1291, 1291,    0,    0,
3142
     1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291,    0,
3143
     1291, 1291, 1291, 1293,    0,    0, 1293, 1293,    0,    0,
3144
     1293, 1293, 1293,    0, 1293, 1293, 1293, 1293,    0, 1293,
3145
     1293, 1293, 1293, 1293, 1294, 1294,    0, 1294, 1294,    0,
3146
     1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294,
3147
     1294, 1294, 1294, 1294, 1294, 1295,    0,    0, 1295,    0,
3148
        0,    0, 1295,    0, 1295,    0, 1295, 1295, 1295,    0,
3149
3150
        0, 1295, 1295, 1295, 1295, 1295, 1296,    0,    0, 1296,
3151
        0,    0,    0, 1296,    0, 1296,    0, 1296, 1296, 1296,
3152
        0, 1296, 1296, 1296, 1296, 1296, 1296, 1297,    0,    0,
3153
     1297, 1297,    0, 1297, 1297,    0,    0, 1297, 1297, 1298,
3154
        0,    0, 1298, 1298, 1298,    0, 1298, 1298, 1298,    0,
3155
     1298, 1298, 1298,    0, 1298, 1298, 1298, 1298, 1298, 1298,
3156
     1300,    0,    0,    0, 1300, 1300, 1300, 1300, 1300, 1300,
3157
     1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300, 1300,
3158
     1300, 1301,    0,    0, 1301,    0,    0,    0, 1301,    0,
3159
     1301,    0, 1301, 1301, 1301,    0,    0, 1301, 1301, 1301,
3160
3161
     1301, 1301, 1302,    0,    0, 1302,    0,    0,    0, 1302,
3162
        0, 1302,    0, 1302, 1302, 1302,    0,    0, 1302, 1302,
3163
     1302, 1302, 1302, 1303,    0,    0, 1303,    0,    0,    0,
3164
     1303,    0, 1303,    0, 1303, 1303, 1303,    0,    0, 1303,
3165
     1303, 1303, 1303, 1303, 1304,    0,    0, 1304, 1304, 1304,
3166
        0, 1304, 1304, 1304,    0, 1304, 1304, 1304,    0,    0,
3167
     1304, 1304, 1304, 1304, 1304, 1305,    0,    0, 1305, 1305,
3168
     1305,    0, 1305, 1305, 1305,    0, 1305, 1305, 1305,    0,
3169
        0, 1305, 1305, 1305, 1305, 1305, 1306, 1306,    0, 1306,
3170
     1306, 1306,    0, 1306, 1306, 1306, 1306, 1306, 1306, 1306,
3171
3172
     1306, 1306, 1306, 1306, 1306, 1306, 1306, 1307, 1307, 1307,
3173
     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
3174
     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1308, 1308,
3175
     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308,
3176
     1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1308, 1309,
3177
        0,    0, 1309,    0,    0,    0, 1309,    0, 1309,    0,
3178
     1309, 1309, 1309,    0,    0, 1309, 1309, 1309, 1309, 1309,
3179
     1311, 1311, 1311,    0,    0,    0,    0, 1311, 1312, 1312,
3180
        0, 1312, 1312, 1312,    0, 1312, 1312, 1312, 1312, 1312,
3181
     1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1313,
3182
3183
     1313,    0, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313,
3184
     1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313, 1313,
3185
     1314, 1314,    0, 1314, 1314, 1314,    0, 1314, 1314, 1314,
3186
     1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314,
3187
     1314, 1315, 1315,    0, 1315, 1315, 1315,    0, 1315, 1315,
3188
     1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315,
3189
     1315, 1315, 1319, 1319, 1319,    0,    0,    0,    0, 1319,
3190
     1320, 1320, 1320,    0,    0,    0,    0, 1320, 1321, 1321,
3191
     1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321,
3192
     1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1321, 1322,
3193
3194
     1322,    0, 1322, 1322, 1322,    0, 1322, 1322, 1322, 1322,
3195
     1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322,
3196
     1327, 1327, 1327,    0,    0,    0,    0, 1327, 1328, 1328,
3197
     1328, 1328,    0,    0,    0,    0, 1328, 1332, 1332, 1332,
3198
        0,    0,    0,    0, 1332, 1333, 1333, 1333, 1333,    0,
3199
        0,    0,    0, 1333, 1336, 1336, 1336,    0,    0,    0,
3200
        0, 1336, 1337, 1337, 1337, 1337,    0,    0,    0,    0,
3201
     1337, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338,
3202
     1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338, 1338,
3203
     1338, 1338, 1340,    0,    0, 1340, 1340,    0, 1340, 1340,
3204
3205
        0,    0, 1340, 1340, 1341,    0,    0, 1341,    0,    0,
3206
        0, 1341,    0, 1341,    0, 1341, 1341, 1341,    0,    0,
3207
     1341, 1341, 1341, 1341, 1341, 1343,    0, 1343, 1343,    0,
3208
        0,    0,    0, 1343, 1344, 1344, 1344,    0,    0,    0,
3209
        0, 1344, 1345, 1345, 1345, 1345,    0,    0,    0,    0,
3210
     1345, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346,
3211
     1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346, 1346,
3212
     1346, 1346, 1348,    0,    0, 1348, 1348,    0, 1348, 1348,
3213
        0,    0, 1348, 1348, 1349,    0,    0, 1349,    0,    0,
3214
        0, 1349,    0, 1349,    0, 1349, 1349, 1349,    0,    0,
3215
3216
     1349, 1349, 1349, 1349, 1349, 1351,    0, 1351, 1351,    0,
3217
        0,    0,    0, 1351, 1352, 1352, 1352,    0,    0,    0,
3218
        0, 1352, 1353, 1353, 1353,    0,    0,    0,    0,    0,
3219
     1353, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354,
3220
     1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354,
3221
     1354, 1354, 1355, 1355,    0, 1355, 1355, 1355, 1355, 1355,
3222
        0, 1355,    0, 1355, 1355, 1355,    0,    0, 1355, 1355,
3223
     1355, 1355, 1355, 1356, 1356,    0, 1356, 1356, 1356, 1356,
3224
     1356,    0, 1356,    0, 1356, 1356, 1356,    0,    0, 1356,
3225
     1356, 1356, 1356, 1356, 1358,    0, 1358, 1358,    0,    0,
3226
3227
        0,    0, 1358, 1361,    0, 1361, 1361,    0,    0,    0,
3228
        0, 1361, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364,
3229
     1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364,
3230
     1364, 1364, 1364, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
3231
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
3232
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
3233
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
3234
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
3235
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
3236
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
3237
3238
     1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241
3239
    } ;
3240
3241
static yy_state_type yy_last_accepting_state;
3242
static char *yy_last_accepting_cpos;
3243
3244
extern int yy_flex_debug;
3245
int yy_flex_debug = 0;
3246
3247
/* The intent behind this definition is that it'll catch
3248
 * any uses of REJECT which flex missed.
3249
 */
3250
#define REJECT reject_used_but_not_detected
3251
#define yymore() yymore_used_but_not_detected
3252
590
#define YY_MORE_ADJ 0
3253
#define YY_RESTORE_YY_MORE_OFFSET
3254
char *yytext;
3255
#line 1 "toke.l"
3256
#line 2 "toke.l"
3257
/*
3258
 * SPDX-License-Identifier: ISC
3259
 *
3260
 * Copyright (c) 1996, 1998-2005, 2007-2025
3261
 *  Todd C. Miller <Todd.Miller@sudo.ws>
3262
 *
3263
 * Permission to use, copy, modify, and distribute this software for any
3264
 * purpose with or without fee is hereby granted, provided that the above
3265
 * copyright notice and this permission notice appear in all copies.
3266
 *
3267
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
3268
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
3269
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
3270
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
3271
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
3272
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
3273
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
3274
 *
3275
 * Sponsored in part by the Defense Advanced Research Projects
3276
 * Agency (DARPA) and Air Force Research Laboratory, Air Force
3277
 * Materiel Command, USAF, under agreement number F39502-99-1-0512.
3278
 */
3279
3280
#include <config.h>
3281
3282
#include <sys/types.h>
3283
#include <sys/stat.h>
3284
#include <stdio.h>
3285
#include <stdlib.h>
3286
#include <string.h>
3287
#if defined(HAVE_STDINT_H)
3288
# include <stdint.h>
3289
#elif defined(HAVE_INTTYPES_H)
3290
# include <inttypes.h>
3291
#endif
3292
#include <unistd.h>
3293
#include <dirent.h>
3294
#include <errno.h>
3295
#include <ctype.h>
3296
#include <sudoers.h>
3297
#include <toke.h>
3298
#include <gram.h>
3299
#include <sudo_digest.h>
3300
#include <sudo_lbuf.h>
3301
3302
#if defined(HAVE_STRUCT_DIRENT_D_NAMLEN) && HAVE_STRUCT_DIRENT_D_NAMLEN
3303
# define NAMLEN(dirent) (dirent)->d_namlen
3304
#else
3305
0
# define NAMLEN(dirent) strlen((dirent)->d_name)
3306
#endif
3307
3308
// PVS Studio suppression
3309
// -V::519, 547, 1004, 1037, 1048
3310
3311
int sudolineno;     /* current sudoers line number. */
3312
char *sudoers;      /* sudoers file being parsed. */
3313
char *sudoers_search_path;  /* colon-separated path of sudoers files. */
3314
const char *sudoers_errstr; /* description of last error from lexer. */
3315
struct sudolinebuf sudolinebuf; /* sudoers line being parsed. */
3316
3317
static bool continued, sawspace;
3318
static int prev_state;
3319
static unsigned int digest_type = SUDO_DIGEST_INVALID;
3320
3321
static bool pop_include(void);
3322
static int sudoers_input(char *buf, yy_size_t max_size);
3323
3324
#ifndef TRACELEXER
3325
static struct sudo_lbuf trace_lbuf;
3326
#endif
3327
3328
int (*trace_print)(const char *msg) = sudoers_trace_print;
3329
3330
0
#define ECHO  ignore_result(fwrite(sudoerstext, (size_t)sudoersleng, 1, sudoersout))
3331
3332
294
#define YY_INPUT(buf, result, max_size) (result) = sudoers_input(buf, (yy_size_t)(max_size))
3333
3334
247k
#define YY_USER_ACTION do {         \
3335
247k
  sudolinebuf.toke_start = sudolinebuf.toke_end;    \
3336
247k
  sudolinebuf.toke_end += (size_t)sudoersleng;    \
3337
247k
} while (0);
3338
3339
2
#define sudoersless(n) do {         \
3340
2
  sudolinebuf.toke_end = sudolinebuf.toke_start + (size_t)(n);  \
3341
2
  yyless((int)n);           \
3342
2
} while (0);
3343
3344
#line 3344 "toke.c"
3345
#define YY_NO_INPUT 1
3346
3347
#line 3347 "toke.c"
3348
3349
91.8k
#define INITIAL 0
3350
0
#define GOTDEFS 1
3351
1
#define GOTCMND 2
3352
1
#define GOTREGEX 3
3353
0
#define STARTDEFS 4
3354
0
#define INDEFS 5
3355
33
#define INSTR 6
3356
0
#define WANTDIGEST 7
3357
0
#define GOTINC 8
3358
0
#define EXPECTPATH 9
3359
3360
#ifndef YY_NO_UNISTD_H
3361
/* Special case for "unistd.h", since it is non-ANSI. We include it way
3362
 * down here because we want the user's section 1 to have been scanned first.
3363
 * The user has a chance to override it with an option.
3364
 */
3365
#include <unistd.h>
3366
#endif
3367
3368
#ifndef YY_EXTRA_TYPE
3369
#define YY_EXTRA_TYPE void *
3370
#endif
3371
3372
static int yy_init_globals ( void );
3373
3374
/* Accessor methods to globals.
3375
   These are made visible to non-reentrant scanners for convenience. */
3376
3377
int yylex_destroy ( void );
3378
3379
int yyget_debug ( void );
3380
3381
void yyset_debug ( int debug_flag  );
3382
3383
YY_EXTRA_TYPE yyget_extra ( void );
3384
3385
void yyset_extra ( YY_EXTRA_TYPE user_defined  );
3386
3387
FILE *yyget_in ( void );
3388
3389
void yyset_in  ( FILE * _in_str  );
3390
3391
FILE *yyget_out ( void );
3392
3393
void yyset_out  ( FILE * _out_str  );
3394
3395
      int yyget_leng ( void );
3396
3397
char *yyget_text ( void );
3398
3399
int yyget_lineno ( void );
3400
3401
void yyset_lineno ( int _line_number  );
3402
3403
/* Macros after this point can all be overridden by user definitions in
3404
 * section 1.
3405
 */
3406
3407
#ifndef YY_SKIP_YYWRAP
3408
#ifdef __cplusplus
3409
extern "C" int yywrap ( void );
3410
#else
3411
extern int yywrap ( void );
3412
#endif
3413
#endif
3414
3415
#ifndef YY_NO_UNPUT
3416
    
3417
#endif
3418
3419
#ifndef yytext_ptr
3420
static void yy_flex_strncpy ( char *, const char *, int );
3421
#endif
3422
3423
#ifdef YY_NEED_STRLEN
3424
static int yy_flex_strlen ( const char * );
3425
#endif
3426
3427
#ifndef YY_NO_INPUT
3428
#ifdef __cplusplus
3429
static int yyinput ( void );
3430
#else
3431
static int input ( void );
3432
#endif
3433
3434
#endif
3435
3436
/* Amount of stuff to slurp up with each read. */
3437
#ifndef YY_READ_BUF_SIZE
3438
#ifdef __ia64__
3439
/* On IA-64, the buffer size is 16k, not 8k */
3440
#define YY_READ_BUF_SIZE 16384
3441
#else
3442
585
#define YY_READ_BUF_SIZE 8192
3443
#endif /* __ia64__ */
3444
#endif
3445
3446
/* Copy whatever the last rule matched to the standard output. */
3447
#ifndef ECHO
3448
/* This used to be an fputs(), but since the string might contain NUL's,
3449
 * we now use fwrite().
3450
 */
3451
#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0)
3452
#endif
3453
3454
/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
3455
 * is returned in "result".
3456
 */
3457
#ifndef YY_INPUT
3458
#define YY_INPUT(buf,result,max_size) \
3459
  if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
3460
    { \
3461
    int c = '*'; \
3462
    int n; \
3463
    for ( n = 0; n < max_size && \
3464
           (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
3465
      buf[n] = (char) c; \
3466
    if ( c == '\n' ) \
3467
      buf[n++] = (char) c; \
3468
    if ( c == EOF && ferror( yyin ) ) \
3469
      YY_FATAL_ERROR( "input in flex scanner failed" ); \
3470
    result = n; \
3471
    } \
3472
  else \
3473
    { \
3474
    errno=0; \
3475
    while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \
3476
      { \
3477
      if( errno != EINTR) \
3478
        { \
3479
        YY_FATAL_ERROR( "input in flex scanner failed" ); \
3480
        break; \
3481
        } \
3482
      errno=0; \
3483
      clearerr(yyin); \
3484
      } \
3485
    }\
3486
\
3487
3488
#endif
3489
3490
/* No semi-colon after return; correct usage is to write "yyterminate();" -
3491
 * we don't want an extra ';' after the "return" because that will cause
3492
 * some compilers to complain about unreachable statements.
3493
 */
3494
#ifndef yyterminate
3495
5
#define yyterminate() return YY_NULL
3496
#endif
3497
3498
/* Number of entries by which start-condition stack grows. */
3499
#ifndef YY_START_STACK_INCR
3500
#define YY_START_STACK_INCR 25
3501
#endif
3502
3503
/* Report a fatal error. */
3504
#ifndef YY_FATAL_ERROR
3505
0
#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
3506
#endif
3507
3508
/* end tables serialization structures and prototypes */
3509
3510
/* Default declaration of generated scanner - a define so the user can
3511
 * easily add parameters.
3512
 */
3513
#ifndef YY_DECL
3514
#define YY_DECL_IS_OURS 1
3515
3516
extern int yylex (void);
3517
3518
#define YY_DECL int yylex (void)
3519
#endif /* !YY_DECL */
3520
3521
/* Code executed at the beginning of each rule, after yytext and yyleng
3522
 * have been set up.
3523
 */
3524
#ifndef YY_USER_ACTION
3525
#define YY_USER_ACTION
3526
#endif
3527
3528
/* Code executed at the end of each rule. */
3529
#ifndef YY_BREAK
3530
74.1k
#define YY_BREAK /*LINTED*/break;
3531
#endif
3532
3533
#define YY_RULE_SETUP \
3534
247k
  if ( yyleng > 0 ) \
3535
247k
    YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \
3536
247k
        (yytext[yyleng - 1] == '\n'); \
3537
247k
  YY_USER_ACTION
3538
3539
/** The main scanner function which does all the work.
3540
 */
3541
YY_DECL
3542
172k
{
3543
172k
  yy_state_type yy_current_state;
3544
172k
  char *yy_cp, *yy_bp;
3545
172k
  int yy_act;
3546
    
3547
172k
  if ( !(yy_init) )
3548
1
    {
3549
1
    (yy_init) = 1;
3550
3551
#ifdef YY_USER_INIT
3552
    YY_USER_INIT;
3553
#endif
3554
3555
1
    if ( ! (yy_start) )
3556
0
      (yy_start) = 1; /* first start state */
3557
3558
1
    if ( ! yyin )
3559
0
      yyin = stdin;
3560
3561
1
    if ( ! yyout )
3562
1
      yyout = stdout;
3563
3564
1
    if ( ! YY_CURRENT_BUFFER ) {
3565
0
      yyensure_buffer_stack ();
3566
0
      YY_CURRENT_BUFFER_LVALUE =
3567
0
        yy_create_buffer( yyin, YY_BUF_SIZE );
3568
0
    }
3569
3570
1
    yy_load_buffer_state(  );
3571
1
    }
3572
3573
172k
  {
3574
172k
#line 119 "toke.l"
3575
3576
172k
#line 3576 "toke.c"
3577
3578
247k
  while ( /*CONSTCOND*/1 )    /* loops until end-of-file is reached */
3579
247k
    {
3580
247k
    yy_cp = (yy_c_buf_p);
3581
3582
    /* Support of yytext. */
3583
247k
    *yy_cp = (yy_hold_char);
3584
3585
    /* yy_bp points to the position in yy_ch_buf of the start of
3586
     * the current run.
3587
     */
3588
247k
    yy_bp = yy_cp;
3589
3590
247k
    yy_current_state = (yy_start);
3591
247k
    yy_current_state += YY_AT_BOL();
3592
247k
yy_match:
3593
247k
    do
3594
2.23M
      {
3595
2.23M
      YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ;
3596
2.23M
      if ( yy_accept[yy_current_state] )
3597
1.97M
        {
3598
1.97M
        (yy_last_accepting_state) = yy_current_state;
3599
1.97M
        (yy_last_accepting_cpos) = yy_cp;
3600
1.97M
        }
3601
4.24M
      while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
3602
2.00M
        {
3603
2.00M
        yy_current_state = (int) yy_def[yy_current_state];
3604
2.00M
        if ( yy_current_state >= 1242 )
3605
1.81M
          yy_c = yy_meta[yy_c];
3606
2.00M
        }
3607
2.23M
      yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
3608
2.23M
      ++yy_cp;
3609
2.23M
      }
3610
2.23M
    while ( yy_base[yy_current_state] != 9534 );
3611
3612
247k
yy_find_action:
3613
247k
    yy_act = yy_accept[yy_current_state];
3614
247k
    if ( yy_act == 0 )
3615
122k
      { /* have to back up */
3616
122k
      yy_cp = (yy_last_accepting_cpos);
3617
122k
      yy_current_state = (yy_last_accepting_state);
3618
122k
      yy_act = yy_accept[yy_current_state];
3619
122k
      }
3620
3621
247k
    YY_DO_BEFORE_ACTION;
3622
3623
247k
do_action:  /* This label is used only to access EOF actions. */
3624
3625
247k
    switch ( yy_act )
3626
247k
  { /* beginning of action switch */
3627
0
      case 0: /* must back up */
3628
      /* undo the effects of YY_DO_BEFORE_ACTION */
3629
0
      *yy_cp = (yy_hold_char);
3630
0
      yy_cp = (yy_last_accepting_cpos);
3631
0
      yy_current_state = (yy_last_accepting_state);
3632
0
      goto yy_find_action;
3633
3634
0
case 1:
3635
0
YY_RULE_SETUP
3636
0
#line 120 "toke.l"
3637
0
{
3638
0
          LEXTRACE(", ");
3639
0
          return ',';
3640
0
      }     /* return ',' */
3641
0
  YY_BREAK
3642
0
case 2:
3643
0
YY_RULE_SETUP
3644
0
#line 125 "toke.l"
3645
0
BEGIN STARTDEFS;
3646
0
  YY_BREAK
3647
0
case 3:
3648
0
YY_RULE_SETUP
3649
0
#line 127 "toke.l"
3650
0
{
3651
0
          BEGIN INDEFS;
3652
0
          LEXTRACE("DEFVAR ");
3653
0
          if (!fill(sudoerstext, sudoersleng))
3654
0
        yyterminate();
3655
0
          return DEFVAR;
3656
0
      }
3657
0
  YY_BREAK
3658
3659
0
case 4:
3660
0
YY_RULE_SETUP
3661
0
#line 136 "toke.l"
3662
0
{
3663
0
          BEGIN STARTDEFS;
3664
0
          LEXTRACE(", ");
3665
0
          return ',';
3666
0
      }     /* return ',' */
3667
0
  YY_BREAK
3668
0
case 5:
3669
0
YY_RULE_SETUP
3670
0
#line 142 "toke.l"
3671
0
{
3672
0
          LEXTRACE("= ");
3673
0
          return '=';
3674
0
      }     /* return '=' */
3675
0
  YY_BREAK
3676
0
case 6:
3677
0
YY_RULE_SETUP
3678
0
#line 147 "toke.l"
3679
0
{
3680
0
          LEXTRACE("+= ");
3681
0
          return '+';
3682
0
      }     /* return '+' */
3683
0
  YY_BREAK
3684
0
case 7:
3685
0
YY_RULE_SETUP
3686
0
#line 152 "toke.l"
3687
0
{
3688
0
          LEXTRACE("-= ");
3689
0
          return '-';
3690
0
      }     /* return '-' */
3691
0
  YY_BREAK
3692
0
case 8:
3693
0
YY_RULE_SETUP
3694
0
#line 157 "toke.l"
3695
0
{
3696
0
          LEXTRACE("BEGINSTR ");
3697
0
          sudoerslval.string = NULL;
3698
0
          prev_state = YY_START;
3699
0
          BEGIN INSTR;
3700
0
      }
3701
0
  YY_BREAK
3702
0
case 9:
3703
0
YY_RULE_SETUP
3704
0
#line 164 "toke.l"
3705
0
{
3706
0
          LEXTRACE("WORD(2) ");
3707
0
          if (!fill(sudoerstext, sudoersleng))
3708
0
        yyterminate();
3709
0
          return WORD;
3710
0
      }
3711
0
  YY_BREAK
3712
3713
3714
0
case 10:
3715
/* rule 10 can match eol */
3716
0
YY_RULE_SETUP
3717
0
#line 173 "toke.l"
3718
0
{
3719
          /* Line continuation char followed by newline. */
3720
0
          sudolineno++;
3721
0
          continued = true;
3722
0
      }
3723
0
  YY_BREAK
3724
0
case 11:
3725
0
YY_RULE_SETUP
3726
0
#line 179 "toke.l"
3727
0
{
3728
0
          LEXTRACE("ENDSTR ");
3729
0
          BEGIN prev_state;
3730
3731
0
          if (sudoerslval.string == NULL) {
3732
0
        sudoers_errstr = N_("empty string");
3733
0
        LEXTRACE("ERROR ");
3734
0
        return ERROR;
3735
0
          }
3736
0
          if (prev_state == INITIAL || prev_state == GOTDEFS) {
3737
0
        switch (sudoerslval.string[0]) {
3738
0
        case '%':
3739
0
            if (sudoerslval.string[1] == '\0' ||
3740
0
          (sudoerslval.string[1] == ':' &&
3741
0
          sudoerslval.string[2] == '\0')) {
3742
0
          parser_leak_remove(LEAK_PTR, sudoerslval.string);
3743
0
          free(sudoerslval.string);
3744
0
          sudoers_errstr = N_("empty group");
3745
0
          LEXTRACE("ERROR ");
3746
0
          return ERROR;
3747
0
            }
3748
0
            LEXTRACE("USERGROUP ");
3749
0
            return USERGROUP;
3750
0
        case '+':
3751
0
            if (sudoerslval.string[1] == '\0') {
3752
0
          parser_leak_remove(LEAK_PTR, sudoerslval.string);
3753
0
          free(sudoerslval.string);
3754
0
          sudoers_errstr = N_("empty netgroup");
3755
0
          LEXTRACE("ERROR ");
3756
0
          return ERROR;
3757
0
            }
3758
0
            LEXTRACE("NETGROUP ");
3759
0
            return NETGROUP;
3760
0
        }
3761
0
          }
3762
0
          LEXTRACE("WORD(4) ");
3763
0
          return WORD;
3764
0
      }
3765
0
  YY_BREAK
3766
0
case 12:
3767
0
YY_RULE_SETUP
3768
0
#line 218 "toke.l"
3769
0
{
3770
0
          LEXTRACE("BACKSLASH ");
3771
0
          if (!append(sudoerstext, sudoersleng))
3772
0
        yyterminate();
3773
0
      }
3774
0
  YY_BREAK
3775
0
case 13:
3776
0
YY_RULE_SETUP
3777
0
#line 224 "toke.l"
3778
0
{
3779
0
          LEXTRACE("STRBODY ");
3780
0
          if (!append(sudoerstext, sudoersleng))
3781
0
        yyterminate();
3782
0
      }
3783
0
  YY_BREAK
3784
3785
3786
0
case 14:
3787
0
YY_RULE_SETUP
3788
0
#line 232 "toke.l"
3789
0
{
3790
          /* quoted fnmatch glob char, pass verbatim */
3791
0
          LEXTRACE("QUOTEDCHAR ");
3792
0
          if (!fill_args(sudoerstext, 2, sawspace))
3793
0
        yyterminate();
3794
0
          sawspace = false;
3795
0
      }
3796
0
  YY_BREAK
3797
0
case 15:
3798
0
YY_RULE_SETUP
3799
0
#line 240 "toke.l"
3800
0
{
3801
          /* quoted sudoers special char, strip backslash */
3802
0
          LEXTRACE("QUOTEDCHAR ");
3803
0
          if (!fill_args(sudoerstext + 1, 1, sawspace))
3804
0
        yyterminate();
3805
0
          sawspace = false;
3806
0
      }
3807
0
  YY_BREAK
3808
0
case 16:
3809
/* rule 16 can match eol */
3810
0
YY_RULE_SETUP
3811
0
#line 248 "toke.l"
3812
0
{
3813
0
          BEGIN INITIAL;
3814
0
          sudoersless(0);
3815
0
          yy_set_bol(0);
3816
0
          return COMMAND;
3817
0
      }     /* end of command line args */
3818
0
  YY_BREAK
3819
1
case 17:
3820
1
YY_RULE_SETUP
3821
1
#line 255 "toke.l"
3822
1
{
3823
1
          if (sudoerslval.command.args == NULL && sudoerstext[0] == '^') {
3824
1
        LEXTRACE("ARG REGEX ");
3825
1
        BEGIN GOTREGEX;
3826
1
        sudoersless(0);
3827
1
        yy_set_bol(0);
3828
1
          } else {
3829
0
        LEXTRACE("ARG ");
3830
0
        if (!fill_args(sudoerstext, sudoersleng, sawspace))
3831
0
            yyterminate();
3832
0
        sawspace = false;
3833
0
          }
3834
1
      }     /* a command line arg */
3835
1
  YY_BREAK
3836
3837
3838
43.0k
case 18:
3839
43.0k
YY_RULE_SETUP
3840
43.0k
#line 271 "toke.l"
3841
43.0k
{
3842
          /* quoted character, pass verbatim */
3843
43.0k
          LEXTRACE("QUOTEDCHAR ");
3844
43.0k
          if (!fill_args(sudoerstext, 2, false))
3845
0
        yyterminate();
3846
43.0k
      }
3847
43.0k
  YY_BREAK
3848
43.0k
case 19:
3849
/* rule 19 can match eol */
3850
1
YY_RULE_SETUP
3851
1
#line 278 "toke.l"
3852
1
{
3853
          /* Let the parser attempt to recover. */
3854
1
          sudoersless(0);
3855
1
          yy_set_bol(0);
3856
1
          BEGIN INITIAL;
3857
3858
1
          sudoers_errstr = N_("unterminated regular expression");
3859
1
          LEXTRACE("ERROR ");
3860
1
          return ERROR;
3861
43.0k
      }      /* illegal inside regex */
3862
0
  YY_BREAK
3863
0
case 20:
3864
0
YY_RULE_SETUP
3865
0
#line 289 "toke.l"
3866
0
{
3867
0
          if (!fill_args("$", 1, false))
3868
0
        yyterminate();
3869
0
          BEGIN INITIAL;
3870
0
          continued = false;
3871
0
          if (sudoers_strict()) {
3872
0
        if (!sudo_regex_compile(NULL, sudoerstext, &sudoers_errstr)) {
3873
0
            LEXTRACE("ERROR ");
3874
0
            return ERROR;
3875
0
        }
3876
0
          }
3877
0
          return COMMAND;
3878
0
      }
3879
0
  YY_BREAK
3880
31.0k
case 21:
3881
31.0k
YY_RULE_SETUP
3882
31.0k
#line 303 "toke.l"
3883
31.0k
{
3884
31.0k
          if (continued) {
3885
        /* remove whitespace after line continuation */
3886
0
        while (isblank((unsigned char)*sudoerstext)) {
3887
0
            sudoerstext++;
3888
0
            sudoersleng--;
3889
0
        }
3890
0
        continued = false;
3891
0
          }
3892
31.0k
          if (sudoersleng != 0) {
3893
31.0k
        if (!fill_args(sudoerstext, sudoersleng, false))
3894
0
            yyterminate();
3895
31.0k
          }
3896
31.0k
      }
3897
31.0k
  YY_BREAK
3898
3899
31.0k
case 22:
3900
0
YY_RULE_SETUP
3901
0
#line 319 "toke.l"
3902
0
{
3903
          /* Only return DIGEST if the length is correct. */
3904
0
          size_t digest_len =
3905
0
        sudo_digest_getlen(digest_type);
3906
0
          if ((size_t)sudoersleng == digest_len * 2) {
3907
0
        if (!fill(sudoerstext, sudoersleng))
3908
0
            yyterminate();
3909
0
        BEGIN INITIAL;
3910
0
        LEXTRACE("DIGEST ");
3911
0
        return DIGEST;
3912
0
          }
3913
0
          BEGIN INITIAL;
3914
0
          sudoersless(sudoersleng);
3915
0
      } /* hex digest */
3916
0
  YY_BREAK
3917
0
case 23:
3918
0
YY_RULE_SETUP
3919
0
#line 334 "toke.l"
3920
0
{
3921
          /* Only return DIGEST if the length is correct. */
3922
0
          size_t len, digest_len =
3923
0
        sudo_digest_getlen(digest_type);
3924
0
          if (sudoerstext[sudoersleng - 1] == '=') {
3925
        /* use padding */
3926
0
        len = 4 * ((digest_len + 2) / 3);
3927
0
          } else {
3928
        /* no padding */
3929
0
        len = (4 * digest_len + 2) / 3;
3930
0
          }
3931
0
          if ((size_t)sudoersleng == len) {
3932
0
        if (!fill(sudoerstext, sudoersleng))
3933
0
            yyterminate();
3934
0
        BEGIN INITIAL;
3935
0
        LEXTRACE("DIGEST ");
3936
0
        return DIGEST;
3937
0
          }
3938
0
          BEGIN INITIAL;
3939
0
          sudoersless(sudoersleng);
3940
0
      } /* base64 digest */
3941
0
  YY_BREAK
3942
0
case 24:
3943
0
YY_RULE_SETUP
3944
0
#line 356 "toke.l"
3945
0
{
3946
0
          if (continued) {
3947
0
        sudoers_errstr = N_("invalid line continuation");
3948
0
        LEXTRACE("ERROR ");
3949
0
        return ERROR;
3950
0
          }
3951
3952
0
          BEGIN GOTINC;
3953
0
          LEXTRACE("INCLUDE ");
3954
0
          return INCLUDE;
3955
0
      }
3956
0
  YY_BREAK
3957
0
case 25:
3958
0
YY_RULE_SETUP
3959
0
#line 368 "toke.l"
3960
0
{
3961
0
          if (continued) {
3962
0
        sudoers_errstr = N_("invalid line continuation");
3963
0
        LEXTRACE("ERROR ");
3964
0
        return ERROR;
3965
0
          }
3966
3967
0
          BEGIN GOTINC;
3968
0
          LEXTRACE("INCLUDEDIR ");
3969
0
          return INCLUDEDIR;
3970
0
      }
3971
0
  YY_BREAK
3972
0
case 26:
3973
/* rule 26 can match eol */
3974
0
YY_RULE_SETUP
3975
0
#line 380 "toke.l"
3976
0
{
3977
0
          if (continued) {
3978
0
        sudoers_errstr = N_("invalid line continuation");
3979
0
        LEXTRACE("ERROR ");
3980
0
        return ERROR;
3981
0
          }
3982
3983
          /* only consume #include */
3984
0
          sudoersless(sizeof("#include") - 1);
3985
0
          yy_set_bol(0);
3986
3987
0
          BEGIN GOTINC;
3988
0
          LEXTRACE("INCLUDE ");
3989
0
          return INCLUDE;
3990
0
      }
3991
0
  YY_BREAK
3992
0
case 27:
3993
/* rule 27 can match eol */
3994
0
YY_RULE_SETUP
3995
0
#line 396 "toke.l"
3996
0
{
3997
0
          if (continued) {
3998
0
        sudoers_errstr = N_("invalid line continuation");
3999
0
        LEXTRACE("ERROR ");
4000
0
        return ERROR;
4001
0
          }
4002
4003
          /* only consume #includedir */
4004
0
          sudoersless(sizeof("#includedir") - 1);
4005
0
          yy_set_bol(0);
4006
4007
0
          BEGIN GOTINC;
4008
0
          LEXTRACE("INCLUDEDIR ");
4009
0
          return INCLUDEDIR;
4010
0
      }
4011
0
  YY_BREAK
4012
0
case 28:
4013
0
YY_RULE_SETUP
4014
0
#line 412 "toke.l"
4015
0
{
4016
0
          char deftype;
4017
0
          size_t n;
4018
4019
0
          if (continued) {
4020
0
        sudoers_errstr = N_("invalid line continuation");
4021
0
        LEXTRACE("ERROR ");
4022
0
        return ERROR;
4023
0
          }
4024
4025
0
          for (n = 0; isblank((unsigned char)sudoerstext[n]); n++)
4026
0
        continue;
4027
0
          n += sizeof("Defaults") - 1;
4028
0
          if ((deftype = sudoerstext[n++]) != '\0') {
4029
0
        while (isblank((unsigned char)sudoerstext[n]))
4030
0
            n++;
4031
0
          }
4032
0
          BEGIN GOTDEFS;
4033
0
          switch (deftype) {
4034
0
        case ':':
4035
0
            sudoersless(n);
4036
0
            LEXTRACE("DEFAULTS_USER ");
4037
0
            return DEFAULTS_USER;
4038
0
        case '>':
4039
0
            sudoersless(n);
4040
0
            LEXTRACE("DEFAULTS_RUNAS ");
4041
0
            return DEFAULTS_RUNAS;
4042
0
        case '@':
4043
0
            sudoersless(n);
4044
0
            LEXTRACE("DEFAULTS_HOST ");
4045
0
            return DEFAULTS_HOST;
4046
0
        case '!':
4047
0
            sudoersless(n);
4048
0
            LEXTRACE("DEFAULTS_CMND ");
4049
0
            return DEFAULTS_CMND;
4050
0
        default:
4051
0
            LEXTRACE("DEFAULTS ");
4052
0
            return DEFAULTS;
4053
0
          }
4054
0
      }
4055
0
  YY_BREAK
4056
0
case 29:
4057
0
YY_RULE_SETUP
4058
0
#line 453 "toke.l"
4059
0
{
4060
0
          size_t n;
4061
4062
0
          if (continued) {
4063
0
        sudoers_errstr = N_("invalid line continuation");
4064
0
        LEXTRACE("ERROR ");
4065
0
        return ERROR;
4066
0
          }
4067
4068
0
          for (n = 0; isblank((unsigned char)sudoerstext[n]); n++)
4069
0
        continue;
4070
0
          switch (sudoerstext[n]) {
4071
0
        case 'H':
4072
0
            LEXTRACE("HOSTALIAS ");
4073
0
            return HOSTALIAS;
4074
0
        case 'C':
4075
0
            LEXTRACE("CMNDALIAS ");
4076
0
            return CMNDALIAS;
4077
0
        case 'U':
4078
0
            LEXTRACE("USERALIAS ");
4079
0
            return USERALIAS;
4080
0
        case 'R':
4081
0
            LEXTRACE("RUNASALIAS ");
4082
0
            return RUNASALIAS;
4083
0
          }
4084
0
      }
4085
0
  YY_BREAK
4086
0
case 30:
4087
0
YY_RULE_SETUP
4088
0
#line 480 "toke.l"
4089
0
{
4090
        /* cmnd does not require passwd for this user */
4091
0
            LEXTRACE("NOPASSWD ");
4092
0
            return NOPASSWD;
4093
0
      }
4094
0
  YY_BREAK
4095
0
case 31:
4096
0
YY_RULE_SETUP
4097
0
#line 486 "toke.l"
4098
0
{
4099
        /* cmnd requires passwd for this user */
4100
0
            LEXTRACE("PASSWD ");
4101
0
            return PASSWD;
4102
0
      }
4103
0
  YY_BREAK
4104
0
case 32:
4105
0
YY_RULE_SETUP
4106
0
#line 492 "toke.l"
4107
0
{
4108
0
            LEXTRACE("NOEXEC ");
4109
0
            return NOEXEC;
4110
0
      }
4111
0
  YY_BREAK
4112
0
case 33:
4113
0
YY_RULE_SETUP
4114
0
#line 497 "toke.l"
4115
0
{
4116
0
            LEXTRACE("EXEC ");
4117
0
            return EXEC;
4118
0
      }
4119
0
  YY_BREAK
4120
0
case 34:
4121
0
YY_RULE_SETUP
4122
0
#line 502 "toke.l"
4123
0
{
4124
0
            LEXTRACE("INTERCEPT ");
4125
0
            return INTERCEPT;
4126
0
      }
4127
0
  YY_BREAK
4128
0
case 35:
4129
0
YY_RULE_SETUP
4130
0
#line 507 "toke.l"
4131
0
{
4132
0
            LEXTRACE("NOINTERCEPT ");
4133
0
            return NOINTERCEPT;
4134
0
      }
4135
0
  YY_BREAK
4136
0
case 36:
4137
0
YY_RULE_SETUP
4138
0
#line 512 "toke.l"
4139
0
{
4140
0
            LEXTRACE("SETENV ");
4141
0
            return SETENV;
4142
0
      }
4143
0
  YY_BREAK
4144
0
case 37:
4145
0
YY_RULE_SETUP
4146
0
#line 517 "toke.l"
4147
0
{
4148
0
            LEXTRACE("NOSETENV ");
4149
0
            return NOSETENV;
4150
0
      }
4151
0
  YY_BREAK
4152
0
case 38:
4153
0
YY_RULE_SETUP
4154
0
#line 522 "toke.l"
4155
0
{
4156
0
            LEXTRACE("LOG_OUTPUT ");
4157
0
            return LOG_OUTPUT;
4158
0
      }
4159
0
  YY_BREAK
4160
0
case 39:
4161
0
YY_RULE_SETUP
4162
0
#line 527 "toke.l"
4163
0
{
4164
0
            LEXTRACE("NOLOG_OUTPUT ");
4165
0
            return NOLOG_OUTPUT;
4166
0
      }
4167
0
  YY_BREAK
4168
0
case 40:
4169
0
YY_RULE_SETUP
4170
0
#line 532 "toke.l"
4171
0
{
4172
0
            LEXTRACE("LOG_INPUT ");
4173
0
            return LOG_INPUT;
4174
0
      }
4175
0
  YY_BREAK
4176
0
case 41:
4177
0
YY_RULE_SETUP
4178
0
#line 537 "toke.l"
4179
0
{
4180
0
            LEXTRACE("NOLOG_INPUT ");
4181
0
            return NOLOG_INPUT;
4182
0
      }
4183
0
  YY_BREAK
4184
0
case 42:
4185
0
YY_RULE_SETUP
4186
0
#line 542 "toke.l"
4187
0
{
4188
0
            LEXTRACE("MAIL ");
4189
0
            return MAIL;
4190
0
      }
4191
0
  YY_BREAK
4192
0
case 43:
4193
0
YY_RULE_SETUP
4194
0
#line 547 "toke.l"
4195
0
{
4196
0
            LEXTRACE("NOMAIL ");
4197
0
            return NOMAIL;
4198
0
      }
4199
0
  YY_BREAK
4200
0
case 44:
4201
0
YY_RULE_SETUP
4202
0
#line 552 "toke.l"
4203
0
{
4204
0
            LEXTRACE("FOLLOW ");
4205
0
            return FOLLOWLNK;
4206
0
      }
4207
0
  YY_BREAK
4208
0
case 45:
4209
0
YY_RULE_SETUP
4210
0
#line 557 "toke.l"
4211
0
{
4212
0
            LEXTRACE("NOFOLLOW ");
4213
0
            return NOFOLLOWLNK;
4214
0
      }
4215
0
  YY_BREAK
4216
0
case 46:
4217
0
YY_RULE_SETUP
4218
0
#line 562 "toke.l"
4219
0
{
4220
0
          if (sudoerstext[0] == '+')
4221
0
        sudoers_errstr = N_("empty netgroup");
4222
0
          else
4223
0
        sudoers_errstr = N_("empty group");
4224
0
          LEXTRACE("ERROR ");
4225
0
          return ERROR;
4226
0
      }
4227
0
  YY_BREAK
4228
0
case 47:
4229
0
YY_RULE_SETUP
4230
0
#line 571 "toke.l"
4231
0
{
4232
          /* netgroup */
4233
0
          if (!fill(sudoerstext, sudoersleng))
4234
0
        yyterminate();
4235
0
          LEXTRACE("NETGROUP ");
4236
0
          return NETGROUP;
4237
0
      }
4238
0
  YY_BREAK
4239
0
case 48:
4240
0
YY_RULE_SETUP
4241
0
#line 579 "toke.l"
4242
0
{
4243
          /* group */
4244
0
          if (!fill(sudoerstext, sudoersleng))
4245
0
        yyterminate();
4246
0
          LEXTRACE("USERGROUP ");
4247
0
          return USERGROUP;
4248
0
      }
4249
0
  YY_BREAK
4250
0
case 49:
4251
0
YY_RULE_SETUP
4252
0
#line 587 "toke.l"
4253
0
{
4254
0
          if (!fill(sudoerstext, sudoersleng))
4255
0
        yyterminate();
4256
0
          LEXTRACE("NTWKADDR ");
4257
0
          return NTWKADDR;
4258
0
      }
4259
0
  YY_BREAK
4260
0
case 50:
4261
0
YY_RULE_SETUP
4262
0
#line 594 "toke.l"
4263
0
{
4264
0
          if (!fill(sudoerstext, sudoersleng))
4265
0
        yyterminate();
4266
0
          LEXTRACE("NTWKADDR ");
4267
0
          return NTWKADDR;
4268
0
      }
4269
0
  YY_BREAK
4270
0
case 51:
4271
0
YY_RULE_SETUP
4272
0
#line 601 "toke.l"
4273
0
{
4274
0
          if (!ipv6_valid(sudoerstext)) {
4275
0
        sudoers_errstr = N_("invalid IPv6 address");
4276
0
        LEXTRACE("ERROR ");
4277
0
        return ERROR;
4278
0
          }
4279
0
          if (!fill(sudoerstext, sudoersleng))
4280
0
        yyterminate();
4281
0
          LEXTRACE("NTWKADDR ");
4282
0
          return NTWKADDR;
4283
0
      }
4284
0
  YY_BREAK
4285
0
case 52:
4286
0
YY_RULE_SETUP
4287
0
#line 613 "toke.l"
4288
0
{
4289
0
          if (!ipv6_valid(sudoerstext)) {
4290
0
        sudoers_errstr = N_("invalid IPv6 address");
4291
0
        LEXTRACE("ERROR ");
4292
0
        return ERROR;
4293
0
          }
4294
0
          if (!fill(sudoerstext, sudoersleng))
4295
0
        yyterminate();
4296
0
          LEXTRACE("NTWKADDR ");
4297
0
          return NTWKADDR;
4298
0
      }
4299
0
  YY_BREAK
4300
0
case 53:
4301
0
YY_RULE_SETUP
4302
0
#line 625 "toke.l"
4303
0
{
4304
0
          LEXTRACE("ALL ");
4305
0
          return ALL;
4306
4307
0
      }
4308
0
  YY_BREAK
4309
0
case 54:
4310
0
YY_RULE_SETUP
4311
0
#line 631 "toke.l"
4312
0
{
4313
0
          LEXTRACE("CMND_TIMEOUT ");
4314
0
          return CMND_TIMEOUT;
4315
0
      }
4316
0
  YY_BREAK
4317
0
case 55:
4318
0
YY_RULE_SETUP
4319
0
#line 636 "toke.l"
4320
0
{
4321
0
          LEXTRACE("NOTBEFORE ");
4322
0
          return NOTBEFORE;
4323
0
      }
4324
0
  YY_BREAK
4325
0
case 56:
4326
0
YY_RULE_SETUP
4327
0
#line 641 "toke.l"
4328
0
{
4329
0
          LEXTRACE("NOTAFTER ");
4330
0
          return NOTAFTER;
4331
0
      }
4332
0
  YY_BREAK
4333
0
case 57:
4334
0
YY_RULE_SETUP
4335
0
#line 646 "toke.l"
4336
0
{
4337
0
          LEXTRACE("CWD ");
4338
0
          prev_state = YY_START;
4339
0
          BEGIN EXPECTPATH;
4340
0
          return CWD;
4341
0
      }
4342
0
  YY_BREAK
4343
0
case 58:
4344
0
YY_RULE_SETUP
4345
0
#line 653 "toke.l"
4346
0
{
4347
0
          LEXTRACE("CHROOT ");
4348
0
          prev_state = YY_START;
4349
0
          BEGIN EXPECTPATH;
4350
0
          return CHROOT;
4351
0
      }
4352
0
  YY_BREAK
4353
0
case 59:
4354
0
YY_RULE_SETUP
4355
0
#line 660 "toke.l"
4356
0
{
4357
0
          LEXTRACE("ROLE ");
4358
0
          return ROLE;
4359
0
      }
4360
0
  YY_BREAK
4361
0
case 60:
4362
0
YY_RULE_SETUP
4363
0
#line 665 "toke.l"
4364
0
{
4365
0
          LEXTRACE("TYPE ");
4366
0
          return TYPE;
4367
0
      }
4368
0
  YY_BREAK
4369
0
case 61:
4370
0
YY_RULE_SETUP
4371
0
#line 669 "toke.l"
4372
0
{
4373
0
          LEXTRACE("APPARMOR_PROFILE ");
4374
0
          return APPARMOR_PROFILE;
4375
0
      }
4376
0
  YY_BREAK
4377
0
case 62:
4378
0
YY_RULE_SETUP
4379
0
#line 673 "toke.l"
4380
0
{
4381
0
          LEXTRACE("PRIVS ");
4382
0
          return PRIVS;
4383
0
      }
4384
0
  YY_BREAK
4385
0
case 63:
4386
0
YY_RULE_SETUP
4387
0
#line 678 "toke.l"
4388
0
{
4389
0
          LEXTRACE("LIMITPRIVS ");
4390
0
          return LIMITPRIVS;
4391
0
      }
4392
0
  YY_BREAK
4393
0
case 64:
4394
0
YY_RULE_SETUP
4395
0
#line 683 "toke.l"
4396
0
{
4397
0
          if (!fill(sudoerstext, sudoersleng))
4398
0
        yyterminate();
4399
0
          LEXTRACE("ALIAS ");
4400
0
          return ALIAS;
4401
0
      }
4402
0
  YY_BREAK
4403
0
case 65:
4404
0
YY_RULE_SETUP
4405
0
#line 690 "toke.l"
4406
0
{
4407
          /* XXX - no way to specify digest for command */
4408
          /* no command args allowed for Defaults!/path */
4409
0
          if (!fill_cmnd(sudoerstext, sudoersleng))
4410
0
        yyterminate();
4411
0
          LEXTRACE("COMMAND ");
4412
0
          return COMMAND;
4413
0
      }
4414
0
  YY_BREAK
4415
0
case 66:
4416
0
YY_RULE_SETUP
4417
0
#line 699 "toke.l"
4418
0
{
4419
0
          digest_type = SUDO_DIGEST_SHA224;
4420
0
          BEGIN WANTDIGEST;
4421
0
          LEXTRACE("SHA224_TOK ");
4422
0
          return SHA224_TOK;
4423
0
      }
4424
0
  YY_BREAK
4425
0
case 67:
4426
0
YY_RULE_SETUP
4427
0
#line 706 "toke.l"
4428
0
{
4429
0
          digest_type = SUDO_DIGEST_SHA256;
4430
0
          BEGIN WANTDIGEST;
4431
0
          LEXTRACE("SHA256_TOK ");
4432
0
          return SHA256_TOK;
4433
0
      }
4434
0
  YY_BREAK
4435
0
case 68:
4436
0
YY_RULE_SETUP
4437
0
#line 713 "toke.l"
4438
0
{
4439
0
          digest_type = SUDO_DIGEST_SHA384;
4440
0
          BEGIN WANTDIGEST;
4441
0
          LEXTRACE("SHA384_TOK ");
4442
0
          return SHA384_TOK;
4443
0
      }
4444
0
  YY_BREAK
4445
0
case 69:
4446
0
YY_RULE_SETUP
4447
0
#line 720 "toke.l"
4448
0
{
4449
0
          digest_type = SUDO_DIGEST_SHA512;
4450
0
          BEGIN WANTDIGEST;
4451
0
          LEXTRACE("SHA512_TOK ");
4452
0
          return SHA512_TOK;
4453
0
      }
4454
0
  YY_BREAK
4455
0
case 70:
4456
0
YY_RULE_SETUP
4457
0
#line 727 "toke.l"
4458
0
{
4459
0
          BEGIN GOTCMND;
4460
0
          LEXTRACE("COMMAND ");
4461
0
          if (!fill_cmnd(sudoerstext, sudoersleng))
4462
0
        yyterminate();
4463
0
      }     /* sudo -e */
4464
0
  YY_BREAK
4465
0
case 71:
4466
0
YY_RULE_SETUP
4467
0
#line 734 "toke.l"
4468
0
{
4469
0
        BEGIN prev_state;
4470
0
        if (!fill(sudoerstext, sudoersleng))
4471
0
            yyterminate();
4472
0
        LEXTRACE("WORD(5) ");
4473
0
        return WORD;
4474
0
      }
4475
0
  YY_BREAK
4476
0
case 72:
4477
0
YY_RULE_SETUP
4478
0
#line 742 "toke.l"
4479
0
{
4480
          /* directories can't have args... */
4481
0
          if (sudoerstext[sudoersleng - 1] == '/') {
4482
0
        LEXTRACE("COMMAND ");
4483
0
        if (!fill_cmnd(sudoerstext, sudoersleng))
4484
0
            yyterminate();
4485
0
        return COMMAND;
4486
0
          }
4487
0
          BEGIN GOTCMND;
4488
0
          LEXTRACE("COMMAND ");
4489
0
          if (!fill_cmnd(sudoerstext, sudoersleng))
4490
0
        yyterminate();
4491
0
      }     /* a pathname */
4492
0
  YY_BREAK
4493
1
case 73:
4494
1
YY_RULE_SETUP
4495
1
#line 756 "toke.l"
4496
1
{
4497
1
          if (sudoers_strict()) {
4498
0
        if (!sudo_regex_compile(NULL, sudoerstext, &sudoers_errstr)) {
4499
0
            LEXTRACE("ERROR ");
4500
0
            return ERROR;
4501
0
        }
4502
0
          }
4503
1
          BEGIN GOTCMND;
4504
1
          LEXTRACE("COMMAND ");
4505
1
          if (!fill_cmnd(sudoerstext, sudoersleng))
4506
0
        yyterminate();
4507
1
      }     /* a regex */
4508
1
  YY_BREAK
4509
1
case 74:
4510
0
YY_RULE_SETUP
4511
0
#line 769 "toke.l"
4512
0
{
4513
0
          LEXTRACE("BEGINSTR ");
4514
0
          sudoerslval.string = NULL;
4515
0
          if (YY_START != EXPECTPATH)
4516
0
        prev_state = YY_START;
4517
0
          BEGIN INSTR;
4518
0
      }
4519
0
  YY_BREAK
4520
86.0k
case 75:
4521
86.0k
YY_RULE_SETUP
4522
86.0k
#line 777 "toke.l"
4523
86.0k
{
4524
          /* a word */
4525
86.0k
          if (!fill(sudoerstext, sudoersleng))
4526
0
        yyterminate();
4527
86.0k
          LEXTRACE("WORD(6) ");
4528
86.0k
          return WORD;
4529
86.0k
      }
4530
0
  YY_BREAK
4531
4532
0
case 76:
4533
0
YY_RULE_SETUP
4534
0
#line 786 "toke.l"
4535
0
{
4536
          /* include file/directory */
4537
0
          if (!fill(sudoerstext, sudoersleng))
4538
0
        yyterminate();
4539
0
          BEGIN INITIAL;
4540
0
          LEXTRACE("WORD(7) ");
4541
0
          return WORD;
4542
0
      }
4543
0
  YY_BREAK
4544
0
case 77:
4545
0
YY_RULE_SETUP
4546
0
#line 795 "toke.l"
4547
0
{
4548
0
          LEXTRACE("BEGINSTR ");
4549
0
          sudoerslval.string = NULL;
4550
0
          prev_state = INITIAL;
4551
0
          BEGIN INSTR;
4552
0
      }
4553
0
  YY_BREAK
4554
4555
0
case 78:
4556
0
YY_RULE_SETUP
4557
0
#line 803 "toke.l"
4558
0
{
4559
0
          LEXTRACE("( ");
4560
0
          return '(';
4561
0
      }
4562
0
  YY_BREAK
4563
275
case 79:
4564
275
YY_RULE_SETUP
4565
275
#line 808 "toke.l"
4566
275
{
4567
275
          LEXTRACE(") ");
4568
275
          return ')';
4569
0
      }
4570
0
  YY_BREAK
4571
81.0k
case 80:
4572
81.0k
YY_RULE_SETUP
4573
81.0k
#line 813 "toke.l"
4574
81.0k
{
4575
81.0k
          LEXTRACE(", ");
4576
81.0k
          return ',';
4577
0
      }     /* return ',' */
4578
0
  YY_BREAK
4579
1
case 81:
4580
1
YY_RULE_SETUP
4581
1
#line 818 "toke.l"
4582
1
{
4583
1
          LEXTRACE("= ");
4584
1
          return '=';
4585
0
      }     /* return '=' */
4586
0
  YY_BREAK
4587
5.25k
case 82:
4588
5.25k
YY_RULE_SETUP
4589
5.25k
#line 823 "toke.l"
4590
5.25k
{
4591
5.25k
          LEXTRACE(": ");
4592
5.25k
          return ':';
4593
0
      }     /* return ':' */
4594
0
  YY_BREAK
4595
278
case 83:
4596
278
YY_RULE_SETUP
4597
278
#line 828 "toke.l"
4598
278
{
4599
278
          if (sudoersleng & 1) {
4600
278
        LEXTRACE("!");
4601
278
        return '!'; /* return '!' */
4602
278
          }
4603
278
      }
4604
0
  YY_BREAK
4605
33
case 84:
4606
/* rule 84 can match eol */
4607
33
YY_RULE_SETUP
4608
33
#line 835 "toke.l"
4609
33
{
4610
33
          if (YY_START == INSTR) {
4611
        /* throw away old string */
4612
0
        parser_leak_remove(LEAK_PTR, sudoerslval.string);
4613
0
        free(sudoerslval.string);
4614
        /* re-scan after changing state */
4615
0
        BEGIN INITIAL;
4616
0
        sudoersless(0);
4617
0
        sudoers_errstr = N_("unexpected line break in string");
4618
0
        LEXTRACE("ERROR ");
4619
0
        return ERROR;
4620
0
          }
4621
33
          BEGIN INITIAL;
4622
33
          sudolineno++;
4623
33
          continued = false;
4624
33
          LEXTRACE("\n");
4625
33
          return '\n';
4626
33
      }      /* return newline */
4627
0
  YY_BREAK
4628
20
case 85:
4629
20
YY_RULE_SETUP
4630
20
#line 854 "toke.l"
4631
20
{     /* throw away space/tabs */
4632
20
          sawspace = true; /* but remember for fill_args */
4633
20
      }
4634
20
  YY_BREAK
4635
0
case 86:
4636
/* rule 86 can match eol */
4637
0
YY_RULE_SETUP
4638
0
#line 858 "toke.l"
4639
0
{
4640
0
          sawspace = true; /* remember for fill_args */
4641
0
          sudolineno++;
4642
0
          continued = true;
4643
0
      }     /* throw away EOL after \ */
4644
0
  YY_BREAK
4645
0
case 87:
4646
/* rule 87 can match eol */
4647
0
YY_RULE_SETUP
4648
0
#line 864 "toke.l"
4649
0
{
4650
0
          if (sudoerstext[sudoersleng - 1] == '\n') {
4651
        /* comment ending in a newline */
4652
0
        BEGIN INITIAL;
4653
0
        sudolineno++;
4654
0
        continued = false;
4655
0
          } else if (!feof(sudoersin)) {
4656
0
        sudoers_errstr = strerror(errno);
4657
0
        LEXTRACE("ERROR ");
4658
0
        return ERROR;
4659
0
          }
4660
0
          LEXTRACE("#\n");
4661
0
          return '\n';
4662
0
      }     /* comment, not uid/gid */
4663
0
  YY_BREAK
4664
0
case 88:
4665
0
YY_RULE_SETUP
4666
0
#line 879 "toke.l"
4667
0
{
4668
0
          LEXTRACE("NOMATCH ");
4669
0
          return NOMATCH;
4670
0
      } /* parse error, no matching token */
4671
0
  YY_BREAK
4672
5
case YY_STATE_EOF(INITIAL):
4673
5
case YY_STATE_EOF(GOTDEFS):
4674
5
case YY_STATE_EOF(GOTCMND):
4675
5
case YY_STATE_EOF(GOTREGEX):
4676
5
case YY_STATE_EOF(STARTDEFS):
4677
5
case YY_STATE_EOF(INDEFS):
4678
5
case YY_STATE_EOF(INSTR):
4679
5
case YY_STATE_EOF(WANTDIGEST):
4680
5
case YY_STATE_EOF(GOTINC):
4681
5
case YY_STATE_EOF(EXPECTPATH):
4682
5
#line 884 "toke.l"
4683
5
{
4684
5
          if (!pop_include())
4685
5
        yyterminate();
4686
5
      }
4687
0
  YY_BREAK
4688
0
case 89:
4689
0
YY_RULE_SETUP
4690
0
#line 889 "toke.l"
4691
0
ECHO;
4692
0
  YY_BREAK
4693
0
#line 4693 "toke.c"
4694
4695
294
  case YY_END_OF_BUFFER:
4696
294
    {
4697
    /* Amount of text matched not including the EOB char. */
4698
294
    int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
4699
4700
    /* Undo the effects of YY_DO_BEFORE_ACTION. */
4701
294
    *yy_cp = (yy_hold_char);
4702
294
    YY_RESTORE_YY_MORE_OFFSET
4703
4704
294
    if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
4705
5
      {
4706
      /* We're scanning a new file or input source.  It's
4707
       * possible that this happened because the user
4708
       * just pointed yyin at a new source and called
4709
       * yylex().  If so, then we have to assure
4710
       * consistency between YY_CURRENT_BUFFER and our
4711
       * globals.  Here is the right place to do so, because
4712
       * this is the first action (other than possibly a
4713
       * back-up) that will match for the new input source.
4714
       */
4715
5
      (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
4716
5
      YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
4717
5
      YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
4718
5
      }
4719
4720
    /* Note that here we test for yy_c_buf_p "<=" to the position
4721
     * of the first EOB in the buffer, since yy_c_buf_p will
4722
     * already have been incremented past the NUL character
4723
     * (since all states make transitions on EOB to the
4724
     * end-of-buffer state).  Contrast this with the test
4725
     * in input().
4726
     */
4727
294
    if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
4728
0
      { /* This was really a NUL. */
4729
0
      yy_state_type yy_next_state;
4730
4731
0
      (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
4732
4733
0
      yy_current_state = yy_get_previous_state(  );
4734
4735
      /* Okay, we're now positioned to make the NUL
4736
       * transition.  We couldn't have
4737
       * yy_get_previous_state() go ahead and do it
4738
       * for us because it doesn't know how to deal
4739
       * with the possibility of jamming (and we don't
4740
       * want to build jamming into it because then it
4741
       * will run more slowly).
4742
       */
4743
4744
0
      yy_next_state = yy_try_NUL_trans( yy_current_state );
4745
4746
0
      yy_bp = (yytext_ptr) + YY_MORE_ADJ;
4747
4748
0
      if ( yy_next_state )
4749
0
        {
4750
        /* Consume the NUL. */
4751
0
        yy_cp = ++(yy_c_buf_p);
4752
0
        yy_current_state = yy_next_state;
4753
0
        goto yy_match;
4754
0
        }
4755
4756
0
      else
4757
0
        {
4758
0
        yy_cp = (yy_c_buf_p);
4759
0
        goto yy_find_action;
4760
0
        }
4761
0
      }
4762
4763
294
    else switch ( yy_get_next_buffer(  ) )
4764
294
      {
4765
5
      case EOB_ACT_END_OF_FILE:
4766
5
        {
4767
5
        (yy_did_buffer_switch_on_eof) = 0;
4768
4769
5
        if ( yywrap(  ) )
4770
5
          {
4771
          /* Note: because we've taken care in
4772
           * yy_get_next_buffer() to have set up
4773
           * yytext, we can now set up
4774
           * yy_c_buf_p so that if some total
4775
           * hoser (like flex itself) wants to
4776
           * call the scanner after we return the
4777
           * YY_NULL, it'll still work - another
4778
           * YY_NULL will get returned.
4779
           */
4780
5
          (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
4781
4782
5
          yy_act = YY_STATE_EOF(YY_START);
4783
5
          goto do_action;
4784
5
          }
4785
4786
0
        else
4787
0
          {
4788
0
          if ( ! (yy_did_buffer_switch_on_eof) )
4789
0
            YY_NEW_FILE;
4790
0
          }
4791
0
        break;
4792
5
        }
4793
4794
289
      case EOB_ACT_CONTINUE_SCAN:
4795
289
        (yy_c_buf_p) =
4796
289
          (yytext_ptr) + yy_amount_of_matched_text;
4797
4798
289
        yy_current_state = yy_get_previous_state(  );
4799
4800
289
        yy_cp = (yy_c_buf_p);
4801
289
        yy_bp = (yytext_ptr) + YY_MORE_ADJ;
4802
289
        goto yy_match;
4803
4804
0
      case EOB_ACT_LAST_MATCH:
4805
0
        (yy_c_buf_p) =
4806
0
        &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
4807
4808
0
        yy_current_state = yy_get_previous_state(  );
4809
4810
0
        yy_cp = (yy_c_buf_p);
4811
0
        yy_bp = (yytext_ptr) + YY_MORE_ADJ;
4812
0
        goto yy_find_action;
4813
294
      }
4814
0
    break;
4815
294
    }
4816
4817
0
  default:
4818
0
    YY_FATAL_ERROR(
4819
247k
      "fatal flex scanner internal error--no action found" );
4820
247k
  } /* end of action switch */
4821
247k
    } /* end of scanning one token */
4822
172k
  } /* end of user's declarations */
4823
172k
} /* end of yylex */
4824
4825
/* yy_get_next_buffer - try to read in a new buffer
4826
 *
4827
 * Returns a code representing an action:
4828
 *  EOB_ACT_LAST_MATCH -
4829
 *  EOB_ACT_CONTINUE_SCAN - continue scanning from current position
4830
 *  EOB_ACT_END_OF_FILE - end of file
4831
 */
4832
static int yy_get_next_buffer (void)
4833
294
{
4834
294
      char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
4835
294
  char *source = (yytext_ptr);
4836
294
  int number_to_move, i;
4837
294
  int ret_val;
4838
4839
294
  if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
4840
0
    YY_FATAL_ERROR(
4841
294
    "fatal flex scanner internal error--end of buffer missed" );
4842
4843
294
  if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
4844
0
    { /* Don't try to fill the buffer, so this is an EOF. */
4845
0
    if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
4846
0
      {
4847
      /* We matched a single character, the EOB, so
4848
       * treat this as a final EOF.
4849
       */
4850
0
      return EOB_ACT_END_OF_FILE;
4851
0
      }
4852
4853
0
    else
4854
0
      {
4855
      /* We matched some text prior to the EOB, first
4856
       * process it.
4857
       */
4858
0
      return EOB_ACT_LAST_MATCH;
4859
0
      }
4860
0
    }
4861
4862
  /* Try to read more data. */
4863
4864
  /* First move last chars to start of buffer. */
4865
294
  number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1);
4866
4867
3.87M
  for ( i = 0; i < number_to_move; ++i )
4868
3.87M
    *(dest++) = *(source++);
4869
4870
294
  if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
4871
    /* don't do the read, it's not guaranteed to return an EOF,
4872
     * just force an EOF
4873
     */
4874
0
    YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
4875
4876
294
  else
4877
294
    {
4878
294
      int num_to_read =
4879
294
      YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
4880
4881
297
    while ( num_to_read <= 0 )
4882
3
      { /* Not enough room in the buffer - grow it. */
4883
4884
      /* just a shorter name for the current buffer */
4885
3
      YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
4886
4887
3
      int yy_c_buf_p_offset =
4888
3
        (int) ((yy_c_buf_p) - b->yy_ch_buf);
4889
4890
3
      if ( b->yy_is_our_buffer )
4891
3
        {
4892
3
        int new_size = b->yy_buf_size * 2;
4893
4894
3
        if ( new_size <= 0 )
4895
0
          b->yy_buf_size += b->yy_buf_size / 8;
4896
3
        else
4897
3
          b->yy_buf_size *= 2;
4898
4899
3
        b->yy_ch_buf = (char *)
4900
          /* Include room in for 2 EOB chars. */
4901
3
          yyrealloc( (void *) b->yy_ch_buf,
4902
3
               (yy_size_t) (b->yy_buf_size + 2)  );
4903
3
        }
4904
0
      else
4905
        /* Can't grow it, we don't own it. */
4906
0
        b->yy_ch_buf = NULL;
4907
4908
3
      if ( ! b->yy_ch_buf )
4909
0
        YY_FATAL_ERROR(
4910
3
        "fatal error - scanner input buffer overflow" );
4911
4912
3
      (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
4913
4914
3
      num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
4915
3
            number_to_move - 1;
4916
4917
3
      }
4918
4919
294
    if ( num_to_read > YY_READ_BUF_SIZE )
4920
291
      num_to_read = YY_READ_BUF_SIZE;
4921
4922
    /* Read in more data. */
4923
294
    YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
4924
294
      (yy_n_chars), num_to_read );
4925
4926
294
    YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
4927
294
    }
4928
4929
294
  if ( (yy_n_chars) == 0 )
4930
5
    {
4931
5
    if ( number_to_move == YY_MORE_ADJ )
4932
5
      {
4933
5
      ret_val = EOB_ACT_END_OF_FILE;
4934
5
      yyrestart( yyin  );
4935
5
      }
4936
4937
0
    else
4938
0
      {
4939
0
      ret_val = EOB_ACT_LAST_MATCH;
4940
0
      YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
4941
0
        YY_BUFFER_EOF_PENDING;
4942
0
      }
4943
5
    }
4944
4945
289
  else
4946
289
    ret_val = EOB_ACT_CONTINUE_SCAN;
4947
4948
294
  if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
4949
    /* Extend the array by 50%, plus the number we really need. */
4950
0
    int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
4951
0
    YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc(
4952
0
      (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size  );
4953
0
    if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
4954
0
      YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
4955
    /* "- 2" to take care of EOB's */
4956
0
    YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2);
4957
0
  }
4958
4959
294
  (yy_n_chars) += number_to_move;
4960
294
  YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
4961
294
  YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
4962
4963
294
  (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
4964
4965
294
  return ret_val;
4966
294
}
4967
4968
/* yy_get_previous_state - get the state just before the EOB char was reached */
4969
4970
    static yy_state_type yy_get_previous_state (void)
4971
289
{
4972
289
  yy_state_type yy_current_state;
4973
289
  char *yy_cp;
4974
    
4975
289
  yy_current_state = (yy_start);
4976
289
  yy_current_state += YY_AT_BOL();
4977
4978
3.87M
  for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
4979
3.87M
    {
4980
3.87M
    YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
4981
3.87M
    if ( yy_accept[yy_current_state] )
4982
3.87M
      {
4983
3.87M
      (yy_last_accepting_state) = yy_current_state;
4984
3.87M
      (yy_last_accepting_cpos) = yy_cp;
4985
3.87M
      }
4986
7.74M
    while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
4987
3.87M
      {
4988
3.87M
      yy_current_state = (int) yy_def[yy_current_state];
4989
3.87M
      if ( yy_current_state >= 1242 )
4990
3.87M
        yy_c = yy_meta[yy_c];
4991
3.87M
      }
4992
3.87M
    yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
4993
3.87M
    }
4994
4995
289
  return yy_current_state;
4996
289
}
4997
4998
/* yy_try_NUL_trans - try to make a transition on the NUL character
4999
 *
5000
 * synopsis
5001
 *  next_state = yy_try_NUL_trans( current_state );
5002
 */
5003
    static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
5004
0
{
5005
0
  int yy_is_jam;
5006
0
      char *yy_cp = (yy_c_buf_p);
5007
5008
0
  YY_CHAR yy_c = 1;
5009
0
  if ( yy_accept[yy_current_state] )
5010
0
    {
5011
0
    (yy_last_accepting_state) = yy_current_state;
5012
0
    (yy_last_accepting_cpos) = yy_cp;
5013
0
    }
5014
0
  while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
5015
0
    {
5016
0
    yy_current_state = (int) yy_def[yy_current_state];
5017
0
    if ( yy_current_state >= 1242 )
5018
0
      yy_c = yy_meta[yy_c];
5019
0
    }
5020
0
  yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
5021
0
  yy_is_jam = (yy_current_state == 1241);
5022
5023
0
    return yy_is_jam ? 0 : yy_current_state;
5024
0
}
5025
5026
#ifndef YY_NO_UNPUT
5027
5028
#endif
5029
5030
#ifndef YY_NO_INPUT
5031
#ifdef __cplusplus
5032
    static int yyinput (void)
5033
#else
5034
    static int input  (void)
5035
#endif
5036
5037
{
5038
  int c;
5039
    
5040
  *(yy_c_buf_p) = (yy_hold_char);
5041
5042
  if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
5043
    {
5044
    /* yy_c_buf_p now points to the character we want to return.
5045
     * If this occurs *before* the EOB characters, then it's a
5046
     * valid NUL; if not, then we've hit the end of the buffer.
5047
     */
5048
    if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
5049
      /* This was really a NUL. */
5050
      *(yy_c_buf_p) = '\0';
5051
5052
    else
5053
      { /* need more input */
5054
      int offset = (int) ((yy_c_buf_p) - (yytext_ptr));
5055
      ++(yy_c_buf_p);
5056
5057
      switch ( yy_get_next_buffer(  ) )
5058
        {
5059
        case EOB_ACT_LAST_MATCH:
5060
          /* This happens because yy_g_n_b()
5061
           * sees that we've accumulated a
5062
           * token and flags that we need to
5063
           * try matching the token before
5064
           * proceeding.  But for input(),
5065
           * there's no matching to consider.
5066
           * So convert the EOB_ACT_LAST_MATCH
5067
           * to EOB_ACT_END_OF_FILE.
5068
           */
5069
5070
          /* Reset buffer status. */
5071
          yyrestart( yyin );
5072
5073
          FALLTHROUGH;
5074
5075
        case EOB_ACT_END_OF_FILE:
5076
          {
5077
          if ( yywrap(  ) )
5078
            return 0;
5079
5080
          if ( ! (yy_did_buffer_switch_on_eof) )
5081
            YY_NEW_FILE;
5082
#ifdef __cplusplus
5083
          return yyinput();
5084
#else
5085
          return input();
5086
#endif
5087
          }
5088
5089
        case EOB_ACT_CONTINUE_SCAN:
5090
          (yy_c_buf_p) = (yytext_ptr) + offset;
5091
          break;
5092
        }
5093
      }
5094
    }
5095
5096
  c = *(unsigned char *) (yy_c_buf_p);  /* cast for 8-bit char's */
5097
  *(yy_c_buf_p) = '\0'; /* preserve yytext */
5098
  (yy_hold_char) = *++(yy_c_buf_p);
5099
5100
  YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n');
5101
5102
  return c;
5103
}
5104
#endif  /* ifndef YY_NO_INPUT */
5105
5106
/** Immediately switch to a different input stream.
5107
 * @param input_file A readable stream.
5108
 * 
5109
 * @note This function does not reset the start condition to @c INITIAL .
5110
 */
5111
    void yyrestart  (FILE * input_file )
5112
10
{
5113
    
5114
10
  if ( ! YY_CURRENT_BUFFER ){
5115
1
        yyensure_buffer_stack ();
5116
1
    YY_CURRENT_BUFFER_LVALUE =
5117
1
            yy_create_buffer( yyin, YY_BUF_SIZE );
5118
1
  }
5119
5120
10
  yy_init_buffer( YY_CURRENT_BUFFER, input_file );
5121
10
  yy_load_buffer_state(  );
5122
10
}
5123
5124
/** Switch to a different input buffer.
5125
 * @param new_buffer The new input buffer.
5126
 * 
5127
 */
5128
    void yy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
5129
0
{
5130
    
5131
  /* TODO. We should be able to replace this entire function body
5132
   * with
5133
   *    yypop_buffer_state();
5134
   *    yypush_buffer_state(new_buffer);
5135
     */
5136
0
  yyensure_buffer_stack ();
5137
0
  if ( YY_CURRENT_BUFFER == new_buffer )
5138
0
    return;
5139
5140
0
  if ( YY_CURRENT_BUFFER )
5141
0
    {
5142
    /* Flush out information for old buffer. */
5143
0
    *(yy_c_buf_p) = (yy_hold_char);
5144
0
    YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
5145
0
    YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
5146
0
    }
5147
5148
0
  YY_CURRENT_BUFFER_LVALUE = new_buffer;
5149
0
  yy_load_buffer_state(  );
5150
5151
  /* We don't actually know whether we did this switch during
5152
   * EOF (yywrap()) processing, but the only time this flag
5153
   * is looked at is after yywrap() is called, so it's safe
5154
   * to go ahead and always set it.
5155
   */
5156
0
  (yy_did_buffer_switch_on_eof) = 1;
5157
0
}
5158
5159
static void yy_load_buffer_state  (void)
5160
21
{
5161
21
      (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
5162
21
  (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
5163
21
  yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
5164
21
  (yy_hold_char) = *(yy_c_buf_p);
5165
21
}
5166
5167
/** Allocate and initialize an input buffer state.
5168
 * @param file A readable stream.
5169
 * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
5170
 * 
5171
 * @return the allocated buffer state.
5172
 */
5173
    YY_BUFFER_STATE yy_create_buffer  (FILE * file, int  size )
5174
1
{
5175
1
  YY_BUFFER_STATE b;
5176
    
5177
1
  b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state )  );
5178
1
  if ( ! b )
5179
0
    YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
5180
5181
1
  b->yy_buf_size = size;
5182
5183
  /* yy_ch_buf has to be 2 characters longer than the size given because
5184
   * we need to put in 2 end-of-buffer characters.
5185
   */
5186
1
  b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2)  );
5187
1
  if ( ! b->yy_ch_buf )
5188
0
    YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
5189
5190
1
  b->yy_is_our_buffer = 1;
5191
5192
1
  yy_init_buffer( b, file );
5193
5194
1
  return b;
5195
1
}
5196
5197
/** Destroy the buffer.
5198
 * @param b a buffer created with yy_create_buffer()
5199
 * 
5200
 */
5201
    void yy_delete_buffer (YY_BUFFER_STATE  b )
5202
0
{
5203
    
5204
0
  if ( ! b )
5205
0
    return;
5206
5207
0
  if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
5208
0
    YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
5209
5210
0
  if ( b->yy_is_our_buffer )
5211
0
    yyfree( (void *) b->yy_ch_buf  );
5212
5213
0
  yyfree( (void *) b  );
5214
0
}
5215
5216
/* Initializes or reinitializes a buffer.
5217
 * This function is sometimes called more than once on the same buffer,
5218
 * such as during a yyrestart() or at EOF.
5219
 */
5220
    static void yy_init_buffer  (YY_BUFFER_STATE  b, FILE * file )
5221
5222
11
{
5223
11
  int oerrno = errno;
5224
    
5225
11
  yy_flush_buffer( b );
5226
5227
11
  b->yy_input_file = file;
5228
11
  b->yy_fill_buffer = 1;
5229
5230
    /* If b is the current buffer, then yy_init_buffer was _probably_
5231
     * called from yyrestart() or through yy_get_next_buffer.
5232
     * In that case, we don't want to reset the lineno or column.
5233
     */
5234
11
    if (b != YY_CURRENT_BUFFER){
5235
1
        b->yy_bs_lineno = 1;
5236
1
        b->yy_bs_column = 0;
5237
1
    }
5238
5239
11
        b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
5240
    
5241
11
  errno = oerrno;
5242
11
}
5243
5244
/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
5245
 * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
5246
 * 
5247
 */
5248
    void yy_flush_buffer (YY_BUFFER_STATE  b )
5249
11
{
5250
11
      if ( ! b )
5251
0
    return;
5252
5253
11
  b->yy_n_chars = 0;
5254
5255
  /* We always need two end-of-buffer characters.  The first causes
5256
   * a transition to the end-of-buffer state.  The second causes
5257
   * a jam in that state.
5258
   */
5259
11
  b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
5260
11
  b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
5261
5262
11
  b->yy_buf_pos = &b->yy_ch_buf[0];
5263
5264
11
  b->yy_at_bol = 1;
5265
11
  b->yy_buffer_status = YY_BUFFER_NEW;
5266
5267
11
  if ( b == YY_CURRENT_BUFFER )
5268
10
    yy_load_buffer_state(  );
5269
11
}
5270
5271
/** Pushes the new state onto the stack. The new state becomes
5272
 *  the current state. This function will allocate the stack
5273
 *  if necessary.
5274
 *  @param new_buffer The new state.
5275
 *  
5276
 */
5277
void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
5278
0
{
5279
0
      if (new_buffer == NULL)
5280
0
    return;
5281
5282
0
  yyensure_buffer_stack();
5283
5284
  /* This block is copied from yy_switch_to_buffer. */
5285
0
  if ( YY_CURRENT_BUFFER )
5286
0
    {
5287
    /* Flush out information for old buffer. */
5288
0
    *(yy_c_buf_p) = (yy_hold_char);
5289
0
    YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
5290
0
    YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
5291
0
    }
5292
5293
  /* Only push if top exists. Otherwise, replace top. */
5294
0
  if (YY_CURRENT_BUFFER)
5295
0
    (yy_buffer_stack_top)++;
5296
0
  YY_CURRENT_BUFFER_LVALUE = new_buffer;
5297
5298
  /* copied from yy_switch_to_buffer. */
5299
0
  yy_load_buffer_state(  );
5300
0
  (yy_did_buffer_switch_on_eof) = 1;
5301
0
}
5302
5303
/** Removes and deletes the top of the stack, if present.
5304
 *  The next element becomes the new top.
5305
 *  
5306
 */
5307
void yypop_buffer_state (void)
5308
0
{
5309
0
      if (!YY_CURRENT_BUFFER)
5310
0
    return;
5311
5312
0
  yy_delete_buffer(YY_CURRENT_BUFFER );
5313
0
  YY_CURRENT_BUFFER_LVALUE = NULL;
5314
0
  if ((yy_buffer_stack_top) > 0)
5315
0
    --(yy_buffer_stack_top);
5316
5317
0
  if (YY_CURRENT_BUFFER) {
5318
0
    yy_load_buffer_state(  );
5319
0
    (yy_did_buffer_switch_on_eof) = 1;
5320
0
  }
5321
0
}
5322
5323
/* Allocates the stack if it does not exist.
5324
 *  Guarantees space for at least one push.
5325
 */
5326
static void yyensure_buffer_stack (void)
5327
1
{
5328
1
  yy_size_t num_to_alloc;
5329
    
5330
1
  if (!(yy_buffer_stack)) {
5331
5332
    /* First allocation is just for 2 elements, since we don't know if this
5333
     * scanner will even need a stack. We use 2 instead of 1 to avoid an
5334
     * immediate realloc on the next call.
5335
         */
5336
1
      num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */
5337
1
    (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
5338
1
                (num_to_alloc * sizeof(struct yy_buffer_state*)
5339
1
                );
5340
1
    if ( ! (yy_buffer_stack) )
5341
0
      YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
5342
5343
1
    memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
5344
5345
1
    (yy_buffer_stack_max) = num_to_alloc;
5346
1
    (yy_buffer_stack_top) = 0;
5347
1
    return;
5348
1
  }
5349
5350
0
  if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
5351
5352
    /* Increase the buffer to prepare for a possible push. */
5353
0
    yy_size_t grow_size = 8 /* arbitrary grow size */;
5354
5355
0
    num_to_alloc = (yy_buffer_stack_max) + grow_size;
5356
0
    (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
5357
0
                ((yy_buffer_stack),
5358
0
                num_to_alloc * sizeof(struct yy_buffer_state*)
5359
0
                );
5360
0
    if ( ! (yy_buffer_stack) )
5361
0
      YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
5362
5363
    /* zero only the new slots.*/
5364
0
    memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
5365
0
    (yy_buffer_stack_max) = num_to_alloc;
5366
0
  }
5367
0
}
5368
5369
/** Setup the input buffer state to scan directly from a user-specified character buffer.
5370
 * @param base the character buffer
5371
 * @param size the size in bytes of the character buffer
5372
 * 
5373
 * @return the newly allocated buffer state object.
5374
 */
5375
YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size )
5376
0
{
5377
0
  YY_BUFFER_STATE b;
5378
    
5379
0
  if ( size < 2 ||
5380
0
       base[size-2] != YY_END_OF_BUFFER_CHAR ||
5381
0
       base[size-1] != YY_END_OF_BUFFER_CHAR )
5382
    /* They forgot to leave room for the EOB's. */
5383
0
    return NULL;
5384
5385
0
  b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state )  );
5386
0
  if ( ! b )
5387
0
    YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
5388
5389
0
  b->yy_buf_size = (int) (size - 2);  /* "- 2" to take care of EOB's */
5390
0
  b->yy_buf_pos = b->yy_ch_buf = base;
5391
0
  b->yy_is_our_buffer = 0;
5392
0
  b->yy_input_file = NULL;
5393
0
  b->yy_n_chars = b->yy_buf_size;
5394
0
  b->yy_is_interactive = 0;
5395
0
  b->yy_at_bol = 1;
5396
0
  b->yy_fill_buffer = 0;
5397
0
  b->yy_buffer_status = YY_BUFFER_NEW;
5398
5399
0
  yy_switch_to_buffer( b  );
5400
5401
0
  return b;
5402
0
}
5403
5404
/** Setup the input buffer state to scan a string. The next call to yylex() will
5405
 * scan from a @e copy of @a str.
5406
 * @param yystr a NUL-terminated string to scan
5407
 * 
5408
 * @return the newly allocated buffer state object.
5409
 * @note If you want to scan bytes that may contain NUL values, then use
5410
 *       yy_scan_bytes() instead.
5411
 */
5412
YY_BUFFER_STATE yy_scan_string (const char * yystr )
5413
0
{
5414
    
5415
0
  return yy_scan_bytes( yystr, (int) strlen(yystr) );
5416
0
}
5417
5418
/** Setup the input buffer state to scan the given bytes. The next call to yylex() will
5419
 * scan from a @e copy of @a bytes.
5420
 * @param yybytes the byte buffer to scan
5421
 * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
5422
 * 
5423
 * @return the newly allocated buffer state object.
5424
 */
5425
YY_BUFFER_STATE yy_scan_bytes  (const char * yybytes, int  _yybytes_len )
5426
0
{
5427
0
  YY_BUFFER_STATE b;
5428
0
  char *buf;
5429
0
  yy_size_t n;
5430
0
  int i;
5431
    
5432
  /* Get memory for full buffer, including space for trailing EOB's. */
5433
0
  n = (yy_size_t) (_yybytes_len + 2);
5434
0
  buf = (char *) yyalloc( n  );
5435
0
  if ( ! buf )
5436
0
    YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
5437
5438
0
  for ( i = 0; i < _yybytes_len; ++i )
5439
0
    buf[i] = yybytes[i];
5440
5441
0
  buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
5442
5443
0
  b = yy_scan_buffer( buf, n );
5444
0
  if ( ! b )
5445
0
    YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
5446
5447
  /* It's okay to grow etc. this buffer, and we should throw it
5448
   * away when we're done.
5449
   */
5450
0
  b->yy_is_our_buffer = 1;
5451
5452
0
  return b;
5453
0
}
5454
5455
#ifndef YY_EXIT_FAILURE
5456
0
#define YY_EXIT_FAILURE 2
5457
#endif
5458
5459
static void yynoreturn yy_fatal_error (const char* msg )
5460
0
{
5461
0
      fprintf( stderr, "%s\n", msg );
5462
0
  exit( YY_EXIT_FAILURE );
5463
0
}
5464
5465
/* Redefine yyless() so it works in section 3 code. */
5466
5467
#undef yyless
5468
#define yyless(n) \
5469
  do \
5470
    { \
5471
    /* Undo effects of setting up yytext. */ \
5472
        int yyless_macro_arg = (n); \
5473
        YY_LESS_LINENO(yyless_macro_arg);\
5474
    yytext[yyleng] = (yy_hold_char); \
5475
    (yy_c_buf_p) = yytext + yyless_macro_arg; \
5476
    (yy_hold_char) = *(yy_c_buf_p); \
5477
    *(yy_c_buf_p) = '\0'; \
5478
    yyleng = yyless_macro_arg; \
5479
    } \
5480
  while ( 0 )
5481
5482
/* Accessor  methods (get/set functions) to struct members. */
5483
5484
/** Get the current line number.
5485
 * 
5486
 */
5487
int yyget_lineno  (void)
5488
0
{
5489
    
5490
0
    return yylineno;
5491
0
}
5492
5493
/** Get the input stream.
5494
 * 
5495
 */
5496
FILE *yyget_in  (void)
5497
0
{
5498
0
        return yyin;
5499
0
}
5500
5501
/** Get the output stream.
5502
 * 
5503
 */
5504
FILE *yyget_out  (void)
5505
0
{
5506
0
        return yyout;
5507
0
}
5508
5509
/** Get the length of the current token.
5510
 * 
5511
 */
5512
int yyget_leng  (void)
5513
0
{
5514
0
        return yyleng;
5515
0
}
5516
5517
/** Get the current token.
5518
 * 
5519
 */
5520
5521
char *yyget_text  (void)
5522
0
{
5523
0
        return yytext;
5524
0
}
5525
5526
/** Set the current line number.
5527
 * @param _line_number line number
5528
 * 
5529
 */
5530
void yyset_lineno (int  _line_number )
5531
0
{
5532
    
5533
0
    yylineno = _line_number;
5534
0
}
5535
5536
/** Set the input stream. This does not discard the current
5537
 * input buffer.
5538
 * @param _in_str A readable stream.
5539
 * 
5540
 * @see yy_switch_to_buffer
5541
 */
5542
void yyset_in (FILE *  _in_str )
5543
0
{
5544
0
        yyin = _in_str ;
5545
0
}
5546
5547
void yyset_out (FILE *  _out_str )
5548
0
{
5549
0
        yyout = _out_str ;
5550
0
}
5551
5552
int yyget_debug  (void)
5553
0
{
5554
0
        return yy_flex_debug;
5555
0
}
5556
5557
void yyset_debug (int  _bdebug )
5558
0
{
5559
0
        yy_flex_debug = _bdebug ;
5560
0
}
5561
5562
static int yy_init_globals (void)
5563
0
{
5564
        /* Initialization is the same as for the non-reentrant scanner.
5565
     * This function is called from yylex_destroy(), so don't allocate here.
5566
     */
5567
5568
0
    (yy_buffer_stack) = NULL;
5569
0
    (yy_buffer_stack_top) = 0;
5570
0
    (yy_buffer_stack_max) = 0;
5571
0
    (yy_c_buf_p) = NULL;
5572
0
    (yy_init) = 0;
5573
0
    (yy_start) = 0;
5574
5575
/* Defined in main.c */
5576
#ifdef YY_STDINIT
5577
    yyin = stdin;
5578
    yyout = stdout;
5579
#else
5580
0
    yyin = NULL;
5581
0
    yyout = NULL;
5582
0
#endif
5583
5584
    /* For future reference: Set errno on error, since we are called by
5585
     * yylex_init()
5586
     */
5587
0
    return 0;
5588
0
}
5589
5590
/* yylex_destroy is for both reentrant and non-reentrant scanners. */
5591
int yylex_destroy  (void)
5592
0
{
5593
    
5594
    /* Pop the buffer stack, destroying each element. */
5595
0
  while(YY_CURRENT_BUFFER){
5596
0
    yy_delete_buffer( YY_CURRENT_BUFFER  );
5597
0
    YY_CURRENT_BUFFER_LVALUE = NULL;
5598
0
    yypop_buffer_state();
5599
0
  }
5600
5601
  /* Destroy the stack itself. */
5602
0
  yyfree((yy_buffer_stack) );
5603
0
  (yy_buffer_stack) = NULL;
5604
5605
    /* Reset the globals. This is important in a non-reentrant scanner so the next time
5606
     * yylex() is called, initialization will occur. */
5607
0
    yy_init_globals( );
5608
5609
0
    return 0;
5610
0
}
5611
5612
/*
5613
 * Internal utility routines.
5614
 */
5615
5616
#ifndef yytext_ptr
5617
static void yy_flex_strncpy (char* s1, const char * s2, int n )
5618
{
5619
    
5620
  int i;
5621
  for ( i = 0; i < n; ++i )
5622
    s1[i] = s2[i];
5623
}
5624
#endif
5625
5626
#ifdef YY_NEED_STRLEN
5627
static int yy_flex_strlen (const char * s )
5628
{
5629
  int n;
5630
  for ( n = 0; s[n]; ++n )
5631
    ;
5632
5633
  return n;
5634
}
5635
#endif
5636
5637
void *yyalloc (yy_size_t  size )
5638
3
{
5639
3
      return malloc(size);
5640
3
}
5641
5642
void *yyrealloc  (void * ptr, yy_size_t  size )
5643
3
{
5644
    
5645
  /* The cast to (char *) in the following accommodates both
5646
   * implementations that use char* generic pointers, and those
5647
   * that use void* generic pointers.  It works with the latter
5648
   * because both ANSI C and C++ allow castless assignment from
5649
   * any pointer type to void*, and deal with argument conversions
5650
   * as though doing an assignment.
5651
   */
5652
3
  return realloc(ptr, size);
5653
3
}
5654
5655
void yyfree (void * ptr )
5656
0
{
5657
0
      free( (char *) ptr ); /* see yyrealloc() for (char *) cast */
5658
0
}
5659
5660
#define YYTABLES_NAME "yytables"
5661
5662
#line 889 "toke.l"
5663
5664
struct path_list {
5665
    SLIST_ENTRY(path_list) entries;
5666
    char *path;
5667
};
5668
5669
SLIST_HEAD(path_list_head, path_list);
5670
5671
struct include_stack {
5672
    struct sudolinebuf line;
5673
    YY_BUFFER_STATE bs;
5674
    char *path; /* search path */
5675
    char *file;
5676
    struct path_list_head more; /* more files in case of includedir */
5677
    int lineno;
5678
    bool keepopen;
5679
};
5680
5681
/*
5682
 * Compare two struct path_list structs in reverse order.
5683
 */
5684
static int
5685
pl_compare(const void *v1, const void *v2)
5686
0
{
5687
0
    const struct path_list * const *p1 = v1;
5688
0
    const struct path_list * const *p2 = v2;
5689
5690
0
    return strcmp((*p2)->path, (*p1)->path);
5691
0
}
5692
5693
/*
5694
 * Open dirpath and fill in pathsp with an array of regular files
5695
 * that do not end in '~' or contain a '.'.
5696
 * Returns the number of files or SIZE_MAX (-1) on error.
5697
 * If zero files are found, NULL is stored in pathsp.
5698
 */
5699
static size_t
5700
read_dir_files(const char *dirpath, struct path_list ***pathsp, int verbose)
5701
0
{
5702
0
    DIR *dir;
5703
0
    size_t i, count = 0;
5704
0
    size_t max_paths = 32;
5705
0
    struct dirent *dent;
5706
0
    struct path_list **paths = NULL;
5707
0
    const size_t dirlen = strlen(dirpath);
5708
0
    debug_decl(read_dir_files, SUDOERS_DEBUG_PARSER);
5709
5710
    /* XXX - fdopendir */
5711
0
    dir = opendir(dirpath);
5712
0
    if (dir == NULL) {
5713
0
  if (errno == ENOENT)
5714
0
      goto done;
5715
0
  sudo_warn("%s", dirpath);
5716
0
  goto bad;
5717
0
    }
5718
0
    paths = reallocarray(NULL, max_paths, sizeof(*paths));
5719
0
    if (paths == NULL)
5720
0
  goto oom;
5721
0
    while ((dent = readdir(dir)) != NULL) {
5722
0
  const size_t namelen = NAMLEN(dent);
5723
0
  const char *name = dent->d_name;
5724
0
  struct path_list *pl;
5725
0
  struct stat sb;
5726
0
  size_t len;
5727
0
  char *path;
5728
5729
  /* Ignore files that end in '~' or have a '.' in them. */
5730
0
  if (namelen == 0 || name[namelen - 1] == '~' || strchr(name, '.') != NULL) {
5731
      /* Warn about ignored files not starting with '.' if verbose. */
5732
0
      if (namelen > 0 && name[0] != '.' && verbose > 1) {
5733
0
    if (name[namelen - 1] == '~' ||
5734
0
      (namelen > 4 && strcmp(&name[namelen - 4], ".bak") == 0)) {
5735
0
        fprintf(stderr, U_("%s/%s: %s"), dirpath, name,
5736
0
      U_("ignoring editor backup file"));
5737
0
    } else {
5738
0
        fprintf(stderr, U_("%s/%s: %s"), dirpath, name,
5739
0
      U_("ignoring file name containing '.'"));
5740
0
    }
5741
0
    fputc('\n', stderr);
5742
0
      }
5743
0
      continue;
5744
0
  }
5745
0
  len = dirlen + 1 + namelen;
5746
0
  if ((path = sudo_rcstr_alloc(len)) == NULL)
5747
0
      goto oom;
5748
0
  if ((size_t)snprintf(path, len + 1, "%s/%s", dirpath, name) != len) {
5749
0
      sudo_warnx(U_("internal error, %s overflow"), __func__);
5750
0
      sudo_rcstr_delref(path);
5751
0
      goto bad;
5752
0
  }
5753
0
  if (stat(path, &sb) != 0 || !S_ISREG(sb.st_mode)) {
5754
0
      sudo_rcstr_delref(path);
5755
0
      continue;
5756
0
  }
5757
0
  pl = malloc(sizeof(*pl));
5758
0
  if (pl == NULL) {
5759
0
      sudo_rcstr_delref(path);
5760
0
      goto oom;
5761
0
  }
5762
0
  pl->path = path;
5763
0
  if (count >= max_paths) {
5764
0
      struct path_list **tmp;
5765
0
      max_paths <<= 1;
5766
0
      tmp = reallocarray(paths, max_paths, sizeof(*paths));
5767
0
      if (tmp == NULL) {
5768
0
    sudo_rcstr_delref(path);
5769
0
    free(pl);
5770
0
    goto oom;
5771
0
      }
5772
0
      paths = tmp;
5773
0
  }
5774
0
  paths[count++] = pl;
5775
0
    }
5776
0
    closedir(dir);
5777
0
    if (count == 0) {
5778
0
  free(paths);
5779
0
  paths = NULL;
5780
0
    }
5781
0
done:
5782
0
    *pathsp = paths;
5783
0
    debug_return_size_t(count);
5784
0
oom:
5785
0
    sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
5786
0
bad:
5787
0
    sudoerserror(NULL);
5788
0
    if (dir != NULL)
5789
0
  closedir(dir);
5790
0
    for (i = 0; i < count; i++) {
5791
0
  sudo_rcstr_delref(paths[i]->path);
5792
0
  free(paths[i]);
5793
0
    }
5794
0
    free(paths);
5795
0
    debug_return_size_t(SIZE_MAX);
5796
0
}
5797
5798
/*
5799
 * Push a list of all files in dirpath onto stack.
5800
 * Returns the number of files or -1 on error.
5801
 */
5802
static size_t
5803
switch_dir(struct include_stack *stack, char *dirpath, int verbose)
5804
0
{
5805
0
    struct path_list **paths = NULL;
5806
0
    size_t count, i;
5807
0
    debug_decl(switch_dir, SUDOERS_DEBUG_PARSER);
5808
5809
0
    count = read_dir_files(dirpath, &paths, verbose);
5810
0
    if (count > 0) {
5811
  /* Sort the list as an array in reverse order. */
5812
0
  qsort(paths, count, sizeof(*paths), pl_compare);
5813
5814
  /* Build up the list in sorted order. */
5815
0
  for (i = 0; i < count; i++) {
5816
0
      SLIST_INSERT_HEAD(&stack->more, paths[i], entries);
5817
0
  }
5818
0
  free(paths);
5819
0
    }
5820
5821
0
    debug_return_size_t(count);
5822
0
}
5823
5824
0
#define MAX_SUDOERS_DEPTH 128
5825
0
#define SUDOERS_STACK_INCREMENT 16
5826
5827
static size_t istacksize, idepth;
5828
static struct include_stack *istack;
5829
static bool keepopen;
5830
5831
void
5832
init_lexer(void)
5833
45.9k
{
5834
45.9k
    struct path_list *pl;
5835
45.9k
    debug_decl(init_lexer, SUDOERS_DEBUG_PARSER);
5836
5837
45.9k
#ifndef TRACELEXER
5838
45.9k
    free(trace_lbuf.buf);
5839
45.9k
    sudo_lbuf_init(&trace_lbuf, NULL, 0, NULL, 0);
5840
45.9k
#endif
5841
5842
45.9k
    while (idepth) {
5843
0
  idepth--;
5844
0
  while ((pl = SLIST_FIRST(&istack[idepth].more)) != NULL) {
5845
0
      SLIST_REMOVE_HEAD(&istack[idepth].more, entries);
5846
0
      sudo_rcstr_delref(pl->path);
5847
0
      free(pl);
5848
0
  }
5849
0
  sudo_rcstr_delref(istack[idepth].path);
5850
0
  if (idepth && !istack[idepth].keepopen)
5851
0
      fclose(istack[idepth].bs->yy_input_file);
5852
0
  sudoers_delete_buffer(istack[idepth].bs);
5853
0
  free(istack[idepth].line.buf);
5854
0
    }
5855
45.9k
    free(istack);
5856
45.9k
    istack = NULL;
5857
45.9k
    istacksize = idepth = 0;
5858
45.9k
    free(sudolinebuf.buf);
5859
45.9k
    memset(&sudolinebuf, 0, sizeof(sudolinebuf));
5860
45.9k
    sudolineno = 1;
5861
45.9k
    keepopen = false;
5862
45.9k
    sawspace = false;
5863
45.9k
    continued = false;
5864
45.9k
    digest_type = SUDO_DIGEST_INVALID;
5865
45.9k
    prev_state = INITIAL;
5866
45.9k
    BEGIN INITIAL;
5867
5868
45.9k
    debug_return;
5869
45.9k
}
5870
5871
/*
5872
 * Like strlcpy() but expand %h escapes.
5873
 */
5874
static size_t
5875
strlcpy_expand_host(char * restrict dst, const char * restrict src,
5876
    const char * restrict host, size_t size)
5877
0
{
5878
0
    size_t len = 0;
5879
0
    char ch;
5880
0
    debug_decl(strlcpy_expand_host, SUDOERS_DEBUG_PARSER);
5881
5882
0
    while ((ch = *src++) != '\0') {
5883
0
  if (ch == '%' && *src == 'h') {
5884
0
      size_t n = strlcpy(dst, host, size);
5885
0
      len += n;
5886
0
      if (n >= size) {
5887
    /* truncated */
5888
0
    n = size ? size - 1 : 0;
5889
0
      }
5890
0
      dst += n;
5891
0
      size -= n;
5892
0
      src++;
5893
0
      continue;
5894
0
  }
5895
0
  if (size > 1) {
5896
0
      *dst++ = ch;
5897
0
      size--;
5898
0
      len++;
5899
0
  }
5900
0
    }
5901
0
    if (size > 0)
5902
0
  *dst = '\0';
5903
5904
0
    debug_return_size_t(len);
5905
0
}
5906
5907
/*
5908
 * Expand any embedded %h (host) escapes in the given path and makes
5909
 * a relative path fully-qualified based on the current sudoers file.
5910
 * Returns a reference-counted string on success or NULL on failure.
5911
 */
5912
static char *
5913
expand_include(const char *src, const char *host)
5914
0
{
5915
0
    const char *path = sudoers_search_path ? sudoers_search_path : sudoers;
5916
0
    const char *path_end = path + strlen(path);
5917
0
    char *dst, *dst0 = NULL, *dynamic_host = NULL;
5918
0
    const char *cp, *ep;
5919
0
    size_t dst_size, src_len;
5920
0
    size_t nhost = 0;
5921
0
    debug_decl(expand_include, SUDOERS_DEBUG_PARSER);
5922
5923
    /* Strip double quotes if present. */
5924
0
    src_len = strlen(src);
5925
0
    if (src_len > 1 && src[0] == '"' && src[src_len - 1] == '"') {
5926
0
  src++;
5927
0
  src_len -= 2;
5928
0
    }
5929
0
    if (src_len == 0)
5930
0
  debug_return_ptr(NULL);
5931
5932
    /* Check for %h escapes in src. */
5933
0
    cp = src;
5934
0
    ep = src + src_len;
5935
0
    while (cp < ep) {
5936
0
  if (cp[0] == '%' && cp[1] == 'h') {
5937
0
      nhost++;
5938
0
      cp += 2;
5939
0
      continue;
5940
0
  }
5941
0
  cp++;
5942
0
    }
5943
5944
    /* Check for a path separator in the host name, replace with '_'. */
5945
0
    if (nhost != 0 && strchr(host, '/') != NULL) {
5946
0
  dynamic_host = malloc(strlen(host) + 1);
5947
0
  if (dynamic_host == NULL) {
5948
0
      sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
5949
0
      goto bad;
5950
0
  }
5951
0
  for (dst = dynamic_host; *host != '\0'; host++) {
5952
0
      if (*host == '/') {
5953
0
    *dst++ = '_';
5954
0
    continue;
5955
0
      }
5956
0
      *dst++ = *host;
5957
0
  }
5958
0
  *dst = '\0';
5959
0
  host = dynamic_host;
5960
0
    }
5961
5962
0
    if (*src == '/') {
5963
  /* Fully-qualified path, make a copy and expand %h escapes. */
5964
0
  dst_size = src_len + (nhost * strlen(host)) - (nhost * 2) + 1;
5965
0
  dst0 = sudo_rcstr_alloc(dst_size - 1);
5966
0
  if (dst0 == NULL) {
5967
0
      sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
5968
0
      goto bad;
5969
0
  }
5970
0
  if (strlcpy_expand_host(dst0, src, host, dst_size) >= dst_size)
5971
0
      goto oflow;
5972
0
  goto done;
5973
0
    }
5974
5975
    /*
5976
     * Relative paths are located in the same dir as the sudoers file.
5977
     * If the current sudoers file was opened via a colon-separated path,
5978
     * use the same path when opening src.
5979
     */
5980
0
    dst_size = 1;
5981
0
    for (cp = sudo_strsplit(path, path_end, ":", &ep); cp != NULL;
5982
0
      cp = sudo_strsplit(NULL, path_end, ":", &ep)) {
5983
0
  char *dirend = memrchr(cp, '/', (size_t)(ep - cp));
5984
0
  if (dirend != NULL) {
5985
      /* Include space for trailing '/' separator. */
5986
0
      dst_size += (size_t)(dirend - cp) + 1;
5987
0
  }
5988
  /* Includes space for expanded host and ':' separator. */
5989
0
  dst_size += src_len + (nhost * strlen(host)) - (nhost * 2) + 1;
5990
0
    }
5991
5992
    /* Make a copy of the fully-qualified path and return it. */
5993
0
    dst = dst0 = sudo_rcstr_alloc(dst_size - 1);
5994
0
    if (dst0 == NULL) {
5995
0
  sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
5996
0
  goto bad;
5997
0
    }
5998
0
    for (cp = sudo_strsplit(path, path_end, ":", &ep); cp != NULL;
5999
0
      cp = sudo_strsplit(NULL, path_end, ":", &ep)) {
6000
0
  size_t len;
6001
0
  char *dirend;
6002
6003
0
  if (cp != path) {
6004
0
      if (dst_size < 2)
6005
0
    goto oflow;
6006
0
      *dst++ = ':';
6007
0
      dst_size--;
6008
0
  }
6009
6010
0
  dirend = memrchr(cp, '/', (size_t)(ep - cp));
6011
0
  if (dirend != NULL) {
6012
0
      len = (size_t)(dirend - cp) + 1;
6013
0
      if (len >= dst_size)
6014
0
    goto oflow;
6015
0
      memcpy(dst, cp, len);
6016
0
      dst += len;
6017
0
      dst_size -= len;
6018
0
  }
6019
6020
0
  len = strlcpy_expand_host(dst, src, host, dst_size);
6021
0
  if (len >= dst_size)
6022
0
      goto oflow;
6023
0
  dst += len;
6024
0
  dst_size -= len;
6025
0
    }
6026
0
    *dst = '\0';
6027
6028
0
done:
6029
0
    free(dynamic_host);
6030
0
    debug_return_str(dst0);
6031
0
oflow:
6032
0
    sudo_warnx(U_("internal error, %s overflow"), __func__);
6033
0
bad:
6034
0
    sudoerserror(NULL);
6035
0
    free(dynamic_host);
6036
0
    free(dst0);
6037
0
    debug_return_str(NULL);
6038
0
}
6039
6040
/*
6041
 * Open an include file (or file from a directory), push the old
6042
 * sudoers file buffer and switch to the new one.
6043
 * A missing or insecure include dir is simply ignored.
6044
 * Returns false on error, else true.
6045
 */
6046
static bool
6047
push_include_int(const char *opath, const char *host, bool isdir,
6048
     struct sudoers_parser_config *conf)
6049
0
{
6050
0
    struct path_list *pl;
6051
0
    char *file = NULL, *path;
6052
0
    FILE *fp;
6053
0
    debug_decl(push_include, SUDOERS_DEBUG_PARSER);
6054
6055
0
    if ((path = expand_include(opath, host)) == NULL)
6056
0
  debug_return_bool(false);
6057
6058
    /* push current state onto stack */
6059
0
    if (idepth >= istacksize) {
6060
0
  struct include_stack *new_istack;
6061
6062
0
  if (idepth > MAX_SUDOERS_DEPTH) {
6063
0
      if (conf->verbose > 0) {
6064
0
    fprintf(stderr, U_("%s: %s"), path,
6065
0
        U_("too many levels of includes"));
6066
0
    fputc('\n', stderr);
6067
0
      }
6068
0
      sudoerserror(NULL);
6069
0
      sudo_rcstr_delref(path);
6070
0
      debug_return_bool(false);
6071
0
  }
6072
0
  istacksize += SUDOERS_STACK_INCREMENT;
6073
0
  new_istack = reallocarray(istack, istacksize, sizeof(*istack));
6074
0
  if (new_istack == NULL) {
6075
0
      sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
6076
0
      sudoerserror(NULL);
6077
0
      sudo_rcstr_delref(path);
6078
0
      debug_return_bool(false);
6079
0
  }
6080
0
  istack = new_istack;
6081
0
    }
6082
0
    SLIST_INIT(&istack[idepth].more);
6083
0
    if (isdir) {
6084
0
  struct stat sb;
6085
0
  char dname[PATH_MAX];
6086
0
  int fd, status;
6087
0
  size_t count;
6088
6089
0
  fd = sudo_open_conf_path(path, dname, sizeof(dname), NULL);
6090
0
  if (conf->ignore_perms) {
6091
      /* Skip sudoers security checks when ignore_perms is set. */
6092
0
      if (fd == -1 || fstat(fd, &sb) == -1)
6093
0
    status = SUDO_PATH_MISSING;
6094
0
      else
6095
0
    status = SUDO_PATH_SECURE;
6096
0
  } else {
6097
0
      status = sudo_secure_fd(fd, S_IFDIR, sudoers_file_uid(),
6098
0
    sudoers_file_gid(), &sb);
6099
0
  }
6100
0
  if (fd != -1)
6101
0
      close(fd); /* XXX use in read_dir_files? */
6102
0
  if (status != SUDO_PATH_SECURE) {
6103
0
      if (conf->verbose > 0) {
6104
0
    switch (status) {
6105
0
    case SUDO_PATH_BAD_TYPE:
6106
0
        errno = ENOTDIR;
6107
0
        sudo_warn("%s", path);
6108
0
        break;
6109
0
    case SUDO_PATH_WRONG_OWNER:
6110
0
        sudo_warnx(U_("%s is owned by uid %u, should be %u"),   
6111
0
      path, (unsigned int) sb.st_uid,
6112
0
      (unsigned int) sudoers_file_uid());
6113
0
        break;
6114
0
    case SUDO_PATH_WORLD_WRITABLE:
6115
0
        sudo_warnx(U_("%s is world writable"), path);
6116
0
        break;
6117
0
    case SUDO_PATH_GROUP_WRITABLE:
6118
0
        sudo_warnx(U_("%s is owned by gid %u, should be %u"),
6119
0
      path, (unsigned int) sb.st_gid,
6120
0
      (unsigned int) sudoers_file_gid());
6121
0
        break;
6122
0
    default:
6123
0
        break;
6124
0
    }
6125
0
      }
6126
      /* A missing or insecure include dir is not a fatal error. */
6127
0
      sudo_rcstr_delref(path);
6128
0
      debug_return_bool(true);
6129
0
  }
6130
0
  count = switch_dir(&istack[idepth], dname, conf->verbose);
6131
0
  switch (count) {
6132
0
  case SIZE_MAX:
6133
0
  case 0:
6134
      /* switch_dir() called sudoerserror() for us */
6135
0
      sudo_rcstr_delref(path);
6136
0
      debug_return_bool(count ? false : true);
6137
0
  }
6138
6139
  /* Parse the first dir entry we can open, leave the rest for later. */
6140
0
  do {
6141
0
      sudo_rcstr_delref(file);
6142
0
      sudo_rcstr_delref(path);
6143
0
      if ((pl = SLIST_FIRST(&istack[idepth].more)) == NULL) {
6144
    /* Unable to open any files in include dir, not an error. */
6145
0
    debug_return_bool(true);
6146
0
      }
6147
0
      SLIST_REMOVE_HEAD(&istack[idepth].more, entries);
6148
0
      path = pl->path;
6149
0
      free(pl);
6150
      /* The file and path and the same for sudoers.d files. */
6151
0
      file = path;
6152
0
      sudo_rcstr_addref(file);
6153
0
  } while ((fp = open_sudoers(file, NULL, false, &keepopen)) == NULL);
6154
0
    } else {
6155
0
  if ((fp = open_sudoers(path, &file, true, &keepopen)) == NULL) {
6156
      /* The error was already printed by open_sudoers() */
6157
0
      sudoerserror(NULL);
6158
0
      sudo_rcstr_delref(path);
6159
0
      debug_return_bool(false);
6160
0
  }
6161
0
    }
6162
    /*
6163
     * Push the old (current) file and open the new one.
6164
     * We use the existing refs of sudoers and sudoers_search_path.
6165
     */
6166
0
    istack[idepth].file = sudoers;
6167
0
    istack[idepth].path = sudoers_search_path;
6168
0
    istack[idepth].line = sudolinebuf;
6169
0
    istack[idepth].bs = YY_CURRENT_BUFFER;
6170
0
    istack[idepth].lineno = sudolineno;
6171
0
    istack[idepth].keepopen = keepopen;
6172
0
    idepth++;
6173
0
    sudolineno = 1;
6174
0
    sudoers = file;
6175
0
    sudoers_search_path = path;
6176
0
    sudoers_switch_to_buffer(sudoers_create_buffer(fp, YY_BUF_SIZE));
6177
0
    memset(&sudolinebuf, 0, sizeof(sudolinebuf));
6178
6179
0
    debug_return_bool(true);
6180
0
}
6181
6182
bool
6183
push_include(const char *opath, const char *host,
6184
     struct sudoers_parser_config *conf)
6185
0
{
6186
0
    return push_include_int(opath, host, false, conf);
6187
0
}
6188
6189
bool
6190
push_includedir(const char *opath, const char *host,
6191
     struct sudoers_parser_config *conf)
6192
0
{
6193
0
    return push_include_int(opath, host, true, conf);
6194
0
}
6195
6196
/*
6197
 * Restore the previous sudoers file and buffer, or, in the case
6198
 * of an includedir, switch to the next file in the dir.
6199
 * Returns false if there is nothing to pop, else true.
6200
 */
6201
static bool
6202
pop_include(void)
6203
5
{
6204
5
    struct path_list *pl;
6205
5
    FILE *fp;
6206
5
    debug_decl(pop_include, SUDOERS_DEBUG_PARSER);
6207
6208
5
    if (idepth == 0 || YY_CURRENT_BUFFER == NULL)
6209
5
  debug_return_bool(false);
6210
6211
0
    if (!keepopen)
6212
0
  fclose(YY_CURRENT_BUFFER->yy_input_file);
6213
0
    sudoers_delete_buffer(YY_CURRENT_BUFFER);
6214
    /* If we are in an include dir, move to the next file. */
6215
0
    while ((pl = SLIST_FIRST(&istack[idepth - 1].more)) != NULL) {
6216
0
  SLIST_REMOVE_HEAD(&istack[idepth - 1].more, entries);
6217
0
  fp = open_sudoers(pl->path, NULL, false, &keepopen);
6218
0
  if (fp != NULL) {
6219
0
      sudolinebuf.len = sudolinebuf.off = 0;
6220
0
      sudolinebuf.toke_start = sudolinebuf.toke_end = 0;
6221
0
      sudo_rcstr_delref(sudoers);
6222
0
      sudo_rcstr_delref(sudoers_search_path);
6223
0
      sudoers_search_path = pl->path;
6224
0
      sudoers = sudoers_search_path;
6225
0
      sudo_rcstr_addref(sudoers);
6226
0
      sudolineno = 1;
6227
0
      sudoers_switch_to_buffer(sudoers_create_buffer(fp, YY_BUF_SIZE));
6228
0
      free(pl);
6229
0
      break;
6230
0
  }
6231
  /* Unable to open path in include dir, go to next one. */
6232
0
  sudo_rcstr_delref(pl->path);
6233
0
  free(pl);
6234
0
    }
6235
    /* If no path list, just pop the last dir on the stack. */
6236
0
    if (pl == NULL) {
6237
0
  idepth--;
6238
0
  sudoers_switch_to_buffer(istack[idepth].bs);
6239
0
  free(sudolinebuf.buf);
6240
0
  sudolinebuf = istack[idepth].line;
6241
0
  sudo_rcstr_delref(sudoers);
6242
0
  sudoers = istack[idepth].file;
6243
0
  sudo_rcstr_delref(sudoers_search_path);
6244
0
  sudoers_search_path = istack[idepth].path;
6245
0
  sudolineno = istack[idepth].lineno;
6246
0
  keepopen = istack[idepth].keepopen;
6247
0
    }
6248
0
    debug_return_bool(true);
6249
0
}
6250
6251
#ifdef TRACELEXER
6252
int
6253
sudoers_trace_print(const char *msg)
6254
{
6255
    return fputs(msg, stderr);
6256
}
6257
#else
6258
int
6259
sudoers_trace_print(const char *msg)
6260
216k
{
6261
216k
    debug_decl_vars(sudoers_trace_print, SUDOERS_DEBUG_PARSER);
6262
6263
216k
    if (sudo_debug_needed(SUDO_DEBUG_DEBUG)) {
6264
0
  sudo_lbuf_append(&trace_lbuf, "%s", msg);
6265
0
  if (strchr(msg, '\n') != NULL)
6266
0
  {
6267
      /* We already parsed the newline so sudolineno is off by one. */
6268
0
      sudo_debug_printf2(NULL, NULL, 0,
6269
0
    sudo_debug_subsys|SUDO_DEBUG_DEBUG, "sudoerslex: %s:%d: %s",
6270
0
    sudoers, sudolineno - 1, trace_lbuf.buf);
6271
0
      trace_lbuf.len = 0;
6272
0
  }
6273
0
    }
6274
216k
    return 0;
6275
216k
}
6276
#endif /* TRACELEXER */
6277
6278
/*
6279
 * Custom input function that uses getdelim(3) and stores the buffer
6280
 * where the error functions can access it for better reporting.
6281
 * On success, buf is guaranteed to end in a newline and not contain
6282
 * embedded NULs.  Calls YY_FATAL_ERROR on error.
6283
 */
6284
static int
6285
sudoers_input(char *buf, yy_size_t max_size)
6286
294
{
6287
294
    char *cp;
6288
294
    size_t avail = sudolinebuf.len - sudolinebuf.off;
6289
294
    debug_decl(sudoers_input, SUDOERS_DEBUG_PARSER);
6290
6291
    /* Refill line buffer if needed. */
6292
294
    if (avail == 0) {
6293
  /*
6294
   * Some getdelim(3) implementations write NUL to buf on EOF.
6295
   * We peek ahead one char to detect EOF and skip the getdelim() call.
6296
   * This will preserve the original value of the last line read.
6297
   */
6298
38
  int ch = getc(sudoersin);
6299
38
  if (ch == EOF)
6300
5
      goto sudoers_eof;
6301
33
  ungetc(ch, sudoersin);
6302
33
  avail = (size_t)getdelim(&sudolinebuf.buf, &sudolinebuf.size, '\n', sudoersin);
6303
33
  if (avail == (size_t)-1) {
6304
5
sudoers_eof:
6305
      /* EOF or error. */
6306
5
      if (feof(sudoersin))
6307
5
    debug_return_int(0);
6308
5
      YY_FATAL_ERROR("input in flex scanner failed");
6309
5
  }
6310
6311
  /* getdelim() can return embedded NULs, truncate if we find one. */
6312
33
  cp = memchr(sudolinebuf.buf, '\0', avail);
6313
33
  if (cp != NULL) {
6314
19
      *cp++ = '\n';
6315
19
      *cp = '\0';
6316
19
      avail = (size_t)(cp - sudolinebuf.buf);
6317
19
  }
6318
6319
  /* Add trailing newline if it is missing. */
6320
33
  if (sudolinebuf.buf[avail - 1] != '\n') {
6321
2
      if (avail + 2 >= sudolinebuf.size) {
6322
0
    cp = realloc(sudolinebuf.buf, avail + 2);
6323
0
    if (cp == NULL) {
6324
0
        YY_FATAL_ERROR("unable to allocate memory");
6325
0
        debug_return_int(0);
6326
0
    }
6327
0
    sudolinebuf.buf = cp;
6328
0
    sudolinebuf.size = avail + 2;
6329
0
      }
6330
2
      sudolinebuf.buf[avail++] = '\n';
6331
2
      sudolinebuf.buf[avail] = '\0';
6332
2
  }
6333
6334
33
  sudo_debug_printf(SUDO_DEBUG_DEBUG, "%s:%d: %.*s", sudoers, sudolineno,
6335
33
      (int)(avail -1), sudolinebuf.buf);
6336
6337
33
  sudolinebuf.len = avail;
6338
33
  sudolinebuf.off = 0;
6339
33
  sudolinebuf.toke_start = sudolinebuf.toke_end = 0;
6340
33
    }
6341
6342
289
    if (avail > max_size)
6343
256
  avail = max_size;
6344
289
    memcpy(buf, sudolinebuf.buf + sudolinebuf.off, avail);
6345
289
    sudolinebuf.off += avail;
6346
6347
289
    debug_return_int((int)avail);
6348
289
}
6349