4 #define YY_INT_ALIGNED short int
6 /* A lexical scanner generated by flex */
8 #define yy_create_buffer commentScanYY_create_buffer
9 #define yy_delete_buffer commentScanYY_delete_buffer
10 #define yy_flex_debug commentScanYY_flex_debug
11 #define yy_init_buffer commentScanYY_init_buffer
12 #define yy_flush_buffer commentScanYY_flush_buffer
13 #define yy_load_buffer_state commentScanYY_load_buffer_state
14 #define yy_switch_to_buffer commentScanYY_switch_to_buffer
15 #define yyin commentScanYYin
16 #define yyleng commentScanYYleng
17 #define yylex commentScanYYlex
18 #define yylineno commentScanYYlineno
19 #define yyout commentScanYYout
20 #define yyrestart commentScanYYrestart
21 #define yytext commentScanYYtext
22 #define yywrap commentScanYYwrap
23 #define yyalloc commentScanYYalloc
24 #define yyrealloc commentScanYYrealloc
25 #define yyfree commentScanYYfree
28 #define YY_FLEX_MAJOR_VERSION 2
29 #define YY_FLEX_MINOR_VERSION 5
30 #define YY_FLEX_SUBMINOR_VERSION 35
31 #if YY_FLEX_SUBMINOR_VERSION > 0
35 /* First, we deal with platform-specific or compiler-specific issues. */
37 /* begin standard C headers. */
43 /* end standard C headers. */
45 /* flex integer type definitions */
50 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
52 #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
54 /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
55 * if you want the limit (max/min) macros for int types.
57 #ifndef __STDC_LIMIT_MACROS
58 #define __STDC_LIMIT_MACROS 1
62 typedef int8_t flex_int8_t;
63 typedef uint8_t flex_uint8_t;
64 typedef int16_t flex_int16_t;
65 typedef uint16_t flex_uint16_t;
66 typedef int32_t flex_int32_t;
67 typedef uint32_t flex_uint32_t;
68 typedef uint64_t flex_uint64_t;
70 typedef signed char flex_int8_t;
71 typedef short int flex_int16_t;
72 typedef int flex_int32_t;
73 typedef unsigned char flex_uint8_t;
74 typedef unsigned short int flex_uint16_t;
75 typedef unsigned int flex_uint32_t;
78 /* Limits of integral types. */
80 #define INT8_MIN (-128)
83 #define INT16_MIN (-32767-1)
86 #define INT32_MIN (-2147483647-1)
89 #define INT8_MAX (127)
92 #define INT16_MAX (32767)
95 #define INT32_MAX (2147483647)
98 #define UINT8_MAX (255U)
101 #define UINT16_MAX (65535U)
104 #define UINT32_MAX (4294967295U)
107 #endif /* ! FLEXINT_H */
111 /* The "const" storage-class-modifier is valid. */
114 #else /* ! __cplusplus */
116 /* C99 requires __STDC__ to be defined as 1. */
117 #if defined (__STDC__)
121 #endif /* defined (__STDC__) */
122 #endif /* ! __cplusplus */
125 #define yyconst const
130 /* Returned upon end-of-file. */
133 /* Promotes a possibly negative, possibly signed char to an unsigned
134 * integer for use as an array index. If the signed char is negative,
135 * we want to instead treat it as an 8-bit unsigned char, hence the
138 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
140 /* Enter a start condition. This macro really ought to take a parameter,
141 * but we do it the disgusting crufty way forced on us by the ()-less
142 * definition of BEGIN.
144 #define BEGIN (yy_start) = 1 + 2 *
146 /* Translate the current start state into a value that can be later handed
147 * to BEGIN to return to the state. The YYSTATE alias is for lex
150 #define YY_START (((yy_start) - 1) / 2)
151 #define YYSTATE YY_START
153 /* Action number for EOF rule of a given start state. */
154 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
156 /* Special action meaning "start processing a new file". */
157 #define YY_NEW_FILE commentScanYYrestart(commentScanYYin )
159 #define YY_END_OF_BUFFER_CHAR 0
161 /* Size of default input buffer. */
163 #define YY_BUF_SIZE 262144
166 /* The state buf must be large enough to hold one state per character in the main buffer.
168 #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
170 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
171 #define YY_TYPEDEF_YY_BUFFER_STATE
172 typedef struct yy_buffer_state *YY_BUFFER_STATE;
175 #ifndef YY_TYPEDEF_YY_SIZE_T
176 #define YY_TYPEDEF_YY_SIZE_T
177 typedef size_t yy_size_t;
180 extern yy_size_t commentScanYYleng;
182 extern FILE *commentScanYYin, *commentScanYYout;
184 #define EOB_ACT_CONTINUE_SCAN 0
185 #define EOB_ACT_END_OF_FILE 1
186 #define EOB_ACT_LAST_MATCH 2
188 #define YY_LESS_LINENO(n)
190 /* Return all but the first "n" matched characters back to the input stream. */
194 /* Undo effects of setting up commentScanYYtext. */ \
195 int yyless_macro_arg = (n); \
196 YY_LESS_LINENO(yyless_macro_arg);\
197 *yy_cp = (yy_hold_char); \
198 YY_RESTORE_YY_MORE_OFFSET \
199 (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
200 YY_DO_BEFORE_ACTION; /* set up commentScanYYtext again */ \
204 #define unput(c) yyunput( c, (yytext_ptr) )
206 #ifndef YY_STRUCT_YY_BUFFER_STATE
207 #define YY_STRUCT_YY_BUFFER_STATE
208 struct yy_buffer_state
212 char *yy_ch_buf; /* input buffer */
213 char *yy_buf_pos; /* current position in input buffer */
215 /* Size of input buffer in bytes, not including room for EOB
218 yy_size_t yy_buf_size;
220 /* Number of characters read into yy_ch_buf, not including EOB
223 yy_size_t yy_n_chars;
225 /* Whether we "own" the buffer - i.e., we know we created it,
226 * and can realloc() it to grow it, and should free() it to
229 int yy_is_our_buffer;
231 /* Whether this is an "interactive" input source; if so, and
232 * if we're using stdio for input, then we want to use getc()
233 * instead of fread(), to make sure we stop fetching input after
236 int yy_is_interactive;
238 /* Whether we're considered to be at the beginning of a line.
239 * If so, '^' rules will be active on the next match, otherwise
244 int yy_bs_lineno; /**< The line count. */
245 int yy_bs_column; /**< The column count. */
247 /* Whether to try to fill the input buffer when we reach the
252 int yy_buffer_status;
254 #define YY_BUFFER_NEW 0
255 #define YY_BUFFER_NORMAL 1
256 /* When an EOF's been seen but there's still some text to process
257 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
258 * shouldn't try reading from the input source any more. We might
259 * still have a bunch of tokens to match, though, because of
260 * possible backing-up.
262 * When we actually see the EOF, we change the status to "new"
263 * (via commentScanYYrestart()), so that the user can continue scanning by
264 * just pointing commentScanYYin at a new input file.
266 #define YY_BUFFER_EOF_PENDING 2
269 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
271 /* Stack of input buffers. */
272 static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
273 static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
274 static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
276 /* We provide macros for accessing buffer states in case in the
277 * future we want to put the buffer states in a more general
280 * Returns the top of the stack, or NULL.
282 #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
283 ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
286 /* Same as previous macro, but useful when we know that the buffer stack is not
287 * NULL or when we need an lvalue. For internal use only.
289 #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
291 /* yy_hold_char holds the character lost when commentScanYYtext is formed. */
292 static char yy_hold_char;
293 static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */
294 yy_size_t commentScanYYleng;
296 /* Points to current character in buffer. */
297 static char *yy_c_buf_p = (char *) 0;
298 static int yy_init = 0; /* whether we need to initialize */
299 static int yy_start = 0; /* start state number */
301 /* Flag which is used to allow commentScanYYwrap()'s to do buffer switches
302 * instead of setting up a fresh commentScanYYin. A bit of a hack ...
304 static int yy_did_buffer_switch_on_eof;
306 void commentScanYYrestart (FILE *input_file );
307 void commentScanYY_switch_to_buffer (YY_BUFFER_STATE new_buffer );
308 YY_BUFFER_STATE commentScanYY_create_buffer (FILE *file,int size );
309 void commentScanYY_delete_buffer (YY_BUFFER_STATE b );
310 void commentScanYY_flush_buffer (YY_BUFFER_STATE b );
311 void commentScanYYpush_buffer_state (YY_BUFFER_STATE new_buffer );
312 void commentScanYYpop_buffer_state (void );
314 static void commentScanYYensure_buffer_stack (void );
315 static void commentScanYY_load_buffer_state (void );
316 static void commentScanYY_init_buffer (YY_BUFFER_STATE b,FILE *file );
318 #define YY_FLUSH_BUFFER commentScanYY_flush_buffer(YY_CURRENT_BUFFER )
320 YY_BUFFER_STATE commentScanYY_scan_buffer (char *base,yy_size_t size );
321 YY_BUFFER_STATE commentScanYY_scan_string (yyconst char *yy_str );
322 YY_BUFFER_STATE commentScanYY_scan_bytes (yyconst char *bytes,yy_size_t len );
324 void *commentScanYYalloc (yy_size_t );
325 void *commentScanYYrealloc (void *,yy_size_t );
326 void commentScanYYfree (void * );
328 #define yy_new_buffer commentScanYY_create_buffer
330 #define yy_set_interactive(is_interactive) \
332 if ( ! YY_CURRENT_BUFFER ){ \
333 commentScanYYensure_buffer_stack (); \
334 YY_CURRENT_BUFFER_LVALUE = \
335 commentScanYY_create_buffer(commentScanYYin,YY_BUF_SIZE ); \
337 YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
340 #define yy_set_bol(at_bol) \
342 if ( ! YY_CURRENT_BUFFER ){\
343 commentScanYYensure_buffer_stack (); \
344 YY_CURRENT_BUFFER_LVALUE = \
345 commentScanYY_create_buffer(commentScanYYin,YY_BUF_SIZE ); \
347 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
350 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
352 /* Begin user sect3 */
354 #define commentScanYYwrap(n) 1
355 #define YY_SKIP_YYWRAP
357 typedef unsigned char YY_CHAR;
359 FILE *commentScanYYin = (FILE *) 0, *commentScanYYout = (FILE *) 0;
361 typedef int yy_state_type;
363 extern int commentScanYYlineno;
365 int commentScanYYlineno = 1;
367 extern char *commentScanYYtext;
368 #define yytext_ptr commentScanYYtext
370 static yy_state_type yy_get_previous_state (void );
371 static yy_state_type yy_try_NUL_trans (yy_state_type current_state );
372 static int yy_get_next_buffer (void );
373 static void yy_fatal_error (yyconst char msg[] );
375 /* Done after the current pattern has been matched and before the
376 * corresponding action - sets up commentScanYYtext.
378 #define YY_DO_BEFORE_ACTION \
379 (yytext_ptr) = yy_bp; \
380 commentScanYYleng = (yy_size_t) (yy_cp - yy_bp); \
381 (yy_hold_char) = *yy_cp; \
383 (yy_c_buf_p) = yy_cp;
385 #define YY_NUM_RULES 195
386 #define YY_END_OF_BUFFER 196
387 /* This struct is not used in this scanner,
388 but its presence is necessary. */
391 flex_int32_t yy_verify;
394 static yyconst flex_int16_t yy_acclist[790] =
396 75, 75, 119, 119, 132, 132, 142, 142, 186, 186,
397 196, 195, 43, 195, 43, 195, 42, 195, 43, 195,
398 43, 195, 43, 195, 43, 195, 41, 43, 195, 43,
399 195, 43, 195, 27, 43, 195, 43, 195, 43, 195,
400 43, 195, 43, 195, 43, 195, 41, 43, 195, 43,
401 195, 43, 195, 88, 195, 87, 195, 88, 195, 85,
402 88, 195, 88, 195, 88, 195, 195, 89, 195, 109,
403 195, 108, 195, 109, 195, 106, 109, 195, 109, 195,
404 70, 195, 70, 195, 69, 195, 70, 195, 70, 195,
405 70, 195, 66, 70, 195, 70, 195, 70, 195, 74,
407 195, 73, 195, 74, 195, 71, 74, 195, 74, 195,
408 74, 195, 74, 195, 78, 195, 77, 195, 75, 78,
409 195, 75, 78, 195, 78, 195, 75, 78, 195, 75,
410 78, 195, 78, 195, 70, 195, 69, 195, 70, 195,
411 70, 195, 70, 195, 70, 195, 70, 195, 97, 195,
412 96, 195, 94, 97, 195, 97, 195, 101, 195, 100,
413 195, 101, 195, 101, 195, 105, 195, 104, 195, 105,
414 195, 105, 195, 93, 195, 90, 195, 93, 195, 91,
415 93, 195, 93, 195, 93, 195, 57, 195, 56, 195,
416 57, 195, 54, 57, 195, 57, 195, 61, 195, 61,
418 195, 60, 195, 61, 195, 61, 195, 61, 195, 58,
419 61, 195, 61, 195, 61, 195, 65, 195, 64, 195,
420 65, 195, 62, 65, 195, 65, 195, 81, 195, 79,
421 195, 195, 83, 195, 84, 195, 195, 115, 195, 114,
422 195, 113, 115, 195, 115, 195, 119, 122, 195, 116,
423 195, 119, 122, 195, 122, 195, 122, 195, 124, 195,
424 123, 195, 195, 127, 195, 127, 195, 125, 195, 127,
425 195, 127, 195, 132, 136, 195, 133, 195, 136, 195,
426 136, 195, 136, 195, 136, 195, 136, 195, 112, 195,
427 110, 195, 112, 195, 140, 195, 138, 195, 137, 140,
429 195, 140, 195, 143, 195, 142, 143, 195, 141, 195,
430 143, 195, 150, 151, 195, 149, 195, 151, 195, 151,
431 195, 151, 195, 161, 162, 195, 152, 195, 162, 195,
432 162, 195, 162, 195, 165, 195, 163, 195, 165, 195,
433 169, 195, 167, 195, 166, 169, 195, 169, 195, 172,
434 175, 195, 170, 195, 173, 175, 195, 174, 175, 195,
435 175, 195, 175, 195, 178, 195, 176, 195, 178, 195,
436 181, 195, 180, 195, 181, 195, 179, 181, 195, 181,
437 195, 184, 195, 183, 195, 184, 195, 182, 184, 195,
438 184, 195, 51, 53, 195, 52, 195, 53, 195, 53,
440 195, 130, 195, 129, 195, 128, 130, 195, 130, 195,
441 46, 47, 195, 45, 195, 47, 195, 47, 195, 186,
442 188, 195, 187, 195, 188, 195, 188, 195, 188, 195,
443 191, 195, 190, 195, 189, 191, 195, 191, 195, 193,
444 194, 195, 192, 195, 194, 195, 40, 4, 34, 35,
445 37, 35, 26, 26, 18, 26, 18, 18, 18, 18,
446 18, 18, 24, 25, 20, 26, 27, 18, 18, 18,
447 18, 18, 18, 18, 18, 30, 31, 34, 28, 85,
448 85, 86, 85, 89, 106, 106, 107, 66, 66, 68,
449 66, 71, 71, 72, 71, 75, 75, 75, 75, 75,
451 75, 76, 75, 94, 95, 98, 99, 103, 102, 103,
452 91, 91, 92, 91, 54, 54, 54, 55, 58, 58,
453 59, 58, 62, 62, 63, 79, 80, 83, 82, 113,
454 119, 116, 119, 121, 121, 118, 123, 126, 132, 135,
455 134, 111, 137, 139, 142, 141, 150, 161, 164, 166,
456 168, 172, 171, 177, 179, 179, 182, 182, 51, 128,
457 46, 186, 185, 189, 193, 26, 33, 39, 35, 39,
458 39, 39, 35, 39, 39, 36, 7, 1, 1, 2,
459 18, 18, 18, 18, 22, 23, 18, 18, 18, 20,
460 5, 18, 18, 18, 18, 18, 18, 18, 32, 33,
462 29, 85, 85, 66, 71, 71, 75, 75, 75, 91,
463 91, 54, 54, 54, 54, 58, 62, 120, 48, 49,
464 50, 44, 185, 39, 39, 16, 1, 19, 2, 8198,
465 18,16390, 18, 18, 18, 18, 18, 18, 8198, 18,
466 16390, 18, 18, 18, 18, 18, 85, 71, 75, 75,
467 67, 91, 54, 54, 54, 62, 120, 145, 153, 44,
468 15, 38, 7, 13, 8198, 8198, 18, 18, 18, 21,
469 18, 18, 5, 8198, 18, 18, 18, 85, 71, 75,
470 91, 3, 14, 8, 18, 18, 21, 18, 18, 18,
471 18, 18, 85, 71, 75, 91, 79, 147, 155, 18,
473 18, 18, 18, 18, 18, 18, 85, 71, 75, 91,
474 146, 144, 154, 18, 18, 18, 18, 18, 18, 18,
475 85, 87, 108, 69, 71, 73, 75, 77, 96, 100,
476 104, 90, 91, 56, 60, 64, 81, 84, 114, 117,
477 124, 125, 131, 133, 110, 138, 148, 149, 152, 163,
478 167, 170, 176, 180, 183, 129, 45, 187, 190, 192,
479 10, 9, 18, 18, 18, 5, 18, 18, 156, 12,
480 11, 18, 18, 18, 18, 18, 18, 159, 17, 18,
481 17, 18, 160, 157, 17, 18, 160, 158, 40
484 static yyconst flex_int16_t yy_accept[1138] =
486 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
487 1, 1, 1, 1, 1, 2, 3, 3, 3, 3,
488 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
489 3, 3, 3, 3, 3, 3, 3, 3, 3, 4,
490 5, 5, 5, 5, 5, 6, 7, 7, 7, 7,
491 7, 8, 9, 9, 9, 9, 9, 9, 9, 9,
492 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
493 9, 9, 9, 9, 9, 9, 9, 10, 11, 11,
494 11, 11, 11, 12, 13, 15, 17, 19, 21, 23,
495 25, 27, 30, 32, 34, 37, 39, 41, 43, 45,
497 47, 50, 52, 54, 56, 58, 60, 63, 65, 67,
498 68, 70, 72, 74, 76, 79, 81, 83, 85, 87,
499 89, 91, 93, 96, 98, 100, 102, 104, 106, 109,
500 111, 113, 115, 117, 119, 122, 125, 127, 130, 133,
501 135, 137, 139, 141, 143, 145, 147, 149, 151, 153,
502 156, 158, 160, 162, 164, 166, 168, 170, 172, 174,
503 176, 178, 180, 183, 185, 187, 189, 191, 193, 196,
504 198, 200, 202, 204, 206, 208, 210, 213, 215, 217,
505 219, 221, 223, 226, 228, 230, 232, 233, 235, 237,
506 238, 240, 242, 245, 247, 250, 252, 255, 257, 259,
508 261, 263, 264, 266, 268, 270, 272, 274, 277, 279,
509 281, 283, 285, 287, 289, 291, 293, 295, 297, 299,
510 302, 304, 306, 309, 311, 313, 316, 318, 320, 322,
511 324, 327, 329, 331, 333, 335, 337, 339, 341, 343,
512 345, 348, 350, 353, 355, 358, 361, 363, 365, 367,
513 369, 371, 373, 375, 377, 380, 382, 384, 386, 388,
514 391, 393, 396, 398, 400, 402, 404, 406, 409, 411,
515 414, 416, 418, 420, 423, 425, 427, 429, 431, 433,
516 435, 438, 440, 443, 445, 447, 447, 447, 447, 447,
517 448, 448, 448, 449, 449, 449, 449, 449, 450, 451,
519 452, 452, 453, 453, 453, 453, 453, 453, 453, 453,
520 453, 453, 453, 453, 453, 453, 454, 455, 456, 457,
521 458, 459, 460, 461, 462, 463, 464, 465, 467, 468,
522 469, 470, 471, 472, 473, 474, 475, 476, 476, 476,
523 476, 476, 476, 476, 477, 478, 479, 479, 480, 480,
524 480, 480, 480, 480, 481, 482, 482, 482, 482, 483,
525 484, 484, 485, 486, 486, 487, 487, 487, 488, 488,
526 488, 488, 488, 488, 489, 489, 489, 490, 490, 491,
527 491, 491, 491, 492, 492, 493, 494, 494, 494, 494,
528 495, 496, 496, 497, 498, 498, 499, 500, 501, 501,
530 501, 502, 502, 503, 504, 504, 504, 504, 504, 504,
531 504, 504, 504, 504, 504, 504, 504, 504, 505, 505,
532 506, 506, 506, 507, 507, 509, 509, 509, 510, 510,
533 511, 511, 511, 512, 513, 513, 513, 513, 514, 515,
534 516, 516, 516, 517, 517, 518, 518, 519, 519, 519,
535 519, 519, 519, 520, 520, 520, 521, 521, 522, 522,
536 522, 522, 523, 524, 524, 525, 525, 526, 526, 527,
537 527, 527, 528, 528, 529, 529, 530, 530, 531, 531,
538 532, 533, 534, 534, 535, 536, 536, 537, 537, 538,
539 538, 538, 538, 538, 539, 539, 540, 541, 542, 542,
541 542, 542, 543, 543, 544, 544, 545, 545, 546, 547,
542 547, 547, 548, 548, 548, 548, 549, 549, 549, 549,
543 549, 549, 549, 550, 550, 551, 551, 552, 552, 553,
544 553, 554, 554, 554, 555, 555, 556, 556, 557, 557,
545 557, 558, 558, 559, 559, 559, 560, 560, 560, 561,
546 561, 562, 562, 562, 563, 564, 564, 565, 565, 566,
547 566, 567, 567, 567, 567, 567, 568, 569, 571, 572,
548 573, 575, 576, 577, 577, 577, 577, 577, 577, 577,
549 577, 577, 578, 578, 578, 578, 578, 578, 579, 580,
550 581, 582, 583, 584, 585, 586, 587, 587, 588, 589,
552 590, 591, 592, 593, 594, 595, 596, 597, 598, 599,
553 599, 599, 599, 599, 600, 601, 601, 602, 603, 603,
554 604, 604, 604, 604, 605, 606, 606, 607, 608, 608,
555 609, 609, 610, 610, 610, 610, 610, 610, 610, 611,
556 611, 612, 613, 614, 615, 616, 616, 616, 617, 617,
557 618, 618, 618, 618, 618, 618, 618, 619, 619, 619,
558 619, 619, 619, 619, 619, 619, 619, 619, 619, 619,
559 619, 619, 619, 619, 619, 619, 619, 619, 619, 619,
560 619, 619, 619, 619, 620, 621, 622, 622, 622, 623,
561 623, 624, 624, 624, 624, 624, 624, 624, 624, 625,
563 626, 627, 627, 627, 627, 627, 627, 627, 627, 627,
564 627, 627, 627, 628, 629, 630, 633, 634, 635, 635,
565 636, 637, 638, 638, 639, 642, 643, 644, 645, 646,
566 647, 647, 647, 647, 648, 648, 648, 649, 650, 650,
567 651, 652, 652, 652, 652, 653, 653, 654, 655, 656,
568 656, 656, 657, 657, 657, 657, 657, 657, 658, 658,
569 658, 658, 658, 658, 658, 658, 658, 658, 658, 659,
570 659, 659, 659, 660, 660, 660, 660, 660, 660, 660,
571 660, 660, 660, 660, 660, 660, 661, 661, 661, 661,
572 661, 661, 662, 662, 662, 663, 663, 663, 663, 663,
574 663, 665, 665, 665, 665, 666, 668, 669, 670, 671,
575 672, 673, 675, 676, 677, 678, 678, 679, 679, 679,
576 680, 681, 681, 681, 681, 682, 682, 682, 682, 682,
577 682, 682, 682, 682, 682, 682, 682, 682, 682, 682,
578 682, 682, 682, 682, 682, 682, 682, 682, 682, 682,
579 682, 682, 682, 682, 682, 682, 682, 682, 682, 682,
580 682, 682, 682, 682, 682, 682, 682, 682, 682, 682,
581 682, 683, 684, 684, 684, 684, 685, 685, 685, 685,
582 685, 686, 687, 688, 689, 690, 691, 692, 693, 694,
583 694, 694, 695, 696, 696, 696, 696, 697, 697, 697,
585 697, 697, 697, 698, 698, 698, 698, 698, 698, 698,
586 698, 698, 698, 698, 698, 698, 698, 698, 698, 698,
587 698, 698, 698, 699, 699, 699, 699, 699, 700, 700,
588 700, 700, 700, 700, 700, 700, 700, 700, 700, 700,
589 700, 700, 700, 700, 700, 700, 700, 700, 700, 700,
590 700, 700, 700, 700, 701, 702, 703, 704, 705, 706,
591 707, 708, 708, 708, 709, 710, 710, 710, 710, 711,
592 711, 711, 711, 711, 711, 711, 711, 711, 711, 711,
593 711, 711, 711, 711, 711, 711, 711, 711, 711, 711,
594 711, 711, 712, 713, 713, 713, 714, 714, 714, 714,
596 714, 714, 714, 714, 714, 714, 714, 714, 714, 714,
597 714, 714, 714, 714, 714, 714, 714, 714, 715, 716,
598 717, 718, 719, 720, 721, 723, 724, 725, 727, 729,
599 730, 731, 732, 734, 735, 736, 737, 738, 739, 740,
600 741, 742, 743, 744, 744, 744, 744, 744, 744, 744,
601 745, 746, 747, 748, 749, 749, 749, 749, 749, 749,
602 750, 751, 752, 753, 754, 755, 756, 757, 758, 759,
603 760, 761, 761, 761, 762, 763, 764, 765, 766, 767,
604 768, 769, 769, 769, 769, 769, 769, 769, 769, 769,
605 770, 770, 770, 771, 772, 773, 774, 774, 775, 776,
607 776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
608 777, 777, 778, 778, 778, 778, 778, 779, 779, 779,
609 781, 781, 783, 783, 784, 785, 785, 787, 787, 788,
610 788, 788, 788, 788, 789, 790, 790
613 static yyconst flex_int32_t yy_ec[256] =
615 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
616 1, 1, 4, 1, 1, 1, 1, 1, 1, 1,
617 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
618 1, 5, 6, 7, 8, 9, 8, 8, 1, 10,
619 11, 12, 13, 14, 15, 16, 17, 18, 19, 19,
620 19, 19, 19, 19, 20, 20, 20, 21, 1, 22,
621 1, 23, 1, 24, 25, 26, 27, 28, 29, 30,
622 31, 32, 33, 30, 30, 34, 35, 30, 36, 37,
623 30, 38, 30, 39, 40, 30, 30, 30, 30, 30,
624 41, 42, 43, 1, 44, 1, 45, 46, 47, 48,
626 49, 50, 51, 52, 53, 30, 54, 55, 56, 57,
627 58, 59, 30, 60, 61, 62, 63, 64, 30, 65,
628 66, 30, 67, 68, 69, 70, 1, 71, 71, 71,
629 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
630 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
631 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
632 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
633 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
634 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
635 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
637 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
638 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
639 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
640 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
641 71, 71, 71, 71, 71, 71, 71, 71, 71, 71,
645 static yyconst flex_int32_t yy_meta[72] =
647 1, 2, 3, 4, 5, 1, 6, 7, 8, 9,
648 10, 11, 12, 13, 14, 15, 16, 17, 17, 17,
649 18, 7, 19, 20, 21, 21, 21, 21, 21, 21,
650 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
651 1, 22, 1, 23, 21, 21, 21, 21, 21, 21,
652 21, 21, 24, 21, 21, 21, 25, 21, 21, 21,
653 21, 21, 21, 21, 21, 21, 7, 26, 27, 28,
657 static yyconst flex_int16_t yy_base[1356] =
659 0, 0, 0, 70, 138, 208, 4982, 4981, 278, 0,
660 349, 0, 420, 490, 560, 630, 700, 0, 771, 0,
661 70, 71, 73, 81, 842, 912, 982, 0, 1053, 0,
662 1124, 0, 1195, 0, 84, 89, 1266, 0, 90, 92,
663 1337, 0, 115, 122, 153, 179, 91, 94, 1408, 0,
664 184, 195, 95, 148, 199, 230, 125, 127, 1479, 0,
665 435, 444, 132, 185, 1550, 0, 1621, 0, 231, 432,
666 436, 461, 1692, 0, 225, 437, 505, 506, 1763, 0,
667 196, 430, 4983, 8724, 8724, 514, 468, 4975, 4971, 4955,
668 84, 232, 1829, 1885, 244, 1948, 2017, 101, 161, 519,
670 583, 526, 590, 8724, 8724, 4971, 601, 603, 1842, 4968,
671 8724, 8724, 8724, 0, 89, 478, 8724, 658, 662, 870,
672 1834, 4949, 866, 534, 682, 8724, 8724, 4959, 860, 883,
673 4941, 1894, 8724, 8724, 2085, 925, 1907, 1925, 8724, 1957,
674 947, 954, 1979, 2000, 4942, 2040, 892, 8724, 8724, 0,
675 549, 8724, 8724, 4954, 611, 8724, 8724, 4953, 887, 8724,
676 8724, 4951, 922, 1832, 2061, 8724, 8724, 0, 2111, 903,
677 8724, 2119, 2140, 2155, 2163, 4936, 2178, 1868, 969, 8724,
678 8724, 0, 4940, 1900, 8724, 4939, 1914, 0, 8724, 1963,
679 8724, 8724, 0, 4910, 463, 8724, 4911, 2165, 2234, 8724,
681 0, 4907, 8724, 166, 8724, 4943, 4900, 0, 8724, 8724,
682 4926, 4930, 4887, 134, 8724, 8724, 1984, 8724, 8724, 0,
683 2009, 8724, 607, 8724, 4885, 0, 8724, 8724, 58, 217,
684 0, 8724, 8724, 1999, 2142, 8724, 8724, 2021, 8724, 8724,
685 0, 2066, 0, 8724, 8724, 8724, 8724, 2131, 8724, 8724,
686 2146, 8724, 8724, 0, 223, 4883, 8724, 8724, 0, 237,
687 4882, 0, 8724, 4875, 4874, 8724, 8724, 0, 4879, 0,
688 8724, 4880, 4847, 0, 8724, 8724, 4820, 131, 8724, 8724,
689 0, 4845, 0, 8724, 4839, 2203, 2297, 2360, 654, 2070,
690 4838, 4869, 8724, 0, 4827, 4820, 0, 433, 8724, 8724,
692 2430, 4819, 448, 4827, 633, 491, 486, 1841, 544, 614,
693 2209, 424, 634, 4789, 4773, 8724, 465, 2500, 4765, 4771,
694 4784, 4775, 1831, 409, 4771, 8724, 8724, 0, 2197, 1878,
695 2204, 2218, 2136, 2226, 2246, 2224, 2247, 2569, 521, 2259,
696 1849, 2274, 2270, 523, 2293, 2294, 1974, 8724, 1916, 2306,
697 2327, 2329, 4823, 8724, 2176, 2034, 2295, 2078, 8724, 2335,
698 4826, 8724, 559, 4819, 605, 4806, 2260, 8724, 4771, 2355,
699 2396, 4804, 2458, 2370, 2376, 2473, 2509, 2298, 8724, 4768,
700 2411, 2419, 0, 4815, 8724, 2390, 2083, 2448, 2338, 8724,
701 2464, 4809, 169, 2637, 2707, 4808, 8724, 2510, 2328, 2530,
703 4807, 2391, 8724, 2541, 2596, 2600, 4789, 2672, 2680, 2536,
704 2730, 2750, 0, 2776, 2620, 2631, 2029, 0, 2453, 8724,
705 4753, 4800, 8724, 2481, 8724, 4749, 4795, 8724, 2490, 8724,
706 4746, 4793, 8724, 2533, 2538, 2544, 2513, 8724, 2610, 2785,
707 2574, 0, 2805, 4778, 2813, 2589, 8724, 4743, 2780, 2833,
708 4776, 2841, 2856, 2664, 2862, 2871, 2605, 8724, 4741, 2754,
709 2877, 0, 4779, 4785, 4771, 2684, 8724, 4731, 4766, 4728,
710 2689, 8724, 4724, 0, 2695, 8724, 4722, 0, 4721, 895,
711 8724, 4732, 4729, 8724, 4763, 2735, 8724, 4716, 0, 4715,
712 675, 4762, 4760, 8724, 4711, 0, 8724, 8724, 4703, 4704,
714 2742, 8724, 4703, 0, 2759, 8724, 4699, 2886, 8724, 4708,
715 4696, 0, 24, 4698, 4690, 0, 4687, 4693, 4694, 402,
716 4652, 2765, 8724, 4651, 0, 2825, 8724, 4650, 0, 2850,
717 8724, 4644, 2891, 8724, 4643, 660, 4683, 674, 4643, 4604,
718 839, 4642, 841, 4629, 4594, 0, 4639, 546, 0, 4592,
719 0, 246, 4591, 0, 0, 4590, 0, 4589, 0, 4588,
720 4592, 4581, 4612, 0, 4616, 4606, 8724, 8724, 4603, 2932,
721 4599, 4599, 8724, 4599, 906, 4564, 4549, 525, 1862, 914,
722 1920, 8724, 1840, 1846, 1880, 4555, 4554, 925, 2893, 0,
723 2052, 2145, 2561, 2236, 8724, 8724, 0, 2331, 2486, 2613,
725 0, 0, 2908, 2797, 2910, 2915, 2916, 2917, 2922, 2965,
726 2217, 2881, 2976, 8724, 2990, 3004, 2248, 2888, 2966, 2968,
727 0, 4556, 4555, 0, 2996, 2999, 3006, 583, 3072, 3019,
728 3048, 3084, 4596, 2921, 3027, 4553, 4544, 4543, 3033, 3081,
729 3101, 3126, 3146, 3154, 3174, 4541, 4536, 0, 0, 4568,
730 4528, 4518, 4525, 4522, 4519, 0, 0, 4518, 4517, 4513,
731 4516, 4510, 4506, 4502, 4501, 4464, 3806, 3796, 3796, 3792,
732 2530, 3779, 3784, 3783, 3775, 3774, 3773, 3768, 3767, 0,
733 3760, 0, 3745, 8724, 8724, 8724, 3743, 3765, 2265, 3733,
734 0, 3723, 3705, 3695, 2070, 3694, 3732, 0, 3095, 2502,
736 8724, 1991, 3678, 3674, 1998, 3701, 2697, 2073, 2720, 833,
737 3677, 3664, 2767, 8724, 0, 3195, 3061, 3051, 3642, 3041,
738 2793, 3131, 3663, 3265, 3322, 3122, 3266, 3307, 3308, 3309,
739 3279, 3284, 3352, 3259, 3635, 3633, 3354, 3420, 3490, 3361,
740 8724, 3625, 3617, 3615, 3381, 0, 3446, 3516, 3472, 3611,
741 3602, 3633, 3586, 3577, 3567, 3565, 3559, 0, 3558, 3541,
742 3498, 3352, 3481, 3472, 3459, 3453, 3429, 3420, 8724, 3400,
743 3397, 3399, 8724, 3381, 3390, 3371, 3344, 3338, 3337, 3330,
744 3329, 3324, 3322, 3305, 3304, 3026, 3291, 3245, 3241, 3240,
745 3235, 8724, 3267, 3280, 8724, 3256, 3233, 3217, 3163, 3164,
747 8724, 2090, 3131, 3145, 0, 3055, 3272, 3301, 3122, 3107,
748 3404, 3560, 3466, 3467, 3543, 3525, 3398, 3135, 3131, 3570,
749 3583, 3122, 3121, 3113, 3592, 3633, 3112, 3104, 3103, 3083,
750 3085, 3083, 3076, 3071, 3067, 3050, 3034, 3029, 3023, 3023,
751 915, 3000, 3003, 2995, 2998, 2996, 2990, 2985, 2977, 2974,
752 2956, 2955, 912, 2936, 2945, 2941, 1888, 2941, 2939, 2927,
753 2923, 2917, 2913, 2902, 2888, 2886, 2880, 2876, 2867, 2865,
754 2892, 8724, 2847, 2861, 3267, 8724, 2867, 3351, 2831, 2824,
755 3313, 3383, 8724, 3408, 3480, 3547, 3481, 3605, 3623, 2824,
756 2823, 3629, 3641, 2822, 2817, 2810, 3639, 3675, 3695, 2801,
758 2795, 2794, 8724, 2783, 2775, 2774, 2773, 2767, 2766, 2763,
759 2731, 2735, 2711, 2708, 2694, 2686, 2667, 2671, 2664, 2657,
760 2649, 2626, 8724, 2621, 0, 0, 2618, 8724, 2601, 3065,
761 2597, 2598, 2608, 2604, 2586, 2584, 2582, 2573, 2568, 2567,
762 2560, 2551, 2527, 2522, 2510, 2498, 2490, 2475, 2461, 2497,
763 3378, 2449, 2437, 3616, 3454, 3539, 3661, 3684, 3668, 3686,
764 3685, 2436, 2427, 3691, 3702, 2410, 2408, 2399, 3715, 2397,
765 2390, 2389, 2388, 2375, 2373, 2366, 2365, 2359, 2369, 0,
766 2353, 2355, 2345, 2331, 2342, 2329, 2305, 2303, 2295, 2294,
767 0, 8724, 8724, 2293, 2286, 8724, 2283, 2266, 2255, 2249,
769 2242, 2226, 2219, 2217, 2211, 2184, 2180, 2170, 2164, 2144,
770 2142, 2140, 2138, 2116, 2104, 2146, 2140, 3455, 3537, 3549,
771 3735, 3737, 3741, 3747, 3463, 8724, 8724, 3738, 3749, 8724,
772 8724, 8724, 3752, 8724, 8724, 8724, 8724, 8724, 8724, 8724,
773 8724, 8724, 8724, 2104, 2081, 2060, 2005, 1980, 1951, 8724,
774 8724, 8724, 8724, 8724, 1946, 1934, 3183, 1938, 1936, 8724,
775 8724, 8724, 8724, 8724, 8724, 8724, 8724, 8724, 8724, 8724,
776 8724, 1952, 1946, 8724, 8724, 3748, 3315, 3758, 440, 3762,
777 3776, 1904, 1895, 1884, 1874, 1851, 1787, 1784, 925, 8724,
778 903, 856, 8724, 8724, 3769, 3780, 549, 3782, 3790, 838,
780 823, 812, 795, 635, 609, 605, 3283, 498, 414, 3621,
781 1993, 3800, 205, 210, 186, 181, 8724, 3545, 141, 3551,
782 566, 3804, 127, 3590, 8724, 63, 3609, 2025, 3615, 52,
783 2042, 3788, 1903, 8724, 3805, 8724, 3855, 3884, 3913, 3942,
784 3971, 4000, 4029, 4058, 4087, 4116, 4145, 4174, 4203, 4232,
785 4261, 4290, 4319, 4348, 4377, 4406, 4435, 4464, 4493, 4522,
786 4544, 4562, 4578, 4597, 4614, 4633, 4661, 4679, 4708, 4717,
787 4732, 4760, 4788, 4816, 4845, 4863, 4892, 4916, 4944, 4972,
788 5000, 5016, 5045, 5074, 5103, 5121, 5130, 5158, 5186, 5214,
789 5242, 5251, 5266, 5282, 5311, 5327, 5356, 5385, 5401, 5430,
791 5459, 5475, 5504, 5533, 5549, 5578, 5587, 5602, 5611, 5626,
792 5655, 5671, 5700, 5729, 5745, 5774, 5797, 5825, 5834, 5847,
793 5865, 5877, 5902, 5911, 3791, 5928, 5952, 5977, 5995, 6013,
794 6042, 6057, 6079, 6107, 6135, 6163, 6176, 6205, 6223, 6241,
795 6270, 6299, 6323, 6341, 6369, 6397, 6425, 6454, 6482, 6498,
796 6527, 6556, 6585, 6603, 6621, 6649, 6658, 6686, 6714, 6742,
797 6770, 6783, 6798, 6820, 6836, 6865, 6881, 6910, 6939, 6961,
798 6977, 7006, 7035, 7051, 7080, 7109, 7125, 7154, 7169, 7191,
799 7206, 7228, 7257, 7273, 7302, 7331, 3798, 7347, 7376, 7389,
800 7418, 7434, 7448, 7473, 7502, 7530, 3813, 7554, 7579, 3820,
802 3827, 7607, 7621, 7639, 7648, 7661, 7679, 7697, 7726, 7750,
803 7774, 7803, 7831, 7849, 7867, 7895, 7923, 7951, 7964, 7973,
804 7988, 7997, 8010, 8039, 8048, 8057, 4532, 8086, 8102, 8118,
805 8143, 4537, 8171, 8196, 8205, 8229, 8253, 8268, 8286, 8315,
806 8339, 8357, 8366, 8394, 8422, 8438, 8463, 8492, 8520, 8549,
807 8578, 8607, 8636, 8665, 8694
810 static yyconst flex_int16_t yy_def[1356] =
812 1137, 1137, 1136, 3, 1138, 1138, 1139, 1139, 1136, 9,
813 1136, 11, 1140, 1140, 1141, 1141, 1136, 17, 1136, 19,
814 1142, 1142, 1143, 1143, 1144, 1144, 1136, 27, 1136, 29,
815 1136, 31, 1136, 33, 1145, 1145, 1136, 37, 1146, 1146,
816 1136, 41, 1147, 1147, 1148, 1148, 1149, 1149, 1136, 49,
817 1150, 1150, 1151, 1151, 1152, 1152, 1153, 1153, 1136, 59,
818 1154, 1154, 1155, 1155, 1136, 65, 1136, 67, 1156, 1156,
819 1156, 1156, 1136, 73, 1157, 1157, 1158, 1158, 1136, 79,
820 1159, 1159, 1136, 1136, 1136, 1136, 1136, 1160, 1161, 1162,
821 1162, 1163, 1136, 1164, 1165, 1166, 1136, 1136, 1162, 1162,
823 1163, 1162, 1136, 1136, 1136, 1167, 1168, 1168, 1168, 1169,
824 1136, 1136, 1136, 1170, 1171, 1136, 1136, 1136, 1136, 1172,
825 1172, 1136, 1173, 1136, 1174, 1136, 1136, 1175, 1176, 1176,
826 1136, 1176, 1136, 1136, 1177, 1178, 1178, 1178, 1136, 1178,
827 1136, 1136, 1179, 1179, 1136, 1180, 1181, 1136, 1136, 1182,
828 1136, 1136, 1136, 1183, 1136, 1136, 1136, 1184, 1136, 1136,
829 1136, 1185, 1186, 1186, 1186, 1136, 1136, 1187, 1188, 1136,
830 1136, 1136, 1136, 1189, 1189, 1136, 1190, 1136, 1191, 1136,
831 1136, 1192, 1193, 1136, 1136, 1194, 1136, 1195, 1136, 1136,
832 1136, 1136, 1196, 1136, 1197, 1136, 1198, 1136, 1136, 1136,
834 1199, 1136, 1136, 1136, 1136, 1200, 1136, 1201, 1136, 1136,
835 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1202,
836 1136, 1136, 1136, 1136, 1136, 1203, 1136, 1136, 1136, 1136,
837 1204, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
838 1205, 1136, 1206, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
839 1136, 1136, 1136, 1207, 1208, 1136, 1136, 1136, 1209, 1210,
840 1136, 1211, 1136, 1136, 1136, 1136, 1136, 1212, 1136, 1213,
841 1136, 1136, 1136, 1214, 1136, 1136, 1136, 1136, 1136, 1136,
842 1215, 1136, 1216, 1136, 1136, 1136, 1217, 1217, 1136, 1136,
843 1136, 1218, 1136, 1219, 1220, 1221, 1222, 1221, 1136, 1136,
845 1223, 1221, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
846 1136, 1136, 1136, 1136, 1136, 1136, 1224, 1217, 1224, 318,
847 318, 318, 318, 318, 318, 1136, 1136, 1225, 1226, 1227,
848 1227, 1227, 1227, 1227, 1227, 1227, 1227, 1136, 1136, 1136,
849 1136, 1136, 1136, 1136, 1136, 1221, 1136, 1136, 1221, 1221,
850 1136, 1136, 1228, 1136, 1229, 1230, 1229, 1136, 1136, 1229,
851 1231, 1136, 1232, 1233, 1232, 1136, 1136, 1136, 1136, 1136,
852 1234, 1136, 1234, 1235, 1236, 1234, 1235, 1136, 1136, 1136,
853 1236, 1236, 1237, 1238, 1136, 1239, 1240, 1239, 1136, 1136,
854 1239, 1241, 1241, 1242, 1242, 1241, 1136, 1243, 1244, 1243,
856 1241, 1136, 1136, 1243, 1136, 1245, 1136, 1245, 1246, 1247,
857 1245, 1136, 1248, 1246, 1247, 1247, 1249, 1250, 1136, 1136,
858 1136, 1251, 1136, 1136, 1136, 1136, 1252, 1136, 1136, 1136,
859 1136, 1253, 1136, 1254, 1255, 1254, 1136, 1136, 1254, 1256,
860 1136, 1257, 1256, 1136, 1258, 1136, 1136, 1136, 1136, 1259,
861 1136, 1259, 1260, 1261, 1259, 1260, 1136, 1136, 1136, 1261,
862 1261, 1262, 1263, 1264, 1263, 1136, 1136, 1136, 1265, 1136,
863 1136, 1136, 1136, 1266, 1136, 1136, 1136, 1267, 1136, 1268,
864 1136, 1269, 1136, 1136, 1270, 1136, 1136, 1136, 1271, 1136,
865 1136, 1272, 1272, 1136, 1136, 1273, 1136, 1136, 1136, 1136,
867 1136, 1136, 1136, 1274, 1136, 1136, 1136, 1136, 1136, 1136,
868 1136, 1275, 1136, 1136, 1136, 1276, 1136, 1136, 1136, 1136,
869 1136, 1136, 1136, 1136, 1277, 1136, 1136, 1136, 1278, 1136,
870 1136, 1136, 1136, 1136, 1136, 1279, 1280, 1279, 1136, 1136,
871 1281, 1282, 1281, 1136, 1136, 1283, 1136, 1136, 1284, 1136,
872 1285, 1136, 1136, 1286, 1287, 1136, 1288, 1136, 1289, 1136,
873 1136, 1136, 1290, 1291, 1292, 1293, 1136, 1136, 1293, 1294,
874 1293, 1292, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
875 1295, 1136, 1136, 1136, 1136, 1136, 1136, 1296, 1296, 1297,
876 1136, 1298, 1298, 1298, 1136, 1136, 1299, 1298, 1298, 1298,
878 1300, 1301, 1302, 1302, 1302, 1302, 1302, 1302, 1302, 1136,
879 1136, 1136, 1136, 1136, 1293, 1136, 1136, 1303, 1303, 1304,
880 1305, 1136, 1136, 1306, 1307, 1307, 1308, 1136, 1309, 1310,
881 1310, 1311, 1312, 1136, 1313, 1136, 1136, 1136, 1314, 1314,
882 1315, 1316, 1317, 1318, 1318, 1136, 1136, 1319, 1320, 1321,
883 1136, 1136, 1136, 1136, 1136, 1322, 1323, 1136, 1136, 1136,
884 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1324, 1136, 1136,
885 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1325,
886 1136, 1326, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
887 1327, 1136, 1136, 1136, 1136, 1136, 1328, 1329, 1330, 1136,
889 1136, 1136, 1136, 1136, 1136, 1331, 1331, 1136, 1136, 1136,
890 1136, 1136, 1136, 1136, 1332, 1136, 1333, 1333, 1334, 1333,
891 1333, 1333, 1335, 1336, 1336, 1336, 1336, 1336, 1336, 1336,
892 1136, 1136, 1337, 1338, 1136, 1136, 1339, 1340, 1340, 1341,
893 1136, 1136, 1136, 1136, 1342, 1343, 1344, 1344, 1345, 1136,
894 1136, 1321, 1136, 1136, 1136, 1136, 1136, 1323, 1136, 1136,
895 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
896 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
897 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
898 1136, 1136, 1346, 1330, 1136, 1136, 1136, 1136, 1136, 1347,
900 1136, 1136, 1136, 1136, 1348, 1348, 1333, 1333, 1136, 1333,
901 1336, 1335, 1336, 1336, 1336, 1136, 1338, 1136, 1136, 1339,
902 1341, 1136, 1136, 1136, 1342, 1349, 1136, 1136, 1136, 1136,
903 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
904 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1350, 1136,
905 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
906 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
907 1346, 1136, 1136, 1136, 1351, 1136, 1347, 1347, 1136, 1136,
908 1333, 1333, 1136, 1333, 1336, 1336, 1336, 1336, 1338, 1136,
909 1136, 1339, 1341, 1136, 1136, 1136, 1342, 1349, 1349, 1136,
911 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
912 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
913 1136, 1136, 1136, 1136, 1352, 1353, 1136, 1136, 1136, 1136,
914 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
915 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1351,
916 1351, 1136, 1136, 1333, 1333, 1333, 1336, 1336, 1336, 1336,
917 1338, 1136, 1136, 1339, 1341, 1136, 1136, 1136, 1342, 1136,
918 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1354,
919 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
920 1355, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
922 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
923 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1333, 1333, 1333,
924 1336, 1336, 1336, 1336, 1338, 1136, 1136, 1339, 1341, 1136,
925 1136, 1136, 1342, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
926 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
927 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
928 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
929 1136, 1136, 1136, 1136, 1136, 1333, 1333, 1136, 1335, 1336,
930 1336, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
931 1136, 1136, 1136, 1136, 1333, 1333, 1335, 1336, 1336, 1136,
933 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1333,
934 1335, 1336, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1333,
935 1335, 1336, 1136, 1136, 1136, 1136, 1136, 1335, 1136, 1136,
936 1335, 1136, 1335, 1136, 1335, 0, 1136, 1136, 1136, 1136,
937 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
938 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
939 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
940 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
941 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
942 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
944 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
945 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
946 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
947 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
948 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
949 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
950 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
951 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
952 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
953 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
955 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
956 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
957 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
958 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
959 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
960 1136, 1136, 1136, 1136, 1136
963 static yyconst flex_int16_t yy_nxt[8796] =
965 85, 86, 87, 85, 86, 85, 88, 85, 89, 85,
966 85, 85, 90, 85, 91, 92, 85, 90, 90, 90,
967 85, 93, 85, 94, 95, 95, 95, 95, 95, 95,
968 95, 95, 95, 95, 95, 95, 95, 95, 95, 95,
969 85, 96, 85, 95, 95, 95, 95, 95, 95, 95,
970 95, 95, 95, 95, 95, 95, 95, 95, 95, 95,
971 95, 95, 95, 95, 95, 95, 85, 85, 85, 85,
972 85, 97, 153, 153, 97, 157, 154, 154, 666, 158,
973 667, 98, 99, 157, 100, 101, 189, 158, 102, 102,
974 103, 189, 196, 216, 196, 84, 216, 227, 298, 228,
976 84, 197, 344, 197, 364, 344, 513, 297, 1132, 366,
977 514, 155, 155, 198, 159, 198, 204, 205, 229, 204,
978 1130, 206, 159, 204, 205, 190, 204, 237, 206, 237,
979 190, 199, 217, 199, 250, 217, 230, 103, 104, 104,
980 105, 104, 104, 104, 106, 104, 104, 104, 104, 104,
981 227, 104, 228, 104, 108, 209, 207, 210, 108, 104,
982 104, 104, 344, 207, 211, 344, 238, 491, 238, 212,
983 491, 229, 492, 251, 556, 628, 213, 500, 104, 109,
984 104, 209, 499, 210, 297, 223, 224, 250, 223, 230,
985 211, 396, 980, 1126, 214, 212, 223, 224, 284, 223,
987 555, 232, 213, 233, 104, 104, 104, 104, 104, 104,
988 105, 104, 104, 104, 106, 104, 104, 104, 104, 104,
989 214, 104, 234, 104, 108, 225, 251, 271, 108, 104,
990 104, 104, 232, 263, 233, 1124, 225, 285, 537, 272,
991 235, 980, 299, 539, 296, 300, 296, 301, 104, 109,
992 104, 688, 542, 234, 264, 297, 296, 544, 296, 296,
993 515, 296, 296, 296, 1123, 513, 273, 297, 689, 514,
994 980, 235, 264, 303, 104, 104, 104, 104, 112, 112,
995 113, 112, 112, 112, 112, 112, 114, 112, 112, 112,
996 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
998 112, 112, 115, 115, 115, 115, 115, 115, 115, 115,
999 115, 115, 115, 115, 115, 115, 115, 115, 112, 116,
1000 112, 115, 115, 115, 115, 115, 115, 115, 115, 115,
1001 115, 115, 115, 115, 115, 115, 115, 115, 115, 115,
1002 115, 115, 115, 115, 112, 112, 112, 112, 115, 117,
1003 118, 119, 118, 118, 117, 117, 117, 120, 117, 117,
1004 117, 117, 117, 117, 121, 117, 117, 117, 117, 122,
1005 117, 117, 117, 123, 123, 123, 123, 123, 123, 123,
1006 123, 123, 123, 123, 123, 123, 123, 123, 123, 117,
1007 124, 117, 123, 123, 123, 123, 123, 123, 123, 123,
1009 123, 123, 123, 123, 123, 123, 123, 123, 123, 123,
1010 123, 123, 123, 123, 123, 117, 117, 117, 125, 123,
1011 126, 126, 127, 126, 126, 126, 128, 126, 126, 126,
1012 126, 126, 284, 126, 263, 126, 130, 244, 263, 271,
1013 130, 131, 126, 126, 245, 246, 244, 566, 585, 573,
1014 673, 272, 573, 245, 246, 264, 297, 598, 247, 265,
1015 126, 132, 126, 263, 674, 481, 599, 247, 585, 289,
1016 290, 285, 289, 264, 482, 1119, 248, 265, 273, 367,
1017 368, 1136, 367, 1097, 265, 248, 126, 126, 126, 126,
1018 126, 126, 127, 126, 126, 126, 128, 126, 126, 126,
1020 126, 126, 265, 126, 483, 126, 130, 275, 275, 291,
1021 130, 131, 126, 126, 589, 286, 276, 276, 286, 579,
1022 345, 369, 344, 345, 344, 344, 578, 344, 277, 277,
1023 126, 132, 126, 346, 590, 378, 379, 287, 378, 343,
1024 579, 349, 297, 350, 350, 350, 278, 278, 578, 297,
1025 419, 420, 705, 419, 1118, 288, 126, 126, 126, 126,
1026 133, 133, 134, 133, 133, 133, 135, 133, 133, 133,
1027 133, 133, 705, 133, 364, 133, 137, 380, 580, 366,
1028 137, 138, 139, 133, 347, 348, 343, 347, 685, 397,
1029 602, 351, 421, 299, 351, 296, 300, 296, 301, 580,
1031 133, 140, 133, 1111, 352, 397, 297, 602, 508, 509,
1032 343, 508, 424, 425, 686, 424, 356, 357, 1136, 357,
1033 364, 357, 1128, 357, 303, 366, 133, 133, 133, 133,
1034 133, 133, 134, 133, 133, 133, 135, 133, 133, 133,
1035 133, 133, 357, 133, 357, 133, 137, 579, 510, 1116,
1036 137, 138, 139, 133, 426, 289, 290, 343, 289, 370,
1037 370, 370, 370, 370, 370, 370, 370, 579, 579, 575,
1038 133, 140, 133, 371, 980, 537, 491, 371, 372, 491,
1039 539, 492, 372, 381, 381, 381, 381, 1115, 579, 537,
1040 382, 575, 576, 577, 539, 291, 133, 133, 133, 133,
1042 117, 141, 142, 141, 141, 117, 117, 117, 143, 117,
1043 117, 117, 117, 117, 117, 144, 117, 117, 117, 117,
1044 145, 117, 117, 117, 146, 146, 146, 146, 146, 146,
1045 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1046 117, 124, 117, 146, 146, 146, 146, 146, 146, 146,
1047 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1048 146, 146, 146, 146, 146, 146, 117, 117, 117, 147,
1049 146, 148, 148, 149, 148, 148, 148, 148, 148, 148,
1050 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
1051 148, 148, 148, 148, 148, 150, 150, 150, 150, 150,
1053 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1054 150, 148, 151, 148, 150, 150, 150, 150, 150, 150,
1055 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1056 150, 150, 150, 150, 150, 150, 150, 148, 148, 148,
1057 148, 150, 160, 160, 161, 160, 160, 160, 162, 160,
1058 160, 160, 160, 160, 542, 160, 542, 160, 164, 544,
1059 980, 544, 164, 160, 160, 160, 802, 370, 370, 370,
1060 370, 370, 370, 370, 370, 387, 388, 980, 373, 1114,
1061 388, 371, 160, 165, 160, 371, 372, 802, 429, 430,
1062 372, 429, 1113, 415, 415, 415, 415, 481, 1136, 388,
1064 416, 388, 1109, 388, 446, 447, 482, 446, 160, 160,
1065 160, 160, 160, 160, 161, 160, 160, 160, 162, 160,
1066 160, 160, 160, 160, 388, 160, 713, 160, 164, 713,
1067 431, 397, 164, 160, 160, 160, 483, 435, 436, 375,
1068 399, 400, 436, 702, 579, 400, 448, 397, 405, 405,
1069 405, 405, 160, 165, 160, 405, 405, 405, 405, 914,
1070 1108, 928, 406, 436, 579, 702, 400, 407, 929, 406,
1071 460, 460, 460, 460, 407, 915, 1107, 461, 160, 160,
1072 160, 160, 166, 166, 167, 166, 166, 166, 166, 166,
1073 168, 166, 166, 166, 166, 166, 166, 166, 166, 166,
1075 166, 166, 166, 166, 166, 166, 169, 169, 169, 169,
1076 169, 169, 169, 169, 169, 169, 169, 169, 169, 169,
1077 169, 169, 166, 170, 166, 169, 169, 169, 169, 169,
1078 169, 169, 169, 169, 169, 169, 169, 169, 169, 169,
1079 169, 169, 169, 169, 169, 169, 169, 169, 166, 166,
1080 166, 166, 169, 171, 172, 173, 172, 172, 171, 171,
1081 171, 174, 171, 171, 171, 171, 171, 171, 175, 171,
1082 171, 171, 171, 176, 171, 171, 171, 177, 177, 177,
1083 177, 177, 177, 177, 177, 177, 177, 177, 177, 177,
1084 177, 177, 177, 171, 178, 171, 177, 177, 177, 177,
1086 177, 177, 177, 177, 177, 177, 177, 177, 177, 177,
1087 177, 177, 177, 177, 177, 177, 177, 177, 177, 171,
1088 171, 171, 179, 177, 180, 180, 181, 180, 180, 180,
1089 180, 180, 182, 180, 180, 180, 180, 180, 180, 180,
1090 180, 180, 180, 180, 180, 180, 180, 180, 183, 183,
1091 183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
1092 183, 183, 183, 183, 180, 184, 180, 183, 183, 183,
1093 183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
1094 183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
1095 180, 180, 180, 180, 183, 84, 84, 185, 84, 84,
1097 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
1098 84, 84, 84, 84, 84, 84, 84, 84, 84, 186,
1099 186, 186, 186, 186, 186, 186, 186, 186, 186, 186,
1100 186, 186, 186, 186, 186, 84, 187, 84, 186, 186,
1101 186, 186, 186, 186, 186, 186, 186, 186, 186, 186,
1102 186, 186, 186, 186, 186, 186, 186, 186, 186, 186,
1103 186, 84, 84, 84, 84, 186, 191, 191, 192, 191,
1104 191, 191, 191, 191, 191, 191, 191, 191, 191, 191,
1105 191, 191, 191, 191, 191, 191, 191, 191, 191, 191,
1106 193, 193, 193, 193, 193, 193, 193, 193, 193, 193,
1108 193, 193, 193, 193, 193, 193, 191, 194, 191, 193,
1109 193, 193, 193, 193, 193, 193, 193, 193, 193, 193,
1110 193, 193, 193, 193, 193, 193, 193, 193, 193, 193,
1111 193, 193, 191, 191, 191, 191, 193, 84, 84, 200,
1112 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
1113 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
1114 84, 201, 201, 201, 201, 201, 201, 201, 201, 201,
1115 201, 201, 201, 201, 201, 201, 201, 84, 202, 84,
1116 201, 201, 201, 201, 201, 201, 201, 201, 201, 201,
1117 201, 201, 201, 201, 201, 201, 201, 201, 201, 201,
1119 201, 201, 201, 84, 84, 84, 84, 201, 218, 218,
1120 219, 218, 218, 218, 218, 218, 218, 218, 218, 218,
1121 218, 218, 218, 218, 218, 218, 218, 218, 218, 218,
1122 218, 218, 220, 220, 220, 220, 220, 220, 220, 220,
1123 220, 220, 220, 220, 220, 220, 220, 220, 218, 221,
1124 218, 220, 220, 220, 220, 220, 220, 220, 220, 220,
1125 220, 220, 220, 220, 220, 220, 220, 220, 220, 220,
1126 220, 220, 220, 220, 218, 218, 218, 218, 220, 239,
1127 239, 240, 239, 239, 239, 239, 239, 239, 239, 239,
1128 239, 239, 239, 239, 239, 239, 239, 239, 239, 239,
1130 239, 239, 239, 241, 241, 241, 241, 241, 241, 241,
1131 241, 241, 241, 241, 241, 241, 241, 241, 241, 239,
1132 242, 239, 241, 241, 241, 241, 241, 241, 241, 241,
1133 241, 241, 241, 241, 241, 241, 241, 241, 241, 241,
1134 241, 241, 241, 241, 241, 239, 239, 239, 239, 241,
1135 252, 252, 253, 252, 252, 252, 252, 252, 254, 252,
1136 252, 252, 252, 252, 252, 252, 252, 252, 252, 252,
1137 252, 252, 252, 252, 255, 255, 255, 255, 255, 255,
1138 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
1139 252, 256, 252, 255, 255, 255, 255, 255, 255, 255,
1141 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
1142 255, 255, 255, 255, 255, 255, 252, 252, 252, 252,
1143 255, 257, 257, 258, 257, 257, 257, 257, 257, 259,
1144 257, 257, 257, 257, 257, 257, 257, 257, 257, 257,
1145 257, 257, 257, 257, 257, 260, 260, 260, 260, 260,
1146 260, 260, 260, 260, 260, 260, 260, 260, 260, 260,
1147 260, 257, 261, 257, 260, 260, 260, 260, 260, 260,
1148 260, 260, 260, 260, 260, 260, 260, 260, 260, 260,
1149 260, 260, 260, 260, 260, 260, 260, 257, 257, 257,
1150 257, 260, 266, 266, 267, 266, 266, 266, 266, 266,
1152 266, 266, 266, 266, 266, 266, 266, 266, 266, 266,
1153 266, 266, 266, 266, 266, 266, 268, 268, 268, 268,
1154 268, 268, 268, 268, 268, 268, 268, 268, 268, 268,
1155 268, 268, 266, 269, 266, 268, 268, 268, 268, 268,
1156 268, 268, 268, 268, 268, 268, 268, 268, 268, 268,
1157 268, 268, 268, 268, 268, 268, 268, 268, 266, 266,
1158 266, 266, 268, 279, 279, 280, 279, 279, 279, 279,
1159 279, 279, 279, 279, 279, 279, 279, 279, 279, 279,
1160 279, 279, 279, 279, 279, 279, 279, 281, 281, 281,
1161 281, 281, 281, 281, 281, 281, 281, 281, 281, 281,
1163 281, 281, 281, 279, 282, 279, 281, 281, 281, 281,
1164 281, 281, 281, 281, 281, 281, 281, 281, 281, 281,
1165 281, 281, 281, 281, 281, 281, 281, 281, 281, 279,
1166 279, 279, 279, 281, 304, 376, 376, 376, 376, 595,
1167 1106, 1105, 373, 358, 359, 305, 358, 1136, 436, 371,
1168 347, 348, 436, 347, 372, 306, 307, 1136, 357, 579,
1169 308, 309, 357, 581, 310, 311, 581, 312, 313, 457,
1170 458, 596, 457, 436, 709, 306, 307, 708, 579, 591,
1171 308, 309, 591, 357, 582, 360, 310, 311, 314, 315,
1172 312, 313, 316, 316, 709, 389, 390, 597, 389, 708,
1174 579, 466, 467, 375, 466, 710, 316, 316, 317, 1136,
1175 388, 459, 1104, 1136, 388, 471, 472, 617, 471, 602,
1176 617, 707, 1136, 400, 707, 710, 319, 400, 1103, 1136,
1177 320, 401, 321, 322, 323, 388, 933, 391, 1102, 297,
1178 1136, 400, 582, 468, 602, 400, 324, 397, 400, 325,
1179 934, 326, 1101, 327, 328, 316, 316, 473, 402, 403,
1180 1100, 402, 1135, 1136, 475, 476, 400, 475, 1094, 316,
1181 316, 319, 1136, 400, 1093, 347, 348, 400, 347, 1136,
1182 405, 405, 405, 405, 1092, 501, 502, 408, 501, 317,
1183 1091, 331, 1089, 332, 406, 333, 334, 335, 400, 407,
1185 404, 411, 411, 411, 411, 1088, 477, 1087, 408, 336,
1186 505, 506, 337, 505, 326, 406, 327, 328, 338, 796,
1187 407, 338, 522, 523, 1086, 522, 799, 503, 339, 339,
1188 634, 340, 341, 634, 602, 342, 342, 343, 413, 796,
1189 287, 412, 405, 405, 412, 1121, 799, 517, 410, 413,
1190 619, 518, 507, 591, 619, 406, 591, 519, 288, 520,
1191 407, 1085, 437, 438, 524, 437, 602, 526, 527, 410,
1192 526, 289, 290, 1131, 289, 619, 1136, 436, 714, 358,
1193 359, 436, 358, 602, 343, 392, 392, 1133, 392, 392,
1194 392, 393, 392, 392, 392, 392, 392, 579, 392, 626,
1196 392, 395, 436, 626, 439, 395, 392, 396, 392, 528,
1197 714, 291, 441, 441, 441, 441, 1084, 579, 579, 442,
1198 449, 449, 449, 449, 626, 392, 395, 392, 443, 443,
1199 443, 444, 530, 531, 450, 530, 714, 591, 579, 451,
1200 591, 449, 449, 449, 449, 1083, 591, 533, 534, 591,
1201 533, 392, 392, 392, 392, 450, 449, 449, 449, 449,
1202 451, 1082, 1075, 452, 455, 455, 455, 455, 1074, 1073,
1203 450, 452, 484, 484, 532, 451, 1072, 602, 450, 449,
1204 449, 449, 449, 451, 605, 521, 484, 484, 485, 535,
1205 517, 356, 357, 450, 518, 716, 357, 290, 451, 1071,
1207 519, 1070, 520, 1069, 286, 591, 484, 286, 591, 296,
1208 581, 296, 296, 581, 296, 296, 296, 357, 617, 591,
1209 297, 617, 591, 1068, 454, 591, 287, 591, 591, 1067,
1210 591, 582, 454, 583, 484, 486, 487, 591, 486, 1066,
1211 591, 484, 484, 1065, 288, 602, 584, 591, 591, 617,
1212 591, 591, 617, 583, 595, 484, 484, 484, 603, 602,
1213 345, 367, 368, 345, 367, 602, 786, 602, 584, 786,
1214 1064, 351, 607, 610, 351, 485, 1063, 488, 1062, 343,
1215 604, 608, 606, 718, 352, 1061, 596, 602, 602, 611,
1216 343, 612, 612, 612, 345, 613, 614, 345, 613, 378,
1218 379, 1060, 378, 484, 316, 316, 609, 352, 615, 1059,
1219 1136, 357, 597, 343, 616, 357, 1058, 297, 316, 316,
1220 561, 349, 1057, 350, 350, 350, 343, 1056, 351, 297,
1221 351, 351, 591, 351, 1055, 591, 357, 343, 316, 389,
1222 390, 352, 389, 610, 631, 322, 323, 343, 631, 343,
1223 356, 357, 1054, 509, 1052, 357, 370, 370, 370, 370,
1224 343, 616, 1051, 326, 1050, 327, 328, 316, 316, 631,
1225 371, 370, 370, 370, 370, 372, 357, 381, 381, 381,
1226 381, 316, 316, 316, 382, 371, 1049, 1048, 1047, 620,
1227 372, 720, 402, 403, 343, 402, 343, 376, 376, 376,
1229 376, 561, 1046, 1045, 373, 387, 388, 1044, 322, 323,
1230 388, 371, 381, 381, 381, 381, 372, 980, 1042, 382,
1231 1136, 1136, 1136, 1136, 1041, 1040, 326, 1136, 327, 328,
1232 567, 388, 1039, 567, 1038, 567, 567, 567, 567, 567,
1233 568, 567, 569, 567, 569, 570, 567, 1037, 1036, 1035,
1234 567, 567, 567, 572, 419, 420, 1034, 419, 1032, 1136,
1235 1136, 1136, 1136, 1136, 388, 375, 1136, 1031, 388, 1030,
1236 567, 567, 567, 1136, 376, 376, 376, 376, 1136, 387,
1237 388, 373, 424, 425, 388, 424, 1027, 591, 371, 388,
1238 591, 429, 430, 372, 429, 1026, 567, 567, 567, 567,
1240 567, 591, 1017, 795, 591, 388, 795, 1136, 1136, 1016,
1241 370, 370, 370, 370, 437, 438, 397, 437, 627, 876,
1242 1015, 1136, 1136, 1136, 371, 399, 400, 1136, 1014, 372,
1243 400, 773, 397, 721, 773, 1013, 1136, 415, 415, 415,
1244 415, 1136, 375, 1012, 416, 1136, 400, 397, 435, 436,
1245 400, 400, 1136, 436, 640, 1011, 399, 400, 640, 1136,
1246 436, 400, 591, 397, 436, 591, 1136, 1010, 1136, 1136,
1247 338, 400, 1009, 338, 436, 441, 441, 441, 441, 640,
1248 339, 339, 400, 340, 341, 436, 774, 342, 342, 343,
1249 446, 447, 287, 446, 444, 632, 1008, 405, 405, 405,
1251 405, 411, 411, 411, 411, 1007, 457, 458, 408, 457,
1252 288, 406, 1006, 1005, 591, 406, 407, 591, 1004, 717,
1253 407, 415, 415, 415, 415, 435, 436, 1003, 416, 1002,
1254 436, 1001, 1136, 1136, 1136, 1136, 343, 392, 392, 1136,
1255 392, 392, 392, 628, 392, 392, 392, 392, 392, 1000,
1256 392, 436, 629, 395, 999, 998, 997, 395, 392, 396,
1257 392, 722, 995, 994, 641, 460, 460, 460, 460, 410,
1258 991, 990, 461, 1136, 1136, 1136, 1136, 392, 395, 392,
1259 1136, 412, 405, 405, 412, 466, 467, 1136, 466, 413,
1260 471, 472, 1136, 471, 989, 406, 475, 476, 707, 475,
1262 407, 707, 988, 392, 392, 392, 392, 392, 392, 987,
1263 392, 392, 392, 628, 392, 392, 392, 392, 392, 582,
1264 392, 800, 392, 395, 800, 986, 985, 395, 392, 392,
1265 392, 411, 411, 411, 411, 984, 486, 487, 408, 486,
1266 980, 1136, 801, 501, 502, 406, 501, 392, 395, 392,
1267 407, 412, 405, 405, 412, 460, 460, 460, 460, 413,
1268 505, 506, 461, 505, 983, 406, 522, 523, 713, 522,
1269 407, 713, 982, 392, 392, 392, 392, 412, 405, 405,
1270 412, 449, 449, 449, 449, 413, 441, 441, 441, 441,
1271 981, 406, 980, 442, 591, 450, 407, 591, 591, 410,
1273 451, 591, 443, 443, 443, 444, 441, 441, 441, 441,
1274 979, 978, 977, 442, 441, 441, 441, 441, 976, 975,
1275 974, 442, 443, 443, 443, 444, 526, 527, 973, 526,
1276 644, 644, 644, 444, 455, 455, 455, 455, 602, 972,
1277 971, 452, 1136, 1136, 1136, 1136, 970, 725, 450, 1136,
1278 716, 530, 531, 451, 530, 968, 1136, 449, 449, 449,
1279 449, 1136, 967, 455, 455, 455, 455, 966, 963, 962,
1280 452, 450, 449, 449, 449, 449, 451, 450, 1136, 1136,
1281 1136, 1136, 451, 953, 952, 1136, 450, 508, 509, 801,
1282 508, 451, 533, 534, 713, 533, 611, 713, 612, 612,
1284 612, 714, 454, 356, 619, 949, 948, 698, 619, 591,
1285 1136, 591, 591, 947, 591, 946, 591, 591, 591, 591,
1286 591, 591, 634, 591, 945, 634, 591, 510, 944, 619,
1287 413, 454, 567, 714, 943, 567, 942, 567, 567, 567,
1288 567, 567, 568, 567, 569, 567, 569, 699, 567, 602,
1289 941, 602, 567, 567, 567, 572, 602, 602, 602, 714,
1290 724, 940, 727, 602, 729, 939, 613, 614, 726, 613,
1291 730, 938, 567, 700, 567, 937, 728, 613, 614, 731,
1292 613, 1136, 619, 356, 357, 616, 619, 936, 357, 935,
1293 732, 613, 614, 932, 613, 931, 616, 930, 567, 567,
1295 567, 567, 567, 927, 733, 613, 614, 619, 613, 357,
1296 616, 387, 626, 297, 1136, 626, 626, 926, 732, 626,
1297 734, 387, 388, 925, 616, 397, 388, 786, 634, 924,
1298 786, 634, 616, 922, 399, 631, 413, 626, 921, 631,
1299 626, 397, 591, 616, 920, 591, 919, 388, 435, 640,
1300 918, 917, 591, 640, 1136, 591, 806, 616, 737, 806,
1301 631, 916, 591, 1136, 631, 591, 996, 913, 631, 996,
1302 1136, 616, 392, 392, 640, 392, 392, 392, 628, 392,
1303 392, 392, 392, 392, 912, 392, 911, 392, 739, 631,
1304 397, 910, 739, 392, 392, 392, 1136, 640, 909, 399,
1306 400, 640, 716, 808, 400, 299, 397, 296, 591, 296,
1307 794, 591, 392, 739, 392, 908, 435, 436, 297, 907,
1308 807, 436, 640, 591, 906, 400, 591, 441, 441, 441,
1309 441, 905, 591, 904, 746, 591, 740, 903, 392, 392,
1310 392, 392, 436, 747, 747, 747, 444, 749, 749, 749,
1311 749, 902, 901, 745, 442, 441, 441, 441, 441, 884,
1312 900, 896, 442, 602, 875, 878, 444, 875, 878, 895,
1313 894, 644, 644, 644, 444, 441, 441, 441, 441, 891,
1314 810, 813, 442, 890, 1090, 876, 801, 1090, 883, 880,
1315 879, 644, 644, 644, 444, 805, 806, 805, 805, 806,
1317 805, 805, 805, 805, 805, 805, 805, 805, 805, 805,
1318 805, 805, 805, 805, 805, 805, 805, 805, 805, 318,
1319 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
1320 318, 318, 318, 318, 318, 805, 805, 805, 318, 318,
1321 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
1322 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
1323 318, 805, 805, 805, 805, 805, 591, 591, 951, 591,
1324 591, 951, 874, 591, 356, 357, 591, 873, 872, 357,
1325 613, 614, 698, 613, 1117, 613, 614, 1117, 613, 876,
1326 299, 870, 296, 731, 296, 794, 869, 868, 816, 616,
1328 357, 867, 591, 297, 616, 591, 602, 602, 591, 591,
1329 591, 591, 591, 591, 591, 817, 591, 591, 814, 591,
1330 881, 811, 805, 806, 805, 805, 806, 805, 805, 805,
1331 805, 805, 805, 805, 805, 805, 805, 805, 805, 805,
1332 805, 805, 805, 805, 805, 805, 616, 866, 602, 602,
1333 602, 616, 878, 613, 614, 878, 613, 882, 815, 954,
1334 865, 864, 805, 812, 805, 725, 733, 397, 725, 387,
1335 388, 1096, 616, 801, 388, 297, 399, 400, 863, 951,
1336 862, 400, 951, 397, 591, 861, 860, 591, 805, 805,
1337 805, 805, 805, 859, 858, 388, 435, 436, 837, 838,
1339 876, 436, 400, 839, 857, 591, 840, 841, 591, 591,
1340 820, 842, 591, 356, 357, 843, 844, 821, 357, 616,
1341 392, 392, 436, 392, 392, 392, 628, 392, 392, 392,
1342 392, 392, 856, 392, 855, 629, 739, 825, 854, 357,
1343 739, 392, 396, 392, 955, 602, 889, 441, 441, 441,
1344 441, 853, 885, 852, 746, 591, 591, 851, 591, 591,
1345 392, 739, 392, 747, 747, 747, 444, 591, 591, 956,
1346 591, 591, 850, 749, 749, 749, 749, 849, 356, 357,
1347 442, 591, 591, 357, 591, 591, 392, 392, 392, 392,
1348 392, 392, 444, 392, 392, 392, 628, 392, 392, 392,
1350 392, 392, 1019, 392, 357, 392, 739, 602, 602, 848,
1351 739, 392, 392, 392, 886, 847, 1076, 441, 441, 441,
1352 441, 602, 602, 887, 746, 957, 613, 614, 846, 613,
1353 392, 739, 392, 747, 747, 747, 444, 845, 591, 731,
1354 591, 591, 959, 591, 591, 616, 1125, 591, 591, 1125,
1355 591, 591, 1127, 591, 836, 1127, 392, 392, 392, 392,
1356 805, 805, 805, 805, 805, 805, 805, 805, 805, 805,
1357 805, 805, 805, 805, 805, 805, 805, 805, 805, 805,
1358 805, 805, 805, 805, 602, 387, 388, 1020, 602, 397,
1359 388, 1129, 616, 958, 1129, 888, 1077, 835, 399, 400,
1361 805, 805, 805, 400, 716, 397, 591, 435, 436, 591,
1362 1127, 388, 436, 1127, 834, 833, 1129, 591, 892, 1129,
1363 591, 832, 591, 831, 400, 591, 805, 805, 805, 805,
1364 805, 893, 830, 436, 441, 441, 441, 441, 356, 357,
1365 897, 746, 829, 357, 387, 388, 602, 397, 464, 388,
1366 898, 898, 898, 444, 435, 436, 399, 400, 828, 436,
1367 1018, 400, 591, 397, 357, 591, 960, 827, 961, 591,
1368 388, 824, 591, 823, 964, 1120, 441, 441, 441, 441,
1369 436, 822, 400, 746, 969, 591, 965, 591, 591, 819,
1370 591, 818, 898, 898, 898, 444, 441, 441, 441, 441,
1372 356, 357, 602, 746, 602, 357, 387, 388, 397, 602,
1373 809, 388, 898, 898, 898, 444, 1023, 399, 400, 804,
1374 1021, 803, 400, 582, 397, 602, 357, 602, 1022, 798,
1375 435, 436, 388, 797, 1024, 436, 1078, 290, 591, 1078,
1376 792, 591, 591, 400, 1025, 591, 791, 790, 591, 591,
1377 1028, 591, 591, 387, 388, 397, 436, 789, 388, 1078,
1378 290, 1029, 1078, 591, 399, 400, 591, 435, 436, 400,
1379 591, 397, 436, 591, 1033, 788, 1079, 591, 602, 388,
1380 591, 591, 602, 591, 591, 787, 591, 689, 602, 1134,
1381 400, 591, 1134, 436, 591, 785, 1095, 784, 1080, 291,
1383 1081, 591, 725, 602, 591, 1127, 289, 290, 1127, 289,
1384 1098, 601, 783, 601, 601, 601, 716, 602, 691, 782,
1385 781, 691, 691, 602, 1110, 780, 779, 778, 777, 725,
1386 776, 602, 1099, 715, 1112, 715, 715, 715, 775, 772,
1387 601, 602, 601, 601, 601, 602, 1079, 723, 771, 723,
1388 723, 723, 770, 768, 1122, 84, 84, 84, 84, 84,
1389 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
1390 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
1391 84, 84, 84, 84, 107, 107, 107, 107, 107, 107,
1392 107, 107, 107, 107, 107, 107, 107, 107, 107, 107,
1394 107, 107, 107, 107, 107, 107, 107, 107, 107, 107,
1395 107, 107, 107, 110, 110, 110, 110, 110, 110, 110,
1396 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
1397 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
1398 110, 110, 129, 129, 129, 129, 129, 129, 129, 129,
1399 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
1400 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
1401 129, 136, 136, 136, 136, 136, 136, 136, 136, 136,
1402 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
1403 136, 136, 136, 136, 136, 136, 136, 136, 136, 136,
1405 152, 152, 152, 152, 152, 152, 152, 152, 152, 152,
1406 152, 152, 152, 152, 152, 152, 152, 152, 152, 152,
1407 152, 152, 152, 152, 152, 152, 152, 152, 152, 156,
1408 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1409 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1410 156, 156, 156, 156, 156, 156, 156, 156, 163, 163,
1411 163, 163, 163, 163, 163, 163, 163, 163, 163, 163,
1412 163, 163, 163, 163, 163, 163, 163, 163, 163, 163,
1413 163, 163, 163, 163, 163, 163, 163, 188, 188, 188,
1414 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
1416 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
1417 188, 188, 188, 188, 188, 188, 195, 195, 195, 195,
1418 195, 195, 195, 195, 195, 195, 195, 195, 195, 195,
1419 195, 195, 195, 195, 195, 195, 195, 195, 195, 195,
1420 195, 195, 195, 195, 195, 203, 203, 203, 203, 203,
1421 203, 203, 203, 203, 203, 203, 203, 203, 203, 203,
1422 203, 203, 203, 203, 203, 203, 203, 203, 203, 203,
1423 203, 203, 203, 203, 208, 208, 208, 208, 208, 208,
1424 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
1425 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
1427 208, 208, 208, 215, 215, 215, 215, 215, 215, 215,
1428 215, 215, 215, 215, 215, 215, 215, 215, 215, 215,
1429 215, 215, 215, 215, 215, 215, 215, 215, 215, 215,
1430 215, 215, 222, 222, 222, 222, 222, 222, 222, 222,
1431 222, 222, 222, 222, 222, 222, 222, 222, 222, 222,
1432 222, 222, 222, 222, 222, 222, 222, 222, 222, 222,
1433 222, 226, 226, 226, 226, 226, 226, 226, 226, 226,
1434 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
1435 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
1436 231, 231, 231, 231, 231, 231, 231, 231, 231, 231,
1438 231, 231, 231, 231, 231, 231, 231, 231, 231, 231,
1439 231, 231, 231, 231, 231, 231, 231, 231, 231, 236,
1440 236, 236, 236, 236, 236, 236, 236, 236, 236, 236,
1441 236, 236, 236, 236, 236, 236, 236, 236, 236, 236,
1442 236, 236, 236, 236, 236, 236, 236, 236, 243, 243,
1443 243, 243, 243, 243, 243, 243, 243, 243, 243, 243,
1444 243, 243, 243, 243, 243, 243, 243, 243, 243, 243,
1445 243, 243, 243, 243, 243, 243, 243, 249, 249, 249,
1446 249, 249, 249, 249, 249, 249, 249, 249, 249, 249,
1447 249, 249, 249, 249, 249, 249, 249, 249, 249, 249,
1449 249, 249, 249, 249, 249, 249, 262, 262, 262, 262,
1450 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
1451 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
1452 262, 262, 262, 262, 262, 270, 270, 270, 270, 270,
1453 270, 270, 270, 270, 270, 270, 270, 270, 270, 270,
1454 270, 270, 270, 270, 270, 270, 270, 270, 270, 270,
1455 270, 270, 270, 270, 274, 274, 274, 274, 274, 274,
1456 274, 274, 274, 274, 274, 274, 274, 274, 274, 274,
1457 274, 274, 274, 274, 274, 274, 274, 274, 274, 274,
1458 274, 274, 274, 283, 283, 283, 283, 283, 283, 283,
1460 283, 283, 283, 283, 283, 283, 283, 283, 283, 283,
1461 283, 283, 283, 283, 283, 283, 283, 283, 283, 283,
1462 283, 283, 292, 292, 767, 292, 292, 292, 292, 292,
1463 292, 292, 292, 292, 292, 292, 292, 292, 292, 292,
1464 292, 292, 292, 292, 292, 292, 292, 292, 292, 292,
1465 292, 295, 691, 766, 765, 691, 691, 715, 764, 715,
1466 715, 715, 763, 762, 295, 761, 295, 295, 295, 760,
1467 759, 757, 295, 296, 756, 296, 296, 755, 296, 754,
1468 753, 296, 296, 464, 296, 296, 296, 302, 751, 302,
1469 302, 302, 302, 750, 302, 744, 743, 302, 302, 302,
1471 302, 302, 302, 318, 318, 742, 741, 736, 735, 712,
1472 711, 704, 703, 701, 1136, 318, 318, 318, 318, 318,
1473 318, 318, 297, 318, 318, 329, 297, 329, 329, 297,
1474 329, 698, 564, 329, 329, 696, 329, 329, 329, 330,
1475 330, 695, 694, 693, 692, 690, 687, 684, 683, 542,
1476 682, 330, 330, 330, 330, 330, 330, 330, 681, 330,
1477 330, 353, 353, 537, 353, 353, 353, 353, 353, 353,
1478 353, 353, 353, 353, 353, 353, 353, 353, 353, 353,
1479 353, 353, 353, 353, 353, 353, 353, 353, 353, 353,
1480 355, 680, 355, 355, 355, 355, 355, 679, 678, 355,
1482 355, 355, 355, 355, 677, 676, 675, 355, 361, 361,
1483 361, 361, 361, 361, 361, 361, 361, 361, 361, 361,
1484 361, 361, 361, 361, 361, 361, 361, 361, 361, 361,
1485 361, 361, 361, 361, 361, 361, 361, 363, 672, 363,
1486 363, 363, 671, 670, 669, 363, 365, 668, 365, 365,
1487 665, 511, 365, 664, 365, 365, 365, 663, 662, 661,
1488 365, 374, 374, 374, 374, 660, 494, 374, 494, 659,
1489 658, 656, 488, 483, 374, 655, 654, 374, 653, 652,
1490 374, 470, 374, 374, 374, 651, 464, 374, 374, 377,
1491 377, 377, 377, 649, 464, 647, 450, 646, 643, 433,
1493 638, 428, 377, 637, 377, 377, 423, 636, 377, 406,
1494 377, 377, 377, 628, 628, 628, 377, 383, 383, 383,
1495 383, 385, 623, 383, 371, 622, 364, 621, 362, 354,
1496 600, 594, 593, 592, 590, 587, 383, 586, 383, 383,
1497 383, 574, 297, 297, 383, 384, 384, 564, 384, 384,
1498 384, 384, 384, 384, 384, 384, 384, 384, 384, 384,
1499 384, 384, 384, 384, 384, 384, 384, 384, 384, 384,
1500 384, 384, 384, 384, 386, 293, 386, 386, 386, 386,
1501 386, 562, 560, 386, 386, 386, 386, 386, 558, 555,
1502 553, 386, 394, 394, 552, 394, 394, 394, 394, 394,
1504 394, 394, 394, 394, 394, 394, 394, 394, 394, 394,
1505 394, 394, 394, 394, 394, 394, 394, 394, 394, 394,
1506 394, 398, 550, 548, 547, 545, 540, 398, 511, 398,
1507 398, 398, 398, 398, 398, 499, 398, 398, 398, 398,
1508 398, 498, 497, 495, 398, 409, 409, 409, 409, 494,
1509 490, 409, 483, 479, 470, 464, 450, 433, 409, 428,
1510 423, 409, 406, 385, 409, 385, 409, 409, 409, 371,
1511 362, 409, 409, 414, 414, 414, 414, 354, 297, 294,
1512 414, 293, 1136, 111, 111, 1136, 414, 1136, 414, 414,
1513 1136, 1136, 414, 1136, 414, 414, 414, 1136, 1136, 1136,
1515 414, 417, 417, 417, 417, 1136, 1136, 417, 1136, 1136,
1516 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
1517 417, 1136, 417, 417, 417, 1136, 1136, 1136, 417, 418,
1518 1136, 1136, 418, 1136, 1136, 1136, 418, 1136, 418, 418,
1519 418, 1136, 1136, 1136, 418, 422, 422, 1136, 422, 422,
1520 422, 422, 422, 422, 422, 422, 422, 422, 422, 422,
1521 422, 422, 422, 422, 422, 422, 422, 422, 422, 422,
1522 422, 422, 422, 422, 427, 427, 1136, 427, 427, 427,
1523 427, 427, 427, 427, 427, 427, 427, 427, 427, 427,
1524 427, 427, 427, 427, 427, 427, 427, 427, 427, 427,
1526 427, 427, 427, 432, 432, 1136, 432, 432, 432, 432,
1527 432, 432, 432, 432, 432, 432, 432, 432, 432, 432,
1528 432, 432, 432, 432, 432, 432, 432, 432, 432, 432,
1529 432, 432, 434, 1136, 434, 434, 434, 434, 434, 1136,
1530 1136, 434, 434, 434, 434, 434, 1136, 1136, 1136, 434,
1531 440, 1136, 440, 440, 440, 1136, 1136, 1136, 440, 445,
1532 445, 445, 445, 1136, 1136, 445, 1136, 1136, 1136, 1136,
1533 1136, 1136, 1136, 1136, 445, 445, 1136, 1136, 445, 1136,
1534 445, 445, 445, 1136, 1136, 1136, 445, 453, 453, 453,
1535 453, 1136, 1136, 453, 1136, 1136, 1136, 1136, 1136, 1136,
1537 453, 1136, 1136, 453, 1136, 1136, 453, 1136, 453, 453,
1538 453, 1136, 1136, 453, 453, 456, 456, 456, 456, 1136,
1539 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 456, 1136,
1540 456, 456, 1136, 1136, 456, 1136, 456, 456, 456, 1136,
1541 1136, 1136, 456, 462, 462, 462, 462, 1136, 1136, 462,
1542 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
1543 1136, 1136, 462, 1136, 462, 462, 462, 1136, 1136, 1136,
1544 462, 463, 1136, 463, 463, 463, 1136, 1136, 1136, 463,
1545 465, 1136, 465, 1136, 1136, 1136, 465, 1136, 465, 465,
1546 465, 1136, 1136, 1136, 465, 469, 469, 1136, 469, 1136,
1548 1136, 1136, 469, 1136, 469, 469, 469, 1136, 1136, 1136,
1549 469, 474, 474, 1136, 474, 474, 474, 474, 474, 474,
1550 474, 1136, 474, 474, 474, 474, 474, 474, 474, 474,
1551 474, 474, 1136, 474, 474, 474, 474, 474, 474, 474,
1552 478, 1136, 1136, 478, 1136, 1136, 1136, 478, 1136, 478,
1553 478, 478, 1136, 1136, 1136, 478, 480, 480, 480, 480,
1554 480, 480, 480, 480, 480, 480, 480, 480, 480, 480,
1555 480, 480, 480, 480, 480, 1136, 480, 480, 480, 480,
1556 480, 480, 480, 480, 480, 482, 482, 1136, 482, 482,
1557 482, 482, 482, 482, 482, 482, 482, 482, 482, 482,
1559 482, 482, 482, 482, 1136, 482, 482, 482, 482, 482,
1560 482, 482, 482, 482, 489, 1136, 1136, 489, 1136, 1136,
1561 1136, 489, 1136, 489, 489, 489, 1136, 1136, 1136, 489,
1562 493, 493, 1136, 493, 493, 493, 493, 493, 493, 493,
1563 493, 493, 493, 493, 493, 493, 493, 493, 493, 493,
1564 493, 493, 493, 493, 493, 493, 493, 493, 493, 496,
1565 496, 1136, 496, 1136, 496, 496, 496, 496, 496, 1136,
1566 496, 496, 496, 496, 1136, 496, 496, 496, 1136, 496,
1567 1136, 496, 496, 496, 496, 496, 496, 496, 504, 1136,
1568 1136, 504, 1136, 1136, 1136, 504, 1136, 504, 504, 504,
1570 1136, 1136, 1136, 504, 512, 512, 1136, 512, 1136, 512,
1571 512, 512, 512, 512, 512, 512, 512, 512, 512, 512,
1572 512, 512, 512, 1136, 512, 1136, 512, 512, 512, 512,
1573 512, 512, 512, 516, 516, 1136, 516, 1136, 516, 516,
1574 516, 516, 516, 516, 516, 516, 516, 516, 516, 516,
1575 516, 516, 1136, 516, 1136, 516, 516, 516, 516, 516,
1576 516, 516, 525, 1136, 1136, 525, 1136, 1136, 1136, 525,
1577 1136, 525, 525, 525, 1136, 1136, 1136, 525, 529, 529,
1578 1136, 529, 529, 529, 529, 529, 1136, 1136, 529, 529,
1579 529, 529, 529, 529, 529, 529, 529, 1136, 529, 1136,
1581 529, 529, 529, 529, 529, 529, 529, 536, 1136, 536,
1582 536, 536, 1136, 1136, 1136, 536, 538, 1136, 538, 538,
1583 1136, 1136, 538, 1136, 538, 538, 538, 1136, 1136, 1136,
1584 538, 541, 1136, 541, 541, 541, 1136, 1136, 1136, 541,
1585 543, 1136, 543, 543, 1136, 1136, 543, 1136, 543, 543,
1586 543, 1136, 1136, 1136, 543, 546, 546, 1136, 546, 546,
1587 546, 546, 546, 546, 546, 546, 546, 546, 546, 546,
1588 546, 546, 546, 546, 1136, 546, 1136, 546, 546, 546,
1589 546, 546, 546, 546, 549, 1136, 1136, 549, 1136, 1136,
1590 1136, 549, 1136, 549, 549, 549, 1136, 1136, 1136, 549,
1592 551, 551, 1136, 551, 551, 551, 551, 551, 551, 551,
1593 551, 551, 551, 1136, 551, 551, 551, 551, 551, 551,
1594 551, 1136, 551, 551, 551, 551, 551, 551, 551, 554,
1595 554, 1136, 554, 554, 554, 554, 554, 554, 554, 1136,
1596 554, 554, 554, 554, 554, 554, 554, 554, 1136, 554,
1597 1136, 554, 554, 554, 554, 554, 554, 554, 557, 1136,
1598 557, 557, 557, 1136, 1136, 557, 1136, 557, 557, 557,
1599 1136, 1136, 1136, 557, 559, 559, 1136, 559, 559, 559,
1600 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
1601 559, 559, 559, 559, 559, 1136, 559, 559, 559, 559,
1603 559, 559, 559, 318, 318, 1136, 1136, 1136, 1136, 1136,
1604 1136, 1136, 1136, 1136, 1136, 318, 318, 318, 318, 318,
1605 318, 318, 1136, 318, 318, 292, 292, 1136, 292, 292,
1606 292, 292, 292, 292, 292, 292, 292, 292, 292, 292,
1607 292, 292, 292, 292, 292, 292, 292, 292, 292, 292,
1608 292, 292, 292, 292, 295, 1136, 295, 295, 295, 1136,
1609 1136, 1136, 295, 563, 563, 1136, 1136, 563, 1136, 563,
1610 563, 563, 1136, 1136, 1136, 563, 296, 1136, 296, 296,
1611 1136, 296, 1136, 1136, 296, 296, 1136, 296, 296, 296,
1612 565, 1136, 1136, 565, 1136, 1136, 1136, 565, 1136, 565,
1614 565, 565, 571, 1136, 1136, 571, 1136, 571, 571, 571,
1615 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
1616 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
1617 571, 588, 1136, 588, 588, 588, 1136, 1136, 588, 329,
1618 1136, 329, 329, 1136, 329, 1136, 1136, 329, 329, 1136,
1619 329, 329, 329, 330, 1136, 1136, 330, 1136, 1136, 1136,
1620 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
1621 1136, 1136, 330, 330, 330, 330, 330, 353, 353, 1136,
1622 353, 353, 353, 353, 353, 353, 353, 353, 353, 353,
1623 353, 353, 353, 353, 353, 353, 353, 353, 353, 353,
1625 353, 353, 353, 353, 353, 353, 355, 1136, 355, 355,
1626 355, 355, 355, 1136, 1136, 355, 355, 355, 355, 355,
1627 1136, 1136, 1136, 355, 618, 1136, 618, 1136, 618, 618,
1628 618, 1136, 1136, 618, 618, 618, 618, 618, 1136, 1136,
1629 1136, 618, 361, 361, 361, 361, 361, 361, 361, 361,
1630 361, 361, 361, 361, 361, 361, 361, 361, 361, 361,
1631 361, 361, 361, 361, 361, 361, 361, 361, 361, 361,
1632 361, 365, 1136, 365, 365, 1136, 1136, 365, 1136, 365,
1633 365, 365, 1136, 1136, 1136, 365, 363, 1136, 1136, 1136,
1634 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 363,
1636 1136, 363, 363, 363, 1136, 1136, 1136, 363, 374, 374,
1637 374, 374, 1136, 1136, 374, 1136, 1136, 1136, 1136, 1136,
1638 1136, 374, 1136, 1136, 374, 1136, 1136, 374, 1136, 374,
1639 374, 374, 1136, 1136, 374, 374, 377, 377, 377, 377,
1640 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 377,
1641 1136, 377, 377, 1136, 1136, 377, 1136, 377, 377, 377,
1642 1136, 1136, 1136, 377, 383, 383, 383, 383, 1136, 1136,
1643 383, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
1644 1136, 1136, 1136, 383, 1136, 383, 383, 383, 1136, 1136,
1645 1136, 383, 624, 1136, 1136, 1136, 624, 1136, 624, 624,
1647 624, 1136, 1136, 1136, 624, 384, 384, 1136, 384, 384,
1648 384, 384, 384, 384, 384, 384, 384, 384, 384, 384,
1649 384, 384, 384, 384, 384, 384, 384, 384, 384, 384,
1650 384, 384, 384, 384, 386, 1136, 386, 386, 386, 386,
1651 386, 1136, 1136, 386, 386, 386, 386, 386, 1136, 1136,
1652 1136, 386, 625, 1136, 625, 1136, 625, 625, 625, 1136,
1653 1136, 625, 625, 625, 625, 625, 1136, 1136, 1136, 625,
1654 392, 392, 1136, 392, 392, 392, 392, 392, 392, 392,
1655 392, 392, 392, 392, 392, 392, 392, 392, 392, 392,
1656 392, 392, 392, 392, 392, 392, 392, 392, 392, 394,
1658 394, 1136, 394, 394, 394, 394, 394, 394, 394, 394,
1659 394, 394, 394, 394, 394, 394, 394, 394, 394, 394,
1660 394, 394, 394, 394, 394, 394, 394, 394, 398, 1136,
1661 1136, 1136, 1136, 1136, 398, 1136, 398, 398, 398, 398,
1662 398, 398, 1136, 398, 398, 398, 398, 398, 1136, 1136,
1663 1136, 398, 630, 1136, 630, 1136, 630, 630, 630, 1136,
1664 1136, 630, 630, 630, 630, 630, 1136, 1136, 1136, 630,
1665 409, 409, 409, 409, 1136, 1136, 409, 1136, 1136, 1136,
1666 1136, 1136, 1136, 409, 1136, 1136, 409, 1136, 1136, 409,
1667 1136, 409, 409, 409, 1136, 1136, 409, 409, 414, 414,
1669 414, 414, 1136, 1136, 1136, 414, 1136, 1136, 1136, 1136,
1670 1136, 414, 1136, 414, 414, 1136, 1136, 414, 1136, 414,
1671 414, 414, 1136, 1136, 1136, 414, 417, 417, 417, 417,
1672 1136, 1136, 417, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
1673 1136, 1136, 1136, 1136, 1136, 417, 1136, 417, 417, 417,
1674 1136, 1136, 1136, 417, 633, 633, 633, 633, 633, 633,
1675 633, 633, 633, 1136, 633, 633, 633, 633, 633, 633,
1676 633, 633, 633, 633, 633, 633, 633, 633, 633, 633,
1677 633, 633, 633, 635, 1136, 1136, 635, 1136, 1136, 1136,
1678 635, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 635, 1136,
1680 1136, 1136, 635, 1136, 635, 635, 635, 1136, 1136, 1136,
1681 635, 418, 1136, 1136, 418, 1136, 1136, 1136, 418, 1136,
1682 418, 418, 418, 1136, 1136, 1136, 418, 422, 422, 1136,
1683 422, 422, 422, 422, 422, 422, 422, 422, 422, 422,
1684 422, 422, 422, 422, 422, 422, 422, 422, 422, 422,
1685 422, 422, 422, 422, 422, 422, 427, 427, 1136, 427,
1686 427, 427, 427, 427, 427, 427, 427, 427, 427, 427,
1687 427, 427, 427, 427, 427, 427, 427, 427, 427, 427,
1688 427, 427, 427, 427, 427, 432, 432, 1136, 432, 432,
1689 432, 432, 432, 432, 432, 432, 432, 432, 432, 432,
1691 432, 432, 432, 432, 432, 432, 432, 432, 432, 432,
1692 432, 432, 432, 432, 434, 1136, 434, 434, 434, 434,
1693 434, 1136, 1136, 434, 434, 434, 434, 434, 1136, 1136,
1694 1136, 434, 639, 1136, 639, 1136, 639, 639, 639, 1136,
1695 1136, 639, 639, 639, 639, 639, 1136, 1136, 1136, 639,
1696 445, 445, 445, 445, 1136, 1136, 445, 1136, 1136, 1136,
1697 1136, 1136, 1136, 1136, 1136, 445, 445, 1136, 1136, 445,
1698 1136, 445, 445, 445, 1136, 1136, 1136, 445, 642, 1136,
1699 642, 642, 642, 1136, 1136, 1136, 642, 645, 645, 645,
1700 645, 1136, 1136, 645, 1136, 1136, 1136, 1136, 1136, 1136,
1702 1136, 1136, 645, 645, 1136, 1136, 645, 1136, 645, 645,
1703 645, 1136, 1136, 1136, 645, 453, 453, 453, 453, 1136,
1704 1136, 453, 1136, 1136, 1136, 1136, 1136, 1136, 453, 1136,
1705 1136, 453, 1136, 1136, 453, 1136, 453, 453, 453, 1136,
1706 1136, 453, 453, 456, 456, 456, 456, 1136, 1136, 1136,
1707 1136, 1136, 1136, 1136, 1136, 1136, 456, 1136, 456, 456,
1708 1136, 1136, 456, 1136, 456, 456, 456, 1136, 1136, 1136,
1709 456, 462, 462, 462, 462, 1136, 1136, 462, 1136, 1136,
1710 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
1711 462, 1136, 462, 462, 462, 1136, 1136, 1136, 462, 648,
1713 1136, 1136, 1136, 648, 1136, 648, 648, 648, 1136, 1136,
1714 1136, 648, 465, 1136, 465, 1136, 1136, 1136, 465, 1136,
1715 465, 465, 465, 1136, 1136, 1136, 465, 650, 1136, 1136,
1716 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
1717 650, 1136, 650, 650, 650, 1136, 1136, 1136, 650, 469,
1718 469, 1136, 469, 1136, 1136, 1136, 469, 1136, 469, 469,
1719 469, 1136, 1136, 1136, 469, 474, 474, 1136, 474, 474,
1720 474, 474, 474, 474, 474, 1136, 474, 474, 474, 474,
1721 474, 474, 474, 474, 474, 474, 1136, 474, 474, 474,
1722 474, 474, 474, 474, 478, 1136, 1136, 478, 1136, 1136,
1724 1136, 478, 1136, 478, 478, 478, 1136, 1136, 1136, 478,
1725 480, 480, 480, 480, 480, 480, 480, 480, 480, 480,
1726 480, 480, 480, 480, 480, 480, 480, 480, 480, 1136,
1727 480, 480, 480, 480, 480, 480, 480, 480, 480, 482,
1728 482, 1136, 482, 482, 482, 482, 482, 482, 482, 482,
1729 482, 482, 482, 482, 482, 482, 482, 482, 1136, 482,
1730 482, 482, 482, 482, 482, 482, 482, 482, 657, 1136,
1731 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
1732 1136, 657, 1136, 657, 657, 657, 1136, 1136, 1136, 657,
1733 489, 1136, 1136, 489, 1136, 1136, 1136, 489, 1136, 489,
1735 489, 489, 1136, 1136, 1136, 489, 493, 493, 1136, 493,
1736 493, 493, 493, 493, 493, 493, 493, 493, 493, 493,
1737 493, 493, 493, 493, 493, 493, 493, 493, 493, 493,
1738 493, 493, 493, 493, 493, 496, 496, 1136, 496, 1136,
1739 496, 496, 496, 496, 496, 1136, 496, 496, 496, 496,
1740 1136, 496, 496, 496, 1136, 496, 1136, 496, 496, 496,
1741 496, 496, 496, 496, 504, 1136, 1136, 504, 1136, 1136,
1742 1136, 504, 1136, 504, 504, 504, 1136, 1136, 1136, 504,
1743 512, 512, 1136, 512, 1136, 512, 512, 512, 512, 512,
1744 512, 512, 512, 512, 512, 512, 512, 512, 512, 1136,
1746 512, 1136, 512, 512, 512, 512, 512, 512, 512, 516,
1747 516, 1136, 516, 1136, 516, 516, 516, 516, 516, 516,
1748 516, 516, 516, 516, 516, 516, 516, 516, 1136, 516,
1749 1136, 516, 516, 516, 516, 516, 516, 516, 525, 1136,
1750 1136, 525, 1136, 1136, 1136, 525, 1136, 525, 525, 525,
1751 1136, 1136, 1136, 525, 529, 529, 1136, 529, 529, 529,
1752 529, 529, 1136, 1136, 529, 529, 529, 529, 529, 529,
1753 529, 529, 529, 1136, 529, 1136, 529, 529, 529, 529,
1754 529, 529, 529, 538, 1136, 538, 538, 1136, 1136, 538,
1755 1136, 538, 538, 538, 1136, 1136, 1136, 538, 536, 1136,
1757 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
1758 1136, 536, 1136, 536, 536, 536, 1136, 1136, 1136, 536,
1759 543, 1136, 543, 543, 1136, 1136, 543, 1136, 543, 543,
1760 543, 1136, 1136, 1136, 543, 541, 1136, 1136, 1136, 1136,
1761 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 541, 1136,
1762 541, 541, 541, 1136, 1136, 1136, 541, 546, 546, 1136,
1763 546, 546, 546, 546, 546, 546, 546, 546, 546, 546,
1764 546, 546, 546, 546, 546, 546, 1136, 546, 1136, 546,
1765 546, 546, 546, 546, 546, 546, 549, 1136, 1136, 549,
1766 1136, 1136, 1136, 549, 1136, 549, 549, 549, 1136, 1136,
1768 1136, 549, 551, 551, 1136, 551, 551, 551, 551, 551,
1769 551, 551, 551, 551, 551, 1136, 551, 551, 551, 551,
1770 551, 551, 551, 1136, 551, 551, 551, 551, 551, 551,
1771 551, 554, 554, 1136, 554, 554, 554, 554, 554, 554,
1772 554, 1136, 554, 554, 554, 554, 554, 554, 554, 554,
1773 1136, 554, 1136, 554, 554, 554, 554, 554, 554, 554,
1774 557, 1136, 557, 557, 557, 1136, 1136, 557, 1136, 557,
1775 557, 557, 1136, 1136, 1136, 557, 559, 559, 1136, 559,
1776 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
1777 559, 559, 559, 559, 559, 559, 559, 1136, 559, 559,
1779 559, 559, 559, 559, 559, 563, 563, 1136, 1136, 563,
1780 1136, 563, 563, 563, 1136, 1136, 1136, 563, 697, 697,
1781 1136, 697, 697, 697, 697, 1136, 697, 697, 697, 697,
1782 697, 697, 697, 697, 697, 697, 697, 697, 697, 697,
1783 697, 697, 697, 697, 697, 697, 697, 565, 565, 1136,
1784 565, 1136, 1136, 1136, 565, 1136, 565, 565, 565, 296,
1785 1136, 296, 296, 1136, 296, 1136, 1136, 296, 296, 1136,
1786 296, 296, 296, 571, 1136, 1136, 571, 1136, 571, 571,
1787 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
1788 571, 571, 571, 571, 571, 571, 571, 571, 571, 571,
1790 571, 571, 706, 706, 1136, 706, 706, 706, 706, 706,
1791 706, 706, 706, 706, 706, 706, 706, 706, 706, 706,
1792 706, 706, 706, 706, 706, 706, 706, 706, 706, 706,
1793 706, 588, 1136, 1136, 588, 1136, 1136, 1136, 1136, 1136,
1794 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
1795 588, 1136, 588, 588, 588, 318, 1136, 1136, 318, 1136,
1796 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
1797 1136, 1136, 1136, 1136, 318, 1136, 318, 318, 318, 719,
1798 719, 1136, 719, 719, 719, 719, 719, 719, 719, 719,
1799 719, 719, 719, 719, 719, 719, 719, 719, 719, 719,
1801 719, 719, 719, 719, 719, 1136, 719, 719, 330, 1136,
1802 1136, 330, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
1803 1136, 1136, 1136, 1136, 1136, 1136, 1136, 330, 330, 330,
1804 330, 330, 618, 1136, 618, 618, 618, 618, 618, 1136,
1805 1136, 618, 618, 618, 618, 618, 1136, 1136, 1136, 618,
1806 355, 1136, 355, 355, 355, 355, 355, 1136, 1136, 355,
1807 355, 355, 355, 355, 1136, 1136, 1136, 355, 363, 1136,
1808 363, 363, 363, 1136, 1136, 1136, 363, 624, 1136, 1136,
1809 1136, 624, 1136, 624, 624, 624, 1136, 1136, 1136, 624,
1810 625, 1136, 625, 625, 625, 625, 625, 1136, 1136, 625,
1812 625, 625, 625, 625, 1136, 1136, 1136, 625, 386, 1136,
1813 386, 386, 386, 386, 386, 1136, 1136, 386, 386, 386,
1814 386, 386, 1136, 1136, 1136, 386, 738, 738, 1136, 738,
1815 738, 738, 738, 738, 738, 738, 738, 738, 738, 738,
1816 738, 738, 738, 738, 738, 738, 738, 738, 738, 738,
1817 738, 738, 738, 738, 738, 630, 1136, 1136, 1136, 1136,
1818 1136, 630, 1136, 630, 630, 630, 630, 630, 630, 1136,
1819 630, 630, 630, 630, 630, 1136, 1136, 1136, 630, 398,
1820 1136, 1136, 1136, 1136, 1136, 398, 1136, 398, 398, 398,
1821 398, 398, 398, 1136, 398, 398, 398, 398, 398, 1136,
1823 1136, 1136, 398, 633, 633, 633, 633, 633, 633, 633,
1824 633, 633, 633, 633, 633, 633, 633, 633, 633, 633,
1825 633, 633, 633, 633, 633, 633, 633, 633, 633, 633,
1826 633, 633, 635, 1136, 1136, 635, 1136, 1136, 1136, 635,
1827 1136, 1136, 1136, 1136, 1136, 1136, 1136, 635, 1136, 1136,
1828 1136, 635, 1136, 635, 635, 635, 1136, 1136, 1136, 635,
1829 639, 1136, 639, 639, 639, 639, 639, 1136, 1136, 639,
1830 639, 639, 639, 639, 1136, 1136, 1136, 639, 434, 1136,
1831 434, 434, 434, 434, 434, 1136, 1136, 434, 434, 434,
1832 434, 434, 1136, 1136, 1136, 434, 748, 748, 748, 748,
1834 1136, 1136, 748, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
1835 1136, 748, 748, 1136, 1136, 748, 1136, 748, 748, 748,
1836 1136, 1136, 1136, 748, 642, 642, 642, 642, 1136, 1136,
1837 642, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
1838 642, 1136, 1136, 642, 1136, 642, 642, 642, 1136, 1136,
1839 1136, 642, 645, 645, 645, 645, 1136, 1136, 645, 1136,
1840 1136, 1136, 1136, 1136, 1136, 1136, 1136, 645, 645, 1136,
1841 1136, 645, 1136, 645, 645, 645, 1136, 1136, 1136, 645,
1842 648, 1136, 1136, 1136, 648, 1136, 648, 648, 648, 1136,
1843 1136, 1136, 648, 650, 1136, 650, 650, 650, 1136, 1136,
1845 1136, 650, 752, 1136, 752, 1136, 1136, 1136, 752, 1136,
1846 752, 752, 752, 1136, 1136, 1136, 752, 657, 1136, 657,
1847 657, 657, 1136, 1136, 1136, 657, 758, 1136, 1136, 1136,
1848 758, 1136, 758, 758, 758, 1136, 1136, 1136, 758, 769,
1849 769, 769, 769, 769, 769, 769, 769, 769, 769, 769,
1850 769, 769, 769, 769, 769, 1136, 769, 769, 769, 1136,
1851 769, 1136, 1136, 769, 769, 769, 769, 769, 536, 1136,
1852 536, 536, 536, 1136, 1136, 1136, 536, 541, 1136, 541,
1853 541, 541, 1136, 1136, 1136, 541, 697, 697, 1136, 697,
1854 697, 697, 697, 697, 697, 697, 697, 697, 697, 697,
1856 697, 697, 697, 697, 697, 697, 697, 697, 697, 697,
1857 697, 697, 697, 697, 697, 793, 1136, 1136, 793, 1136,
1858 1136, 1136, 793, 1136, 793, 793, 793, 302, 1136, 302,
1859 1136, 302, 302, 1136, 302, 1136, 1136, 302, 302, 1136,
1860 302, 302, 302, 706, 706, 1136, 706, 706, 706, 706,
1861 706, 706, 706, 706, 706, 706, 706, 706, 706, 706,
1862 706, 706, 706, 706, 706, 706, 706, 706, 706, 706,
1863 706, 706, 318, 1136, 1136, 318, 1136, 1136, 1136, 1136,
1864 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
1865 1136, 318, 1136, 318, 318, 318, 719, 719, 1136, 719,
1867 719, 719, 719, 719, 719, 719, 719, 719, 719, 719,
1868 719, 719, 719, 719, 719, 719, 719, 719, 719, 719,
1869 719, 719, 719, 719, 719, 723, 723, 723, 723, 723,
1870 330, 1136, 1136, 330, 1136, 1136, 1136, 1136, 1136, 1136,
1871 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 330,
1872 330, 330, 330, 330, 296, 296, 1136, 296, 1136, 1136,
1873 1136, 1136, 1136, 1136, 296, 1136, 296, 296, 1136, 296,
1874 296, 1136, 296, 296, 1136, 296, 296, 296, 296, 355,
1875 1136, 355, 355, 355, 355, 355, 1136, 1136, 355, 355,
1876 355, 355, 355, 1136, 1136, 1136, 355, 386, 1136, 386,
1878 386, 386, 386, 386, 1136, 1136, 386, 386, 386, 386,
1879 386, 1136, 1136, 1136, 386, 738, 738, 1136, 738, 738,
1880 738, 738, 738, 738, 738, 738, 738, 738, 738, 738,
1881 738, 738, 738, 738, 738, 738, 738, 738, 738, 738,
1882 738, 738, 738, 738, 398, 1136, 1136, 1136, 1136, 1136,
1883 398, 1136, 398, 398, 398, 398, 398, 398, 1136, 398,
1884 398, 398, 398, 398, 1136, 1136, 1136, 398, 434, 1136,
1885 434, 434, 434, 434, 434, 1136, 1136, 434, 434, 434,
1886 434, 434, 1136, 1136, 1136, 434, 826, 1136, 826, 826,
1887 826, 1136, 1136, 1136, 826, 748, 748, 748, 748, 1136,
1889 1136, 748, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
1890 748, 748, 1136, 1136, 748, 1136, 748, 748, 748, 1136,
1891 1136, 1136, 748, 642, 642, 642, 642, 1136, 1136, 642,
1892 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 642,
1893 1136, 1136, 642, 1136, 642, 642, 642, 1136, 1136, 1136,
1894 642, 871, 871, 1136, 871, 1136, 1136, 1136, 871, 1136,
1895 871, 871, 871, 877, 877, 1136, 877, 877, 877, 877,
1896 877, 877, 877, 877, 877, 877, 877, 877, 877, 877,
1897 877, 877, 877, 877, 877, 877, 877, 877, 877, 877,
1898 877, 877, 805, 805, 805, 805, 805, 805, 805, 805,
1900 805, 805, 805, 805, 805, 805, 805, 805, 805, 805,
1901 805, 805, 1136, 805, 1136, 1136, 1136, 805, 805, 805,
1902 805, 899, 899, 899, 899, 1136, 1136, 899, 1136, 1136,
1903 1136, 1136, 1136, 1136, 1136, 1136, 899, 899, 1136, 1136,
1904 899, 1136, 899, 899, 899, 1136, 1136, 1136, 899, 923,
1905 923, 923, 923, 923, 923, 923, 923, 923, 923, 923,
1906 923, 923, 923, 923, 923, 1136, 923, 923, 923, 1136,
1907 923, 1136, 923, 1136, 923, 923, 923, 923, 950, 950,
1908 1136, 950, 950, 950, 950, 950, 950, 950, 950, 950,
1909 950, 950, 950, 950, 950, 950, 950, 950, 950, 950,
1911 950, 950, 950, 950, 950, 950, 950, 992, 992, 992,
1912 992, 992, 992, 992, 992, 992, 992, 992, 992, 992,
1913 992, 992, 992, 1136, 992, 992, 992, 1136, 992, 1136,
1914 1136, 1136, 992, 992, 992, 992, 993, 993, 993, 993,
1915 993, 993, 993, 993, 993, 993, 993, 993, 993, 993,
1916 993, 993, 1136, 993, 993, 993, 1136, 993, 1136, 1136,
1917 1136, 993, 993, 993, 993, 1043, 1043, 1043, 1043, 1043,
1918 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043, 1043,
1919 1043, 1136, 1043, 1043, 1043, 1136, 1043, 1136, 1136, 1136,
1920 1043, 1043, 1043, 1043, 1053, 1053, 1053, 1053, 1053, 1053,
1922 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053, 1053,
1923 1136, 1053, 1053, 1053, 1136, 1053, 1136, 1136, 1136, 1053,
1924 1053, 1053, 1053, 83, 1136, 1136, 1136, 1136, 1136, 1136,
1925 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
1926 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
1927 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
1928 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
1929 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
1930 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
1931 1136, 1136, 1136, 1136, 1136
1935 static yyconst flex_int16_t yy_chk[8796] =
1937 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1938 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1939 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1940 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1941 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1942 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1943 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1944 3, 4, 21, 22, 4, 23, 21, 22, 513, 23,
1945 513, 4, 4, 24, 4, 4, 35, 24, 4, 4,
1946 4, 36, 39, 47, 40, 35, 48, 53, 91, 53,
1948 36, 39, 98, 40, 115, 98, 229, 91, 1130, 115,
1949 229, 21, 22, 39, 23, 40, 43, 43, 53, 43,
1950 1126, 43, 24, 44, 44, 35, 44, 57, 44, 58,
1951 36, 39, 47, 40, 63, 48, 53, 4, 5, 5,
1952 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
1953 54, 5, 54, 5, 5, 45, 43, 45, 5, 5,
1954 5, 5, 99, 44, 45, 99, 57, 204, 58, 45,
1955 204, 54, 204, 63, 278, 393, 45, 214, 5, 5,
1956 5, 46, 214, 46, 99, 51, 51, 64, 51, 54,
1957 46, 393, 1123, 1119, 45, 46, 52, 52, 81, 52,
1959 278, 55, 46, 55, 5, 5, 5, 5, 6, 6,
1960 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
1961 46, 6, 55, 6, 6, 51, 64, 75, 6, 6,
1962 6, 6, 56, 69, 56, 1116, 52, 81, 255, 75,
1963 55, 1115, 92, 255, 92, 92, 92, 92, 6, 6,
1964 6, 552, 260, 56, 69, 92, 95, 260, 95, 95,
1965 230, 95, 95, 95, 1114, 230, 75, 95, 552, 230,
1966 1113, 56, 69, 92, 6, 6, 6, 6, 9, 9,
1967 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
1968 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
1970 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
1971 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
1972 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
1973 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
1974 9, 9, 9, 9, 9, 9, 9, 9, 9, 11,
1975 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
1976 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
1977 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
1978 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
1979 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
1981 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
1982 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
1983 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
1984 13, 13, 82, 13, 70, 13, 13, 61, 71, 76,
1985 13, 13, 13, 13, 61, 61, 62, 298, 312, 303,
1986 520, 76, 303, 62, 62, 70, 298, 324, 61, 71,
1987 13, 13, 13, 72, 520, 195, 324, 62, 312, 87,
1988 87, 82, 87, 70, 195, 1109, 61, 71, 76, 116,
1989 116, 1079, 116, 1079, 72, 62, 13, 13, 13, 13,
1990 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1992 14, 14, 72, 14, 195, 14, 14, 77, 78, 87,
1993 14, 14, 14, 14, 317, 86, 77, 78, 86, 307,
1994 100, 116, 339, 100, 344, 339, 306, 344, 77, 78,
1995 14, 14, 14, 100, 317, 124, 124, 86, 124, 100,
1996 307, 102, 100, 102, 102, 102, 77, 78, 306, 102,
1997 151, 151, 578, 151, 1108, 86, 14, 14, 14, 14,
1998 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1999 15, 15, 578, 15, 363, 15, 15, 124, 309, 363,
2000 15, 15, 15, 15, 101, 101, 100, 101, 548, 628,
2001 1097, 103, 151, 101, 103, 101, 101, 101, 101, 309,
2003 15, 15, 15, 1097, 103, 628, 101, 1121, 223, 223,
2004 103, 223, 155, 155, 548, 155, 107, 107, 108, 108,
2005 365, 107, 1121, 108, 101, 365, 15, 15, 15, 15,
2006 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
2007 16, 16, 107, 16, 108, 16, 16, 310, 223, 1106,
2008 16, 16, 16, 16, 155, 289, 289, 103, 289, 118,
2009 118, 118, 118, 119, 119, 119, 119, 313, 310, 305,
2010 16, 16, 16, 118, 1105, 536, 491, 119, 118, 491,
2011 536, 491, 119, 125, 125, 125, 125, 1104, 313, 538,
2012 125, 305, 305, 305, 538, 289, 16, 16, 16, 16,
2014 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
2015 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
2016 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
2017 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
2018 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
2019 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
2020 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
2021 17, 19, 19, 19, 19, 19, 19, 19, 19, 19,
2022 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
2023 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
2025 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
2026 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
2027 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
2028 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
2029 19, 19, 25, 25, 25, 25, 25, 25, 25, 25,
2030 25, 25, 25, 25, 541, 25, 543, 25, 25, 541,
2031 1103, 543, 25, 25, 25, 25, 710, 123, 123, 123,
2032 123, 120, 120, 120, 120, 129, 129, 1102, 120, 1101,
2033 129, 123, 25, 25, 25, 120, 123, 710, 159, 159,
2034 120, 159, 1100, 147, 147, 147, 147, 480, 130, 130,
2036 147, 129, 1092, 130, 170, 170, 480, 170, 25, 25,
2037 25, 25, 26, 26, 26, 26, 26, 26, 26, 26,
2038 26, 26, 26, 26, 130, 26, 588, 26, 26, 588,
2039 159, 136, 26, 26, 26, 26, 480, 163, 163, 120,
2040 136, 136, 163, 575, 580, 136, 170, 136, 141, 141,
2041 141, 141, 26, 26, 26, 142, 142, 142, 142, 841,
2042 1091, 853, 141, 163, 580, 575, 136, 141, 853, 142,
2043 179, 179, 179, 179, 142, 841, 1089, 179, 26, 26,
2044 26, 26, 27, 27, 27, 27, 27, 27, 27, 27,
2045 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
2047 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
2048 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
2049 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
2050 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
2051 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
2052 27, 27, 27, 29, 29, 29, 29, 29, 29, 29,
2053 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
2054 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
2055 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
2056 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
2058 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
2059 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
2060 29, 29, 29, 29, 31, 31, 31, 31, 31, 31,
2061 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
2062 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
2063 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
2064 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
2065 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
2066 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
2067 31, 31, 31, 31, 31, 33, 33, 33, 33, 33,
2069 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
2070 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
2071 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
2072 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
2073 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
2074 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
2075 33, 33, 33, 33, 33, 33, 37, 37, 37, 37,
2076 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
2077 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
2078 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
2080 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
2081 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
2082 37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
2083 37, 37, 37, 37, 37, 37, 37, 41, 41, 41,
2084 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
2085 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
2086 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
2087 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
2088 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
2089 41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
2091 41, 41, 41, 41, 41, 41, 41, 41, 49, 49,
2092 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
2093 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
2094 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
2095 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
2096 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
2097 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
2098 49, 49, 49, 49, 49, 49, 49, 49, 49, 59,
2099 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
2100 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
2102 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
2103 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
2104 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
2105 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
2106 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
2107 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
2108 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
2109 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
2110 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
2111 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
2113 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
2114 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
2115 65, 67, 67, 67, 67, 67, 67, 67, 67, 67,
2116 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
2117 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
2118 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
2119 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
2120 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
2121 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
2122 67, 67, 73, 73, 73, 73, 73, 73, 73, 73,
2124 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
2125 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
2126 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
2127 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
2128 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
2129 73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
2130 73, 73, 73, 79, 79, 79, 79, 79, 79, 79,
2131 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
2132 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
2133 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
2135 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
2136 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
2137 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
2138 79, 79, 79, 79, 93, 121, 121, 121, 121, 323,
2139 1088, 1087, 121, 109, 109, 93, 109, 164, 164, 121,
2140 341, 341, 164, 341, 121, 93, 93, 109, 109, 308,
2141 93, 93, 109, 579, 93, 93, 579, 93, 93, 178,
2142 178, 323, 178, 164, 584, 93, 93, 583, 308, 330,
2143 93, 93, 330, 109, 579, 109, 93, 93, 93, 93,
2144 93, 93, 94, 94, 584, 132, 132, 323, 132, 583,
2146 308, 184, 184, 121, 184, 585, 94, 94, 94, 132,
2147 132, 178, 1086, 137, 132, 187, 187, 349, 187, 330,
2148 349, 581, 137, 137, 581, 585, 94, 137, 1085, 137,
2149 94, 138, 94, 94, 94, 132, 857, 132, 1084, 349,
2150 138, 138, 581, 184, 1133, 138, 94, 138, 137, 94,
2151 857, 94, 1083, 94, 94, 96, 96, 187, 140, 140,
2152 1082, 140, 1133, 140, 190, 190, 138, 190, 1073, 96,
2153 96, 96, 140, 140, 1072, 347, 347, 140, 347, 140,
2154 143, 143, 143, 143, 1059, 217, 217, 143, 217, 96,
2155 1058, 96, 1056, 96, 143, 96, 96, 96, 140, 143,
2157 140, 144, 144, 144, 144, 1055, 190, 1049, 144, 96,
2158 221, 221, 96, 221, 96, 144, 96, 96, 97, 702,
2159 144, 97, 238, 238, 1048, 238, 705, 217, 97, 97,
2160 417, 97, 97, 417, 1111, 97, 97, 97, 417, 702,
2161 97, 146, 146, 146, 146, 1111, 705, 234, 143, 146,
2162 356, 234, 221, 591, 356, 146, 591, 234, 97, 234,
2163 146, 1047, 165, 165, 238, 165, 1128, 242, 242, 144,
2164 242, 290, 290, 1128, 290, 356, 165, 165, 695, 358,
2165 358, 165, 358, 1131, 97, 135, 135, 1131, 135, 135,
2166 135, 135, 135, 135, 135, 135, 135, 708, 135, 387,
2168 135, 135, 165, 387, 165, 135, 135, 135, 135, 242,
2169 695, 290, 169, 169, 169, 169, 1046, 708, 802, 169,
2170 172, 172, 172, 172, 387, 135, 135, 135, 169, 169,
2171 169, 169, 248, 248, 172, 248, 695, 333, 802, 172,
2172 333, 173, 173, 173, 173, 1045, 592, 251, 251, 592,
2173 251, 135, 135, 135, 135, 173, 174, 174, 174, 174,
2174 173, 1044, 1017, 174, 175, 175, 175, 175, 1016, 1015,
2175 174, 175, 198, 198, 248, 174, 1014, 333, 175, 177,
2176 177, 177, 177, 175, 333, 235, 198, 198, 198, 251,
2177 235, 355, 355, 177, 235, 592, 355, 1013, 177, 1012,
2179 235, 1011, 235, 1010, 286, 331, 198, 286, 331, 329,
2180 311, 329, 329, 311, 329, 329, 329, 355, 611, 332,
2181 329, 611, 332, 1009, 174, 336, 286, 334, 336, 1008,
2182 334, 311, 175, 311, 198, 199, 199, 594, 199, 1007,
2183 594, 199, 199, 1006, 286, 331, 311, 335, 337, 617,
2184 335, 337, 617, 311, 335, 199, 199, 199, 331, 332,
2185 340, 367, 367, 340, 367, 336, 689, 334, 311, 689,
2186 1005, 343, 336, 340, 343, 199, 1004, 199, 1003, 340,
2187 332, 336, 334, 594, 343, 1002, 335, 335, 337, 342,
2188 343, 342, 342, 342, 345, 346, 346, 345, 346, 378,
2190 378, 1001, 378, 199, 287, 287, 337, 345, 346, 1000,
2191 357, 357, 335, 345, 346, 357, 999, 346, 287, 287,
2192 287, 350, 998, 350, 350, 350, 340, 997, 351, 350,
2193 352, 351, 598, 352, 995, 598, 357, 343, 287, 389,
2194 389, 351, 389, 352, 399, 287, 287, 351, 399, 352,
2195 360, 360, 994, 990, 989, 360, 370, 370, 370, 370,
2196 345, 346, 988, 287, 987, 287, 287, 288, 288, 399,
2197 370, 374, 374, 374, 374, 370, 360, 375, 375, 375,
2198 375, 288, 288, 288, 375, 374, 986, 985, 984, 360,
2199 374, 598, 402, 402, 351, 402, 352, 371, 371, 371,
2201 371, 288, 983, 982, 371, 386, 386, 981, 288, 288,
2202 386, 371, 381, 381, 381, 381, 371, 979, 978, 381,
2203 382, 382, 382, 382, 977, 976, 288, 382, 288, 288,
2204 301, 386, 975, 301, 974, 301, 301, 301, 301, 301,
2205 301, 301, 301, 301, 301, 301, 301, 973, 972, 971,
2206 301, 301, 301, 301, 419, 419, 970, 419, 968, 373,
2207 373, 373, 373, 388, 388, 371, 373, 967, 388, 966,
2208 301, 301, 301, 373, 376, 376, 376, 376, 373, 391,
2209 391, 376, 424, 424, 391, 424, 963, 599, 376, 388,
2210 599, 429, 429, 376, 429, 962, 301, 301, 301, 301,
2212 301, 318, 953, 700, 318, 391, 700, 318, 318, 952,
2213 377, 377, 377, 377, 437, 437, 398, 437, 391, 950,
2214 949, 318, 318, 318, 377, 398, 398, 373, 948, 377,
2215 398, 671, 398, 599, 671, 947, 400, 410, 410, 410,
2216 410, 318, 376, 946, 410, 400, 400, 404, 434, 434,
2217 400, 398, 400, 434, 435, 945, 404, 404, 435, 436,
2218 436, 404, 593, 404, 436, 593, 318, 944, 318, 318,
2219 338, 400, 943, 338, 434, 441, 441, 441, 441, 435,
2220 338, 338, 404, 338, 338, 436, 671, 338, 338, 338,
2221 446, 446, 338, 446, 441, 404, 942, 405, 405, 405,
2223 405, 406, 406, 406, 406, 941, 457, 457, 406, 457,
2224 338, 405, 940, 939, 600, 406, 405, 600, 938, 593,
2225 406, 415, 415, 415, 415, 439, 439, 937, 415, 936,
2226 439, 935, 416, 416, 416, 416, 338, 394, 394, 416,
2227 394, 394, 394, 394, 394, 394, 394, 394, 394, 934,
2228 394, 439, 394, 394, 933, 932, 931, 394, 394, 394,
2229 394, 600, 929, 927, 439, 454, 454, 454, 454, 406,
2230 924, 922, 454, 408, 408, 408, 408, 394, 394, 394,
2231 408, 409, 409, 409, 409, 466, 466, 408, 466, 409,
2232 471, 471, 408, 471, 921, 409, 475, 475, 707, 475,
2234 409, 707, 920, 394, 394, 394, 394, 395, 395, 919,
2235 395, 395, 395, 395, 395, 395, 395, 395, 395, 707,
2236 395, 709, 395, 395, 709, 918, 917, 395, 395, 395,
2237 395, 411, 411, 411, 411, 916, 486, 486, 411, 486,
2238 915, 408, 709, 501, 501, 411, 501, 395, 395, 395,
2239 411, 412, 412, 412, 412, 460, 460, 460, 460, 412,
2240 505, 505, 460, 505, 914, 412, 522, 522, 713, 522,
2241 412, 713, 913, 395, 395, 395, 395, 414, 414, 414,
2242 414, 449, 449, 449, 449, 414, 440, 440, 440, 440,
2243 912, 414, 911, 440, 721, 449, 414, 721, 604, 411,
2245 449, 604, 440, 440, 440, 440, 443, 443, 443, 443,
2246 910, 909, 908, 443, 445, 445, 445, 445, 907, 906,
2247 905, 445, 443, 443, 443, 443, 526, 526, 904, 526,
2248 445, 445, 445, 445, 450, 450, 450, 450, 604, 902,
2249 901, 450, 452, 452, 452, 452, 900, 604, 450, 452,
2250 721, 530, 530, 450, 530, 896, 452, 453, 453, 453,
2251 453, 452, 895, 455, 455, 455, 455, 894, 891, 890,
2252 455, 453, 456, 456, 456, 456, 453, 455, 461, 461,
2253 461, 461, 455, 880, 879, 461, 456, 508, 508, 877,
2254 508, 456, 533, 533, 589, 533, 612, 589, 612, 612,
2256 612, 589, 450, 618, 618, 874, 873, 871, 618, 603,
2257 452, 605, 603, 870, 605, 869, 606, 607, 608, 606,
2258 607, 608, 634, 609, 868, 634, 609, 508, 867, 618,
2259 634, 455, 570, 589, 866, 570, 865, 570, 570, 570,
2260 570, 570, 570, 570, 570, 570, 570, 570, 570, 603,
2261 864, 605, 570, 570, 570, 570, 606, 607, 608, 589,
2262 603, 863, 606, 609, 608, 862, 610, 610, 605, 610,
2263 609, 861, 570, 570, 570, 860, 607, 613, 613, 610,
2264 613, 619, 619, 620, 620, 610, 619, 859, 620, 858,
2265 613, 615, 615, 856, 615, 855, 613, 854, 570, 570,
2267 570, 570, 570, 852, 615, 616, 616, 619, 616, 620,
2268 615, 625, 625, 615, 626, 626, 625, 851, 616, 626,
2269 620, 627, 627, 850, 616, 630, 627, 786, 635, 849,
2270 786, 635, 610, 848, 630, 630, 635, 625, 847, 630,
2271 626, 630, 720, 613, 846, 720, 845, 627, 639, 639,
2272 844, 843, 718, 639, 631, 718, 806, 615, 627, 806,
2273 630, 842, 717, 631, 631, 717, 930, 840, 631, 930,
2274 631, 616, 629, 629, 639, 629, 629, 629, 629, 629,
2275 629, 629, 629, 629, 839, 629, 838, 629, 629, 631,
2276 632, 837, 629, 629, 629, 629, 640, 640, 836, 632,
2278 632, 640, 720, 718, 632, 699, 632, 699, 810, 699,
2279 699, 810, 629, 629, 629, 835, 641, 641, 699, 834,
2280 717, 641, 640, 726, 833, 632, 726, 642, 642, 642,
2281 642, 832, 722, 831, 642, 722, 632, 830, 629, 629,
2282 629, 629, 641, 642, 642, 642, 642, 643, 643, 643,
2283 643, 829, 828, 641, 643, 644, 644, 644, 644, 810,
2284 827, 824, 644, 726, 799, 800, 643, 799, 800, 823,
2285 822, 644, 644, 644, 644, 645, 645, 645, 645, 819,
2286 722, 726, 645, 818, 1057, 799, 800, 1057, 809, 804,
2287 803, 645, 645, 645, 645, 716, 716, 716, 716, 716,
2289 716, 716, 716, 716, 716, 716, 716, 716, 716, 716,
2290 716, 716, 716, 716, 716, 716, 716, 716, 716, 716,
2291 716, 716, 716, 716, 716, 716, 716, 716, 716, 716,
2292 716, 716, 716, 716, 716, 716, 716, 716, 716, 716,
2293 716, 716, 716, 716, 716, 716, 716, 716, 716, 716,
2294 716, 716, 716, 716, 716, 716, 716, 716, 716, 716,
2295 716, 716, 716, 716, 716, 716, 724, 727, 875, 724,
2296 727, 875, 798, 807, 734, 734, 807, 797, 796, 734,
2297 731, 731, 793, 731, 1107, 732, 732, 1107, 732, 875,
2298 794, 791, 794, 731, 794, 794, 790, 789, 732, 731,
2300 734, 788, 808, 794, 732, 808, 724, 727, 728, 729,
2301 730, 728, 729, 730, 881, 734, 1077, 881, 727, 1077,
2302 807, 724, 725, 725, 725, 725, 725, 725, 725, 725,
2303 725, 725, 725, 725, 725, 725, 725, 725, 725, 725,
2304 725, 725, 725, 725, 725, 725, 731, 787, 728, 729,
2305 730, 732, 878, 733, 733, 878, 733, 808, 730, 881,
2306 785, 784, 725, 725, 725, 729, 733, 740, 728, 737,
2307 737, 1077, 733, 878, 737, 733, 740, 740, 783, 951,
2308 782, 740, 951, 740, 882, 781, 780, 882, 725, 725,
2309 725, 725, 725, 779, 778, 737, 745, 745, 762, 762,
2311 951, 745, 740, 762, 777, 811, 762, 762, 811, 884,
2312 737, 762, 884, 817, 817, 762, 762, 740, 817, 733,
2313 738, 738, 745, 738, 738, 738, 738, 738, 738, 738,
2314 738, 738, 776, 738, 775, 738, 738, 745, 774, 817,
2315 738, 738, 738, 738, 882, 811, 817, 747, 747, 747,
2316 747, 772, 811, 771, 747, 955, 1018, 770, 955, 1018,
2317 738, 738, 738, 747, 747, 747, 747, 813, 814, 884,
2318 813, 814, 768, 749, 749, 749, 749, 767, 1025, 1025,
2319 749, 885, 887, 1025, 885, 887, 738, 738, 738, 738,
2320 739, 739, 749, 739, 739, 739, 739, 739, 739, 739,
2322 739, 739, 955, 739, 1025, 739, 739, 813, 814, 766,
2323 739, 739, 739, 739, 813, 765, 1018, 748, 748, 748,
2324 748, 885, 887, 814, 748, 885, 816, 816, 764, 816,
2325 739, 739, 739, 748, 748, 748, 748, 763, 1019, 816,
2326 956, 1019, 887, 956, 815, 816, 1118, 815, 886, 1118,
2327 1020, 886, 1120, 1020, 761, 1120, 739, 739, 739, 739,
2328 812, 812, 812, 812, 812, 812, 812, 812, 812, 812,
2329 812, 812, 812, 812, 812, 812, 812, 812, 812, 812,
2330 812, 812, 812, 812, 815, 820, 820, 956, 886, 821,
2331 820, 1124, 816, 886, 1124, 815, 1019, 760, 821, 821,
2333 812, 812, 812, 821, 1020, 821, 888, 825, 825, 888,
2334 1127, 820, 825, 1127, 759, 757, 1129, 954, 820, 1129,
2335 954, 756, 1110, 755, 821, 1110, 812, 812, 812, 812,
2336 812, 821, 754, 825, 826, 826, 826, 826, 889, 889,
2337 825, 826, 753, 889, 892, 892, 888, 893, 752, 892,
2338 826, 826, 826, 826, 897, 897, 893, 893, 751, 897,
2339 954, 893, 957, 893, 889, 957, 888, 750, 889, 959,
2340 892, 744, 959, 743, 892, 1110, 898, 898, 898, 898,
2341 897, 742, 893, 898, 897, 958, 893, 960, 958, 736,
2342 960, 735, 898, 898, 898, 898, 899, 899, 899, 899,
2344 961, 961, 957, 899, 723, 961, 964, 964, 965, 959,
2345 719, 964, 899, 899, 899, 899, 959, 965, 965, 712,
2346 957, 711, 965, 706, 965, 958, 961, 960, 958, 704,
2347 969, 969, 964, 703, 960, 969, 1021, 1021, 1022, 1021,
2348 697, 1022, 1023, 965, 961, 1023, 696, 694, 1024, 1076,
2349 964, 1024, 1076, 1028, 1028, 1029, 969, 693, 1028, 1078,
2350 1078, 965, 1078, 1080, 1029, 1029, 1080, 1033, 1033, 1029,
2351 1095, 1029, 1033, 1095, 969, 692, 1021, 1081, 1022, 1028,
2352 1081, 1096, 1023, 1098, 1096, 690, 1098, 688, 1024, 1132,
2353 1029, 1099, 1132, 1033, 1099, 687, 1076, 683, 1022, 1078,
2355 1023, 1112, 1024, 1080, 1112, 1122, 1135, 1135, 1122, 1135,
2356 1080, 1225, 681, 1225, 1225, 1225, 1095, 1081, 1287, 679,
2357 678, 1287, 1287, 1098, 1096, 677, 676, 675, 674, 1098,
2358 673, 1099, 1081, 1297, 1099, 1297, 1297, 1297, 672, 670,
2359 1300, 1112, 1300, 1300, 1300, 1122, 1135, 1301, 669, 1301,
2360 1301, 1301, 668, 667, 1112, 1137, 1137, 1137, 1137, 1137,
2361 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137,
2362 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137, 1137,
2363 1137, 1137, 1137, 1137, 1138, 1138, 1138, 1138, 1138, 1138,
2364 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138,
2366 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138,
2367 1138, 1138, 1138, 1139, 1139, 1139, 1139, 1139, 1139, 1139,
2368 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139,
2369 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139, 1139,
2370 1139, 1139, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140,
2371 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140,
2372 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140, 1140,
2373 1140, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141,
2374 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141,
2375 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141, 1141,
2377 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142,
2378 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142,
2379 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1143,
2380 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143,
2381 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143,
2382 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1143, 1144, 1144,
2383 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144,
2384 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1144,
2385 1144, 1144, 1144, 1144, 1144, 1144, 1144, 1145, 1145, 1145,
2386 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145,
2388 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145, 1145,
2389 1145, 1145, 1145, 1145, 1145, 1145, 1146, 1146, 1146, 1146,
2390 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146,
2391 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146, 1146,
2392 1146, 1146, 1146, 1146, 1146, 1147, 1147, 1147, 1147, 1147,
2393 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147,
2394 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147, 1147,
2395 1147, 1147, 1147, 1147, 1148, 1148, 1148, 1148, 1148, 1148,
2396 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148,
2397 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148,
2399 1148, 1148, 1148, 1149, 1149, 1149, 1149, 1149, 1149, 1149,
2400 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149,
2401 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149,
2402 1149, 1149, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150,
2403 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150,
2404 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150, 1150,
2405 1150, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151,
2406 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151,
2407 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1151,
2408 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
2410 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152,
2411 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1152, 1153,
2412 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153,
2413 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153,
2414 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1153, 1154, 1154,
2415 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154,
2416 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154,
2417 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1155, 1155, 1155,
2418 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155,
2419 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155, 1155,
2421 1155, 1155, 1155, 1155, 1155, 1155, 1156, 1156, 1156, 1156,
2422 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
2423 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156, 1156,
2424 1156, 1156, 1156, 1156, 1156, 1157, 1157, 1157, 1157, 1157,
2425 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
2426 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157, 1157,
2427 1157, 1157, 1157, 1157, 1158, 1158, 1158, 1158, 1158, 1158,
2428 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158,
2429 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158, 1158,
2430 1158, 1158, 1158, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
2432 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
2433 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159, 1159,
2434 1159, 1159, 1160, 1160, 666, 1160, 1160, 1160, 1160, 1160,
2435 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160,
2436 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160, 1160,
2437 1160, 1161, 1327, 665, 664, 1327, 1327, 1332, 663, 1332,
2438 1332, 1332, 662, 661, 1161, 660, 1161, 1161, 1161, 659,
2439 658, 655, 1161, 1162, 654, 1162, 1162, 653, 1162, 652,
2440 651, 1162, 1162, 650, 1162, 1162, 1162, 1163, 647, 1163,
2441 1163, 1163, 1163, 646, 1163, 638, 637, 1163, 1163, 1163,
2443 1163, 1163, 1163, 1164, 1164, 636, 633, 623, 622, 587,
2444 586, 577, 576, 574, 572, 1164, 1164, 1164, 1164, 1164,
2445 1164, 1164, 571, 1164, 1164, 1165, 569, 1165, 1165, 566,
2446 1165, 565, 563, 1165, 1165, 562, 1165, 1165, 1165, 1166,
2447 1166, 561, 560, 558, 556, 553, 550, 547, 545, 544,
2448 542, 1166, 1166, 1166, 1166, 1166, 1166, 1166, 540, 1166,
2449 1166, 1167, 1167, 539, 1167, 1167, 1167, 1167, 1167, 1167,
2450 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167,
2451 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167,
2452 1168, 537, 1168, 1168, 1168, 1168, 1168, 535, 532, 1168,
2454 1168, 1168, 1168, 1168, 528, 524, 521, 1168, 1169, 1169,
2455 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169,
2456 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169,
2457 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1170, 519, 1170,
2458 1170, 1170, 518, 517, 515, 1170, 1171, 514, 1171, 1171,
2459 511, 510, 1171, 507, 1171, 1171, 1171, 503, 500, 499,
2460 1171, 1172, 1172, 1172, 1172, 495, 493, 1172, 492, 490,
2461 488, 485, 483, 482, 1172, 479, 477, 1172, 473, 470,
2462 1172, 469, 1172, 1172, 1172, 468, 465, 1172, 1172, 1173,
2463 1173, 1173, 1173, 464, 463, 459, 451, 448, 444, 432,
2465 431, 427, 1173, 426, 1173, 1173, 422, 421, 1173, 407,
2466 1173, 1173, 1173, 401, 396, 392, 1173, 1174, 1174, 1174,
2467 1174, 384, 380, 1174, 372, 369, 366, 364, 361, 353,
2468 325, 322, 321, 320, 319, 315, 1174, 314, 1174, 1174,
2469 1174, 304, 302, 296, 1174, 1175, 1175, 295, 1175, 1175,
2470 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175,
2471 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175, 1175,
2472 1175, 1175, 1175, 1175, 1176, 292, 1176, 1176, 1176, 1176,
2473 1176, 291, 285, 1176, 1176, 1176, 1176, 1176, 282, 277,
2474 273, 1176, 1177, 1177, 272, 1177, 1177, 1177, 1177, 1177,
2476 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177,
2477 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177, 1177,
2478 1177, 1178, 269, 265, 264, 261, 256, 1178, 225, 1178,
2479 1178, 1178, 1178, 1178, 1178, 213, 1178, 1178, 1178, 1178,
2480 1178, 212, 211, 207, 1178, 1179, 1179, 1179, 1179, 206,
2481 202, 1179, 197, 194, 186, 183, 176, 162, 1179, 158,
2482 154, 1179, 145, 131, 1179, 128, 1179, 1179, 1179, 122,
2483 110, 1179, 1179, 1180, 1180, 1180, 1180, 106, 90, 89,
2484 1180, 88, 83, 8, 7, 0, 1180, 0, 1180, 1180,
2485 0, 0, 1180, 0, 1180, 1180, 1180, 0, 0, 0,
2487 1180, 1181, 1181, 1181, 1181, 0, 0, 1181, 0, 0,
2488 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2489 1181, 0, 1181, 1181, 1181, 0, 0, 0, 1181, 1182,
2490 0, 0, 1182, 0, 0, 0, 1182, 0, 1182, 1182,
2491 1182, 0, 0, 0, 1182, 1183, 1183, 0, 1183, 1183,
2492 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183,
2493 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183, 1183,
2494 1183, 1183, 1183, 1183, 1184, 1184, 0, 1184, 1184, 1184,
2495 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184,
2496 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184, 1184,
2498 1184, 1184, 1184, 1185, 1185, 0, 1185, 1185, 1185, 1185,
2499 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185,
2500 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185, 1185,
2501 1185, 1185, 1186, 0, 1186, 1186, 1186, 1186, 1186, 0,
2502 0, 1186, 1186, 1186, 1186, 1186, 0, 0, 0, 1186,
2503 1187, 0, 1187, 1187, 1187, 0, 0, 0, 1187, 1188,
2504 1188, 1188, 1188, 0, 0, 1188, 0, 0, 0, 0,
2505 0, 0, 0, 0, 1188, 1188, 0, 0, 1188, 0,
2506 1188, 1188, 1188, 0, 0, 0, 1188, 1189, 1189, 1189,
2507 1189, 0, 0, 1189, 0, 0, 0, 0, 0, 0,
2509 1189, 0, 0, 1189, 0, 0, 1189, 0, 1189, 1189,
2510 1189, 0, 0, 1189, 1189, 1190, 1190, 1190, 1190, 0,
2511 0, 0, 0, 0, 0, 0, 0, 0, 1190, 0,
2512 1190, 1190, 0, 0, 1190, 0, 1190, 1190, 1190, 0,
2513 0, 0, 1190, 1191, 1191, 1191, 1191, 0, 0, 1191,
2514 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2515 0, 0, 1191, 0, 1191, 1191, 1191, 0, 0, 0,
2516 1191, 1192, 0, 1192, 1192, 1192, 0, 0, 0, 1192,
2517 1193, 0, 1193, 0, 0, 0, 1193, 0, 1193, 1193,
2518 1193, 0, 0, 0, 1193, 1194, 1194, 0, 1194, 0,
2520 0, 0, 1194, 0, 1194, 1194, 1194, 0, 0, 0,
2521 1194, 1195, 1195, 0, 1195, 1195, 1195, 1195, 1195, 1195,
2522 1195, 0, 1195, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
2523 1195, 1195, 0, 1195, 1195, 1195, 1195, 1195, 1195, 1195,
2524 1196, 0, 0, 1196, 0, 0, 0, 1196, 0, 1196,
2525 1196, 1196, 0, 0, 0, 1196, 1197, 1197, 1197, 1197,
2526 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197, 1197,
2527 1197, 1197, 1197, 1197, 1197, 0, 1197, 1197, 1197, 1197,
2528 1197, 1197, 1197, 1197, 1197, 1198, 1198, 0, 1198, 1198,
2529 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198, 1198,
2531 1198, 1198, 1198, 1198, 0, 1198, 1198, 1198, 1198, 1198,
2532 1198, 1198, 1198, 1198, 1199, 0, 0, 1199, 0, 0,
2533 0, 1199, 0, 1199, 1199, 1199, 0, 0, 0, 1199,
2534 1200, 1200, 0, 1200, 1200, 1200, 1200, 1200, 1200, 1200,
2535 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200,
2536 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1200, 1201,
2537 1201, 0, 1201, 0, 1201, 1201, 1201, 1201, 1201, 0,
2538 1201, 1201, 1201, 1201, 0, 1201, 1201, 1201, 0, 1201,
2539 0, 1201, 1201, 1201, 1201, 1201, 1201, 1201, 1202, 0,
2540 0, 1202, 0, 0, 0, 1202, 0, 1202, 1202, 1202,
2542 0, 0, 0, 1202, 1203, 1203, 0, 1203, 0, 1203,
2543 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203, 1203,
2544 1203, 1203, 1203, 0, 1203, 0, 1203, 1203, 1203, 1203,
2545 1203, 1203, 1203, 1204, 1204, 0, 1204, 0, 1204, 1204,
2546 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204, 1204,
2547 1204, 1204, 0, 1204, 0, 1204, 1204, 1204, 1204, 1204,
2548 1204, 1204, 1205, 0, 0, 1205, 0, 0, 0, 1205,
2549 0, 1205, 1205, 1205, 0, 0, 0, 1205, 1206, 1206,
2550 0, 1206, 1206, 1206, 1206, 1206, 0, 0, 1206, 1206,
2551 1206, 1206, 1206, 1206, 1206, 1206, 1206, 0, 1206, 0,
2553 1206, 1206, 1206, 1206, 1206, 1206, 1206, 1207, 0, 1207,
2554 1207, 1207, 0, 0, 0, 1207, 1208, 0, 1208, 1208,
2555 0, 0, 1208, 0, 1208, 1208, 1208, 0, 0, 0,
2556 1208, 1209, 0, 1209, 1209, 1209, 0, 0, 0, 1209,
2557 1210, 0, 1210, 1210, 0, 0, 1210, 0, 1210, 1210,
2558 1210, 0, 0, 0, 1210, 1211, 1211, 0, 1211, 1211,
2559 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211,
2560 1211, 1211, 1211, 1211, 0, 1211, 0, 1211, 1211, 1211,
2561 1211, 1211, 1211, 1211, 1212, 0, 0, 1212, 0, 0,
2562 0, 1212, 0, 1212, 1212, 1212, 0, 0, 0, 1212,
2564 1213, 1213, 0, 1213, 1213, 1213, 1213, 1213, 1213, 1213,
2565 1213, 1213, 1213, 0, 1213, 1213, 1213, 1213, 1213, 1213,
2566 1213, 0, 1213, 1213, 1213, 1213, 1213, 1213, 1213, 1214,
2567 1214, 0, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 0,
2568 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 0, 1214,
2569 0, 1214, 1214, 1214, 1214, 1214, 1214, 1214, 1215, 0,
2570 1215, 1215, 1215, 0, 0, 1215, 0, 1215, 1215, 1215,
2571 0, 0, 0, 1215, 1216, 1216, 0, 1216, 1216, 1216,
2572 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216, 1216,
2573 1216, 1216, 1216, 1216, 1216, 0, 1216, 1216, 1216, 1216,
2575 1216, 1216, 1216, 1217, 1217, 0, 0, 0, 0, 0,
2576 0, 0, 0, 0, 0, 1217, 1217, 1217, 1217, 1217,
2577 1217, 1217, 0, 1217, 1217, 1218, 1218, 0, 1218, 1218,
2578 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218,
2579 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218, 1218,
2580 1218, 1218, 1218, 1218, 1219, 0, 1219, 1219, 1219, 0,
2581 0, 0, 1219, 1220, 1220, 0, 0, 1220, 0, 1220,
2582 1220, 1220, 0, 0, 0, 1220, 1221, 0, 1221, 1221,
2583 0, 1221, 0, 0, 1221, 1221, 0, 1221, 1221, 1221,
2584 1222, 0, 0, 1222, 0, 0, 0, 1222, 0, 1222,
2586 1222, 1222, 1223, 0, 0, 1223, 0, 1223, 1223, 1223,
2587 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
2588 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223, 1223,
2589 1223, 1224, 0, 1224, 1224, 1224, 0, 0, 1224, 1226,
2590 0, 1226, 1226, 0, 1226, 0, 0, 1226, 1226, 0,
2591 1226, 1226, 1226, 1227, 0, 0, 1227, 0, 0, 0,
2592 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2593 0, 0, 1227, 1227, 1227, 1227, 1227, 1228, 1228, 0,
2594 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228,
2595 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228, 1228,
2597 1228, 1228, 1228, 1228, 1228, 1228, 1229, 0, 1229, 1229,
2598 1229, 1229, 1229, 0, 0, 1229, 1229, 1229, 1229, 1229,
2599 0, 0, 0, 1229, 1230, 0, 1230, 0, 1230, 1230,
2600 1230, 0, 0, 1230, 1230, 1230, 1230, 1230, 0, 0,
2601 0, 1230, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
2602 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
2603 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231, 1231,
2604 1231, 1232, 0, 1232, 1232, 0, 0, 1232, 0, 1232,
2605 1232, 1232, 0, 0, 0, 1232, 1233, 0, 0, 0,
2606 0, 0, 0, 0, 0, 0, 0, 0, 0, 1233,
2608 0, 1233, 1233, 1233, 0, 0, 0, 1233, 1234, 1234,
2609 1234, 1234, 0, 0, 1234, 0, 0, 0, 0, 0,
2610 0, 1234, 0, 0, 1234, 0, 0, 1234, 0, 1234,
2611 1234, 1234, 0, 0, 1234, 1234, 1235, 1235, 1235, 1235,
2612 0, 0, 0, 0, 0, 0, 0, 0, 0, 1235,
2613 0, 1235, 1235, 0, 0, 1235, 0, 1235, 1235, 1235,
2614 0, 0, 0, 1235, 1236, 1236, 1236, 1236, 0, 0,
2615 1236, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2616 0, 0, 0, 1236, 0, 1236, 1236, 1236, 0, 0,
2617 0, 1236, 1237, 0, 0, 0, 1237, 0, 1237, 1237,
2619 1237, 0, 0, 0, 1237, 1238, 1238, 0, 1238, 1238,
2620 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238,
2621 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238, 1238,
2622 1238, 1238, 1238, 1238, 1239, 0, 1239, 1239, 1239, 1239,
2623 1239, 0, 0, 1239, 1239, 1239, 1239, 1239, 0, 0,
2624 0, 1239, 1240, 0, 1240, 0, 1240, 1240, 1240, 0,
2625 0, 1240, 1240, 1240, 1240, 1240, 0, 0, 0, 1240,
2626 1241, 1241, 0, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
2627 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241,
2628 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1241, 1242,
2630 1242, 0, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242,
2631 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242,
2632 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1243, 0,
2633 0, 0, 0, 0, 1243, 0, 1243, 1243, 1243, 1243,
2634 1243, 1243, 0, 1243, 1243, 1243, 1243, 1243, 0, 0,
2635 0, 1243, 1244, 0, 1244, 0, 1244, 1244, 1244, 0,
2636 0, 1244, 1244, 1244, 1244, 1244, 0, 0, 0, 1244,
2637 1245, 1245, 1245, 1245, 0, 0, 1245, 0, 0, 0,
2638 0, 0, 0, 1245, 0, 0, 1245, 0, 0, 1245,
2639 0, 1245, 1245, 1245, 0, 0, 1245, 1245, 1246, 1246,
2641 1246, 1246, 0, 0, 0, 1246, 0, 0, 0, 0,
2642 0, 1246, 0, 1246, 1246, 0, 0, 1246, 0, 1246,
2643 1246, 1246, 0, 0, 0, 1246, 1247, 1247, 1247, 1247,
2644 0, 0, 1247, 0, 0, 0, 0, 0, 0, 0,
2645 0, 0, 0, 0, 0, 1247, 0, 1247, 1247, 1247,
2646 0, 0, 0, 1247, 1248, 1248, 1248, 1248, 1248, 1248,
2647 1248, 1248, 1248, 0, 1248, 1248, 1248, 1248, 1248, 1248,
2648 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248, 1248,
2649 1248, 1248, 1248, 1249, 0, 0, 1249, 0, 0, 0,
2650 1249, 0, 0, 0, 0, 0, 0, 0, 1249, 0,
2652 0, 0, 1249, 0, 1249, 1249, 1249, 0, 0, 0,
2653 1249, 1250, 0, 0, 1250, 0, 0, 0, 1250, 0,
2654 1250, 1250, 1250, 0, 0, 0, 1250, 1251, 1251, 0,
2655 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251,
2656 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251, 1251,
2657 1251, 1251, 1251, 1251, 1251, 1251, 1252, 1252, 0, 1252,
2658 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252,
2659 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252,
2660 1252, 1252, 1252, 1252, 1252, 1253, 1253, 0, 1253, 1253,
2661 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253,
2663 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253,
2664 1253, 1253, 1253, 1253, 1254, 0, 1254, 1254, 1254, 1254,
2665 1254, 0, 0, 1254, 1254, 1254, 1254, 1254, 0, 0,
2666 0, 1254, 1255, 0, 1255, 0, 1255, 1255, 1255, 0,
2667 0, 1255, 1255, 1255, 1255, 1255, 0, 0, 0, 1255,
2668 1256, 1256, 1256, 1256, 0, 0, 1256, 0, 0, 0,
2669 0, 0, 0, 0, 0, 1256, 1256, 0, 0, 1256,
2670 0, 1256, 1256, 1256, 0, 0, 0, 1256, 1257, 0,
2671 1257, 1257, 1257, 0, 0, 0, 1257, 1258, 1258, 1258,
2672 1258, 0, 0, 1258, 0, 0, 0, 0, 0, 0,
2674 0, 0, 1258, 1258, 0, 0, 1258, 0, 1258, 1258,
2675 1258, 0, 0, 0, 1258, 1259, 1259, 1259, 1259, 0,
2676 0, 1259, 0, 0, 0, 0, 0, 0, 1259, 0,
2677 0, 1259, 0, 0, 1259, 0, 1259, 1259, 1259, 0,
2678 0, 1259, 1259, 1260, 1260, 1260, 1260, 0, 0, 0,
2679 0, 0, 0, 0, 0, 0, 1260, 0, 1260, 1260,
2680 0, 0, 1260, 0, 1260, 1260, 1260, 0, 0, 0,
2681 1260, 1261, 1261, 1261, 1261, 0, 0, 1261, 0, 0,
2682 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2683 1261, 0, 1261, 1261, 1261, 0, 0, 0, 1261, 1262,
2685 0, 0, 0, 1262, 0, 1262, 1262, 1262, 0, 0,
2686 0, 1262, 1263, 0, 1263, 0, 0, 0, 1263, 0,
2687 1263, 1263, 1263, 0, 0, 0, 1263, 1264, 0, 0,
2688 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2689 1264, 0, 1264, 1264, 1264, 0, 0, 0, 1264, 1265,
2690 1265, 0, 1265, 0, 0, 0, 1265, 0, 1265, 1265,
2691 1265, 0, 0, 0, 1265, 1266, 1266, 0, 1266, 1266,
2692 1266, 1266, 1266, 1266, 1266, 0, 1266, 1266, 1266, 1266,
2693 1266, 1266, 1266, 1266, 1266, 1266, 0, 1266, 1266, 1266,
2694 1266, 1266, 1266, 1266, 1267, 0, 0, 1267, 0, 0,
2696 0, 1267, 0, 1267, 1267, 1267, 0, 0, 0, 1267,
2697 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268,
2698 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 0,
2699 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1269,
2700 1269, 0, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269,
2701 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 0, 1269,
2702 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1269, 1270, 0,
2703 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2704 0, 1270, 0, 1270, 1270, 1270, 0, 0, 0, 1270,
2705 1271, 0, 0, 1271, 0, 0, 0, 1271, 0, 1271,
2707 1271, 1271, 0, 0, 0, 1271, 1272, 1272, 0, 1272,
2708 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272,
2709 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272, 1272,
2710 1272, 1272, 1272, 1272, 1272, 1273, 1273, 0, 1273, 0,
2711 1273, 1273, 1273, 1273, 1273, 0, 1273, 1273, 1273, 1273,
2712 0, 1273, 1273, 1273, 0, 1273, 0, 1273, 1273, 1273,
2713 1273, 1273, 1273, 1273, 1274, 0, 0, 1274, 0, 0,
2714 0, 1274, 0, 1274, 1274, 1274, 0, 0, 0, 1274,
2715 1275, 1275, 0, 1275, 0, 1275, 1275, 1275, 1275, 1275,
2716 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 0,
2718 1275, 0, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1276,
2719 1276, 0, 1276, 0, 1276, 1276, 1276, 1276, 1276, 1276,
2720 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 0, 1276,
2721 0, 1276, 1276, 1276, 1276, 1276, 1276, 1276, 1277, 0,
2722 0, 1277, 0, 0, 0, 1277, 0, 1277, 1277, 1277,
2723 0, 0, 0, 1277, 1278, 1278, 0, 1278, 1278, 1278,
2724 1278, 1278, 0, 0, 1278, 1278, 1278, 1278, 1278, 1278,
2725 1278, 1278, 1278, 0, 1278, 0, 1278, 1278, 1278, 1278,
2726 1278, 1278, 1278, 1279, 0, 1279, 1279, 0, 0, 1279,
2727 0, 1279, 1279, 1279, 0, 0, 0, 1279, 1280, 0,
2729 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2730 0, 1280, 0, 1280, 1280, 1280, 0, 0, 0, 1280,
2731 1281, 0, 1281, 1281, 0, 0, 1281, 0, 1281, 1281,
2732 1281, 0, 0, 0, 1281, 1282, 0, 0, 0, 0,
2733 0, 0, 0, 0, 0, 0, 0, 0, 1282, 0,
2734 1282, 1282, 1282, 0, 0, 0, 1282, 1283, 1283, 0,
2735 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283, 1283,
2736 1283, 1283, 1283, 1283, 1283, 1283, 0, 1283, 0, 1283,
2737 1283, 1283, 1283, 1283, 1283, 1283, 1284, 0, 0, 1284,
2738 0, 0, 0, 1284, 0, 1284, 1284, 1284, 0, 0,
2740 0, 1284, 1285, 1285, 0, 1285, 1285, 1285, 1285, 1285,
2741 1285, 1285, 1285, 1285, 1285, 0, 1285, 1285, 1285, 1285,
2742 1285, 1285, 1285, 0, 1285, 1285, 1285, 1285, 1285, 1285,
2743 1285, 1286, 1286, 0, 1286, 1286, 1286, 1286, 1286, 1286,
2744 1286, 0, 1286, 1286, 1286, 1286, 1286, 1286, 1286, 1286,
2745 0, 1286, 0, 1286, 1286, 1286, 1286, 1286, 1286, 1286,
2746 1288, 0, 1288, 1288, 1288, 0, 0, 1288, 0, 1288,
2747 1288, 1288, 0, 0, 0, 1288, 1289, 1289, 0, 1289,
2748 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289,
2749 1289, 1289, 1289, 1289, 1289, 1289, 1289, 0, 1289, 1289,
2751 1289, 1289, 1289, 1289, 1289, 1290, 1290, 0, 0, 1290,
2752 0, 1290, 1290, 1290, 0, 0, 0, 1290, 1291, 1291,
2753 0, 1291, 1291, 1291, 1291, 0, 1291, 1291, 1291, 1291,
2754 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291,
2755 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1292, 1292, 0,
2756 1292, 0, 0, 0, 1292, 0, 1292, 1292, 1292, 1293,
2757 0, 1293, 1293, 0, 1293, 0, 0, 1293, 1293, 0,
2758 1293, 1293, 1293, 1294, 0, 0, 1294, 0, 1294, 1294,
2759 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294,
2760 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294, 1294,
2762 1294, 1294, 1295, 1295, 0, 1295, 1295, 1295, 1295, 1295,
2763 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295,
2764 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295, 1295,
2765 1295, 1296, 0, 0, 1296, 0, 0, 0, 0, 0,
2766 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2767 1296, 0, 1296, 1296, 1296, 1298, 0, 0, 1298, 0,
2768 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2769 0, 0, 0, 0, 1298, 0, 1298, 1298, 1298, 1299,
2770 1299, 0, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299,
2771 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299, 1299,
2773 1299, 1299, 1299, 1299, 1299, 0, 1299, 1299, 1302, 0,
2774 0, 1302, 0, 0, 0, 0, 0, 0, 0, 0,
2775 0, 0, 0, 0, 0, 0, 0, 1302, 1302, 1302,
2776 1302, 1302, 1303, 0, 1303, 1303, 1303, 1303, 1303, 0,
2777 0, 1303, 1303, 1303, 1303, 1303, 0, 0, 0, 1303,
2778 1304, 0, 1304, 1304, 1304, 1304, 1304, 0, 0, 1304,
2779 1304, 1304, 1304, 1304, 0, 0, 0, 1304, 1305, 0,
2780 1305, 1305, 1305, 0, 0, 0, 1305, 1306, 0, 0,
2781 0, 1306, 0, 1306, 1306, 1306, 0, 0, 0, 1306,
2782 1307, 0, 1307, 1307, 1307, 1307, 1307, 0, 0, 1307,
2784 1307, 1307, 1307, 1307, 0, 0, 0, 1307, 1308, 0,
2785 1308, 1308, 1308, 1308, 1308, 0, 0, 1308, 1308, 1308,
2786 1308, 1308, 0, 0, 0, 1308, 1309, 1309, 0, 1309,
2787 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309,
2788 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309,
2789 1309, 1309, 1309, 1309, 1309, 1310, 0, 0, 0, 0,
2790 0, 1310, 0, 1310, 1310, 1310, 1310, 1310, 1310, 0,
2791 1310, 1310, 1310, 1310, 1310, 0, 0, 0, 1310, 1311,
2792 0, 0, 0, 0, 0, 1311, 0, 1311, 1311, 1311,
2793 1311, 1311, 1311, 0, 1311, 1311, 1311, 1311, 1311, 0,
2795 0, 0, 1311, 1312, 1312, 1312, 1312, 1312, 1312, 1312,
2796 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312,
2797 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312,
2798 1312, 1312, 1313, 0, 0, 1313, 0, 0, 0, 1313,
2799 0, 0, 0, 0, 0, 0, 0, 1313, 0, 0,
2800 0, 1313, 0, 1313, 1313, 1313, 0, 0, 0, 1313,
2801 1314, 0, 1314, 1314, 1314, 1314, 1314, 0, 0, 1314,
2802 1314, 1314, 1314, 1314, 0, 0, 0, 1314, 1315, 0,
2803 1315, 1315, 1315, 1315, 1315, 0, 0, 1315, 1315, 1315,
2804 1315, 1315, 0, 0, 0, 1315, 1316, 1316, 1316, 1316,
2806 0, 0, 1316, 0, 0, 0, 0, 0, 0, 0,
2807 0, 1316, 1316, 0, 0, 1316, 0, 1316, 1316, 1316,
2808 0, 0, 0, 1316, 1317, 1317, 1317, 1317, 0, 0,
2809 1317, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2810 1317, 0, 0, 1317, 0, 1317, 1317, 1317, 0, 0,
2811 0, 1317, 1318, 1318, 1318, 1318, 0, 0, 1318, 0,
2812 0, 0, 0, 0, 0, 0, 0, 1318, 1318, 0,
2813 0, 1318, 0, 1318, 1318, 1318, 0, 0, 0, 1318,
2814 1319, 0, 0, 0, 1319, 0, 1319, 1319, 1319, 0,
2815 0, 0, 1319, 1320, 0, 1320, 1320, 1320, 0, 0,
2817 0, 1320, 1321, 0, 1321, 0, 0, 0, 1321, 0,
2818 1321, 1321, 1321, 0, 0, 0, 1321, 1322, 0, 1322,
2819 1322, 1322, 0, 0, 0, 1322, 1323, 0, 0, 0,
2820 1323, 0, 1323, 1323, 1323, 0, 0, 0, 1323, 1324,
2821 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324, 1324,
2822 1324, 1324, 1324, 1324, 1324, 0, 1324, 1324, 1324, 0,
2823 1324, 0, 0, 1324, 1324, 1324, 1324, 1324, 1325, 0,
2824 1325, 1325, 1325, 0, 0, 0, 1325, 1326, 0, 1326,
2825 1326, 1326, 0, 0, 0, 1326, 1328, 1328, 0, 1328,
2826 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328,
2828 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328, 1328,
2829 1328, 1328, 1328, 1328, 1328, 1329, 0, 0, 1329, 0,
2830 0, 0, 1329, 0, 1329, 1329, 1329, 1330, 0, 1330,
2831 0, 1330, 1330, 0, 1330, 0, 0, 1330, 1330, 0,
2832 1330, 1330, 1330, 1331, 1331, 0, 1331, 1331, 1331, 1331,
2833 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331,
2834 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331, 1331,
2835 1331, 1331, 1333, 0, 0, 1333, 0, 0, 0, 0,
2836 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2837 0, 1333, 0, 1333, 1333, 1333, 1334, 1334, 0, 1334,
2839 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334,
2840 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334, 1334,
2841 1334, 1334, 1334, 1334, 1334, 1335, 1335, 1335, 1335, 1335,
2842 1336, 0, 0, 1336, 0, 0, 0, 0, 0, 0,
2843 0, 0, 0, 0, 0, 0, 0, 0, 0, 1336,
2844 1336, 1336, 1336, 1336, 1337, 1337, 0, 1337, 0, 0,
2845 0, 0, 0, 0, 1337, 0, 1337, 1337, 0, 1337,
2846 1337, 0, 1337, 1337, 0, 1337, 1337, 1337, 1337, 1338,
2847 0, 1338, 1338, 1338, 1338, 1338, 0, 0, 1338, 1338,
2848 1338, 1338, 1338, 0, 0, 0, 1338, 1339, 0, 1339,
2850 1339, 1339, 1339, 1339, 0, 0, 1339, 1339, 1339, 1339,
2851 1339, 0, 0, 0, 1339, 1340, 1340, 0, 1340, 1340,
2852 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340,
2853 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340, 1340,
2854 1340, 1340, 1340, 1340, 1341, 0, 0, 0, 0, 0,
2855 1341, 0, 1341, 1341, 1341, 1341, 1341, 1341, 0, 1341,
2856 1341, 1341, 1341, 1341, 0, 0, 0, 1341, 1342, 0,
2857 1342, 1342, 1342, 1342, 1342, 0, 0, 1342, 1342, 1342,
2858 1342, 1342, 0, 0, 0, 1342, 1343, 0, 1343, 1343,
2859 1343, 0, 0, 0, 1343, 1344, 1344, 1344, 1344, 0,
2861 0, 1344, 0, 0, 0, 0, 0, 0, 0, 0,
2862 1344, 1344, 0, 0, 1344, 0, 1344, 1344, 1344, 0,
2863 0, 0, 1344, 1345, 1345, 1345, 1345, 0, 0, 1345,
2864 0, 0, 0, 0, 0, 0, 0, 0, 0, 1345,
2865 0, 0, 1345, 0, 1345, 1345, 1345, 0, 0, 0,
2866 1345, 1346, 1346, 0, 1346, 0, 0, 0, 1346, 0,
2867 1346, 1346, 1346, 1347, 1347, 0, 1347, 1347, 1347, 1347,
2868 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347,
2869 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347, 1347,
2870 1347, 1347, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
2872 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348, 1348,
2873 1348, 1348, 0, 1348, 0, 0, 0, 1348, 1348, 1348,
2874 1348, 1349, 1349, 1349, 1349, 0, 0, 1349, 0, 0,
2875 0, 0, 0, 0, 0, 0, 1349, 1349, 0, 0,
2876 1349, 0, 1349, 1349, 1349, 0, 0, 0, 1349, 1350,
2877 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350, 1350,
2878 1350, 1350, 1350, 1350, 1350, 0, 1350, 1350, 1350, 0,
2879 1350, 0, 1350, 0, 1350, 1350, 1350, 1350, 1351, 1351,
2880 0, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351,
2881 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1351,
2883 1351, 1351, 1351, 1351, 1351, 1351, 1351, 1352, 1352, 1352,
2884 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352, 1352,
2885 1352, 1352, 1352, 0, 1352, 1352, 1352, 0, 1352, 0,
2886 0, 0, 1352, 1352, 1352, 1352, 1353, 1353, 1353, 1353,
2887 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353, 1353,
2888 1353, 1353, 0, 1353, 1353, 1353, 0, 1353, 0, 0,
2889 0, 1353, 1353, 1353, 1353, 1354, 1354, 1354, 1354, 1354,
2890 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354, 1354,
2891 1354, 0, 1354, 1354, 1354, 0, 1354, 0, 0, 0,
2892 1354, 1354, 1354, 1354, 1355, 1355, 1355, 1355, 1355, 1355,
2894 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355,
2895 0, 1355, 1355, 1355, 0, 1355, 0, 0, 0, 1355,
2896 1355, 1355, 1355, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
2897 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
2898 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
2899 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
2900 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
2901 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
2902 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136, 1136,
2903 1136, 1136, 1136, 1136, 1136
2907 extern int commentScanYY_flex_debug;
2908 int commentScanYY_flex_debug = 0;
2910 static yy_state_type *yy_state_buf=0, *yy_state_ptr=0;
2911 static char *yy_full_match;
2913 static int yy_looking_for_trail_begin = 0;
2914 static int yy_full_lp;
2915 static int *yy_full_state;
2916 #define YY_TRAILING_MASK 0x2000
2917 #define YY_TRAILING_HEAD_MASK 0x4000
2920 *yy_cp = (yy_hold_char); /* undo effects of setting up commentScanYYtext */ \
2921 yy_cp = (yy_full_match); /* restore poss. backed-over text */ \
2922 (yy_lp) = (yy_full_lp); /* restore orig. accepting pos. */ \
2923 (yy_state_ptr) = (yy_full_state); /* restore orig. state */ \
2924 yy_current_state = *(yy_state_ptr); /* restore curr. state */ \
2929 #define yymore() yymore_used_but_not_detected
2930 #define YY_MORE_ADJ 0
2931 #define YY_RESTORE_YY_MORE_OFFSET
2932 char *commentScanYYtext;
2933 #line 1 "commentscan.l"
2934 /*****************************************************************************
2936 * Copyright (C) 1997-2012 by Dimitri van Heesch.
2938 * Permission to use, copy, modify, and distribute this software and its
2939 * documentation under the terms of the GNU General Public License is hereby
2940 * granted. No representations are made about the suitability of this software
2941 * for any purpose. It is provided "as is" without express or implied warranty.
2942 * See the GNU General Public License for more details.
2944 * Documents produced by Doxygen are derivative works derived from the
2945 * input used in their production; they are not affected by this license.
2948 #line 17 "commentscan.l"
2961 #include <qregexp.h>
2965 #include "scanner.h"
2967 #include "doxygen.h"
2968 #include "message.h"
2972 #include "defargs.h"
2973 #include "language.h"
2974 #include "outputlist.h"
2975 #include "membergroup.h"
2976 #include "reflist.h"
2978 #include "parserintf.h"
2980 #include "markdown.h"
2982 #define YY_NO_INPUT 1
2984 // forward declarations
2985 static bool handleBrief(const QCString &);
2986 static bool handleFn(const QCString &);
2987 static bool handleDef(const QCString &);
2988 static bool handleOverload(const QCString &);
2989 static bool handleEnum(const QCString &);
2990 static bool handleDefGroup(const QCString &);
2991 static bool handleAddToGroup(const QCString &);
2992 static bool handleWeakGroup(const QCString &);
2993 static bool handleNamespace(const QCString &);
2994 static bool handlePackage(const QCString &);
2995 static bool handleClass(const QCString &);
2996 static bool handleHeaderFile(const QCString &);
2997 static bool handleProtocol(const QCString &);
2998 static bool handleCategory(const QCString &);
2999 static bool handleUnion(const QCString &);
3000 static bool handleStruct(const QCString &);
3001 static bool handleInterface(const QCString &);
3002 static bool handleIdlException(const QCString &);
3003 static bool handlePage(const QCString &);
3004 static bool handleMainpage(const QCString &);
3005 static bool handleFile(const QCString &);
3006 static bool handleDir(const QCString &);
3007 static bool handleExample(const QCString &);
3008 static bool handleDetails(const QCString &);
3009 static bool handleName(const QCString &);
3010 static bool handleTodo(const QCString &);
3011 static bool handleTest(const QCString &);
3012 static bool handleBug(const QCString &);
3013 static bool handleSubpage(const QCString &s);
3014 static bool handleDeprecated(const QCString &);
3015 static bool handleXRefItem(const QCString &);
3016 static bool handleRelated(const QCString &);
3017 static bool handleRelatedAlso(const QCString &);
3018 static bool handleMemberOf(const QCString &);
3019 static bool handleRefItem(const QCString &);
3020 static bool handleSection(const QCString &);
3021 static bool handleAnchor(const QCString &);
3022 static bool handleCite(const QCString &);
3023 static bool handleFormatBlock(const QCString &);
3024 static bool handleAddIndex(const QCString &);
3025 static bool handleIf(const QCString &);
3026 static bool handleIfNot(const QCString &);
3027 static bool handleElseIf(const QCString &);
3028 static bool handleElse(const QCString &);
3029 static bool handleEndIf(const QCString &);
3030 static bool handleIngroup(const QCString &);
3031 static bool handleNoSubGrouping(const QCString &);
3032 static bool handleShowInitializer(const QCString &);
3033 static bool handleHideInitializer(const QCString &);
3034 static bool handleCallgraph(const QCString &);
3035 static bool handleCallergraph(const QCString &);
3036 static bool handleInternal(const QCString &);
3037 static bool handleLineBr(const QCString &);
3038 static bool handleStatic(const QCString &);
3039 static bool handlePure(const QCString &);
3040 static bool handlePrivate(const QCString &);
3041 static bool handlePrivateSection(const QCString &);
3042 static bool handleProtected(const QCString &);
3043 static bool handleProtectedSection(const QCString &);
3044 static bool handlePublic(const QCString &s);
3045 static bool handlePublicSection(const QCString &s);
3046 static bool handleToc(const QCString &s);
3047 static bool handleInherit(const QCString &);
3048 static bool handleExtends(const QCString &);
3049 static bool handleCopyDoc(const QCString &);
3051 typedef bool (*DocCmdFunc)(const QCString &name);
3055 const char *cmdName;
3060 // map of command to handler function
3061 static DocCmdMap docCmdMap[] =
3063 // command name handler function ends brief description
3064 { "brief", &handleBrief, FALSE },
3065 { "short", &handleBrief, FALSE },
3066 { "fn", &handleFn, FALSE },
3067 { "var", &handleFn, FALSE },
3068 { "typedef", &handleFn, FALSE },
3069 { "property", &handleFn, FALSE },
3070 { "def", &handleDef, FALSE },
3071 { "overload", &handleOverload, FALSE },
3072 { "enum", &handleEnum, FALSE },
3073 { "defgroup", &handleDefGroup, FALSE },
3074 { "addtogroup", &handleAddToGroup, FALSE },
3075 { "weakgroup", &handleWeakGroup, FALSE },
3076 { "namespace", &handleNamespace, FALSE },
3077 { "package", &handlePackage, FALSE },
3078 { "class", &handleClass, FALSE },
3079 { "headerfile", &handleHeaderFile, FALSE },
3080 { "protocol", &handleProtocol, FALSE },
3081 { "category", &handleCategory, FALSE },
3082 { "union", &handleUnion, FALSE },
3083 { "struct", &handleStruct, FALSE },
3084 { "interface", &handleInterface, FALSE },
3085 { "idlexcept", &handleIdlException, FALSE },
3086 { "page", &handlePage, FALSE },
3087 { "mainpage", &handleMainpage, FALSE },
3088 { "file", &handleFile, FALSE },
3089 { "dir", &handleDir, FALSE },
3090 { "example", &handleExample, FALSE },
3091 { "details", &handleDetails, TRUE },
3092 { "name", &handleName, FALSE },
3093 { "todo", &handleTodo, FALSE }, // end brief will be done differently
3094 { "test", &handleTest, FALSE }, // end brief will be done differently
3095 { "bug", &handleBug, FALSE }, // end brief will be done differently
3096 { "deprecated", &handleDeprecated, FALSE }, // end brief will be done differently
3097 { "xrefitem", &handleXRefItem, FALSE }, // end brief will be done differently
3098 { "related", &handleRelated, TRUE },
3099 { "relates", &handleRelated, TRUE },
3100 { "relatedalso", &handleRelatedAlso, TRUE },
3101 { "relatesalso", &handleRelatedAlso, TRUE },
3102 { "refitem", &handleRefItem, TRUE },
3103 { "cite", &handleCite, TRUE },
3104 { "subpage", &handleSubpage, TRUE },
3105 { "section", &handleSection, TRUE },
3106 { "subsection", &handleSection, TRUE },
3107 { "subsubsection", &handleSection, TRUE },
3108 { "paragraph", &handleSection, TRUE },
3109 { "anchor", &handleAnchor, TRUE },
3110 { "verbatim", &handleFormatBlock, TRUE },
3111 { "latexonly", &handleFormatBlock, FALSE },
3112 { "htmlonly", &handleFormatBlock, FALSE },
3113 { "xmlonly", &handleFormatBlock, FALSE },
3114 { "rtfonly", &handleFormatBlock, FALSE },
3115 { "manonly", &handleFormatBlock, FALSE },
3116 { "dot", &handleFormatBlock, TRUE },
3117 { "msc", &handleFormatBlock, TRUE },
3118 { "code", &handleFormatBlock, TRUE },
3119 { "addindex", &handleAddIndex, FALSE },
3120 { "if", &handleIf, FALSE },
3121 { "ifnot", &handleIfNot, FALSE },
3122 { "elseif", &handleElseIf, FALSE },
3123 { "else", &handleElse, FALSE },
3124 { "endif", &handleEndIf, FALSE },
3125 { "ingroup", &handleIngroup, FALSE },
3126 { "nosubgrouping", &handleNoSubGrouping, FALSE },
3127 { "showinitializer", &handleShowInitializer, FALSE },
3128 { "hideinitializer", &handleHideInitializer, FALSE },
3129 { "callgraph", &handleCallgraph, FALSE },
3130 { "callergraph", &handleCallergraph, FALSE },
3131 { "internal", &handleInternal, TRUE },
3132 { "_linebr", &handleLineBr, FALSE },
3133 { "static", &handleStatic, FALSE },
3134 { "pure", &handlePure, FALSE },
3135 { "private", &handlePrivate, FALSE },
3136 { "privatesection", &handlePrivateSection, FALSE },
3137 { "protected", &handleProtected, FALSE },
3138 { "protectedsection",&handleProtectedSection, FALSE },
3139 { "public", &handlePublic, FALSE },
3140 { "publicsection", &handlePublicSection, FALSE },
3141 { "tableofcontents", &handleToc, FALSE },
3142 { "inherit", &handleInherit, TRUE },
3143 { "extends", &handleExtends, TRUE },
3144 { "implements", &handleExtends, TRUE },
3145 { "memberof", &handleMemberOf, TRUE },
3147 { "attention", 0, TRUE },
3148 { "author", 0, TRUE },
3149 { "authors", 0, TRUE },
3150 { "copydoc", &handleCopyDoc, TRUE },
3151 { "copybrief", 0, FALSE },
3152 { "copydetails", 0, TRUE },
3153 { "date", 0, TRUE },
3154 { "dotfile", 0, TRUE },
3155 { "htmlinclude", 0, FALSE },
3156 { "image", 0, TRUE },
3157 { "include", 0, TRUE },
3158 { "includelineno", 0, TRUE },
3159 { "invariant", 0, TRUE },
3161 { "line", 0, TRUE },
3162 { "note", 0, TRUE },
3164 { "param", 0, TRUE },
3165 { "tparam", 0, TRUE },
3166 { "post", 0, TRUE },
3168 { "remark", 0, TRUE },
3169 { "remarks", 0, TRUE },
3170 { "result", 0, TRUE },
3171 { "return", 0, TRUE },
3172 { "returns", 0, TRUE },
3173 { "retval", 0, TRUE },
3176 { "since", 0, TRUE },
3177 { "throw", 0, TRUE },
3178 { "throws", 0, TRUE },
3179 { "until", 0, TRUE },
3180 { "verbinclude", 0, FALSE },
3181 { "version", 0, TRUE },
3182 { "warning", 0, TRUE },
3186 /** @brief Command mapper.
3188 * Maps a command name (as found in a comment block) onto a
3189 * specific handler function.
3200 /** maps a command name to a handler function */
3201 static Cmd *map(const char *name)
3203 return instance()->find(name);
3206 /** release the singleton */
3207 static void freeInstance()
3209 delete s_instance; s_instance=0;
3213 static DocCmdMapper *instance()
3215 if (s_instance==0) s_instance = new DocCmdMapper;
3219 DocCmdMapper() : m_map(113)
3221 m_map.setAutoDelete(TRUE);
3222 DocCmdMap *p = docCmdMap;
3225 if (m_map.find(p->cmdName)!=0)
3227 printf("Error: DocCmdMapper: command %s already added\n",p->cmdName);
3231 cmd->func = p->handler;
3232 cmd->endsBrief = p->endsBrief;
3233 m_map.insert(p->cmdName,cmd);
3238 Cmd *find(const char *name)
3240 return m_map.find(name);
3243 static DocCmdMapper *s_instance;
3246 DocCmdMapper *DocCmdMapper::s_instance=0;
3249 #define YY_NEVER_INTERACTIVE 1
3276 class GuardedSection
3279 GuardedSection(bool enabled,bool parentVisible)
3280 : m_enabled(enabled),m_parentVisible(parentVisible) {}
3281 bool isEnabled() const { return m_enabled; }
3282 bool parentVisible() const { return m_parentVisible; }
3286 bool m_parentVisible;
3289 void openGroup(Entry *e,const char *file,int line);
3290 void closeGroup(Entry *e,const char *file,int line,bool foundInline=FALSE);
3291 void initGroupInfo(Entry *e);
3292 static void groupAddDocs(Entry *e,const char *fileName);
3294 /* -----------------------------------------------------------------
3299 static ParserInterface *langParser; // the language parser that is calling us
3300 static QCString inputString; // input string
3301 static int inputPosition; // read pointer
3302 static QCString yyFileName; // file name that is read from
3303 static int yyLineNr; // line number in the input
3304 static bool inBody; // was the comment found inside the body of a function?
3305 static OutputContext inContext; // are we inside the brief, details or xref part
3306 static bool briefEndsAtDot; // does the brief description stop at a dot?
3307 static QCString formulaText; // Running text of a formula
3308 static QCString formulaEnv; // environment name
3309 static int formulaNewLines; // amount of new lines in the formula
3310 static QCString *pOutputString; // pointer to string to which the output is appended.
3311 static QCString outputXRef; // temp argument of todo/test/../xrefitem commands
3312 static QCString blockName; // preformatted block name (e.g. verbatim, latexonly,...)
3313 static XRefKind xrefKind; // kind of cross-reference command
3314 static XRefKind newXRefKind; //
3315 static GuardType guardType; // kind of guard for conditional section
3316 static bool enabledSectionFound;
3317 static QCString functionProto; // function prototype
3318 static QStack<GuardedSection> guards; // tracks nested conditional sections (if,ifnot,..)
3319 static Entry* current = 0 ; // working entry
3320 //static Entry* current_root = 0 ; // parent of working entry
3323 //static Entry* previous = 0 ; // TODO: remove need for this
3324 static bool needNewEntry;
3326 static QCString g_sectionLabel;
3327 static QCString g_sectionTitle;
3328 static int g_sectionLevel;
3329 static QCString xrefItemKey;
3330 static QCString newXRefItemKey;
3331 static QCString xrefItemTitle;
3332 static QCString xrefListTitle;
3333 static Protection protection;
3335 static bool xrefAppendFlag;
3336 static bool inGroupParamFound;
3337 static int braceCount;
3338 static bool insidePre;
3339 static bool parseMore;
3340 static int g_condCount;
3342 static int g_commentCount;
3343 static bool g_spaceBeforeCmd;
3344 static bool g_spaceBeforeIf;
3345 static QCString g_copyDocArg;
3347 //-----------------------------------------------------------------------------
3349 static QStack<Grouping> g_autoGroupStack;
3350 static int g_memberGroupId = DOX_NOGROUP;
3351 static QCString g_memberGroupHeader;
3352 static QCString g_memberGroupDocs;
3353 static QCString g_memberGroupRelates;
3354 static QCString g_compoundName;
3356 //-----------------------------------------------------------------------------
3358 static void initParser()
3360 g_sectionLabel.resize(0);
3361 g_sectionTitle.resize(0);
3362 g_memberGroupHeader.resize(0);
3365 //-----------------------------------------------------------------------------
3367 static bool getDocSectionName(int s)
3371 case Entry::CLASSDOC_SEC:
3372 case Entry::STRUCTDOC_SEC:
3373 case Entry::UNIONDOC_SEC:
3374 case Entry::EXCEPTIONDOC_SEC:
3375 case Entry::NAMESPACEDOC_SEC:
3376 case Entry::PROTOCOLDOC_SEC:
3377 case Entry::CATEGORYDOC_SEC:
3378 case Entry::ENUMDOC_SEC:
3379 case Entry::PAGEDOC_SEC:
3380 case Entry::VARIABLEDOC_SEC:
3381 case Entry::MEMBERDOC_SEC:
3382 case Entry::OVERLOADDOC_SEC:
3383 case Entry::FILEDOC_SEC:
3384 case Entry::DEFINEDOC_SEC:
3385 case Entry::GROUPDOC_SEC:
3386 case Entry::MAINPAGEDOC_SEC:
3387 case Entry::PACKAGEDOC_SEC:
3388 case Entry::DIRDOC_SEC:
3389 case Entry::EXAMPLE_SEC:
3390 case Entry::MEMBERGRP_SEC:
3397 //-----------------------------------------------------------------------------
3399 static bool makeStructuralIndicator(Entry::Sections s)
3401 //printf("current->section=%x\n",current->section);
3402 if (getDocSectionName(current->section))
3408 needNewEntry = TRUE;
3409 current->section = s;
3410 current->fileName = yyFileName;
3411 current->startLine = yyLineNr;
3416 static void lineCount()
3418 for( const char* c = commentScanYYtext ; *c ; ++c )
3419 yyLineNr += (*c == '\n') ;
3423 static QCString stripQuotes(const char *s)
3426 if (s==0 || *s==0) return name;
3428 if (name.at(0)=='"' && name.at(name.length()-1)=='"')
3430 name=name.mid(1,name.length()-2);
3435 //-----------------------------------------------------------------
3437 static void addXRefItem(const char *listName,const char *itemTitle,
3438 const char *listTitle,bool append)
3440 Entry *docEntry = current; // inBody && previous ? previous : current;
3441 if (listName==0) return;
3442 //printf("addXRefItem(%s,%s,%s,%d)\n",listName,itemTitle,listTitle,append);
3444 ListItemInfo *lii=0;
3445 RefList *refList = Doxygen::xrefLists->find(listName);
3446 if (refList==0) // new list
3448 refList = new RefList(listName,listTitle,itemTitle);
3449 Doxygen::xrefLists->insert(listName,refList);
3450 //printf("new list!\n");
3454 QListIterator<ListItemInfo> slii(*docEntry->sli);
3455 for (slii.toFirst();(lii=slii.current());++slii)
3457 if (strcmp(lii->type,listName)==0)
3459 //printf("found %s lii->type=%s\n",listName,lii->type);
3464 if (lii && append) // already found item of same type just before this one
3466 //printf("listName=%s item id = %d existing\n",listName,lii->itemId);
3467 RefItem *item = refList->getRefItem(lii->itemId);
3469 item->text += " <p>";
3470 if (Doxygen::markdownSupport)
3472 item->text += processMarkdown(yyFileName,current,outputXRef);
3476 item->text += outputXRef;
3478 //printf("%s: text +=%s\n",listName,item->text.data());
3482 int itemId = refList->addRefItem();
3483 //printf("listName=%s item id = %d new current=%p\n",listName,itemId,current);
3485 // if we have already an item from the same list type (e.g. a second @todo)
3486 // in the same Entry (i.e. lii!=0) then we reuse its link anchor.
3487 char anchorLabel[1024];
3488 //sprintf(anchorLabel,"_%s%06d",listName,lii ? lii->itemId : itemId);
3489 sprintf(anchorLabel,"_%s%06d",listName,itemId);
3490 RefItem *item = refList->getRefItem(itemId);
3492 if (Doxygen::markdownSupport)
3494 item->text = processMarkdown(yyFileName,current,outputXRef);
3498 item->text = outputXRef;
3500 item->listAnchor = anchorLabel;
3501 docEntry->addSpecialListItem(listName,itemId);
3503 cmdString.sprintf("\\xrefitem %s %d.",listName,itemId);
3506 docEntry->inbodyDocs += cmdString;
3510 docEntry->doc += cmdString;
3512 SectionInfo *si=new SectionInfo(listName,anchorLabel,
3513 g_sectionTitle,SectionInfo::Anchor,
3515 Doxygen::sectionDict.append(anchorLabel,si);
3516 docEntry->anchors->append(si);
3518 outputXRef.resize(0);
3521 //-----------------------------------------------------------------------------
3523 // Adds a formula text to the list/dictionary of formulas if it was
3524 // not already added. Returns the label of the formula.
3525 static QCString addFormula()
3528 QCString fText=formulaText.simplifyWhiteSpace();
3530 if ((f=Doxygen::formulaDict[fText])==0)
3532 f = new Formula(fText);
3533 Doxygen::formulaList.append(f);
3534 Doxygen::formulaDict.insert(fText,f);
3535 formLabel.sprintf("\\form#%d",f->getId());
3536 Doxygen::formulaNameDict.insert(formLabel,f);
3540 formLabel.sprintf("\\form#%d",f->getId());
3543 for (i=0;i<formulaNewLines;i++) formLabel+="@_fakenl"; // add fake newlines to
3544 // keep the warnings
3545 // correctly aligned.
3549 //-----------------------------------------------------------------------------
3551 static void checkFormula();
3552 //-----------------------------------------------------------------------------
3554 static SectionInfo::SectionType sectionLevelToType(int level)
3556 if (level>=0 && level<5) return (SectionInfo::SectionType)level;
3557 return SectionInfo::Anchor;
3560 static void addSection()
3562 // create a new section element
3563 g_sectionTitle+=commentScanYYtext;
3564 g_sectionTitle=g_sectionTitle.stripWhiteSpace();
3565 SectionInfo *si = new SectionInfo(yyFileName,g_sectionLabel,
3566 g_sectionTitle,sectionLevelToType(g_sectionLevel),g_sectionLevel);
3568 // add section to this entry
3569 current->anchors->append(si);
3571 // add section to the global dictionary
3572 Doxygen::sectionDict.append(g_sectionLabel,si);
3576 //-----------------------------------------------------------------------------
3578 static void addCite()
3580 Doxygen::citeDict->insert(commentScanYYtext);
3583 //-----------------------------------------------------------------------------
3585 // strip trailing whitespace (excluding newlines) from string s
3586 static void stripTrailingWhiteSpace(QCString &s)
3588 uint len = s.length();
3591 while (i>=0 && ((c = s.at(i))==' ' || c=='\t' || c=='\r')) i--;
3594 s.resize(i+2); // string upto and including char at pos i and \0 terminator
3598 // selects the output to write to
3599 static inline void setOutput(OutputContext ctx)
3601 bool xrefAppendToPrev = xrefAppendFlag;
3602 // determine append flag for the next item (i.e. the end of this item)
3603 xrefAppendFlag = !inBody &&
3604 inContext==OutputXRef && ctx==OutputXRef && // two consecutive xref items
3605 newXRefKind==xrefKind && // of the same kind
3606 (xrefKind!=XRef_Item ||
3607 newXRefItemKey==xrefItemKey); // with the same key if \xrefitem
3608 //printf("%d && %d && %d && (%d || %d)\n",
3609 // inContext==OutputXRef,
3611 // newXRefKind==xrefKind,
3612 // xrefKind!=XRef_Item,
3613 // newXRefItemKey==xrefItemKey);
3615 //printf("refKind=%d newXRefKind=%d xrefAppendToPrev=%d xrefAppendFlag=%d\n",
3616 // xrefKind,newXRefKind,xrefAppendToPrev,xrefAppendFlag);
3618 //printf("setOutput(inContext=%d ctx=%d)\n",inContext,ctx);
3619 if (inContext==OutputXRef) // end of XRef section => add the item
3621 // See if we can append this new xref item to the previous one.
3622 // We know this at the start of the next item of the same
3623 // type and need to remember this until the end of that item.
3628 theTranslator->trTodo(),
3629 theTranslator->trTodoList(),
3635 theTranslator->trTest(),
3636 theTranslator->trTestList(),
3642 theTranslator->trBug(),
3643 theTranslator->trBugList(),
3647 case XRef_Deprecated:
3648 addXRefItem("deprecated",
3649 theTranslator->trDeprecated(),
3650 theTranslator->trDeprecatedList(),
3654 case XRef_Item: // user defined list
3655 addXRefItem(xrefItemKey,
3666 xrefItemKey = newXRefItemKey;
3668 int oldContext = inContext;
3670 if (inContext!=OutputXRef && inBody) inContext=OutputInbody;
3674 if (oldContext!=inContext)
3676 stripTrailingWhiteSpace(current->doc);
3677 if (current->docFile.isEmpty())
3679 current->docFile = yyFileName;
3680 current->docLine = yyLineNr;
3683 pOutputString = ¤t->doc;
3686 if (oldContext!=inContext)
3688 if (current->briefFile.isEmpty())
3690 current->briefFile = yyFileName;
3691 current->briefLine = yyLineNr;
3694 if (current->brief.stripWhiteSpace().isEmpty()) // we only want one brief
3695 // description even if multiple
3698 pOutputString = ¤t->brief;
3702 pOutputString = ¤t->doc;
3703 inContext = OutputDoc; // need to switch to detailed docs, see bug 631380
3707 pOutputString = &outputXRef;
3708 // first item found, so can't append to previous
3709 //xrefAppendFlag = FALSE;
3712 pOutputString = ¤t->inbodyDocs;
3717 // add a string to the output
3718 static inline void addOutput(const char *s)
3720 //printf("addOutput(%s)\n",s);
3724 // add a character to the output
3725 static inline void addOutput(char c)
3730 static void endBrief(bool addToOutput=TRUE)
3732 if (!current->brief.stripWhiteSpace().isEmpty())
3733 { // only go to the detailed description if we have
3734 // found some brief description and not just whitespace
3735 briefEndsAtDot=FALSE;
3736 setOutput(OutputDoc);
3737 if (addToOutput) addOutput(commentScanYYtext);
3741 /* ----------------------------------------------------------------- */
3743 #define YY_INPUT(buf,result,max_size) result=yyread(buf,max_size);
3745 static int prevPosition=0;
3747 static int yyread(char *buf,int max_size)
3749 prevPosition=inputPosition;
3751 while( c < max_size && inputString[inputPosition] )
3753 *buf = inputString[inputPosition++] ;
3754 //printf("%d (%c)\n",*buf,*buf);
3760 /* start command character */
3761 /* comment parsing states. */
3802 #line 3803 "<stdout>"
3806 #define PageDocArg1 2
3807 #define PageDocArg2 3
3808 #define RelatesParam1 4
3809 #define ClassDocArg1 5
3810 #define ClassDocArg2 6
3811 #define ClassDocArg3 7
3812 #define CategoryDocArg1 8
3813 #define XRefItemParam1 9
3814 #define XRefItemParam2 10
3815 #define XRefItemParam3 11
3816 #define FileDocArg1 12
3817 #define EnumDocArg1 13
3818 #define NameSpaceDocArg1 14
3819 #define PackageDocArg1 15
3820 #define GroupDocArg1 16
3821 #define GroupDocArg2 17
3822 #define SectionLabel 18
3823 #define SectionTitle 19
3824 #define SubpageLabel 20
3825 #define SubpageTitle 21
3826 #define FormatBlock 22
3827 #define LineParam 23
3828 #define GuardParam 24
3829 #define GuardParamEnd 25
3830 #define SkipGuardedSection 26
3831 #define SkipInternal 27
3832 #define NameParam 28
3833 #define InGroupParam 29
3835 #define OverloadParam 31
3836 #define InheritParam 32
3837 #define ExtendsParam 33
3838 #define ReadFormulaShort 34
3839 #define ReadFormulaLong 35
3840 #define AnchorLabel 36
3841 #define HtmlComment 37
3843 #define CiteLabel 39
3846 #ifndef YY_NO_UNISTD_H
3847 /* Special case for "unistd.h", since it is non-ANSI. We include it way
3848 * down here because we want the user's section 1 to have been scanned first.
3849 * The user has a chance to override it with an option.
3854 #ifndef YY_EXTRA_TYPE
3855 #define YY_EXTRA_TYPE void *
3858 static int yy_init_globals (void );
3860 /* Accessor methods to globals.
3861 These are made visible to non-reentrant scanners for convenience. */
3863 int commentScanYYlex_destroy (void );
3865 int commentScanYYget_debug (void );
3867 void commentScanYYset_debug (int debug_flag );
3869 YY_EXTRA_TYPE commentScanYYget_extra (void );
3871 void commentScanYYset_extra (YY_EXTRA_TYPE user_defined );
3873 FILE *commentScanYYget_in (void );
3875 void commentScanYYset_in (FILE * in_str );
3877 FILE *commentScanYYget_out (void );
3879 void commentScanYYset_out (FILE * out_str );
3881 yy_size_t commentScanYYget_leng (void );
3883 char *commentScanYYget_text (void );
3885 int commentScanYYget_lineno (void );
3887 void commentScanYYset_lineno (int line_number );
3889 /* Macros after this point can all be overridden by user definitions in
3893 #ifndef YY_SKIP_YYWRAP
3895 extern "C" int commentScanYYwrap (void );
3897 extern int commentScanYYwrap (void );
3901 static void yyunput (int c,char *buf_ptr );
3904 static void yy_flex_strncpy (char *,yyconst char *,int );
3907 #ifdef YY_NEED_STRLEN
3908 static int yy_flex_strlen (yyconst char * );
3914 static int yyinput (void );
3916 static int input (void );
3921 /* Amount of stuff to slurp up with each read. */
3922 #ifndef YY_READ_BUF_SIZE
3923 #define YY_READ_BUF_SIZE 262144
3926 /* Copy whatever the last rule matched to the standard output. */
3928 /* This used to be an fputs(), but since the string might contain NUL's,
3929 * we now use fwrite().
3931 #define ECHO fwrite( commentScanYYtext, commentScanYYleng, 1, commentScanYYout )
3934 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
3935 * is returned in "result".
3938 #define YY_INPUT(buf,result,max_size) \
3939 if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
3943 for ( n = 0; n < max_size && \
3944 (c = getc( commentScanYYin )) != EOF && c != '\n'; ++n ) \
3945 buf[n] = (char) c; \
3947 buf[n++] = (char) c; \
3948 if ( c == EOF && ferror( commentScanYYin ) ) \
3949 YY_FATAL_ERROR( "input in flex scanner failed" ); \
3955 while ( (result = fread(buf, 1, max_size, commentScanYYin))==0 && ferror(commentScanYYin)) \
3957 if( errno != EINTR) \
3959 YY_FATAL_ERROR( "input in flex scanner failed" ); \
3963 clearerr(commentScanYYin); \
3970 /* No semi-colon after return; correct usage is to write "yyterminate();" -
3971 * we don't want an extra ';' after the "return" because that will cause
3972 * some compilers to complain about unreachable statements.
3975 #define yyterminate() return YY_NULL
3978 /* Number of entries by which start-condition stack grows. */
3979 #ifndef YY_START_STACK_INCR
3980 #define YY_START_STACK_INCR 25
3983 /* Report a fatal error. */
3984 #ifndef YY_FATAL_ERROR
3985 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
3988 /* end tables serialization structures and prototypes */
3990 /* Default declaration of generated scanner - a define so the user can
3991 * easily add parameters.
3994 #define YY_DECL_IS_OURS 1
3996 extern int commentScanYYlex (void);
3998 #define YY_DECL int commentScanYYlex (void)
3999 #endif /* !YY_DECL */
4001 /* Code executed at the beginning of each rule, after commentScanYYtext and commentScanYYleng
4004 #ifndef YY_USER_ACTION
4005 #define YY_USER_ACTION
4008 /* Code executed at the end of each rule. */
4010 #define YY_BREAK break;
4013 #define YY_RULE_SETUP \
4014 if ( commentScanYYleng > 0 ) \
4015 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \
4016 (commentScanYYtext[commentScanYYleng - 1] == '\n'); \
4019 /** The main scanner function which does all the work.
4023 register yy_state_type yy_current_state;
4024 register char *yy_cp, *yy_bp;
4025 register int yy_act;
4027 #line 920 "commentscan.l"
4030 /* What can happen in while parsing a comment block:
4031 * commands (e.g. @page, or \page)
4032 * escaped commands (e.g. @@page or \\page).
4033 * formulas (e.g. \f$ \f[ \f{..)
4034 * directories (e.g. \doxygen\src\)
4035 * autolist end. (e.g. a dot on an otherwise empty line)
4037 * end of brief description due to blank line.
4038 * end of brief description due to some command (@command, or <command>).
4039 * words and whitespace and other characters (#,?!, etc).
4040 * grouping commands (e.g. @{ and @})
4041 * language switch (e.g. \~english or \~).
4042 * mail adress (e.g. dimitri@stack.nl).
4043 * quoted text, such as "foo@bar"
4044 * XML commands, <summary></summary><remarks></remarks>
4047 #line 4048 "<stdout>"
4057 /* Create the reject buffer large enough to save one state per allowed character. */
4058 if ( ! (yy_state_buf) )
4059 (yy_state_buf) = (yy_state_type *)commentScanYYalloc(YY_STATE_BUF_SIZE );
4060 if ( ! (yy_state_buf) )
4061 YY_FATAL_ERROR( "out of dynamic memory in commentScanYYlex()" );
4064 (yy_start) = 1; /* first start state */
4066 if ( ! commentScanYYin )
4067 commentScanYYin = stdin;
4069 if ( ! commentScanYYout )
4070 commentScanYYout = stdout;
4072 if ( ! YY_CURRENT_BUFFER ) {
4073 commentScanYYensure_buffer_stack ();
4074 YY_CURRENT_BUFFER_LVALUE =
4075 commentScanYY_create_buffer(commentScanYYin,YY_BUF_SIZE );
4078 commentScanYY_load_buffer_state( );
4081 while ( 1 ) /* loops until end-of-file is reached */
4083 yy_cp = (yy_c_buf_p);
4085 /* Support of commentScanYYtext. */
4086 *yy_cp = (yy_hold_char);
4088 /* yy_bp points to the position in yy_ch_buf of the start of
4093 yy_current_state = (yy_start);
4094 yy_current_state += YY_AT_BOL();
4096 (yy_state_ptr) = (yy_state_buf);
4097 *(yy_state_ptr)++ = yy_current_state;
4102 register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
4103 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
4105 yy_current_state = (int) yy_def[yy_current_state];
4106 if ( yy_current_state >= 1137 )
4107 yy_c = yy_meta[(unsigned int) yy_c];
4109 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
4110 *(yy_state_ptr)++ = yy_current_state;
4113 while ( yy_base[yy_current_state] != 8724 );
4116 yy_current_state = *--(yy_state_ptr);
4117 (yy_lp) = yy_accept[yy_current_state];
4118 goto find_rule; /* Shut up GCC warning -Wall */
4119 find_rule: /* we branch to this label when backing up */
4120 for ( ; ; ) /* until we find what rule we matched */
4122 if ( (yy_lp) && (yy_lp) < yy_accept[yy_current_state + 1] )
4124 yy_act = yy_acclist[(yy_lp)];
4125 if ( yy_act & YY_TRAILING_HEAD_MASK ||
4126 (yy_looking_for_trail_begin) )
4128 if ( yy_act == (yy_looking_for_trail_begin) )
4130 (yy_looking_for_trail_begin) = 0;
4131 yy_act &= ~YY_TRAILING_HEAD_MASK;
4135 else if ( yy_act & YY_TRAILING_MASK )
4137 (yy_looking_for_trail_begin) = yy_act & ~YY_TRAILING_MASK;
4138 (yy_looking_for_trail_begin) |= YY_TRAILING_HEAD_MASK;
4139 (yy_full_match) = yy_cp;
4140 (yy_full_state) = (yy_state_ptr);
4141 (yy_full_lp) = (yy_lp);
4145 (yy_full_match) = yy_cp;
4146 (yy_full_state) = (yy_state_ptr);
4147 (yy_full_lp) = (yy_lp);
4154 yy_current_state = *--(yy_state_ptr);
4155 (yy_lp) = yy_accept[yy_current_state];
4158 YY_DO_BEFORE_ACTION;
4160 do_action: /* This label is used only to access EOF actions. */
4163 { /* beginning of action switch */
4166 #line 939 "commentscan.l"
4167 { // escaped command
4168 addOutput(commentScanYYtext);
4173 #line 942 "commentscan.l"
4174 { // escaped command
4175 addOutput(commentScanYYtext);
4180 #line 945 "commentscan.l"
4182 addOutput(commentScanYYtext);
4187 #line 948 "commentscan.l"
4189 addOutput(commentScanYYtext);
4194 #line 951 "commentscan.l"
4195 { // directory (or chain of commands!)
4196 addOutput(commentScanYYtext);
4200 /* rule 6 can match eol */
4202 #line 954 "commentscan.l"
4204 if (inContext!=OutputXRef)
4206 briefEndsAtDot=FALSE;
4207 setOutput(OutputDoc);
4209 // continue with the same input
4214 <Comment>{DETAILEDCMD}/[^a-z_A-Z]* { // command that can end a brief description
4215 briefEndsAtDot=FALSE;
4216 setOutput(OutputDoc);
4217 // continue with the same input
4223 #line 971 "commentscan.l"
4224 { // HTML command that ends a brief description
4225 setOutput(OutputDoc);
4226 // continue with the same input
4232 #line 976 "commentscan.l"
4233 { // HTML command that ends a brief description
4234 if (current->lang==SrcLangExt_CSharp)
4236 setOutput(OutputDoc);
4238 // continue with the same input
4244 #line 984 "commentscan.l"
4245 { // start of a .NET XML style brief description
4246 setOutput(OutputBrief);
4247 addOutput(commentScanYYtext);
4252 #line 988 "commentscan.l"
4253 { // start of a .NET XML style detailed description
4254 setOutput(OutputDoc);
4255 addOutput(commentScanYYtext);
4260 #line 992 "commentscan.l"
4261 { // start of a .NET XML style detailed description
4262 addOutput(commentScanYYtext);
4263 setOutput(OutputDoc);
4268 #line 996 "commentscan.l"
4269 { // end of a brief or detailed description
4270 addOutput(commentScanYYtext);
4275 #line 999 "commentscan.l"
4278 addOutput(commentScanYYtext);
4283 #line 1003 "commentscan.l"
4286 addOutput(commentScanYYtext);
4291 #line 1007 "commentscan.l"
4292 { // RCS tag which end a brief description
4293 setOutput(OutputDoc);
4299 #line 1011 "commentscan.l"
4306 #line 1014 "commentscan.l"
4308 warn(yyFileName,yyLineNr,
4309 "warning: found \\endinternal without matching \\internal"
4315 #line 1019 "commentscan.l"
4316 { // potentially interesting command
4317 // the {B}* in the front was added for bug620924
4318 QCString cmdName = QCString(commentScanYYtext).stripWhiteSpace().data()+1;
4319 DocCmdMapper::Cmd *cmdPtr = DocCmdMapper::map(cmdName);
4320 g_spaceBeforeCmd = commentScanYYtext[0]==' ' || commentScanYYtext[0]=='\t';
4321 if (cmdPtr) // special action is required
4323 if (cmdPtr->endsBrief)
4325 briefEndsAtDot=FALSE;
4326 // this command forces the end of brief description
4327 setOutput(OutputDoc);
4330 while (commentScanYYtext[i]==' ' || commentScanYYtext[i]=='\t') i++;
4331 if (i>0) addOutput(QCString(commentScanYYtext).left(i));
4332 if (cmdPtr->func && cmdPtr->func(cmdName))
4334 // implicit split of the comment block into two
4335 // entries. Restart the next block at the start
4339 // yuk, this is probably not very portable across lex implementations,
4340 // but we need to know the position in the input buffer where this
4342 // for flex 2.5.33+ we should use YY_CURRENT_BUFFER_LVALUE
4343 #if YY_FLEX_MINOR_VERSION>=5 && YY_FLEX_SUBMINOR_VERSION>=33
4344 inputPosition=prevPosition + yy_bp - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
4346 inputPosition=prevPosition + yy_bp - yy_current_buffer->yy_ch_buf;
4350 else if (cmdPtr->func==0)
4352 // command without handler, to be processed
4353 // later by parsedoc.cpp
4354 addOutput(commentScanYYtext+i);
4357 else // command not relevant
4359 addOutput(commentScanYYtext);
4365 #line 1065 "commentscan.l"
4366 { // escaped formula command
4367 addOutput(commentScanYYtext);
4372 #line 1068 "commentscan.l"
4373 { // language switch command
4374 QCString langId = QString(commentScanYYtext).stripWhiteSpace().data()+2;
4375 if (!langId.isEmpty() &&
4376 stricmp(Config_getEnum("OUTPUT_LANGUAGE"),langId)!=0)
4377 { // enable language specific section
4384 #line 1076 "commentscan.l"
4385 { // start of a formula with custom environment
4386 formulaText="\\begin";
4387 formulaEnv=QString(commentScanYYtext).stripWhiteSpace().data()+2;
4388 if (formulaEnv.at(formulaEnv.length()-1)=='{')
4390 // remove trailing open brace
4391 formulaEnv=formulaEnv.left(formulaEnv.length()-1);
4393 formulaText+=formulaEnv;
4395 BEGIN(ReadFormulaLong);
4400 #line 1088 "commentscan.l"
4401 { // start of a inline formula
4404 BEGIN(ReadFormulaShort);
4409 #line 1093 "commentscan.l"
4410 { // start of a block formula
4413 BEGIN(ReadFormulaLong);
4418 #line 1098 "commentscan.l"
4419 { // begin of a group
4420 //langParser->handleGroupStartCommand(g_memberGroupHeader);
4421 openGroup(current,yyFileName,yyLineNr);
4426 #line 1102 "commentscan.l"
4428 //langParser->handleGroupEndCommand();
4429 closeGroup(current,yyFileName,yyLineNr,TRUE);
4430 g_memberGroupHeader.resize(0);
4432 needNewEntry = TRUE;
4433 #if YY_FLEX_MINOR_VERSION>=5 && YY_FLEX_SUBMINOR_VERSION>=33
4434 inputPosition=prevPosition + yy_bp - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + strlen(commentScanYYtext);
4436 inputPosition=prevPosition + yy_bp - yy_current_buffer->yy_ch_buf + strlen(commentScanYYtext);
4443 #line 1115 "commentscan.l"
4444 { // escaped character
4445 addOutput(commentScanYYtext);
4450 #line 1118 "commentscan.l"
4452 addOutput(commentScanYYtext);
4456 /* rule 28 can match eol */
4457 *yy_cp = (yy_hold_char); /* undo effects of setting up commentScanYYtext */
4458 (yy_c_buf_p) = yy_cp -= 1;
4459 YY_DO_BEFORE_ACTION; /* set up commentScanYYtext again */
4461 #line 1121 "commentscan.l"
4462 { // explicit end autolist: e.g " ."
4463 addOutput(commentScanYYtext);
4467 #line 1125 "commentscan.l"
4470 #line 1125 "commentscan.l"
4471 { // start of autolist
4472 if (!Doxygen::markdownSupport)
4478 if (inContext!=OutputXRef)
4480 briefEndsAtDot=FALSE;
4481 setOutput(OutputDoc);
4483 addOutput(commentScanYYtext);
4489 #line 1140 "commentscan.l"
4490 { // start of autolist
4491 if (inContext!=OutputXRef)
4493 briefEndsAtDot=FALSE;
4494 setOutput(OutputDoc);
4496 addOutput(commentScanYYtext);
4500 /* rule 32 can match eol */
4501 *yy_cp = (yy_hold_char); /* undo effects of setting up commentScanYYtext */
4502 (yy_c_buf_p) = yy_cp -= 1;
4503 YY_DO_BEFORE_ACTION; /* set up commentScanYYtext again */
4505 #line 1148 "commentscan.l"
4506 { // horizontal line (dashed)
4507 addOutput(commentScanYYtext);
4512 #line 1151 "commentscan.l"
4514 addOutput(insidePre || Doxygen::markdownSupport ? commentScanYYtext : "—");
4519 #line 1154 "commentscan.l"
4521 addOutput(insidePre || Doxygen::markdownSupport ? commentScanYYtext : "–");
4526 #line 1157 "commentscan.l"
4527 { // . at start or in the middle of a word, or ellipsis
4528 addOutput(commentScanYYtext);
4533 #line 1160 "commentscan.l"
4534 { // . with escaped space.
4535 addOutput(commentScanYYtext[0]);
4536 addOutput(commentScanYYtext[2]);
4541 #line 1164 "commentscan.l"
4542 { // . with comma such as "e.g.,"
4543 addOutput(commentScanYYtext);
4548 #line 1167 "commentscan.l"
4549 { // ellipsis with escaped space.
4554 *yy_cp = (yy_hold_char); /* undo effects of setting up commentScanYYtext */
4555 (yy_c_buf_p) = yy_cp -= 1;
4556 YY_DO_BEFORE_ACTION; /* set up commentScanYYtext again */
4558 #line 1170 "commentscan.l"
4559 { // internal ellipsis
4560 addOutput(commentScanYYtext);
4564 /* rule 40 can match eol */
4566 #line 1173 "commentscan.l"
4567 { // at least one blank line (or blank line command)
4568 if (inContext==OutputXRef)
4570 // see bug 613024, we need to put the newlines after ending the XRef section.
4571 setOutput(OutputDoc);
4574 else if (inContext!=OutputBrief)
4577 setOutput(OutputDoc);
4579 else // inContext==OutputBrief
4580 { // only go to the detailed description if we have
4581 // found some brief description and not just whitespace
4589 #line 1192 "commentscan.l"
4590 { // potential end of a JavaDoc style comment
4591 addOutput(*commentScanYYtext);
4594 setOutput(OutputDoc);
4595 briefEndsAtDot=FALSE;
4600 /* rule 42 can match eol */
4602 #line 1200 "commentscan.l"
4604 addOutput(*commentScanYYtext);
4610 #line 1204 "commentscan.l"
4611 { // catch-all for anything else
4612 addOutput(*commentScanYYtext);
4615 /* -------------- Rules for handling HTML comments ----------- */
4618 #line 1211 "commentscan.l"
4619 { BEGIN( Comment ); }
4622 /* rule 45 can match eol */
4624 #line 1212 "commentscan.l"
4626 if (*commentScanYYtext=='\n') yyLineNr++;
4631 #line 1215 "commentscan.l"
4632 { // ignore unimportant characters
4637 #line 1217 "commentscan.l"
4638 { // ignore every else
4641 /* -------------- Rules for handling formulas ---------------- */
4644 #line 1222 "commentscan.l"
4645 { // end of inline formula
4647 addOutput(" "+addFormula());
4653 #line 1227 "commentscan.l"
4654 { // end of block formula
4656 addOutput(" "+addFormula());
4662 #line 1232 "commentscan.l"
4663 { // end of custom env formula
4664 formulaText+="\\end";
4665 formulaText+=formulaEnv;
4666 addOutput(" "+addFormula());
4672 #line 1238 "commentscan.l"
4673 { // any non-special character
4674 formulaText+=commentScanYYtext;
4678 /* rule 52 can match eol */
4680 #line 1241 "commentscan.l"
4683 formulaText+=*commentScanYYtext;
4689 #line 1246 "commentscan.l"
4690 { // any othe character
4691 formulaText+=*commentScanYYtext;
4694 /* ------------ handle argument of enum command --------------- */
4696 /* rule 54 can match eol */
4698 #line 1252 "commentscan.l"
4699 { // handle argument
4700 current->name = commentScanYYtext;
4705 /* rule 55 can match eol */
4707 #line 1256 "commentscan.l"
4708 { // line continuation
4714 /* rule 56 can match eol */
4716 #line 1260 "commentscan.l"
4717 { // missing argument
4718 warn(yyFileName,yyLineNr,
4719 "warning: missing argument after \\enum."
4722 if (*commentScanYYtext=='\n') yyLineNr++;
4728 #line 1268 "commentscan.l"
4729 { // ignore other stuff
4732 /* ------------ handle argument of namespace command --------------- */
4734 /* rule 58 can match eol */
4736 #line 1273 "commentscan.l"
4737 { // handle argument
4738 current->name = substitute(commentScanYYtext,".","::");
4743 /* rule 59 can match eol */
4745 #line 1277 "commentscan.l"
4746 { // line continuation
4752 /* rule 60 can match eol */
4754 #line 1281 "commentscan.l"
4755 { // missing argument
4756 warn(yyFileName,yyLineNr,
4757 "warning: missing argument after "
4761 if (*commentScanYYtext=='\n') yyLineNr++;
4767 #line 1290 "commentscan.l"
4768 { // ignore other stuff
4771 /* ------------ handle argument of package command --------------- */
4774 #line 1295 "commentscan.l"
4775 { // handle argument
4776 current->name = commentScanYYtext;
4781 /* rule 63 can match eol */
4783 #line 1299 "commentscan.l"
4784 { // line continuation
4790 /* rule 64 can match eol */
4792 #line 1303 "commentscan.l"
4793 { // missing argument
4794 warn(yyFileName,yyLineNr,
4795 "warning: missing argument after "
4799 if (*commentScanYYtext=='\n') yyLineNr++;
4805 #line 1312 "commentscan.l"
4806 { // ignore other stuff
4809 /* ------ handle argument of class/struct/union command --------------- */
4811 /* rule 66 can match eol */
4813 #line 1317 "commentscan.l"
4815 current->name = substitute(commentScanYYtext,".","::");
4816 if (current->section==Entry::PROTOCOLDOC_SEC)
4818 current->name+="-p";
4820 // prepend outer scope name
4821 BEGIN( ClassDocArg2 );
4825 /* rule 67 can match eol */
4827 #line 1326 "commentscan.l"
4829 current->name = substitute(commentScanYYtext,".","::");
4830 BEGIN( ClassDocArg2 );
4834 /* rule 68 can match eol */
4836 #line 1330 "commentscan.l"
4837 { // line continuation
4843 /* rule 69 can match eol */
4845 #line 1334 "commentscan.l"
4847 warn(yyFileName,yyLineNr,
4848 "warning: missing argument after "
4849 "\\%s.",YY_START==ClassDocArg1?"class":"category"
4852 if (*commentScanYYtext=='\n') yyLineNr++;
4858 #line 1343 "commentscan.l"
4859 { // ignore other stuff
4864 #line 1346 "commentscan.l"
4865 { // second argument; include file
4866 current->includeFile = commentScanYYtext;
4867 BEGIN( ClassDocArg3 );
4871 /* rule 72 can match eol */
4873 #line 1350 "commentscan.l"
4874 { // line continuation
4880 /* rule 73 can match eol */
4882 #line 1354 "commentscan.l"
4885 if (*commentScanYYtext=='\n') yyLineNr++;
4891 #line 1359 "commentscan.l"
4892 { // ignore other stuff
4897 #line 1362 "commentscan.l"
4898 { // third argument; include file name
4899 current->includeName = commentScanYYtext;
4904 /* rule 76 can match eol */
4906 #line 1366 "commentscan.l"
4907 { // line continuation
4913 /* rule 77 can match eol */
4915 #line 1370 "commentscan.l"
4917 if (*commentScanYYtext=='\n') yyLineNr++;
4923 #line 1374 "commentscan.l"
4924 { // ignore other stuff
4927 /* --------- handle arguments of {def,add,weak}group commands --------- */
4930 #line 1379 "commentscan.l"
4932 current->name = commentScanYYtext;
4933 //lastDefGroup.groupname = commentScanYYtext;
4934 //lastDefGroup.pri = current->groupingPri();
4935 // the .html stuff is for Qt compatibility
4936 if (current->name.right(5)==".html")
4938 current->name=current->name.left(current->name.length()-5);
4940 current->type.resize(0);
4941 BEGIN(GroupDocArg2);
4945 /* rule 80 can match eol */
4947 #line 1391 "commentscan.l"
4948 { // line continuation
4954 /* rule 81 can match eol */
4956 #line 1395 "commentscan.l"
4957 { // missing argument!
4958 warn(yyFileName,yyLineNr,
4959 "warning: missing group name after %s",
4960 current->groupDocCmd()
4963 if (*commentScanYYtext=='\n') yyLineNr++;
4968 /* rule 82 can match eol */
4970 #line 1404 "commentscan.l"
4971 { // line continuation
4978 #line 1408 "commentscan.l"
4979 { // title (stored in type)
4980 current->type += commentScanYYtext;
4981 current->type = current->type.stripWhiteSpace();
4985 /* rule 84 can match eol */
4987 #line 1412 "commentscan.l"
4989 if ( current->groupDocType==Entry::GROUPDOC_NORMAL &&
4990 current->type.isEmpty()
4991 ) // defgroup requires second argument
4993 warn(yyFileName,yyLineNr,
4994 "warning: missing title after "
4995 "\\defgroup %s", current->name.data()
4998 if (*commentScanYYtext=='\n') yyLineNr++;
5003 /* --------- handle arguments of page/mainpage command ------------------- */
5006 #line 1429 "commentscan.l"
5007 { // first argument; page name
5008 current->name = stripQuotes(commentScanYYtext);
5009 BEGIN( PageDocArg2 );
5013 /* rule 86 can match eol */
5015 #line 1433 "commentscan.l"
5021 /* rule 87 can match eol */
5023 #line 1436 "commentscan.l"
5025 warn(yyFileName,yyLineNr,
5026 "warning: missing argument after "
5029 if (*commentScanYYtext=='\n') yyLineNr++;
5036 #line 1445 "commentscan.l"
5037 { // ignore other stuff
5041 /* rule 89 can match eol */
5043 #line 1447 "commentscan.l"
5044 { // second argument; page title
5046 current->args = commentScanYYtext;
5051 /* --------- handle arguments of the file/dir/example command ------------ */
5053 /* rule 90 can match eol */
5055 #line 1456 "commentscan.l"
5056 { // no file name specfied
5057 if (*commentScanYYtext=='\n') yyLineNr++;
5064 #line 1461 "commentscan.l"
5065 { // first argument; name
5066 current->name = stripQuotes(commentScanYYtext);
5071 /* rule 92 can match eol */
5073 #line 1465 "commentscan.l"
5080 #line 1468 "commentscan.l"
5081 { // ignore other stuff
5084 /* --------- handle arguments of the xrefitem command ------------ */
5087 #line 1473 "commentscan.l"
5089 newXRefItemKey=commentScanYYtext;
5090 setOutput(OutputXRef);
5091 BEGIN(XRefItemParam2);
5095 /* rule 95 can match eol */
5097 #line 1478 "commentscan.l"
5098 { // line continuation
5104 /* rule 96 can match eol */
5106 #line 1482 "commentscan.l"
5107 { // missing arguments
5108 warn(yyFileName,yyLineNr,
5109 "warning: Missing first argument of \\xrefitem"
5111 if (*commentScanYYtext=='\n') yyLineNr++;
5113 inContext = OutputDoc;
5119 #line 1491 "commentscan.l"
5120 { // ignore other stuff
5125 #line 1494 "commentscan.l"
5126 { // second argument
5127 xrefItemTitle = stripQuotes(commentScanYYtext);
5128 BEGIN(XRefItemParam3);
5132 /* rule 99 can match eol */
5134 #line 1498 "commentscan.l"
5135 { // line continuation
5141 /* rule 100 can match eol */
5143 #line 1502 "commentscan.l"
5144 { // missing argument
5145 warn(yyFileName,yyLineNr,
5146 "warning: Missing second argument of \\xrefitem"
5148 if (*commentScanYYtext=='\n') yyLineNr++;
5150 inContext = OutputDoc;
5156 #line 1511 "commentscan.l"
5157 { // ignore other stuff
5162 #line 1514 "commentscan.l"
5164 xrefListTitle = stripQuotes(commentScanYYtext);
5165 xrefKind = XRef_Item;
5170 /* rule 103 can match eol */
5172 #line 1519 "commentscan.l"
5173 { // line continuation
5179 /* rule 104 can match eol */
5181 #line 1523 "commentscan.l"
5182 { // missing argument
5183 warn(yyFileName,yyLineNr,
5184 "warning: Missing third argument of \\xrefitem"
5186 if (*commentScanYYtext=='\n') yyLineNr++;
5188 inContext = OutputDoc;
5194 #line 1532 "commentscan.l"
5195 { // ignore other stuff
5198 /* ----- handle arguments of the relates(also)/memberof command ------- */
5201 #line 1538 "commentscan.l"
5203 current->relates = commentScanYYtext;
5204 //if (current->mGrpId!=DOX_NOGROUP)
5206 // memberGroupRelates = commentScanYYtext;
5212 /* rule 107 can match eol */
5214 #line 1546 "commentscan.l"
5215 { // line continuation
5221 /* rule 108 can match eol */
5223 #line 1550 "commentscan.l"
5224 { // missing argument
5225 warn(yyFileName,yyLineNr,
5226 "warning: Missing argument of \\relates or \\memberof command"
5228 if (*commentScanYYtext=='\n') yyLineNr++;
5235 #line 1558 "commentscan.l"
5236 { // ignore other stuff
5239 /* ----- handle arguments of the relates(also)/addindex commands ----- */
5241 /* rule 110 can match eol */
5243 #line 1564 "commentscan.l"
5244 { // end of argument
5245 if (*commentScanYYtext=='\n') yyLineNr++;
5251 /* rule 111 can match eol */
5253 #line 1569 "commentscan.l"
5254 { // line continuation
5261 #line 1573 "commentscan.l"
5262 { // ignore other stuff
5263 addOutput(*commentScanYYtext);
5266 /* ----- handle arguments of the section/subsection/.. commands ------- */
5269 #line 1579 "commentscan.l"
5271 g_sectionLabel=commentScanYYtext;
5272 addOutput(commentScanYYtext);
5273 g_sectionTitle.resize(0);
5274 BEGIN(SectionTitle);
5278 /* rule 114 can match eol */
5280 #line 1585 "commentscan.l"
5281 { // missing argument
5282 warn(yyFileName,yyLineNr,
5283 "warning: \\section command has no label"
5285 if (*commentScanYYtext=='\n') yyLineNr++;
5292 #line 1593 "commentscan.l"
5293 { // invalid character for section label
5294 warn(yyFileName,yyLineNr,
5295 "warning: Invalid or missing section label"
5301 /* rule 116 can match eol */
5302 *yy_cp = (yy_hold_char); /* undo effects of setting up commentScanYYtext */
5303 (yy_c_buf_p) = yy_cp -= 1;
5304 YY_DO_BEFORE_ACTION; /* set up commentScanYYtext again */
5306 #line 1599 "commentscan.l"
5307 { // end of section title
5309 addOutput(commentScanYYtext);
5314 *yy_cp = (yy_hold_char); /* undo effects of setting up commentScanYYtext */
5315 (yy_c_buf_p) = yy_cp -= 8;
5316 YY_DO_BEFORE_ACTION; /* set up commentScanYYtext again */
5318 #line 1604 "commentscan.l"
5319 { // end of section title
5321 addOutput(commentScanYYtext);
5326 /* rule 118 can match eol */
5328 #line 1609 "commentscan.l"
5329 { // line continuation
5336 #line 1613 "commentscan.l"
5337 { // any character without special meaning
5338 g_sectionTitle+=commentScanYYtext;
5339 addOutput(commentScanYYtext);
5344 #line 1617 "commentscan.l"
5345 { // unescape escaped command
5346 g_sectionTitle+=&commentScanYYtext[1];
5347 addOutput(commentScanYYtext);
5352 #line 1621 "commentscan.l"
5353 { // unescape escaped character
5354 g_sectionTitle+=commentScanYYtext[1];
5355 addOutput(commentScanYYtext);
5360 #line 1625 "commentscan.l"
5362 g_sectionTitle+=commentScanYYtext;
5363 addOutput(*commentScanYYtext);
5366 /* ----- handle arguments of the subpage command ------- */
5369 #line 1632 "commentscan.l"
5371 addOutput(commentScanYYtext);
5372 // we add subpage labels as a kind of "inheritance" relation to prevent
5373 // needing to add another list to the Entry class.
5374 current->extends->append(new BaseInfo(commentScanYYtext,Public,Normal));
5375 BEGIN(SubpageTitle);
5379 /* rule 124 can match eol */
5381 #line 1639 "commentscan.l"
5382 { // missing argument
5383 warn(yyFileName,yyLineNr,
5384 "warning: \\subpage command has no label"
5386 if (*commentScanYYtext=='\n') yyLineNr++;
5392 /* rule 125 can match eol */
5394 #line 1647 "commentscan.l"
5395 { // no title, end command
5396 addOutput(commentScanYYtext);
5402 #line 1651 "commentscan.l"
5403 { // add title, end of command
5404 addOutput(commentScanYYtext);
5410 #line 1655 "commentscan.l"
5411 { // no title, end of command
5412 unput(*commentScanYYtext);
5416 /* ----- handle arguments of the anchor command ------- */
5419 #line 1662 "commentscan.l"
5421 SectionInfo *si = new SectionInfo(yyFileName,commentScanYYtext,0,SectionInfo::Anchor,0);
5422 Doxygen::sectionDict.append(commentScanYYtext,si);
5423 current->anchors->append(si);
5424 addOutput(commentScanYYtext);
5429 /* rule 129 can match eol */
5431 #line 1669 "commentscan.l"
5432 { // missing argument
5433 warn(yyFileName,yyLineNr,
5434 "warning: \\anchor command has no label"
5436 if (*commentScanYYtext=='\n') yyLineNr++;
5443 #line 1677 "commentscan.l"
5444 { // invalid character for anchor label
5445 warn(yyFileName,yyLineNr,
5446 "warning: Invalid or missing anchor label"
5451 /* ----- handle arguments of the preformatted block commands ------- */
5453 /* rule 131 can match eol */
5454 *yy_cp = (yy_hold_char); /* undo effects of setting up commentScanYYtext */
5455 (yy_c_buf_p) = yy_cp -= 1;
5456 YY_DO_BEFORE_ACTION; /* set up commentScanYYtext again */
5458 #line 1687 "commentscan.l"
5460 addOutput(commentScanYYtext);
5461 if (&commentScanYYtext[4]==blockName) // found end of the block
5469 #line 1694 "commentscan.l"
5471 addOutput(commentScanYYtext);
5475 /* rule 133 can match eol */
5477 #line 1697 "commentscan.l"
5479 if (*commentScanYYtext=='\n') yyLineNr++;
5485 #line 1701 "commentscan.l"
5486 { // start of a C-comment
5488 addOutput(commentScanYYtext);
5493 #line 1705 "commentscan.l"
5494 { // end of a C-comment
5495 addOutput(commentScanYYtext);
5497 if (g_commentCount<0 && blockName!="verbatim")
5499 warn(yyFileName,yyLineNr,
5500 "warning: found */ without matching /* while inside a \\%s block! Perhaps a missing \\end%s?\n",blockName.data(),blockName.data());
5506 #line 1714 "commentscan.l"
5508 addOutput(*commentScanYYtext);
5511 case YY_STATE_EOF(FormatBlock):
5512 #line 1717 "commentscan.l"
5514 warn(yyFileName,yyLineNr,
5515 "warning: reached end of comment while inside a @%s block; check for missing @end%s tag!",
5516 blockName.data(),blockName.data()
5521 /* ----- handle arguments of if/ifnot commands ------- */
5524 #line 1727 "commentscan.l"
5525 { // parameter of if/ifnot guard
5526 bool sectionEnabled = Config_getList("ENABLED_SECTIONS").find(commentScanYYtext)!=-1;
5527 bool parentEnabled = TRUE;
5528 if (!guards.isEmpty()) parentEnabled = guards.top()->isEnabled();
5532 (sectionEnabled && guardType==Guard_If) ||
5533 (!sectionEnabled && guardType==Guard_IfNot)
5534 ) // section is visible
5536 guards.push(new GuardedSection(TRUE,TRUE));
5537 enabledSectionFound=TRUE;
5538 BEGIN( GuardParamEnd );
5540 else // section is invisible
5542 if (guardType!=Guard_Skip)
5544 guards.push(new GuardedSection(FALSE,TRUE));
5546 BEGIN( SkipGuardedSection );
5549 else // invisible because of parent
5551 guards.push(new GuardedSection(FALSE,FALSE));
5552 BEGIN( SkipGuardedSection );
5557 /* rule 138 can match eol */
5559 #line 1757 "commentscan.l"
5560 { // end of argument
5561 if (*commentScanYYtext=='\n') yyLineNr++;
5562 //next line is commented out due to bug620924
5568 /* rule 139 can match eol */
5570 #line 1763 "commentscan.l"
5571 { // line continuation
5578 #line 1767 "commentscan.l"
5579 { // ignore other stuff
5580 addOutput(*commentScanYYtext);
5584 /* rule 141 can match eol */
5586 #line 1770 "commentscan.l"
5588 g_spaceBeforeIf=FALSE;
5594 #line 1774 "commentscan.l"
5596 if (g_spaceBeforeIf) // needed for 665313 in combation with bug620924
5600 g_spaceBeforeIf=FALSE;
5606 #line 1782 "commentscan.l"
5608 unput(*commentScanYYtext);
5612 /* ----- handle skipping of conditional sections ------- */
5614 /* rule 144 can match eol */
5615 *yy_cp = (yy_hold_char); /* undo effects of setting up commentScanYYtext */
5616 (yy_c_buf_p) = yy_cp -= 1;
5617 YY_DO_BEFORE_ACTION; /* set up commentScanYYtext again */
5619 #line 1789 "commentscan.l"
5621 guardType = Guard_IfNot;
5622 BEGIN( GuardParam );
5626 /* rule 145 can match eol */
5627 *yy_cp = (yy_hold_char); /* undo effects of setting up commentScanYYtext */
5628 (yy_c_buf_p) = yy_cp -= 1;
5629 YY_DO_BEFORE_ACTION; /* set up commentScanYYtext again */
5631 #line 1793 "commentscan.l"
5633 guardType = Guard_If;
5634 BEGIN( GuardParam );
5638 /* rule 146 can match eol */
5639 *yy_cp = (yy_hold_char); /* undo effects of setting up commentScanYYtext */
5640 (yy_c_buf_p) = yy_cp -= 1;
5641 YY_DO_BEFORE_ACTION; /* set up commentScanYYtext again */
5643 #line 1797 "commentscan.l"
5645 if (guards.isEmpty())
5647 warn(yyFileName,yyLineNr,
5648 "warning: found @endif without matching start command");
5652 delete guards.pop();
5653 BEGIN( GuardParamEnd );
5658 /* rule 147 can match eol */
5659 *yy_cp = (yy_hold_char); /* undo effects of setting up commentScanYYtext */
5660 (yy_c_buf_p) = yy_cp -= 1;
5661 YY_DO_BEFORE_ACTION; /* set up commentScanYYtext again */
5663 #line 1809 "commentscan.l"
5665 if (guards.isEmpty())
5667 warn(yyFileName,yyLineNr,
5668 "warning: found @else without matching start command");
5672 if (!enabledSectionFound && guards.top()->parentVisible())
5674 delete guards.pop();
5675 guards.push(new GuardedSection(TRUE,TRUE));
5676 enabledSectionFound=TRUE;
5677 BEGIN( GuardParamEnd );
5683 /* rule 148 can match eol */
5684 *yy_cp = (yy_hold_char); /* undo effects of setting up commentScanYYtext */
5685 (yy_c_buf_p) = yy_cp -= 1;
5686 YY_DO_BEFORE_ACTION; /* set up commentScanYYtext again */
5688 #line 1826 "commentscan.l"
5690 if (guards.isEmpty())
5692 warn(yyFileName,yyLineNr,
5693 "warning: found @elseif without matching start command");
5697 if (!enabledSectionFound && guards.top()->parentVisible())
5699 delete guards.pop();
5700 BEGIN( GuardParam );
5706 /* rule 149 can match eol */
5708 #line 1841 "commentscan.l"
5710 if (*commentScanYYtext=='\n') yyLineNr++;
5716 #line 1845 "commentscan.l"
5717 { // skip non-special characters
5722 #line 1847 "commentscan.l"
5723 { // any other character
5726 /* ----- handle skipping of internal section ------- */
5728 /* rule 152 can match eol */
5730 #line 1853 "commentscan.l"
5732 if (*commentScanYYtext=='\n') yyLineNr++;
5737 *yy_cp = (yy_hold_char); /* undo effects of setting up commentScanYYtext */
5738 (yy_c_buf_p) = yy_cp = yy_bp + 3;
5739 YY_DO_BEFORE_ACTION; /* set up commentScanYYtext again */
5741 #line 1857 "commentscan.l"
5747 *yy_cp = (yy_hold_char); /* undo effects of setting up commentScanYYtext */
5748 (yy_c_buf_p) = yy_cp = yy_bp + 6;
5749 YY_DO_BEFORE_ACTION; /* set up commentScanYYtext again */
5751 #line 1860 "commentscan.l"
5757 *yy_cp = (yy_hold_char); /* undo effects of setting up commentScanYYtext */
5758 (yy_c_buf_p) = yy_cp = yy_bp + 1;
5759 YY_DO_BEFORE_ACTION; /* set up commentScanYYtext again */
5761 #line 1863 "commentscan.l"
5764 if (g_condCount<0) // handle conditional section around of \internal, see bug607743
5772 *yy_cp = (yy_hold_char); /* undo effects of setting up commentScanYYtext */
5773 (yy_c_buf_p) = yy_cp = yy_bp + 1;
5774 YY_DO_BEFORE_ACTION; /* set up commentScanYYtext again */
5776 #line 1871 "commentscan.l"
5778 if (g_sectionLevel>0)
5786 *yy_cp = (yy_hold_char); /* undo effects of setting up commentScanYYtext */
5787 (yy_c_buf_p) = yy_cp = yy_bp + 1;
5788 YY_DO_BEFORE_ACTION; /* set up commentScanYYtext again */
5790 #line 1878 "commentscan.l"
5792 if (g_sectionLevel>1)
5800 *yy_cp = (yy_hold_char); /* undo effects of setting up commentScanYYtext */
5801 (yy_c_buf_p) = yy_cp = yy_bp + 1;
5802 YY_DO_BEFORE_ACTION; /* set up commentScanYYtext again */
5804 #line 1885 "commentscan.l"
5806 if (g_sectionLevel>2)
5814 *yy_cp = (yy_hold_char); /* undo effects of setting up commentScanYYtext */
5815 (yy_c_buf_p) = yy_cp = yy_bp + 1;
5816 YY_DO_BEFORE_ACTION; /* set up commentScanYYtext again */
5818 #line 1892 "commentscan.l"
5820 if (g_sectionLevel>3)
5829 #line 1899 "commentscan.l"
5836 #line 1902 "commentscan.l"
5837 { // skip non-special characters
5842 #line 1904 "commentscan.l"
5843 { // any other character
5846 /* ----- handle argument of name command ------- */
5848 /* rule 163 can match eol */
5850 #line 1910 "commentscan.l"
5851 { // end of argument
5852 if (*commentScanYYtext=='\n') yyLineNr++;
5858 /* rule 164 can match eol */
5860 #line 1915 "commentscan.l"
5861 { // line continuation
5864 g_memberGroupHeader+=' ';
5869 #line 1920 "commentscan.l"
5870 { // ignore other stuff
5871 g_memberGroupHeader+=*commentScanYYtext;
5872 current->name+=*commentScanYYtext;
5875 /* ----- handle argument of ingroup command ------- */
5878 #line 1927 "commentscan.l"
5880 current->groups->append(
5881 new Grouping(commentScanYYtext, Grouping::GROUPING_INGROUP)
5883 inGroupParamFound=TRUE;
5887 /* rule 167 can match eol */
5889 #line 1933 "commentscan.l"
5890 { // missing argument
5891 if (!inGroupParamFound)
5893 warn(yyFileName,yyLineNr,
5894 "warning: Missing group name for \\ingroup command"
5897 if (*commentScanYYtext=='\n') yyLineNr++;
5903 /* rule 168 can match eol */
5905 #line 1944 "commentscan.l"
5906 { // line continuation
5913 #line 1948 "commentscan.l"
5914 { // ignore other stuff
5915 addOutput(*commentScanYYtext);
5918 /* ----- handle argument of fn command ------- */
5920 /* rule 170 can match eol */
5922 #line 1954 "commentscan.l"
5923 { // end of argument
5926 if (*commentScanYYtext=='\n') yyLineNr++;
5928 langParser->parsePrototype(functionProto);
5934 /* rule 171 can match eol */
5936 #line 1963 "commentscan.l"
5937 { // line continuation
5944 #line 1967 "commentscan.l"
5945 { // non-special characters
5946 functionProto+=commentScanYYtext;
5951 #line 1970 "commentscan.l"
5953 functionProto+=commentScanYYtext;
5959 #line 1974 "commentscan.l"
5961 functionProto+=commentScanYYtext;
5967 #line 1978 "commentscan.l"
5968 { // add other stuff
5969 functionProto+=*commentScanYYtext;
5972 /* ----- handle argument of overload command ------- */
5974 /* rule 176 can match eol */
5976 #line 1986 "commentscan.l"
5977 { // end of argument
5978 if (*commentScanYYtext=='\n') yyLineNr++;
5980 if (functionProto.stripWhiteSpace().isEmpty())
5981 { // plain overload command
5982 addOutput(getOverloadDocs());
5984 else // overload declaration
5986 makeStructuralIndicator(Entry::OVERLOADDOC_SEC);
5987 langParser->parsePrototype(functionProto);
5993 /* rule 177 can match eol */
5995 #line 2000 "commentscan.l"
5996 { // line continuation
6003 #line 2004 "commentscan.l"
6004 { // add other stuff
6005 functionProto+=*commentScanYYtext;
6008 /* ----- handle argument of inherit command ------- */
6011 #line 2010 "commentscan.l"
6013 current->extends->append(
6014 new BaseInfo(removeRedundantWhiteSpace(commentScanYYtext),Public,Normal)
6020 /* rule 180 can match eol */
6022 #line 2016 "commentscan.l"
6023 { // missing argument
6024 warn(yyFileName,yyLineNr,
6025 "warning: \\inherit command has no argument"
6027 if (*commentScanYYtext=='\n') yyLineNr++;
6034 #line 2024 "commentscan.l"
6035 { // invalid character for anchor label
6036 warn(yyFileName,yyLineNr,
6037 "warning: Invalid or missing name for \\inherit command"
6042 /* ----- handle argument of extends and implements commands ------- */
6045 #line 2033 "commentscan.l"
6047 current->extends->append(
6048 new BaseInfo(removeRedundantWhiteSpace(commentScanYYtext),Public,Normal)
6054 /* rule 183 can match eol */
6056 #line 2039 "commentscan.l"
6057 { // missing argument
6058 warn(yyFileName,yyLineNr,
6059 "warning: \\extends or \\implements command has no argument"
6061 if (*commentScanYYtext=='\n') yyLineNr++;
6068 #line 2047 "commentscan.l"
6069 { // ignore other stuff
6072 /* ----- handle language specific sections ------- */
6075 #line 2052 "commentscan.l"
6076 { /* language switch */
6077 QCString langId = &commentScanYYtext[2];
6078 if (langId.isEmpty() ||
6079 stricmp(Config_getEnum("OUTPUT_LANGUAGE"),langId)==0)
6080 { // enable language specific section
6087 #line 2060 "commentscan.l"
6088 { /* any character not a *, @, backslash or new line */
6092 /* rule 187 can match eol */
6094 #line 2062 "commentscan.l"
6095 { /* new line in verbatim block */
6096 if (*commentScanYYtext=='\n') yyLineNr++;
6101 #line 2065 "commentscan.l"
6102 { /* any other character */
6105 /* ----- handle arguments of the cite command ------- */
6108 #line 2070 "commentscan.l"
6111 addOutput(commentScanYYtext);
6116 /* rule 190 can match eol */
6118 #line 2075 "commentscan.l"
6119 { // missing argument
6120 warn(yyFileName,yyLineNr,
6121 "warning: \\cite command has no label"
6123 if (*commentScanYYtext=='\n') yyLineNr++;
6130 #line 2083 "commentscan.l"
6131 { // invalid character for cite label
6132 warn(yyFileName,yyLineNr,
6133 "warning: Invalid or missing cite label"
6138 /* ----- handle argument of the copydoc command ------- */
6139 case YY_STATE_EOF(CopyDoc):
6140 #line 2092 "commentscan.l"
6142 /* rule 192 can match eol */
6144 #line 2093 "commentscan.l"
6146 if (*commentScanYYtext=='\n') yyLineNr++;
6148 setOutput(OutputDoc);
6149 addOutput("\\copydetails ");
6150 addOutput(g_copyDocArg);
6157 #line 2102 "commentscan.l"
6159 g_copyDocArg+=commentScanYYtext;
6160 addOutput(commentScanYYtext);
6165 #line 2106 "commentscan.l"
6167 g_copyDocArg+=commentScanYYtext;
6168 addOutput(commentScanYYtext);
6173 #line 2112 "commentscan.l"
6176 #line 6177 "<stdout>"
6177 case YY_STATE_EOF(INITIAL):
6178 case YY_STATE_EOF(Comment):
6179 case YY_STATE_EOF(PageDocArg1):
6180 case YY_STATE_EOF(PageDocArg2):
6181 case YY_STATE_EOF(RelatesParam1):
6182 case YY_STATE_EOF(ClassDocArg1):
6183 case YY_STATE_EOF(ClassDocArg2):
6184 case YY_STATE_EOF(ClassDocArg3):
6185 case YY_STATE_EOF(CategoryDocArg1):
6186 case YY_STATE_EOF(XRefItemParam1):
6187 case YY_STATE_EOF(XRefItemParam2):
6188 case YY_STATE_EOF(XRefItemParam3):
6189 case YY_STATE_EOF(FileDocArg1):
6190 case YY_STATE_EOF(EnumDocArg1):
6191 case YY_STATE_EOF(NameSpaceDocArg1):
6192 case YY_STATE_EOF(PackageDocArg1):
6193 case YY_STATE_EOF(GroupDocArg1):
6194 case YY_STATE_EOF(GroupDocArg2):
6195 case YY_STATE_EOF(SectionLabel):
6196 case YY_STATE_EOF(SectionTitle):
6197 case YY_STATE_EOF(SubpageLabel):
6198 case YY_STATE_EOF(SubpageTitle):
6199 case YY_STATE_EOF(LineParam):
6200 case YY_STATE_EOF(GuardParam):
6201 case YY_STATE_EOF(GuardParamEnd):
6202 case YY_STATE_EOF(SkipGuardedSection):
6203 case YY_STATE_EOF(SkipInternal):
6204 case YY_STATE_EOF(NameParam):
6205 case YY_STATE_EOF(InGroupParam):
6206 case YY_STATE_EOF(FnParam):
6207 case YY_STATE_EOF(OverloadParam):
6208 case YY_STATE_EOF(InheritParam):
6209 case YY_STATE_EOF(ExtendsParam):
6210 case YY_STATE_EOF(ReadFormulaShort):
6211 case YY_STATE_EOF(ReadFormulaLong):
6212 case YY_STATE_EOF(AnchorLabel):
6213 case YY_STATE_EOF(HtmlComment):
6214 case YY_STATE_EOF(SkipLang):
6215 case YY_STATE_EOF(CiteLabel):
6218 case YY_END_OF_BUFFER:
6220 /* Amount of text matched not including the EOB char. */
6221 int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
6223 /* Undo the effects of YY_DO_BEFORE_ACTION. */
6224 *yy_cp = (yy_hold_char);
6225 YY_RESTORE_YY_MORE_OFFSET
6227 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
6229 /* We're scanning a new file or input source. It's
6230 * possible that this happened because the user
6231 * just pointed commentScanYYin at a new source and called
6232 * commentScanYYlex(). If so, then we have to assure
6233 * consistency between YY_CURRENT_BUFFER and our
6234 * globals. Here is the right place to do so, because
6235 * this is the first action (other than possibly a
6236 * back-up) that will match for the new input source.
6238 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
6239 YY_CURRENT_BUFFER_LVALUE->yy_input_file = commentScanYYin;
6240 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
6243 /* Note that here we test for yy_c_buf_p "<=" to the position
6244 * of the first EOB in the buffer, since yy_c_buf_p will
6245 * already have been incremented past the NUL character
6246 * (since all states make transitions on EOB to the
6247 * end-of-buffer state). Contrast this with the test
6250 if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
6251 { /* This was really a NUL. */
6252 yy_state_type yy_next_state;
6254 (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
6256 yy_current_state = yy_get_previous_state( );
6258 /* Okay, we're now positioned to make the NUL
6259 * transition. We couldn't have
6260 * yy_get_previous_state() go ahead and do it
6261 * for us because it doesn't know how to deal
6262 * with the possibility of jamming (and we don't
6263 * want to build jamming into it because then it
6264 * will run more slowly).
6267 yy_next_state = yy_try_NUL_trans( yy_current_state );
6269 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
6271 if ( yy_next_state )
6273 /* Consume the NUL. */
6274 yy_cp = ++(yy_c_buf_p);
6275 yy_current_state = yy_next_state;
6281 yy_cp = (yy_c_buf_p);
6282 goto yy_find_action;
6286 else switch ( yy_get_next_buffer( ) )
6288 case EOB_ACT_END_OF_FILE:
6290 (yy_did_buffer_switch_on_eof) = 0;
6292 if ( commentScanYYwrap( ) )
6294 /* Note: because we've taken care in
6295 * yy_get_next_buffer() to have set up
6296 * commentScanYYtext, we can now set up
6297 * yy_c_buf_p so that if some total
6298 * hoser (like flex itself) wants to
6299 * call the scanner after we return the
6300 * YY_NULL, it'll still work - another
6301 * YY_NULL will get returned.
6303 (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
6305 yy_act = YY_STATE_EOF(YY_START);
6311 if ( ! (yy_did_buffer_switch_on_eof) )
6317 case EOB_ACT_CONTINUE_SCAN:
6319 (yytext_ptr) + yy_amount_of_matched_text;
6321 yy_current_state = yy_get_previous_state( );
6323 yy_cp = (yy_c_buf_p);
6324 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
6327 case EOB_ACT_LAST_MATCH:
6329 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
6331 yy_current_state = yy_get_previous_state( );
6333 yy_cp = (yy_c_buf_p);
6334 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
6335 goto yy_find_action;
6342 "fatal flex scanner internal error--no action found" );
6343 } /* end of action switch */
6344 } /* end of scanning one token */
6345 } /* end of commentScanYYlex */
6347 /* yy_get_next_buffer - try to read in a new buffer
6349 * Returns a code representing an action:
6350 * EOB_ACT_LAST_MATCH -
6351 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
6352 * EOB_ACT_END_OF_FILE - end of file
6354 static int yy_get_next_buffer (void)
6356 register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
6357 register char *source = (yytext_ptr);
6358 register int number_to_move, i;
6361 if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
6363 "fatal flex scanner internal error--end of buffer missed" );
6365 if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
6366 { /* Don't try to fill the buffer, so this is an EOF. */
6367 if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
6369 /* We matched a single character, the EOB, so
6370 * treat this as a final EOF.
6372 return EOB_ACT_END_OF_FILE;
6377 /* We matched some text prior to the EOB, first
6380 return EOB_ACT_LAST_MATCH;
6384 /* Try to read more data. */
6386 /* First move last chars to start of buffer. */
6387 number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
6389 for ( i = 0; i < number_to_move; ++i )
6390 *(dest++) = *(source++);
6392 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
6393 /* don't do the read, it's not guaranteed to return an EOF,
6396 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
6400 yy_size_t num_to_read =
6401 YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
6403 while ( num_to_read <= 0 )
6404 { /* Not enough room in the buffer - grow it. */
6407 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
6411 if ( num_to_read > YY_READ_BUF_SIZE )
6412 num_to_read = YY_READ_BUF_SIZE;
6414 /* Read in more data. */
6415 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
6416 (yy_n_chars), num_to_read );
6418 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
6421 if ( (yy_n_chars) == 0 )
6423 if ( number_to_move == YY_MORE_ADJ )
6425 ret_val = EOB_ACT_END_OF_FILE;
6426 commentScanYYrestart(commentScanYYin );
6431 ret_val = EOB_ACT_LAST_MATCH;
6432 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
6433 YY_BUFFER_EOF_PENDING;
6438 ret_val = EOB_ACT_CONTINUE_SCAN;
6440 if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
6441 /* Extend the array by 50%, plus the number we really need. */
6442 yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
6443 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) commentScanYYrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size );
6444 if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
6445 YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
6448 (yy_n_chars) += number_to_move;
6449 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
6450 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
6452 (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
6457 /* yy_get_previous_state - get the state just before the EOB char was reached */
6459 static yy_state_type yy_get_previous_state (void)
6461 register yy_state_type yy_current_state;
6462 register char *yy_cp;
6464 yy_current_state = (yy_start);
6465 yy_current_state += YY_AT_BOL();
6467 (yy_state_ptr) = (yy_state_buf);
6468 *(yy_state_ptr)++ = yy_current_state;
6470 for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
6472 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
6473 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
6475 yy_current_state = (int) yy_def[yy_current_state];
6476 if ( yy_current_state >= 1137 )
6477 yy_c = yy_meta[(unsigned int) yy_c];
6479 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
6480 *(yy_state_ptr)++ = yy_current_state;
6483 return yy_current_state;
6486 /* yy_try_NUL_trans - try to make a transition on the NUL character
6489 * next_state = yy_try_NUL_trans( current_state );
6491 static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state )
6493 register int yy_is_jam;
6495 register YY_CHAR yy_c = 1;
6496 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
6498 yy_current_state = (int) yy_def[yy_current_state];
6499 if ( yy_current_state >= 1137 )
6500 yy_c = yy_meta[(unsigned int) yy_c];
6502 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
6503 yy_is_jam = (yy_current_state == 1136);
6505 *(yy_state_ptr)++ = yy_current_state;
6507 return yy_is_jam ? 0 : yy_current_state;
6510 static void yyunput (int c, register char * yy_bp )
6512 register char *yy_cp;
6514 yy_cp = (yy_c_buf_p);
6516 /* undo effects of setting up commentScanYYtext */
6517 *yy_cp = (yy_hold_char);
6519 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
6520 { /* need to shift things up to make room */
6521 /* +2 for EOB chars. */
6522 register yy_size_t number_to_move = (yy_n_chars) + 2;
6523 register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
6524 YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
6525 register char *source =
6526 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
6528 while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
6529 *--dest = *--source;
6531 yy_cp += (int) (dest - source);
6532 yy_bp += (int) (dest - source);
6533 YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
6534 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
6536 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
6537 YY_FATAL_ERROR( "flex scanner push-back overflow" );
6540 *--yy_cp = (char) c;
6542 (yytext_ptr) = yy_bp;
6543 (yy_hold_char) = *yy_cp;
6544 (yy_c_buf_p) = yy_cp;
6549 static int yyinput (void)
6551 static int input (void)
6557 *(yy_c_buf_p) = (yy_hold_char);
6559 if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
6561 /* yy_c_buf_p now points to the character we want to return.
6562 * If this occurs *before* the EOB characters, then it's a
6563 * valid NUL; if not, then we've hit the end of the buffer.
6565 if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
6566 /* This was really a NUL. */
6567 *(yy_c_buf_p) = '\0';
6570 { /* need more input */
6571 yy_size_t offset = (yy_c_buf_p) - (yytext_ptr);
6574 switch ( yy_get_next_buffer( ) )
6576 case EOB_ACT_LAST_MATCH:
6577 /* This happens because yy_g_n_b()
6578 * sees that we've accumulated a
6579 * token and flags that we need to
6580 * try matching the token before
6581 * proceeding. But for input(),
6582 * there's no matching to consider.
6583 * So convert the EOB_ACT_LAST_MATCH
6584 * to EOB_ACT_END_OF_FILE.
6587 /* Reset buffer status. */
6588 commentScanYYrestart(commentScanYYin );
6592 case EOB_ACT_END_OF_FILE:
6594 if ( commentScanYYwrap( ) )
6597 if ( ! (yy_did_buffer_switch_on_eof) )
6606 case EOB_ACT_CONTINUE_SCAN:
6607 (yy_c_buf_p) = (yytext_ptr) + offset;
6613 c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */
6614 *(yy_c_buf_p) = '\0'; /* preserve commentScanYYtext */
6615 (yy_hold_char) = *++(yy_c_buf_p);
6617 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n');
6621 #endif /* ifndef YY_NO_INPUT */
6623 /** Immediately switch to a different input stream.
6624 * @param input_file A readable stream.
6626 * @note This function does not reset the start condition to @c INITIAL .
6628 void commentScanYYrestart (FILE * input_file )
6631 if ( ! YY_CURRENT_BUFFER ){
6632 commentScanYYensure_buffer_stack ();
6633 YY_CURRENT_BUFFER_LVALUE =
6634 commentScanYY_create_buffer(commentScanYYin,YY_BUF_SIZE );
6637 commentScanYY_init_buffer(YY_CURRENT_BUFFER,input_file );
6638 commentScanYY_load_buffer_state( );
6641 /** Switch to a different input buffer.
6642 * @param new_buffer The new input buffer.
6645 void commentScanYY_switch_to_buffer (YY_BUFFER_STATE new_buffer )
6648 /* TODO. We should be able to replace this entire function body
6650 * commentScanYYpop_buffer_state();
6651 * commentScanYYpush_buffer_state(new_buffer);
6653 commentScanYYensure_buffer_stack ();
6654 if ( YY_CURRENT_BUFFER == new_buffer )
6657 if ( YY_CURRENT_BUFFER )
6659 /* Flush out information for old buffer. */
6660 *(yy_c_buf_p) = (yy_hold_char);
6661 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
6662 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
6665 YY_CURRENT_BUFFER_LVALUE = new_buffer;
6666 commentScanYY_load_buffer_state( );
6668 /* We don't actually know whether we did this switch during
6669 * EOF (commentScanYYwrap()) processing, but the only time this flag
6670 * is looked at is after commentScanYYwrap() is called, so it's safe
6671 * to go ahead and always set it.
6673 (yy_did_buffer_switch_on_eof) = 1;
6676 static void commentScanYY_load_buffer_state (void)
6678 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
6679 (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
6680 commentScanYYin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
6681 (yy_hold_char) = *(yy_c_buf_p);
6684 /** Allocate and initialize an input buffer state.
6685 * @param file A readable stream.
6686 * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
6688 * @return the allocated buffer state.
6690 YY_BUFFER_STATE commentScanYY_create_buffer (FILE * file, int size )
6694 b = (YY_BUFFER_STATE) commentScanYYalloc(sizeof( struct yy_buffer_state ) );
6696 YY_FATAL_ERROR( "out of dynamic memory in commentScanYY_create_buffer()" );
6698 b->yy_buf_size = size;
6700 /* yy_ch_buf has to be 2 characters longer than the size given because
6701 * we need to put in 2 end-of-buffer characters.
6703 b->yy_ch_buf = (char *) commentScanYYalloc(b->yy_buf_size + 2 );
6704 if ( ! b->yy_ch_buf )
6705 YY_FATAL_ERROR( "out of dynamic memory in commentScanYY_create_buffer()" );
6707 b->yy_is_our_buffer = 1;
6709 commentScanYY_init_buffer(b,file );
6714 /** Destroy the buffer.
6715 * @param b a buffer created with commentScanYY_create_buffer()
6718 void commentScanYY_delete_buffer (YY_BUFFER_STATE b )
6724 if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
6725 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
6727 if ( b->yy_is_our_buffer )
6728 commentScanYYfree((void *) b->yy_ch_buf );
6730 commentScanYYfree((void *) b );
6734 extern int isatty (int );
6735 #endif /* __cplusplus */
6737 /* Initializes or reinitializes a buffer.
6738 * This function is sometimes called more than once on the same buffer,
6739 * such as during a commentScanYYrestart() or at EOF.
6741 static void commentScanYY_init_buffer (YY_BUFFER_STATE b, FILE * file )
6746 commentScanYY_flush_buffer(b );
6748 b->yy_input_file = file;
6749 b->yy_fill_buffer = 1;
6751 /* If b is the current buffer, then commentScanYY_init_buffer was _probably_
6752 * called from commentScanYYrestart() or through yy_get_next_buffer.
6753 * In that case, we don't want to reset the lineno or column.
6755 if (b != YY_CURRENT_BUFFER){
6756 b->yy_bs_lineno = 1;
6757 b->yy_bs_column = 0;
6760 b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
6765 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
6766 * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
6769 void commentScanYY_flush_buffer (YY_BUFFER_STATE b )
6776 /* We always need two end-of-buffer characters. The first causes
6777 * a transition to the end-of-buffer state. The second causes
6778 * a jam in that state.
6780 b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
6781 b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
6783 b->yy_buf_pos = &b->yy_ch_buf[0];
6786 b->yy_buffer_status = YY_BUFFER_NEW;
6788 if ( b == YY_CURRENT_BUFFER )
6789 commentScanYY_load_buffer_state( );
6792 /** Pushes the new state onto the stack. The new state becomes
6793 * the current state. This function will allocate the stack
6795 * @param new_buffer The new state.
6798 void commentScanYYpush_buffer_state (YY_BUFFER_STATE new_buffer )
6800 if (new_buffer == NULL)
6803 commentScanYYensure_buffer_stack();
6805 /* This block is copied from commentScanYY_switch_to_buffer. */
6806 if ( YY_CURRENT_BUFFER )
6808 /* Flush out information for old buffer. */
6809 *(yy_c_buf_p) = (yy_hold_char);
6810 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
6811 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
6814 /* Only push if top exists. Otherwise, replace top. */
6815 if (YY_CURRENT_BUFFER)
6816 (yy_buffer_stack_top)++;
6817 YY_CURRENT_BUFFER_LVALUE = new_buffer;
6819 /* copied from commentScanYY_switch_to_buffer. */
6820 commentScanYY_load_buffer_state( );
6821 (yy_did_buffer_switch_on_eof) = 1;
6824 /** Removes and deletes the top of the stack, if present.
6825 * The next element becomes the new top.
6828 void commentScanYYpop_buffer_state (void)
6830 if (!YY_CURRENT_BUFFER)
6833 commentScanYY_delete_buffer(YY_CURRENT_BUFFER );
6834 YY_CURRENT_BUFFER_LVALUE = NULL;
6835 if ((yy_buffer_stack_top) > 0)
6836 --(yy_buffer_stack_top);
6838 if (YY_CURRENT_BUFFER) {
6839 commentScanYY_load_buffer_state( );
6840 (yy_did_buffer_switch_on_eof) = 1;
6844 /* Allocates the stack if it does not exist.
6845 * Guarantees space for at least one push.
6847 static void commentScanYYensure_buffer_stack (void)
6849 yy_size_t num_to_alloc;
6851 if (!(yy_buffer_stack)) {
6853 /* First allocation is just for 2 elements, since we don't know if this
6854 * scanner will even need a stack. We use 2 instead of 1 to avoid an
6855 * immediate realloc on the next call.
6858 (yy_buffer_stack) = (struct yy_buffer_state**)commentScanYYalloc
6859 (num_to_alloc * sizeof(struct yy_buffer_state*)
6861 if ( ! (yy_buffer_stack) )
6862 YY_FATAL_ERROR( "out of dynamic memory in commentScanYYensure_buffer_stack()" );
6864 memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
6866 (yy_buffer_stack_max) = num_to_alloc;
6867 (yy_buffer_stack_top) = 0;
6871 if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
6873 /* Increase the buffer to prepare for a possible push. */
6874 int grow_size = 8 /* arbitrary grow size */;
6876 num_to_alloc = (yy_buffer_stack_max) + grow_size;
6877 (yy_buffer_stack) = (struct yy_buffer_state**)commentScanYYrealloc
6879 num_to_alloc * sizeof(struct yy_buffer_state*)
6881 if ( ! (yy_buffer_stack) )
6882 YY_FATAL_ERROR( "out of dynamic memory in commentScanYYensure_buffer_stack()" );
6884 /* zero only the new slots.*/
6885 memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
6886 (yy_buffer_stack_max) = num_to_alloc;
6890 /** Setup the input buffer state to scan directly from a user-specified character buffer.
6891 * @param base the character buffer
6892 * @param size the size in bytes of the character buffer
6894 * @return the newly allocated buffer state object.
6896 YY_BUFFER_STATE commentScanYY_scan_buffer (char * base, yy_size_t size )
6901 base[size-2] != YY_END_OF_BUFFER_CHAR ||
6902 base[size-1] != YY_END_OF_BUFFER_CHAR )
6903 /* They forgot to leave room for the EOB's. */
6906 b = (YY_BUFFER_STATE) commentScanYYalloc(sizeof( struct yy_buffer_state ) );
6908 YY_FATAL_ERROR( "out of dynamic memory in commentScanYY_scan_buffer()" );
6910 b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
6911 b->yy_buf_pos = b->yy_ch_buf = base;
6912 b->yy_is_our_buffer = 0;
6913 b->yy_input_file = 0;
6914 b->yy_n_chars = b->yy_buf_size;
6915 b->yy_is_interactive = 0;
6917 b->yy_fill_buffer = 0;
6918 b->yy_buffer_status = YY_BUFFER_NEW;
6920 commentScanYY_switch_to_buffer(b );
6925 /** Setup the input buffer state to scan a string. The next call to commentScanYYlex() will
6926 * scan from a @e copy of @a str.
6927 * @param yystr a NUL-terminated string to scan
6929 * @return the newly allocated buffer state object.
6930 * @note If you want to scan bytes that may contain NUL values, then use
6931 * commentScanYY_scan_bytes() instead.
6933 YY_BUFFER_STATE commentScanYY_scan_string (yyconst char * yystr )
6936 return commentScanYY_scan_bytes(yystr,strlen(yystr) );
6939 /** Setup the input buffer state to scan the given bytes. The next call to commentScanYYlex() will
6940 * scan from a @e copy of @a bytes.
6941 * @param bytes the byte buffer to scan
6942 * @param len the number of bytes in the buffer pointed to by @a bytes.
6944 * @return the newly allocated buffer state object.
6946 YY_BUFFER_STATE commentScanYY_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len )
6952 /* Get memory for full buffer, including space for trailing EOB's. */
6953 n = _yybytes_len + 2;
6954 buf = (char *) commentScanYYalloc(n );
6956 YY_FATAL_ERROR( "out of dynamic memory in commentScanYY_scan_bytes()" );
6958 for ( i = 0; i < _yybytes_len; ++i )
6959 buf[i] = yybytes[i];
6961 buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
6963 b = commentScanYY_scan_buffer(buf,n );
6965 YY_FATAL_ERROR( "bad buffer in commentScanYY_scan_bytes()" );
6967 /* It's okay to grow etc. this buffer, and we should throw it
6968 * away when we're done.
6970 b->yy_is_our_buffer = 1;
6975 #ifndef YY_EXIT_FAILURE
6976 #define YY_EXIT_FAILURE 2
6979 static void yy_fatal_error (yyconst char* msg )
6981 (void) fprintf( stderr, "%s\n", msg );
6982 exit( YY_EXIT_FAILURE );
6985 /* Redefine yyless() so it works in section 3 code. */
6991 /* Undo effects of setting up commentScanYYtext. */ \
6992 int yyless_macro_arg = (n); \
6993 YY_LESS_LINENO(yyless_macro_arg);\
6994 commentScanYYtext[commentScanYYleng] = (yy_hold_char); \
6995 (yy_c_buf_p) = commentScanYYtext + yyless_macro_arg; \
6996 (yy_hold_char) = *(yy_c_buf_p); \
6997 *(yy_c_buf_p) = '\0'; \
6998 commentScanYYleng = yyless_macro_arg; \
7002 /* Accessor methods (get/set functions) to struct members. */
7004 /** Get the current line number.
7007 int commentScanYYget_lineno (void)
7010 return commentScanYYlineno;
7013 /** Get the input stream.
7016 FILE *commentScanYYget_in (void)
7018 return commentScanYYin;
7021 /** Get the output stream.
7024 FILE *commentScanYYget_out (void)
7026 return commentScanYYout;
7029 /** Get the length of the current token.
7032 yy_size_t commentScanYYget_leng (void)
7034 return commentScanYYleng;
7037 /** Get the current token.
7041 char *commentScanYYget_text (void)
7043 return commentScanYYtext;
7046 /** Set the current line number.
7047 * @param line_number
7050 void commentScanYYset_lineno (int line_number )
7053 commentScanYYlineno = line_number;
7056 /** Set the input stream. This does not discard the current
7058 * @param in_str A readable stream.
7060 * @see commentScanYY_switch_to_buffer
7062 void commentScanYYset_in (FILE * in_str )
7064 commentScanYYin = in_str ;
7067 void commentScanYYset_out (FILE * out_str )
7069 commentScanYYout = out_str ;
7072 int commentScanYYget_debug (void)
7074 return commentScanYY_flex_debug;
7077 void commentScanYYset_debug (int bdebug )
7079 commentScanYY_flex_debug = bdebug ;
7082 static int yy_init_globals (void)
7084 /* Initialization is the same as for the non-reentrant scanner.
7085 * This function is called from commentScanYYlex_destroy(), so don't allocate here.
7088 (yy_buffer_stack) = 0;
7089 (yy_buffer_stack_top) = 0;
7090 (yy_buffer_stack_max) = 0;
7091 (yy_c_buf_p) = (char *) 0;
7097 (yy_full_match) = 0;
7100 /* Defined in main.c */
7102 commentScanYYin = stdin;
7103 commentScanYYout = stdout;
7105 commentScanYYin = (FILE *) 0;
7106 commentScanYYout = (FILE *) 0;
7109 /* For future reference: Set errno on error, since we are called by
7110 * commentScanYYlex_init()
7115 /* commentScanYYlex_destroy is for both reentrant and non-reentrant scanners. */
7116 int commentScanYYlex_destroy (void)
7119 /* Pop the buffer stack, destroying each element. */
7120 while(YY_CURRENT_BUFFER){
7121 commentScanYY_delete_buffer(YY_CURRENT_BUFFER );
7122 YY_CURRENT_BUFFER_LVALUE = NULL;
7123 commentScanYYpop_buffer_state();
7126 /* Destroy the stack itself. */
7127 commentScanYYfree((yy_buffer_stack) );
7128 (yy_buffer_stack) = NULL;
7130 commentScanYYfree ( (yy_state_buf) );
7131 (yy_state_buf) = NULL;
7133 /* Reset the globals. This is important in a non-reentrant scanner so the next time
7134 * commentScanYYlex() is called, initialization will occur. */
7141 * Internal utility routines.
7145 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
7148 for ( i = 0; i < n; ++i )
7153 #ifdef YY_NEED_STRLEN
7154 static int yy_flex_strlen (yyconst char * s )
7157 for ( n = 0; s[n]; ++n )
7164 void *commentScanYYalloc (yy_size_t size )
7166 return (void *) malloc( size );
7169 void *commentScanYYrealloc (void * ptr, yy_size_t size )
7171 /* The cast to (char *) in the following accommodates both
7172 * implementations that use char* generic pointers, and those
7173 * that use void* generic pointers. It works with the latter
7174 * because both ANSI C and C++ allow castless assignment from
7175 * any pointer type to void*, and deal with argument conversions
7176 * as though doing an assignment.
7178 return (void *) realloc( (char *) ptr, size );
7181 void commentScanYYfree (void * ptr )
7183 free( (char *) ptr ); /* see commentScanYYrealloc() for (char *) cast */
7186 #define YYTABLES_NAME "yytables"
7188 #line 2112 "commentscan.l"
7192 //----------------------------------------------------------------------------
7194 static bool handleBrief(const QCString &)
7196 //printf("handleBrief\n");
7197 setOutput(OutputBrief);
7201 static bool handleFn(const QCString &)
7203 bool stop=makeStructuralIndicator(Entry::MEMBERDOC_SEC);
7204 functionProto.resize(0);
7210 static bool handleDef(const QCString &)
7212 bool stop=makeStructuralIndicator(Entry::DEFINEDOC_SEC);
7213 functionProto.resize(0);
7218 static bool handleOverload(const QCString &)
7220 functionProto.resize(0);
7221 BEGIN(OverloadParam);
7225 static bool handleEnum(const QCString &)
7227 bool stop=makeStructuralIndicator(Entry::ENUMDOC_SEC);
7232 static bool handleDefGroup(const QCString &)
7234 bool stop=makeStructuralIndicator(Entry::GROUPDOC_SEC);
7235 current->groupDocType = Entry::GROUPDOC_NORMAL;
7236 BEGIN( GroupDocArg1 );
7240 static bool handleAddToGroup(const QCString &)
7242 bool stop=makeStructuralIndicator(Entry::GROUPDOC_SEC);
7243 current->groupDocType = Entry::GROUPDOC_ADD;
7244 BEGIN( GroupDocArg1 );
7248 static bool handleWeakGroup(const QCString &)
7250 bool stop=makeStructuralIndicator(Entry::GROUPDOC_SEC);
7251 current->groupDocType = Entry::GROUPDOC_WEAK;
7252 BEGIN( GroupDocArg1 );
7256 static bool handleNamespace(const QCString &)
7258 bool stop=makeStructuralIndicator(Entry::NAMESPACEDOC_SEC);
7259 BEGIN( NameSpaceDocArg1 );
7263 static bool handlePackage(const QCString &)
7265 bool stop=makeStructuralIndicator(Entry::PACKAGEDOC_SEC);
7266 BEGIN( PackageDocArg1 );
7270 static bool handleClass(const QCString &)
7272 bool stop=makeStructuralIndicator(Entry::CLASSDOC_SEC);
7273 BEGIN( ClassDocArg1 );
7277 static bool handleHeaderFile(const QCString &)
7279 BEGIN( ClassDocArg2 );
7283 static bool handleProtocol(const QCString &)
7285 bool stop=makeStructuralIndicator(Entry::PROTOCOLDOC_SEC);
7286 BEGIN( ClassDocArg1 );
7290 static bool handleCategory(const QCString &)
7292 bool stop=makeStructuralIndicator(Entry::CATEGORYDOC_SEC);
7293 BEGIN( CategoryDocArg1 );
7297 static bool handleUnion(const QCString &)
7299 bool stop=makeStructuralIndicator(Entry::UNIONDOC_SEC);
7300 BEGIN( ClassDocArg1 );
7304 static bool handleStruct(const QCString &)
7306 bool stop=makeStructuralIndicator(Entry::STRUCTDOC_SEC);
7307 BEGIN( ClassDocArg1 );
7311 static bool handleInterface(const QCString &)
7313 bool stop=makeStructuralIndicator(Entry::INTERFACEDOC_SEC);
7314 BEGIN( ClassDocArg1 );
7318 static bool handleIdlException(const QCString &)
7320 bool stop=makeStructuralIndicator(Entry::EXCEPTIONDOC_SEC);
7321 BEGIN( ClassDocArg1 );
7325 static bool handlePage(const QCString &)
7327 bool stop=makeStructuralIndicator(Entry::PAGEDOC_SEC);
7328 BEGIN( PageDocArg1 );
7332 static bool handleMainpage(const QCString &)
7334 bool stop=makeStructuralIndicator(Entry::MAINPAGEDOC_SEC);
7337 current->name = "mainpage";
7339 BEGIN( PageDocArg2 );
7343 static bool handleFile(const QCString &)
7345 bool stop=makeStructuralIndicator(Entry::FILEDOC_SEC);
7348 current->name = yyFileName;
7350 BEGIN( FileDocArg1 );
7354 static bool handleDir(const QCString &)
7356 bool stop=makeStructuralIndicator(Entry::DIRDOC_SEC);
7357 if (!stop) current->name = yyFileName;
7358 BEGIN( FileDocArg1 );
7362 static bool handleExample(const QCString &)
7364 bool stop=makeStructuralIndicator(Entry::EXAMPLE_SEC);
7365 if (!stop) current->name = yyFileName;
7366 BEGIN( FileDocArg1 );
7370 static bool handleDetails(const QCString &)
7372 if (inContext!=OutputBrief)
7374 addOutput("\n\n"); // treat @details outside brief description
7375 // as a new paragraph
7377 setOutput(OutputDoc);
7381 static bool handleName(const QCString &)
7383 bool stop=makeStructuralIndicator(Entry::MEMBERGRP_SEC);
7386 g_memberGroupHeader.resize(0);
7388 if (g_memberGroupId!=DOX_NOGROUP) // end of previous member group
7390 closeGroup(current,yyFileName,yyLineNr,TRUE);
7396 static bool handleTodo(const QCString &)
7398 newXRefKind = XRef_Todo;
7399 setOutput(OutputXRef);
7400 xrefKind = XRef_Todo;
7404 static bool handleTest(const QCString &)
7406 newXRefKind = XRef_Test;
7407 setOutput(OutputXRef);
7408 xrefKind = XRef_Test;
7412 static bool handleBug(const QCString &)
7414 newXRefKind = XRef_Bug;
7415 setOutput(OutputXRef);
7416 xrefKind = XRef_Bug;
7420 static bool handleDeprecated(const QCString &)
7422 newXRefKind = XRef_Deprecated;
7423 setOutput(OutputXRef);
7424 xrefKind = XRef_Deprecated;
7428 static bool handleXRefItem(const QCString &)
7430 newXRefKind = XRef_Item;
7431 BEGIN(XRefItemParam1);
7435 static bool handleRelated(const QCString &)
7437 BEGIN(RelatesParam1);
7441 static bool handleRelatedAlso(const QCString &)
7443 current->relatesType = Duplicate;
7444 BEGIN(RelatesParam1);
7448 static bool handleMemberOf(const QCString &)
7450 current->relatesType = MemberOf;
7451 BEGIN(RelatesParam1);
7455 static bool handleRefItem(const QCString &)
7457 addOutput("@refitem ");
7462 static bool handleSection(const QCString &s)
7464 setOutput(OutputDoc);
7465 addOutput("@"+s+" ");
7466 BEGIN(SectionLabel);
7467 if (s=="section") g_sectionLevel=1;
7468 else if (s=="subsection") g_sectionLevel=2;
7469 else if (s=="subsubsection") g_sectionLevel=3;
7470 else if (s=="paragraph") g_sectionLevel=4;
7474 static bool handleSubpage(const QCString &s)
7476 if (current->section!=Entry::EMPTY_SEC &&
7477 current->section!=Entry::PAGEDOC_SEC &&
7478 current->section!=Entry::MAINPAGEDOC_SEC
7481 warn(yyFileName,yyLineNr,
7482 "warning: found \\subpage command in a comment block that is not marked as a page!");
7484 addOutput("@"+s+" ");
7485 BEGIN(SubpageLabel);
7489 static bool handleAnchor(const QCString &s)
7491 addOutput("@"+s+" ");
7496 static bool handleCite(const QCString &s)
7498 addOutput("@"+s+" ");
7503 static bool handleFormatBlock(const QCString &s)
7505 addOutput("@"+s+" ");
7506 //printf("handleFormatBlock(%s)\n",s.data());
7513 static bool handleAddIndex(const QCString &)
7515 addOutput("@addindex ");
7520 static bool handleIf(const QCString &)
7522 enabledSectionFound=FALSE;
7523 guardType = Guard_If;
7524 g_spaceBeforeIf = g_spaceBeforeCmd;
7529 static bool handleIfNot(const QCString &)
7531 enabledSectionFound=FALSE;
7532 guardType = Guard_IfNot;
7533 g_spaceBeforeIf = g_spaceBeforeCmd;
7538 static bool handleElseIf(const QCString &)
7540 if (guards.isEmpty())
7542 warn(yyFileName,yyLineNr,
7543 "warning: found \\else without matching start command");
7547 guardType = enabledSectionFound ? Guard_Skip : Guard_If;
7553 static bool handleElse(const QCString &)
7555 if (guards.isEmpty())
7557 warn(yyFileName,yyLineNr,
7558 "warning: found \\else without matching start command");
7562 BEGIN( SkipGuardedSection );
7567 static bool handleEndIf(const QCString &)
7569 if (guards.isEmpty())
7571 warn(yyFileName,yyLineNr,
7572 "warning: found \\endif without matching start command");
7576 delete guards.pop();
7578 enabledSectionFound=FALSE;
7579 BEGIN( GuardParamEnd );
7583 static bool handleIngroup(const QCString &)
7585 inGroupParamFound=FALSE;
7586 BEGIN( InGroupParam );
7590 static bool handleNoSubGrouping(const QCString &)
7592 current->subGrouping = FALSE;
7596 static bool handleShowInitializer(const QCString &)
7598 current->initLines = 100000; // ON
7602 static bool handleHideInitializer(const QCString &)
7604 current->initLines = 0; // OFF
7608 static bool handleCallgraph(const QCString &)
7610 current->callGraph = TRUE; // ON
7614 static bool handleCallergraph(const QCString &)
7616 current->callerGraph = TRUE; // ON
7620 static bool handleInternal(const QCString &)
7622 if (!Config_getBool("INTERNAL_DOCS"))
7624 // make sure some whitespace before a \internal command
7625 // is not treated as "documentation"
7626 if (current->doc.stripWhiteSpace().isEmpty())
7628 current->doc.resize(0);
7631 BEGIN( SkipInternal );
7635 // re-enabled for bug640828
7636 addOutput("\\internal ");
7641 static bool handleLineBr(const QCString &)
7647 static bool handleStatic(const QCString &)
7650 current->stat = TRUE;
7654 static bool handlePure(const QCString &)
7657 current->virt = Pure;
7661 static bool handlePrivate(const QCString &)
7663 current->protection = Private;
7667 static bool handlePrivateSection(const QCString &)
7669 current->protection = protection = Private;
7673 static bool handleProtected(const QCString &)
7675 current->protection = Protected;
7679 static bool handleProtectedSection(const QCString &)
7681 current->protection = protection = Protected ;
7685 static bool handlePublic(const QCString &)
7687 current->protection = Public;
7691 static bool handlePublicSection(const QCString &)
7693 current->protection = protection = Public;
7697 static bool handleToc(const QCString &)
7699 if (current->section==Entry::PAGEDOC_SEC ||
7700 current->section==Entry::MAINPAGEDOC_SEC)
7702 current->stat=TRUE; // we 'abuse' stat to pass whether or the TOC is enabled
7707 static bool handleInherit(const QCString &)
7709 BEGIN(InheritParam);
7713 static bool handleExtends(const QCString &)
7715 BEGIN(ExtendsParam);
7719 static bool handleCopyDoc(const QCString &)
7721 setOutput(OutputBrief);
7722 addOutput("\\copybrief ");
7723 g_copyDocArg.resize(0);
7728 //----------------------------------------------------------------------------
7730 static void checkFormula()
7732 if (YY_START==ReadFormulaShort || YY_START==ReadFormulaLong)
7734 warn(yyFileName,yyLineNr,"warning: End of comment block while inside formula.");
7738 //----------------------------------------------------------------------------
7740 bool parseCommentBlock(/* in */ ParserInterface *parser,
7741 /* in */ Entry *curEntry,
7742 /* in */ const QCString &comment,
7743 /* in */ const QCString &fileName,
7744 /* in,out */ int &lineNr,
7745 /* in */ bool isBrief,
7746 /* in */ bool isAutoBriefOn,
7747 /* in */ bool isInbody,
7748 /* in,out */ Protection &prot,
7749 /* in,out */ int &position,
7750 /* out */ bool &newEntryNeeded
7753 //printf("parseCommentBlock() isBrief=%d isAutoBriefOn=%d lineNr=%d\n",
7754 // isBrief,isAutoBriefOn,lineNr);
7757 guards.setAutoDelete(TRUE);
7759 langParser = parser;
7761 if (comment.isEmpty()) return FALSE; // avoid empty strings
7762 inputString = comment;
7763 inputString.append(" ");
7764 inputPosition = position;
7766 yyFileName = fileName;
7768 needNewEntry = FALSE;
7769 xrefKind = XRef_None;
7770 xrefAppendFlag = FALSE;
7774 outputXRef.resize(0);
7775 setOutput( isBrief || isAutoBriefOn ? OutputBrief : OutputDoc );
7776 briefEndsAtDot = isAutoBriefOn;
7779 g_spaceBeforeCmd = FALSE;
7780 g_spaceBeforeIf = FALSE;
7782 if (!current->inbodyDocs.isEmpty() && isInbody) // separate in body fragments
7784 current->inbodyDocs+="\n\n";
7787 Debug::print(Debug::CommentScan,0,"-----------\nCommentScanner: %s:%d\n"
7788 "input=[\n%s]\n",fileName.data(),lineNr,comment.data()
7791 commentScanYYrestart( commentScanYYin );
7794 setOutput( OutputDoc );
7796 if (YY_START==OverloadParam) // comment ended with \overload
7798 addOutput(getOverloadDocs());
7801 if (!guards.isEmpty())
7803 warn(yyFileName,yyLineNr,"Documentation block ended in the middle of a conditional section!");
7806 current->doc=stripLeadingAndTrailingEmptyLines(current->doc,current->docLine);
7808 if (current->section==Entry::FILEDOC_SEC && current->doc.isEmpty())
7810 // to allow a comment block with just a @file command.
7811 current->doc="\n\n";
7814 if (current->section==Entry::MEMBERGRP_SEC &&
7815 g_memberGroupId==DOX_NOGROUP) // @name section but no group started yet
7817 openGroup(current,yyFileName,yyLineNr);
7820 if (Doxygen::markdownSupport)
7822 current->brief = processMarkdown(fileName,current,current->brief);
7823 current->doc = processMarkdown(fileName,current,current->doc);
7824 current->inbodyDocs = processMarkdown(fileName,current,current->inbodyDocs);
7827 Debug::print(Debug::CommentScan,0,
7828 "brief=[line=%d\n%s]\ndocs=[line=%d\n%s]\ninbody=[line=%d\n%s]\n===========\n",
7829 current->briefLine,current->brief.data(),
7830 current->docLine,current->doc.data(),
7831 current->inbodyLine,current->inbodyDocs.data()
7837 groupAddDocs(curEntry,fileName);
7839 newEntryNeeded = needNewEntry;
7841 // if we did not proceed during this call, it does not make
7842 // sense to continue, since we get stuck. See bug 567346 for situations
7843 // were this happens
7844 if (parseMore && position==inputPosition) parseMore=FALSE;
7846 if (parseMore) position=inputPosition; else position=0;
7849 //printf("position=%d parseMore=%d\n",position,parseMore);
7854 //---------------------------------------------------------------------------
7856 void groupEnterFile(const char *fileName,int)
7858 g_autoGroupStack.setAutoDelete(TRUE);
7859 g_autoGroupStack.clear();
7860 g_memberGroupId = DOX_NOGROUP;
7861 g_memberGroupDocs.resize(0);
7862 g_memberGroupRelates.resize(0);
7863 g_compoundName=fileName;
7866 void groupLeaveFile(const char *fileName,int line)
7868 //if (g_memberGroupId!=DOX_NOGROUP)
7870 // warn(fileName,line,"warning: end of file while inside a member group\n");
7872 g_memberGroupId=DOX_NOGROUP;
7873 g_memberGroupRelates.resize(0);
7874 g_memberGroupDocs.resize(0);
7875 if (!g_autoGroupStack.isEmpty())
7877 warn(fileName,line,"warning: end of file while inside a group\n");
7881 void groupEnterCompound(const char *fileName,int line,const char *name)
7883 if (g_memberGroupId!=DOX_NOGROUP)
7885 warn(fileName,line,"warning: try to put compound %s inside a member group\n",name);
7887 g_memberGroupId=DOX_NOGROUP;
7888 g_memberGroupRelates.resize(0);
7889 g_memberGroupDocs.resize(0);
7890 g_compoundName = name;
7891 int i = g_compoundName.find('(');
7894 g_compoundName=g_compoundName.left(i); // strip category (Obj-C)
7896 if (g_compoundName.isEmpty())
7898 g_compoundName=fileName;
7900 //printf("groupEnterCompound(%s)\n",name);
7903 void groupLeaveCompound(const char *,int,const char * /*name*/)
7905 //printf("groupLeaveCompound(%s)\n",name);
7906 //if (g_memberGroupId!=DOX_NOGROUP)
7908 // warn(fileName,line,"warning: end of compound %s while inside a member group\n",name);
7910 g_memberGroupId=DOX_NOGROUP;
7911 g_memberGroupRelates.resize(0);
7912 g_memberGroupDocs.resize(0);
7913 g_compoundName.resize(0);
7916 static int findExistingGroup(int &groupId,const MemberGroupInfo *info)
7918 //printf("findExistingGroup %s:%s\n",info->header.data(),info->compoundName.data());
7919 QIntDictIterator<MemberGroupInfo> di(Doxygen::memGrpInfoDict);
7920 MemberGroupInfo *mi;
7921 for (di.toFirst();(mi=di.current());++di)
7923 if (g_compoundName==mi->compoundName && // same file or scope
7924 !mi->header.isEmpty() && // not a nameless group
7925 stricmp(mi->header,info->header)==0 // same header name
7928 //printf("Found it!\n");
7929 return di.currentKey(); // put the item in this group
7932 groupId++; // start new group
7936 void openGroup(Entry *e,const char *,int)
7938 //printf("==> openGroup(name=%s,sec=%x) g_autoGroupStack=%d\n",
7939 // e->name.data(),e->section,g_autoGroupStack.count());
7940 if (e->section==Entry::GROUPDOC_SEC) // auto group
7942 g_autoGroupStack.push(new Grouping(e->name,e->groupingPri()));
7944 else // start of a member group
7946 //printf(" membergroup id=%d %s\n",g_memberGroupId,g_memberGroupHeader.data());
7947 if (g_memberGroupId==DOX_NOGROUP) // no group started yet
7949 static int curGroupId=0;
7951 MemberGroupInfo *info = new MemberGroupInfo;
7952 info->header = g_memberGroupHeader.stripWhiteSpace();
7953 info->compoundName = g_compoundName;
7954 g_memberGroupId = findExistingGroup(curGroupId,info);
7955 //printf(" use membergroup %d\n",g_memberGroupId);
7956 Doxygen::memGrpInfoDict.insert(g_memberGroupId,info);
7958 g_memberGroupRelates = e->relates;
7959 e->mGrpId = g_memberGroupId;
7964 void closeGroup(Entry *e,const char *fileName,int,bool foundInline)
7966 //printf("==> closeGroup(name=%s,sec=%x) g_autoGroupStack=%d\n",
7967 // e->name.data(),e->section,g_autoGroupStack.count());
7968 if (g_memberGroupId!=DOX_NOGROUP) // end of member group
7970 MemberGroupInfo *info=Doxygen::memGrpInfoDict.find(g_memberGroupId);
7971 if (info) // known group
7973 info->doc = g_memberGroupDocs;
7974 info->docFile = fileName;
7976 g_memberGroupId=DOX_NOGROUP;
7977 g_memberGroupRelates.resize(0);
7978 g_memberGroupDocs.resize(0);
7979 e->mGrpId=DOX_NOGROUP;
7980 //printf("new group id=%d\n",g_memberGroupId);
7982 else if (!g_autoGroupStack.isEmpty()) // end of auto group
7984 Grouping *grp = g_autoGroupStack.pop();
7985 // see bug577005: we should not remove the last group for e
7986 if (!foundInline) e->groups->removeLast();
7987 //printf("Removing %s e=%p\n",grp->groupname.data(),e);
7989 if (!foundInline) initGroupInfo(e);
7993 void initGroupInfo(Entry *e)
7995 //printf("==> initGroup(id=%d,related=%s,e=%p)\n",g_memberGroupId,
7996 // g_memberGroupRelates.data(),e);
7997 e->mGrpId = g_memberGroupId;
7998 e->relates = g_memberGroupRelates;
7999 if (!g_autoGroupStack.isEmpty())
8001 //printf("Appending group %s to %s: count=%d entry=%p\n",
8002 // g_autoGroupStack.top()->groupname.data(),
8003 // e->name.data(),e->groups->count(),e);
8004 e->groups->append(new Grouping(*g_autoGroupStack.top()));
8008 static void groupAddDocs(Entry *e,const char *fileName)
8010 if (e->section==Entry::MEMBERGRP_SEC)
8012 g_memberGroupDocs=e->brief.stripWhiteSpace();
8013 e->doc = stripLeadingAndTrailingEmptyLines(e->doc,e->docLine);
8014 if (!g_memberGroupDocs.isEmpty() && !e->doc.isEmpty())
8016 g_memberGroupDocs+="\n\n";
8018 g_memberGroupDocs+=e->doc;
8019 MemberGroupInfo *info=Doxygen::memGrpInfoDict.find(g_memberGroupId);
8022 info->doc = g_memberGroupDocs;
8023 info->docFile = fileName;
8024 info->setRefItems(e->sli);
8032 #if !defined(YY_FLEX_SUBMINOR_VERSION)
8033 //----------------------------------------------------------------------------
8034 extern "C" { // some bogus code to keep the compiler happy
8035 void commentScanYYdummy() { yy_flex_realloc(0,0); }