1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <inttypes.h> 4 # define U(x) x 5 # define NLSTATE yyprevious=YYNEWLINE 6 # define BEGIN yybgin = yysvec + 1 + 7 # define INITIAL 0 8 # define YYLERR yysvec 9 # define YYSTATE (yyestate-yysvec-1) 10 # define YYOPTIM 1 11 # ifndef YYLMAX 12 # define YYLMAX BUFSIZ 13 # endif 14 #ifndef __cplusplus 15 # define output(c) (void)putc(c,yyout) 16 #else 17 # define lex_output(c) (void)putc(c,yyout) 18 #endif 19 20 #if defined(__cplusplus) || defined(__STDC__) 21 22 #if defined(__cplusplus) && defined(__EXTERN_C__) 23 extern "C" { 24 #endif 25 int yyback(int *, int); 26 int yyinput(void); 27 int yylook(void); 28 void yyoutput(int); 29 int yyracc(int); 30 int yyreject(void); 31 void yyunput(int); 32 int yylex(void); 33 #ifdef YYLEX_E 34 void yywoutput(wchar_t); 35 wchar_t yywinput(void); 36 void yywunput(wchar_t); 37 #endif 38 #ifndef yyless 39 int yyless(int); 40 #endif 41 #ifndef yywrap 42 int yywrap(void); 43 #endif 44 #ifdef LEXDEBUG 45 void allprint(char); 46 void sprint(char *); 47 #endif 48 #if defined(__cplusplus) && defined(__EXTERN_C__) 49 } 50 #endif 51 52 #ifdef __cplusplus 53 extern "C" { 54 #endif 55 void exit(int); 56 #ifdef __cplusplus 57 } 58 #endif 59 60 #endif 61 # define unput(c) {yytchar= (c);if(yytchar=='\n')yylineno--;*yysptr++=yytchar;} 62 # define yymore() (yymorfg=1) 63 #ifndef __cplusplus 64 # define input() (((yytchar=yysptr>yysbuf?U(*--yysptr):getc(yyin))==10?(yylineno++,yytchar):yytchar)==EOF?0:yytchar) 65 #else 66 # define lex_input() (((yytchar=yysptr>yysbuf?U(*--yysptr):getc(yyin))==10?(yylineno++,yytchar):yytchar)==EOF?0:yytchar) 67 #endif 68 #define ECHO fprintf(yyout, "%s",yytext) 69 # define REJECT { nstr = yyreject(); goto yyfussy;} 70 int yyleng; 71 #define YYISARRAY 72 char yytext[YYLMAX]; 73 int yymorfg; 74 extern char *yysptr, yysbuf[]; 75 int yytchar; 76 FILE *yyin = {stdin}, *yyout = {stdout}; 77 extern int yylineno; 78 struct yysvf { 79 struct yywork *yystoff; 80 struct yysvf *yyother; 81 int *yystops;}; 82 struct yysvf *yyestate; 83 extern struct yysvf yysvec[], *yybgin; 84 85 # line 3 "../common/dt_lex.l" 86 /* 87 * CDDL HEADER START 88 * 89 * The contents of this file are subject to the terms of the 90 * Common Development and Distribution License (the "License"). 91 * You may not use this file except in compliance with the License. 92 * 93 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 94 * or http://www.opensolaris.org/os/licensing. 95 * See the License for the specific language governing permissions 96 * and limitations under the License. 97 * 98 * When distributing Covered Code, include this CDDL HEADER in each 99 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 100 * If applicable, add the following below this CDDL HEADER, with the 101 * fields enclosed by brackets "[]" replaced with your own identifying 102 * information: Portions Copyright [yyyy] [name of copyright owner] 103 * 104 * CDDL HEADER END 105 */ 106 107 108 # line 24 "../common/dt_lex.l" 109 /* 110 * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. 111 */ 112 113 # line 27 "../common/dt_lex.l" 114 /* 115 * Copyright (c) 2013 by Delphix. All rights reserved. 116 * Copyright (c) 2013, Joyent, Inc. All rights reserved. 117 */ 118 119 #include <string.h> 120 #include <stdlib.h> 121 #include <stdio.h> 122 #include <assert.h> 123 #include <ctype.h> 124 #include <errno.h> 125 126 #include <dt_impl.h> 127 #include <dt_grammar.h> 128 #include <dt_parser.h> 129 #include <dt_string.h> 130 131 132 # line 44 "../common/dt_lex.l" 133 /* 134 * We need to undefine lex's input and unput macros so that references to these 135 * call the functions provided at the end of this source file. 136 */ 137 #undef input 138 #undef unput 139 140 static int id_or_type(const char *); 141 static int input(void); 142 static void unput(int); 143 144 145 # line 55 "../common/dt_lex.l" 146 /* 147 * We first define a set of labeled states for use in the D lexer and then a 148 * set of regular expressions to simplify things below. The lexer states are: 149 * 150 * S0 - D program clause and expression lexing 151 * S1 - D comments (i.e. skip everything until end of comment) 152 * S2 - D program outer scope (probe specifiers and declarations) 153 * S3 - D control line parsing (i.e. after ^# is seen but before \n) 154 * S4 - D control line scan (locate control directives only and invoke S3) 155 */ 156 # define S0 2 157 # define S1 4 158 # define S2 6 159 # define S3 8 160 # define S4 10 161 # define YYNEWLINE 10 162 int yylex(){ 163 int nstr; extern int yyprevious; 164 165 166 # line 92 "../common/dt_lex.l" 167 /* 168 * We insert a special prologue into yylex() itself: if the pcb contains a 169 * context token, we return that prior to running the normal lexer. This 170 * allows libdtrace to force yacc into one of our three parsing contexts: D 171 * expression (DT_CTX_DEXPR), D program (DT_CTX_DPROG) or D type (DT_CTX_DTYPE). 172 * Once the token is returned, we clear it so this only happens once. 173 */ 174 if (yypcb->pcb_token != 0) { 175 int tok = yypcb->pcb_token; 176 yypcb->pcb_token = 0; 177 return (tok); 178 } 179 180 #ifdef __cplusplus 181 /* to avoid CC and lint complaining yyfussy not being used ...*/ 182 static int __lex_hack = 0; 183 if (__lex_hack) goto yyfussy; 184 #endif 185 while((nstr = yylook()) >= 0) 186 yyfussy: switch(nstr){ 187 case 0: 188 if(yywrap()) return(0); break; 189 case 1: 190 191 # line 106 "../common/dt_lex.l" 192 return (DT_KEY_AUTO); 193 break; 194 case 2: 195 196 # line 107 "../common/dt_lex.l" 197 return (DT_KEY_BREAK); 198 break; 199 case 3: 200 201 # line 108 "../common/dt_lex.l" 202 return (DT_KEY_CASE); 203 break; 204 case 4: 205 206 # line 109 "../common/dt_lex.l" 207 return (DT_KEY_CHAR); 208 break; 209 case 5: 210 211 # line 110 "../common/dt_lex.l" 212 return (DT_KEY_CONST); 213 break; 214 case 6: 215 216 # line 111 "../common/dt_lex.l" 217 return (DT_KEY_CONTINUE); 218 break; 219 case 7: 220 221 # line 112 "../common/dt_lex.l" 222 return (DT_KEY_COUNTER); 223 break; 224 case 8: 225 226 # line 113 "../common/dt_lex.l" 227 return (DT_KEY_DEFAULT); 228 break; 229 case 9: 230 231 # line 114 "../common/dt_lex.l" 232 return (DT_KEY_DO); 233 break; 234 case 10: 235 236 # line 115 "../common/dt_lex.l" 237 return (DT_KEY_DOUBLE); 238 break; 239 case 11: 240 241 # line 116 "../common/dt_lex.l" 242 return (DT_KEY_ELSE); 243 break; 244 case 12: 245 246 # line 117 "../common/dt_lex.l" 247 return (DT_KEY_ENUM); 248 break; 249 case 13: 250 251 # line 118 "../common/dt_lex.l" 252 return (DT_KEY_EXTERN); 253 break; 254 case 14: 255 256 # line 119 "../common/dt_lex.l" 257 return (DT_KEY_FLOAT); 258 break; 259 case 15: 260 261 # line 120 "../common/dt_lex.l" 262 return (DT_KEY_FOR); 263 break; 264 case 16: 265 266 # line 121 "../common/dt_lex.l" 267 return (DT_KEY_GOTO); 268 break; 269 case 17: 270 271 # line 122 "../common/dt_lex.l" 272 return (DT_KEY_IF); 273 break; 274 case 18: 275 276 # line 123 "../common/dt_lex.l" 277 return (DT_KEY_IMPORT); 278 break; 279 case 19: 280 281 # line 124 "../common/dt_lex.l" 282 return (DT_KEY_INLINE); 283 break; 284 case 20: 285 286 # line 125 "../common/dt_lex.l" 287 return (DT_KEY_INT); 288 break; 289 case 21: 290 291 # line 126 "../common/dt_lex.l" 292 return (DT_KEY_LONG); 293 break; 294 case 22: 295 296 # line 127 "../common/dt_lex.l" 297 return (DT_TOK_OFFSETOF); 298 break; 299 case 23: 300 301 # line 128 "../common/dt_lex.l" 302 return (DT_KEY_PROBE); 303 break; 304 case 24: 305 306 # line 129 "../common/dt_lex.l" 307 return (DT_KEY_PROVIDER); 308 break; 309 case 25: 310 311 # line 130 "../common/dt_lex.l" 312 return (DT_KEY_REGISTER); 313 break; 314 case 26: 315 316 # line 131 "../common/dt_lex.l" 317 return (DT_KEY_RESTRICT); 318 break; 319 case 27: 320 321 # line 132 "../common/dt_lex.l" 322 return (DT_KEY_RETURN); 323 break; 324 case 28: 325 326 # line 133 "../common/dt_lex.l" 327 return (DT_KEY_SELF); 328 break; 329 case 29: 330 331 # line 134 "../common/dt_lex.l" 332 return (DT_KEY_SHORT); 333 break; 334 case 30: 335 336 # line 135 "../common/dt_lex.l" 337 return (DT_KEY_SIGNED); 338 break; 339 case 31: 340 341 # line 136 "../common/dt_lex.l" 342 return (DT_TOK_SIZEOF); 343 break; 344 case 32: 345 346 # line 137 "../common/dt_lex.l" 347 return (DT_KEY_STATIC); 348 break; 349 case 33: 350 351 # line 138 "../common/dt_lex.l" 352 return (DT_KEY_STRING); 353 break; 354 case 34: 355 356 # line 139 "../common/dt_lex.l" 357 return (DT_TOK_STRINGOF); 358 break; 359 case 35: 360 361 # line 140 "../common/dt_lex.l" 362 return (DT_KEY_STRUCT); 363 break; 364 case 36: 365 366 # line 141 "../common/dt_lex.l" 367 return (DT_KEY_SWITCH); 368 break; 369 case 37: 370 371 # line 142 "../common/dt_lex.l" 372 return (DT_KEY_THIS); 373 break; 374 case 38: 375 376 # line 143 "../common/dt_lex.l" 377 return (DT_KEY_XLATOR); 378 break; 379 case 39: 380 381 # line 144 "../common/dt_lex.l" 382 return (DT_KEY_TYPEDEF); 383 break; 384 case 40: 385 386 # line 145 "../common/dt_lex.l" 387 return (DT_KEY_UNION); 388 break; 389 case 41: 390 391 # line 146 "../common/dt_lex.l" 392 return (DT_KEY_UNSIGNED); 393 break; 394 case 42: 395 396 # line 147 "../common/dt_lex.l" 397 return (DT_KEY_USERLAND); 398 break; 399 case 43: 400 401 # line 148 "../common/dt_lex.l" 402 return (DT_KEY_VOID); 403 break; 404 case 44: 405 406 # line 149 "../common/dt_lex.l" 407 return (DT_KEY_VOLATILE); 408 break; 409 case 45: 410 411 # line 150 "../common/dt_lex.l" 412 return (DT_KEY_WHILE); 413 break; 414 case 46: 415 416 # line 151 "../common/dt_lex.l" 417 return (DT_TOK_XLATE); 418 break; 419 case 47: 420 421 # line 153 "../common/dt_lex.l" 422 { yybegin(YYS_EXPR); return (DT_KEY_AUTO); } 423 break; 424 case 48: 425 426 # line 154 "../common/dt_lex.l" 427 { yybegin(YYS_EXPR); return (DT_KEY_CHAR); } 428 break; 429 case 49: 430 431 # line 155 "../common/dt_lex.l" 432 { yybegin(YYS_EXPR); return (DT_KEY_CONST); } 433 break; 434 case 50: 435 436 # line 156 "../common/dt_lex.l" 437 { yybegin(YYS_DEFINE); return (DT_KEY_COUNTER); } 438 break; 439 case 51: 440 441 # line 157 "../common/dt_lex.l" 442 { yybegin(YYS_EXPR); return (DT_KEY_DOUBLE); } 443 break; 444 case 52: 445 446 # line 158 "../common/dt_lex.l" 447 { yybegin(YYS_EXPR); return (DT_KEY_ENUM); } 448 break; 449 case 53: 450 451 # line 159 "../common/dt_lex.l" 452 { yybegin(YYS_EXPR); return (DT_KEY_EXTERN); } 453 break; 454 case 54: 455 456 # line 160 "../common/dt_lex.l" 457 { yybegin(YYS_EXPR); return (DT_KEY_FLOAT); } 458 break; 459 case 55: 460 461 # line 161 "../common/dt_lex.l" 462 { yybegin(YYS_EXPR); return (DT_KEY_IMPORT); } 463 break; 464 case 56: 465 466 # line 162 "../common/dt_lex.l" 467 { yybegin(YYS_DEFINE); return (DT_KEY_INLINE); } 468 break; 469 case 57: 470 471 # line 163 "../common/dt_lex.l" 472 { yybegin(YYS_EXPR); return (DT_KEY_INT); } 473 break; 474 case 58: 475 476 # line 164 "../common/dt_lex.l" 477 { yybegin(YYS_EXPR); return (DT_KEY_LONG); } 478 break; 479 case 59: 480 481 # line 165 "../common/dt_lex.l" 482 { yybegin(YYS_DEFINE); return (DT_KEY_PROVIDER); } 483 break; 484 case 60: 485 486 # line 166 "../common/dt_lex.l" 487 { yybegin(YYS_EXPR); return (DT_KEY_REGISTER); } 488 break; 489 case 61: 490 491 # line 167 "../common/dt_lex.l" 492 { yybegin(YYS_EXPR); return (DT_KEY_RESTRICT); } 493 break; 494 case 62: 495 496 # line 168 "../common/dt_lex.l" 497 { yybegin(YYS_EXPR); return (DT_KEY_SELF); } 498 break; 499 case 63: 500 501 # line 169 "../common/dt_lex.l" 502 { yybegin(YYS_EXPR); return (DT_KEY_SHORT); } 503 break; 504 case 64: 505 506 # line 170 "../common/dt_lex.l" 507 { yybegin(YYS_EXPR); return (DT_KEY_SIGNED); } 508 break; 509 case 65: 510 511 # line 171 "../common/dt_lex.l" 512 { yybegin(YYS_EXPR); return (DT_KEY_STATIC); } 513 break; 514 case 66: 515 516 # line 172 "../common/dt_lex.l" 517 { yybegin(YYS_EXPR); return (DT_KEY_STRING); } 518 break; 519 case 67: 520 521 # line 173 "../common/dt_lex.l" 522 { yybegin(YYS_EXPR); return (DT_KEY_STRUCT); } 523 break; 524 case 68: 525 526 # line 174 "../common/dt_lex.l" 527 { yybegin(YYS_EXPR); return (DT_KEY_THIS); } 528 break; 529 case 69: 530 531 # line 175 "../common/dt_lex.l" 532 { yybegin(YYS_DEFINE); return (DT_KEY_XLATOR); } 533 break; 534 case 70: 535 536 # line 176 "../common/dt_lex.l" 537 { yybegin(YYS_EXPR); return (DT_KEY_TYPEDEF); } 538 break; 539 case 71: 540 541 # line 177 "../common/dt_lex.l" 542 { yybegin(YYS_EXPR); return (DT_KEY_UNION); } 543 break; 544 case 72: 545 546 # line 178 "../common/dt_lex.l" 547 { yybegin(YYS_EXPR); return (DT_KEY_UNSIGNED); } 548 break; 549 case 73: 550 551 # line 179 "../common/dt_lex.l" 552 { yybegin(YYS_EXPR); return (DT_KEY_VOID); } 553 break; 554 case 74: 555 556 # line 180 "../common/dt_lex.l" 557 { yybegin(YYS_EXPR); return (DT_KEY_VOLATILE); } 558 break; 559 case 75: 560 561 # line 182 "../common/dt_lex.l" 562 { 563 int i = atoi(yytext + 2); 564 char *v = ""; 565 566 /* 567 * A macro argument reference substitutes the text of 568 * an argument in place of the current token. When we 569 * see $$<d> we fetch the saved string from pcb_sargv 570 * (or use the default argument if the option has been 571 * set and the argument hasn't been specified) and 572 * return a token corresponding to this string. 573 */ 574 if (i < 0 || (i >= yypcb->pcb_sargc && 575 !(yypcb->pcb_cflags & DTRACE_C_DEFARG))) { 576 xyerror(D_MACRO_UNDEF, "macro argument %s is " 577 "not defined\n", yytext); 578 } 579 580 if (i < yypcb->pcb_sargc) { 581 v = yypcb->pcb_sargv[i]; /* get val from pcb */ 582 yypcb->pcb_sflagv[i] |= DT_IDFLG_REF; 583 } 584 585 if ((yylval.l_str = strdup(v)) == NULL) 586 longjmp(yypcb->pcb_jmpbuf, EDT_NOMEM); 587 588 (void) stresc2chr(yylval.l_str); 589 return (DT_TOK_STRING); 590 } 591 break; 592 case 76: 593 594 # line 212 "../common/dt_lex.l" 595 { 596 int i = atoi(yytext + 1); 597 char *p, *v = "0"; 598 599 /* 600 * A macro argument reference substitutes the text of 601 * one identifier or integer pattern for another. When 602 * we see $<d> we fetch the saved string from pcb_sargv 603 * (or use the default argument if the option has been 604 * set and the argument hasn't been specified) and 605 * return a token corresponding to this string. 606 */ 607 if (i < 0 || (i >= yypcb->pcb_sargc && 608 !(yypcb->pcb_cflags & DTRACE_C_DEFARG))) { 609 xyerror(D_MACRO_UNDEF, "macro argument %s is " 610 "not defined\n", yytext); 611 } 612 613 if (i < yypcb->pcb_sargc) { 614 v = yypcb->pcb_sargv[i]; /* get val from pcb */ 615 yypcb->pcb_sflagv[i] |= DT_IDFLG_REF; 616 } 617 618 /* 619 * If the macro text is not a valid integer or ident, 620 * then we treat it as a string. The string may be 621 * optionally enclosed in quotes, which we strip. 622 */ 623 if (strbadidnum(v)) { 624 size_t len = strlen(v); 625 626 if (len != 1 && *v == '"' && v[len - 1] == '"') 627 yylval.l_str = strndup(v + 1, len - 2); 628 else 629 yylval.l_str = strndup(v, len); 630 631 if (yylval.l_str == NULL) 632 longjmp(yypcb->pcb_jmpbuf, EDT_NOMEM); 633 634 (void) stresc2chr(yylval.l_str); 635 return (DT_TOK_STRING); 636 } 637 638 /* 639 * If the macro text is not a string an begins with a 640 * digit or a +/- sign, process it as an integer token. 641 */ 642 if (isdigit(v[0]) || v[0] == '-' || v[0] == '+') { 643 if (isdigit(v[0])) 644 yyintprefix = 0; 645 else 646 yyintprefix = *v++; 647 648 errno = 0; 649 yylval.l_int = strtoull(v, &p, 0); 650 (void) strncpy(yyintsuffix, p, 651 sizeof (yyintsuffix)); 652 yyintdecimal = *v != '0'; 653 654 if (errno == ERANGE) { 655 xyerror(D_MACRO_OFLOW, "macro argument" 656 " %s constant %s results in integer" 657 " overflow\n", yytext, v); 658 } 659 660 return (DT_TOK_INT); 661 } 662 663 return (id_or_type(v)); 664 } 665 break; 666 case 77: 667 668 # line 283 "../common/dt_lex.l" 669 { 670 dt_ident_t *idp = dt_idhash_lookup( 671 yypcb->pcb_hdl->dt_macros, yytext + 2); 672 673 char s[16]; /* enough for UINT_MAX + \0 */ 674 675 if (idp == NULL) { 676 xyerror(D_MACRO_UNDEF, "macro variable %s " 677 "is not defined\n", yytext); 678 } 679 680 /* 681 * For the moment, all current macro variables are of 682 * type id_t (refer to dtrace_update() for details). 683 */ 684 (void) snprintf(s, sizeof (s), "%u", idp->di_id); 685 if ((yylval.l_str = strdup(s)) == NULL) 686 longjmp(yypcb->pcb_jmpbuf, EDT_NOMEM); 687 688 return (DT_TOK_STRING); 689 } 690 break; 691 case 78: 692 693 # line 305 "../common/dt_lex.l" 694 { 695 dt_ident_t *idp = dt_idhash_lookup( 696 yypcb->pcb_hdl->dt_macros, yytext + 1); 697 698 if (idp == NULL) { 699 xyerror(D_MACRO_UNDEF, "macro variable %s " 700 "is not defined\n", yytext); 701 } 702 703 /* 704 * For the moment, all current macro variables are of 705 * type id_t (refer to dtrace_update() for details). 706 */ 707 yylval.l_int = (intmax_t)(int)idp->di_id; 708 yyintprefix = 0; 709 yyintsuffix[0] = '\0'; 710 yyintdecimal = 1; 711 712 return (DT_TOK_INT); 713 } 714 break; 715 case 79: 716 717 # line 326 "../common/dt_lex.l" 718 case 80: 719 720 # line 327 "../common/dt_lex.l" 721 case 81: 722 723 # line 328 "../common/dt_lex.l" 724 { 725 return (id_or_type(yytext)); 726 } 727 break; 728 case 82: 729 730 # line 332 "../common/dt_lex.l" 731 { 732 if ((yylval.l_str = strdup(yytext)) == NULL) 733 longjmp(yypcb->pcb_jmpbuf, EDT_NOMEM); 734 return (DT_TOK_AGG); 735 } 736 break; 737 case 83: 738 739 # line 338 "../common/dt_lex.l" 740 { 741 if ((yylval.l_str = strdup("@_")) == NULL) 742 longjmp(yypcb->pcb_jmpbuf, EDT_NOMEM); 743 return (DT_TOK_AGG); 744 } 745 break; 746 case 84: 747 748 # line 344 "../common/dt_lex.l" 749 case 85: 750 751 # line 345 "../common/dt_lex.l" 752 case 86: 753 754 # line 346 "../common/dt_lex.l" 755 { 756 char *p; 757 758 errno = 0; 759 yylval.l_int = strtoull(yytext, &p, 0); 760 yyintprefix = 0; 761 (void) strncpy(yyintsuffix, p, sizeof (yyintsuffix)); 762 yyintdecimal = yytext[0] != '0'; 763 764 if (errno == ERANGE) { 765 xyerror(D_INT_OFLOW, "constant %s results in " 766 "integer overflow\n", yytext); 767 } 768 769 if (*p != '\0' && strchr("uUlL", *p) == NULL) { 770 xyerror(D_INT_DIGIT, "constant %s contains " 771 "invalid digit %c\n", yytext, *p); 772 } 773 774 if ((YYSTATE) != S3) 775 return (DT_TOK_INT); 776 777 yypragma = dt_node_link(yypragma, 778 dt_node_int(yylval.l_int)); 779 } 780 break; 781 case 87: 782 783 # line 372 "../common/dt_lex.l" 784 yyerror("floating-point constants are not permitted\n"); 785 break; 786 case 88: 787 788 # line 374 "../common/dt_lex.l" 789 case 89: 790 791 # line 375 "../common/dt_lex.l" 792 xyerror(D_STR_NL, "newline encountered in string literal"); 793 break; 794 case 90: 795 796 # line 377 "../common/dt_lex.l" 797 case 91: 798 799 # line 378 "../common/dt_lex.l" 800 { 801 /* 802 * Quoted string -- convert C escape sequences and 803 * return the string as a token. 804 */ 805 yylval.l_str = strndup(yytext + 1, yyleng - 2); 806 807 if (yylval.l_str == NULL) 808 longjmp(yypcb->pcb_jmpbuf, EDT_NOMEM); 809 810 (void) stresc2chr(yylval.l_str); 811 if ((YYSTATE) != S3) 812 return (DT_TOK_STRING); 813 814 yypragma = dt_node_link(yypragma, 815 dt_node_string(yylval.l_str)); 816 } 817 break; 818 case 92: 819 820 # line 396 "../common/dt_lex.l" 821 xyerror(D_CHR_NL, "newline encountered in character constant"); 822 break; 823 case 93: 824 825 # line 398 "../common/dt_lex.l" 826 { 827 char *s, *p, *q; 828 size_t nbytes; 829 830 /* 831 * Character constant -- convert C escape sequences and 832 * return the character as an integer immediate value. 833 */ 834 if (yyleng == 2) 835 xyerror(D_CHR_NULL, "empty character constant"); 836 837 s = yytext + 1; 838 yytext[yyleng - 1] = '\0'; 839 nbytes = stresc2chr(s); 840 yylval.l_int = 0; 841 yyintprefix = 0; 842 yyintsuffix[0] = '\0'; 843 yyintdecimal = 1; 844 845 if (nbytes > sizeof (yylval.l_int)) { 846 xyerror(D_CHR_OFLOW, "character constant is " 847 "too long"); 848 } 849 #ifdef _LITTLE_ENDIAN 850 p = ((char *)&yylval.l_int) + nbytes - 1; 851 for (q = s; nbytes != 0; nbytes--) 852 *p-- = *q++; 853 #else 854 bcopy(s, ((char *)&yylval.l_int) + 855 sizeof (yylval.l_int) - nbytes, nbytes); 856 #endif 857 return (DT_TOK_INT); 858 } 859 break; 860 case 94: 861 862 # line 432 "../common/dt_lex.l" 863 case 95: 864 865 # line 433 "../common/dt_lex.l" 866 { 867 yypcb->pcb_cstate = (YYSTATE); 868 BEGIN(S1); 869 } 870 break; 871 case 96: 872 873 # line 438 "../common/dt_lex.l" 874 case 97: 875 876 # line 439 "../common/dt_lex.l" 877 ; 878 break; 879 case 98: 880 881 # line 441 "../common/dt_lex.l" 882 case 99: 883 884 # line 442 "../common/dt_lex.l" 885 case 100: 886 887 # line 443 "../common/dt_lex.l" 888 { 889 assert(yypragma == NULL); 890 yypcb->pcb_cstate = (YYSTATE); 891 BEGIN(S3); 892 } 893 break; 894 case 101: 895 896 # line 449 "../common/dt_lex.l" 897 ; 898 break; 899 case 102: 900 901 # line 450 "../common/dt_lex.l" 902 ; 903 break; 904 case 103: 905 906 # line 452 "../common/dt_lex.l" 907 { 908 int c, tok; 909 910 /* 911 * The use of "/" as the predicate delimiter and as the 912 * integer division symbol requires special lookahead 913 * to avoid a shift/reduce conflict in the D grammar. 914 * We look ahead to the next non-whitespace character. 915 * If we encounter EOF, ";", "{", or "/", then this "/" 916 * closes the predicate and we return DT_TOK_EPRED. 917 * If we encounter anything else, it's DT_TOK_DIV. 918 */ 919 while ((c = input()) != 0) { 920 if (strchr("\f\n\r\t\v ", c) == NULL) 921 break; 922 } 923 924 if (c == 0 || c == ';' || c == '{' || c == '/') { 925 if (yypcb->pcb_parens != 0) { 926 yyerror("closing ) expected in " 927 "predicate before /\n"); 928 } 929 if (yypcb->pcb_brackets != 0) { 930 yyerror("closing ] expected in " 931 "predicate before /\n"); 932 } 933 tok = DT_TOK_EPRED; 934 } else 935 tok = DT_TOK_DIV; 936 937 unput(c); 938 return (tok); 939 } 940 break; 941 case 104: 942 943 # line 486 "../common/dt_lex.l" 944 { 945 yypcb->pcb_parens++; 946 return (DT_TOK_LPAR); 947 } 948 break; 949 case 105: 950 951 # line 491 "../common/dt_lex.l" 952 { 953 if (--yypcb->pcb_parens < 0) 954 yyerror("extra ) in input stream\n"); 955 return (DT_TOK_RPAR); 956 } 957 break; 958 case 106: 959 960 # line 497 "../common/dt_lex.l" 961 { 962 yypcb->pcb_brackets++; 963 return (DT_TOK_LBRAC); 964 } 965 break; 966 case 107: 967 968 # line 502 "../common/dt_lex.l" 969 { 970 if (--yypcb->pcb_brackets < 0) 971 yyerror("extra ] in input stream\n"); 972 return (DT_TOK_RBRAC); 973 } 974 break; 975 case 108: 976 977 # line 508 "../common/dt_lex.l" 978 case 109: 979 980 # line 509 "../common/dt_lex.l" 981 { 982 yypcb->pcb_braces++; 983 return ('{'); 984 } 985 break; 986 case 110: 987 988 # line 514 "../common/dt_lex.l" 989 { 990 if (--yypcb->pcb_braces < 0) 991 yyerror("extra } in input stream\n"); 992 return ('}'); 993 } 994 break; 995 case 111: 996 997 # line 520 "../common/dt_lex.l" 998 return (DT_TOK_BOR); 999 break; 1000 case 112: 1001 1002 # line 521 "../common/dt_lex.l" 1003 return (DT_TOK_XOR); 1004 break; 1005 case 113: 1006 1007 # line 522 "../common/dt_lex.l" 1008 return (DT_TOK_BAND); 1009 break; 1010 case 114: 1011 1012 # line 523 "../common/dt_lex.l" 1013 return (DT_TOK_LAND); 1014 break; 1015 case 115: 1016 1017 # line 524 "../common/dt_lex.l" 1018 return (DT_TOK_LXOR); 1019 break; 1020 case 116: 1021 1022 # line 525 "../common/dt_lex.l" 1023 return (DT_TOK_LOR); 1024 break; 1025 case 117: 1026 1027 # line 526 "../common/dt_lex.l" 1028 return (DT_TOK_EQU); 1029 break; 1030 case 118: 1031 1032 # line 527 "../common/dt_lex.l" 1033 return (DT_TOK_NEQ); 1034 break; 1035 case 119: 1036 1037 # line 528 "../common/dt_lex.l" 1038 return (DT_TOK_LT); 1039 break; 1040 case 120: 1041 1042 # line 529 "../common/dt_lex.l" 1043 return (DT_TOK_LE); 1044 break; 1045 case 121: 1046 1047 # line 530 "../common/dt_lex.l" 1048 return (DT_TOK_GT); 1049 break; 1050 case 122: 1051 1052 # line 531 "../common/dt_lex.l" 1053 return (DT_TOK_GE); 1054 break; 1055 case 123: 1056 1057 # line 532 "../common/dt_lex.l" 1058 return (DT_TOK_LSH); 1059 break; 1060 case 124: 1061 1062 # line 533 "../common/dt_lex.l" 1063 return (DT_TOK_RSH); 1064 break; 1065 case 125: 1066 1067 # line 534 "../common/dt_lex.l" 1068 return (DT_TOK_ADD); 1069 break; 1070 case 126: 1071 1072 # line 535 "../common/dt_lex.l" 1073 return (DT_TOK_SUB); 1074 break; 1075 case 127: 1076 1077 # line 536 "../common/dt_lex.l" 1078 return (DT_TOK_MUL); 1079 break; 1080 case 128: 1081 1082 # line 537 "../common/dt_lex.l" 1083 return (DT_TOK_MOD); 1084 break; 1085 case 129: 1086 1087 # line 538 "../common/dt_lex.l" 1088 return (DT_TOK_BNEG); 1089 break; 1090 case 130: 1091 1092 # line 539 "../common/dt_lex.l" 1093 return (DT_TOK_LNEG); 1094 break; 1095 case 131: 1096 1097 # line 540 "../common/dt_lex.l" 1098 return (DT_TOK_QUESTION); 1099 break; 1100 case 132: 1101 1102 # line 541 "../common/dt_lex.l" 1103 return (DT_TOK_COLON); 1104 break; 1105 case 133: 1106 1107 # line 542 "../common/dt_lex.l" 1108 return (DT_TOK_DOT); 1109 break; 1110 case 134: 1111 1112 # line 543 "../common/dt_lex.l" 1113 return (DT_TOK_PTR); 1114 break; 1115 case 135: 1116 1117 # line 544 "../common/dt_lex.l" 1118 return (DT_TOK_ASGN); 1119 break; 1120 case 136: 1121 1122 # line 545 "../common/dt_lex.l" 1123 return (DT_TOK_ADD_EQ); 1124 break; 1125 case 137: 1126 1127 # line 546 "../common/dt_lex.l" 1128 return (DT_TOK_SUB_EQ); 1129 break; 1130 case 138: 1131 1132 # line 547 "../common/dt_lex.l" 1133 return (DT_TOK_MUL_EQ); 1134 break; 1135 case 139: 1136 1137 # line 548 "../common/dt_lex.l" 1138 return (DT_TOK_DIV_EQ); 1139 break; 1140 case 140: 1141 1142 # line 549 "../common/dt_lex.l" 1143 return (DT_TOK_MOD_EQ); 1144 break; 1145 case 141: 1146 1147 # line 550 "../common/dt_lex.l" 1148 return (DT_TOK_AND_EQ); 1149 break; 1150 case 142: 1151 1152 # line 551 "../common/dt_lex.l" 1153 return (DT_TOK_XOR_EQ); 1154 break; 1155 case 143: 1156 1157 # line 552 "../common/dt_lex.l" 1158 return (DT_TOK_OR_EQ); 1159 break; 1160 case 144: 1161 1162 # line 553 "../common/dt_lex.l" 1163 return (DT_TOK_LSH_EQ); 1164 break; 1165 case 145: 1166 1167 # line 554 "../common/dt_lex.l" 1168 return (DT_TOK_RSH_EQ); 1169 break; 1170 case 146: 1171 1172 # line 555 "../common/dt_lex.l" 1173 return (DT_TOK_ADDADD); 1174 break; 1175 case 147: 1176 1177 # line 556 "../common/dt_lex.l" 1178 return (DT_TOK_SUBSUB); 1179 break; 1180 case 148: 1181 1182 # line 557 "../common/dt_lex.l" 1183 return (DT_TOK_ELLIPSIS); 1184 break; 1185 case 149: 1186 1187 # line 558 "../common/dt_lex.l" 1188 return (DT_TOK_COMMA); 1189 break; 1190 case 150: 1191 1192 # line 559 "../common/dt_lex.l" 1193 return (';'); 1194 break; 1195 case 151: 1196 1197 # line 560 "../common/dt_lex.l" 1198 ; 1199 break; 1200 case 152: 1201 1202 # line 561 "../common/dt_lex.l" 1203 ; 1204 break; 1205 case 153: 1206 1207 # line 562 "../common/dt_lex.l" 1208 yyerror("syntax error near \"%c\"\n", yytext[0]); 1209 break; 1210 case 154: 1211 1212 # line 564 "../common/dt_lex.l" 1213 yyerror("/* encountered inside a comment\n"); 1214 break; 1215 case 155: 1216 1217 # line 565 "../common/dt_lex.l" 1218 BEGIN(yypcb->pcb_cstate); 1219 break; 1220 case 156: 1221 1222 # line 566 "../common/dt_lex.l" 1223 ; 1224 break; 1225 case 157: 1226 1227 # line 568 "../common/dt_lex.l" 1228 { 1229 /* 1230 * S2 has an ambiguity because RGX_PSPEC includes '*' 1231 * as a glob character and '*' also can be DT_TOK_STAR. 1232 * Since lex always matches the longest token, this 1233 * rule can be matched by an input string like "int*", 1234 * which could begin a global variable declaration such 1235 * as "int*x;" or could begin a RGX_PSPEC with globbing 1236 * such as "int* { trace(timestamp); }". If C_PSPEC is 1237 * not set, we must resolve the ambiguity in favor of 1238 * the type and perform lexer pushback if the fragment 1239 * before '*' or entire fragment matches a type name. 1240 * If C_PSPEC is set, we always return a PSPEC token. 1241 * If C_PSPEC is off, the user can avoid ambiguity by 1242 * including a ':' delimiter in the specifier, which 1243 * they should be doing anyway to specify the provider. 1244 */ 1245 if (!(yypcb->pcb_cflags & DTRACE_C_PSPEC) && 1246 strchr(yytext, ':') == NULL) { 1247 1248 char *p = strchr(yytext, '*'); 1249 char *q = yytext + yyleng - 1; 1250 1251 if (p != NULL && p > yytext) 1252 *p = '\0'; /* prune yytext */ 1253 1254 if (dt_type_lookup(yytext, NULL) == 0) { 1255 yylval.l_str = strdup(yytext); 1256 1257 if (yylval.l_str == NULL) { 1258 longjmp(yypcb->pcb_jmpbuf, 1259 EDT_NOMEM); 1260 } 1261 1262 if (p != NULL && p > yytext) { 1263 for (*p = '*'; q >= p; q--) 1264 unput(*q); 1265 } 1266 1267 yybegin(YYS_EXPR); 1268 return (DT_TOK_TNAME); 1269 } 1270 1271 if (p != NULL && p > yytext) 1272 *p = '*'; /* restore yytext */ 1273 } 1274 1275 if ((yylval.l_str = strdup(yytext)) == NULL) 1276 longjmp(yypcb->pcb_jmpbuf, EDT_NOMEM); 1277 1278 return (DT_TOK_PSPEC); 1279 } 1280 break; 1281 case 158: 1282 1283 # line 621 "../common/dt_lex.l" 1284 return (DT_TOK_DIV); 1285 break; 1286 case 159: 1287 1288 # line 622 "../common/dt_lex.l" 1289 return (DT_TOK_COMMA); 1290 break; 1291 case 160: 1292 1293 # line 624 "../common/dt_lex.l" 1294 ; 1295 break; 1296 case 161: 1297 1298 # line 625 "../common/dt_lex.l" 1299 yyerror("syntax error near \"%c\"\n", yytext[0]); 1300 break; 1301 case 162: 1302 1303 # line 627 "../common/dt_lex.l" 1304 { 1305 dt_pragma(yypragma); 1306 yypragma = NULL; 1307 BEGIN(yypcb->pcb_cstate); 1308 } 1309 break; 1310 case 163: 1311 1312 # line 633 "../common/dt_lex.l" 1313 ; 1314 break; 1315 case 164: 1316 1317 # line 635 "../common/dt_lex.l" 1318 { 1319 dt_node_t *dnp; 1320 1321 if ((yylval.l_str = strdup(yytext)) == NULL) 1322 longjmp(yypcb->pcb_jmpbuf, EDT_NOMEM); 1323 1324 /* 1325 * We want to call dt_node_ident() here, but we can't 1326 * because it will expand inlined identifiers, which we 1327 * don't want to do from #pragma context in order to 1328 * support pragmas that apply to the ident itself. We 1329 * call dt_node_string() and then reset dn_op instead. 1330 */ 1331 dnp = dt_node_string(yylval.l_str); 1332 dnp->dn_kind = DT_NODE_IDENT; 1333 dnp->dn_op = DT_TOK_IDENT; 1334 yypragma = dt_node_link(yypragma, dnp); 1335 } 1336 break; 1337 case 165: 1338 1339 # line 654 "../common/dt_lex.l" 1340 yyerror("syntax error near \"%c\"\n", yytext[0]); 1341 break; 1342 case -1: 1343 break; 1344 default: 1345 (void)fprintf(yyout,"bad switch yylook %d",nstr); 1346 } return(0); } 1347 /* end of yylex */ 1348 1349 # line 657 "../common/dt_lex.l" 1350 1351 /* 1352 * yybegin provides a wrapper for use from C code around the lex BEGIN() macro. 1353 * We use two main states for lexing because probe descriptions use a syntax 1354 * that is incompatible with the normal D tokens (e.g. names can contain "-"). 1355 * yybegin also handles the job of switching between two lists of dt_nodes 1356 * as we allocate persistent definitions, like inlines, and transient nodes 1357 * that will be freed once we are done parsing the current program file. 1358 */ 1359 void 1360 yybegin(yystate_t state) 1361 { 1362 #ifdef YYDEBUG 1363 yydebug = _dtrace_debug; 1364 #endif 1365 if (yypcb->pcb_yystate == state) 1366 return; /* nothing to do if we're in the state already */ 1367 1368 if (yypcb->pcb_yystate == YYS_DEFINE) { 1369 yypcb->pcb_list = yypcb->pcb_hold; 1370 yypcb->pcb_hold = NULL; 1371 } 1372 1373 switch (state) { 1374 case YYS_CLAUSE: 1375 BEGIN(S2); 1376 break; 1377 case YYS_DEFINE: 1378 assert(yypcb->pcb_hold == NULL); 1379 yypcb->pcb_hold = yypcb->pcb_list; 1380 yypcb->pcb_list = NULL; 1381 /*FALLTHRU*/ 1382 case YYS_EXPR: 1383 BEGIN(S0); 1384 break; 1385 case YYS_DONE: 1386 break; 1387 case YYS_CONTROL: 1388 BEGIN(S4); 1389 break; 1390 default: 1391 xyerror(D_UNKNOWN, "internal error -- bad yystate %d\n", state); 1392 } 1393 1394 yypcb->pcb_yystate = state; 1395 } 1396 1397 void 1398 yyinit(dt_pcb_t *pcb) 1399 { 1400 yypcb = pcb; 1401 yylineno = 1; 1402 yypragma = NULL; 1403 yysptr = yysbuf; 1404 } 1405 1406 /* 1407 * Given a lexeme 's' (typically yytext), set yylval and return an appropriate 1408 * token to the parser indicating either an identifier or a typedef name. 1409 * User-defined global variables always take precedence over types, but we do 1410 * use some heuristics because D programs can look at an ever-changing set of 1411 * kernel types and also can implicitly instantiate variables by assignment, 1412 * unlike in C. The code here is ordered carefully as lookups are not cheap. 1413 */ 1414 static int 1415 id_or_type(const char *s) 1416 { 1417 dtrace_hdl_t *dtp = yypcb->pcb_hdl; 1418 dt_decl_t *ddp = yypcb->pcb_dstack.ds_decl; 1419 int c0, c1, ttok = DT_TOK_TNAME; 1420 dt_ident_t *idp; 1421 1422 if ((s = yylval.l_str = strdup(s)) == NULL) 1423 longjmp(yypcb->pcb_jmpbuf, EDT_NOMEM); 1424 1425 /* 1426 * If the lexeme is a global variable or likely identifier or *not* a 1427 * type_name, then it is an identifier token. 1428 */ 1429 if (dt_idstack_lookup(&yypcb->pcb_globals, s) != NULL || 1430 dt_idhash_lookup(yypcb->pcb_idents, s) != NULL || 1431 dt_type_lookup(s, NULL) != 0) 1432 return (DT_TOK_IDENT); 1433 1434 /* 1435 * If we're in the midst of parsing a declaration and a type_specifier 1436 * has already been shifted, then return DT_TOK_IDENT instead of TNAME. 1437 * This semantic is necessary to permit valid ISO C code such as: 1438 * 1439 * typedef int foo; 1440 * struct s { foo foo; }; 1441 * 1442 * without causing shift/reduce conflicts in the direct_declarator part 1443 * of the grammar. The result is that we must check for conflicting 1444 * redeclarations of the same identifier as part of dt_node_decl(). 1445 */ 1446 if (ddp != NULL && ddp->dd_name != NULL) 1447 return (DT_TOK_IDENT); 1448 1449 /* 1450 * If the lexeme is a type name and we are not in a program clause, 1451 * then always interpret it as a type and return DT_TOK_TNAME. 1452 */ 1453 if ((YYSTATE) != S0) 1454 return (DT_TOK_TNAME); 1455 1456 /* 1457 * If the lexeme matches a type name but is in a program clause, then 1458 * it could be a type or it could be an undefined variable. Peek at 1459 * the next token to decide. If we see ++, --, [, or =, we know there 1460 * might be an assignment that is trying to create a global variable, 1461 * so we optimistically return DT_TOK_IDENT. There is no harm in being 1462 * wrong: a type_name followed by ++, --, [, or = is a syntax error. 1463 */ 1464 while ((c0 = input()) != 0) { 1465 if (strchr("\f\n\r\t\v ", c0) == NULL) 1466 break; 1467 } 1468 1469 switch (c0) { 1470 case '+': 1471 case '-': 1472 if ((c1 = input()) == c0) 1473 ttok = DT_TOK_IDENT; 1474 unput(c1); 1475 break; 1476 1477 case '=': 1478 if ((c1 = input()) != c0) 1479 ttok = DT_TOK_IDENT; 1480 unput(c1); 1481 break; 1482 case '[': 1483 ttok = DT_TOK_IDENT; 1484 break; 1485 } 1486 1487 if (ttok == DT_TOK_IDENT) { 1488 idp = dt_idhash_insert(yypcb->pcb_idents, s, DT_IDENT_SCALAR, 0, 1489 0, _dtrace_defattr, 0, &dt_idops_thaw, NULL, dtp->dt_gen); 1490 1491 if (idp == NULL) 1492 longjmp(yypcb->pcb_jmpbuf, EDT_NOMEM); 1493 } 1494 1495 unput(c0); 1496 return (ttok); 1497 } 1498 1499 static int 1500 input(void) 1501 { 1502 int c; 1503 1504 if (yysptr > yysbuf) 1505 c = *--yysptr; 1506 else if (yypcb->pcb_fileptr != NULL) 1507 c = fgetc(yypcb->pcb_fileptr); 1508 else if (yypcb->pcb_strptr < yypcb->pcb_string + yypcb->pcb_strlen) 1509 c = *(unsigned char *)(yypcb->pcb_strptr++); 1510 else 1511 c = EOF; 1512 1513 if (c == '\n') 1514 yylineno++; 1515 1516 if (c != EOF) 1517 return (c); 1518 1519 if ((YYSTATE) == S1) 1520 yyerror("end-of-file encountered before matching */\n"); 1521 1522 if ((YYSTATE) == S3) 1523 yyerror("end-of-file encountered before end of control line\n"); 1524 1525 if (yypcb->pcb_fileptr != NULL && ferror(yypcb->pcb_fileptr)) 1526 longjmp(yypcb->pcb_jmpbuf, EDT_FIO); 1527 1528 return (0); /* EOF */ 1529 } 1530 1531 static void 1532 unput(int c) 1533 { 1534 if (c == '\n') 1535 yylineno--; 1536 1537 *yysptr++ = c; 1538 yytchar = c; 1539 } 1540 int yyvstop[] = { 1541 0, 1542 1543 153, 1544 0, 1545 1546 151, 1547 153, 1548 0, 1549 1550 151, 1551 0, 1552 1553 130, 1554 153, 1555 0, 1556 1557 153, 1558 -88, 1559 0, 1560 1561 153, 1562 0, 1563 1564 128, 1565 153, 1566 0, 1567 1568 113, 1569 153, 1570 0, 1571 1572 153, 1573 -92, 1574 0, 1575 1576 104, 1577 153, 1578 0, 1579 1580 105, 1581 153, 1582 0, 1583 1584 127, 1585 153, 1586 0, 1587 1588 125, 1589 153, 1590 0, 1591 1592 149, 1593 153, 1594 0, 1595 1596 126, 1597 153, 1598 0, 1599 1600 133, 1601 153, 1602 0, 1603 1604 103, 1605 153, 1606 0, 1607 1608 84, 1609 87, 1610 153, 1611 0, 1612 1613 84, 1614 87, 1615 153, 1616 0, 1617 1618 132, 1619 153, 1620 0, 1621 1622 150, 1623 153, 1624 0, 1625 1626 119, 1627 153, 1628 0, 1629 1630 135, 1631 153, 1632 0, 1633 1634 121, 1635 153, 1636 0, 1637 1638 131, 1639 153, 1640 0, 1641 1642 83, 1643 153, 1644 0, 1645 1646 79, 1647 153, 1648 0, 1649 1650 106, 1651 153, 1652 0, 1653 1654 153, 1655 0, 1656 1657 107, 1658 153, 1659 0, 1660 1661 112, 1662 153, 1663 0, 1664 1665 79, 1666 153, 1667 0, 1668 1669 79, 1670 153, 1671 0, 1672 1673 79, 1674 153, 1675 0, 1676 1677 79, 1678 153, 1679 0, 1680 1681 79, 1682 153, 1683 0, 1684 1685 79, 1686 153, 1687 0, 1688 1689 79, 1690 153, 1691 0, 1692 1693 79, 1694 153, 1695 0, 1696 1697 79, 1698 153, 1699 0, 1700 1701 79, 1702 153, 1703 0, 1704 1705 79, 1706 153, 1707 0, 1708 1709 79, 1710 153, 1711 0, 1712 1713 79, 1714 153, 1715 0, 1716 1717 79, 1718 153, 1719 0, 1720 1721 79, 1722 153, 1723 0, 1724 1725 79, 1726 153, 1727 0, 1728 1729 79, 1730 153, 1731 0, 1732 1733 79, 1734 153, 1735 0, 1736 1737 108, 1738 153, 1739 0, 1740 1741 111, 1742 153, 1743 0, 1744 1745 110, 1746 153, 1747 0, 1748 1749 129, 1750 153, 1751 0, 1752 1753 151, 1754 153, 1755 0, 1756 1757 98, 1758 153, 1759 0, 1760 1761 156, 1762 0, 1763 1764 156, 1765 0, 1766 1767 156, 1768 0, 1769 1770 161, 1771 0, 1772 1773 160, 1774 161, 1775 0, 1776 1777 160, 1778 0, 1779 1780 157, 1781 161, 1782 0, 1783 1784 159, 1785 161, 1786 0, 1787 1788 158, 1789 161, 1790 0, 1791 1792 85, 1793 161, 1794 0, 1795 1796 85, 1797 161, 1798 0, 1799 1800 157, 1801 161, 1802 0, 1803 1804 157, 1805 161, 1806 0, 1807 1808 157, 1809 161, 1810 0, 1811 1812 157, 1813 161, 1814 0, 1815 1816 157, 1817 161, 1818 0, 1819 1820 157, 1821 161, 1822 0, 1823 1824 157, 1825 161, 1826 0, 1827 1828 157, 1829 161, 1830 0, 1831 1832 157, 1833 161, 1834 0, 1835 1836 157, 1837 161, 1838 0, 1839 1840 157, 1841 161, 1842 0, 1843 1844 157, 1845 161, 1846 0, 1847 1848 157, 1849 161, 1850 0, 1851 1852 109, 1853 161, 1854 0, 1855 1856 160, 1857 161, 1858 0, 1859 1860 99, 1861 161, 1862 0, 1863 1864 164, 1865 165, 1866 0, 1867 1868 163, 1869 165, 1870 0, 1871 1872 162, 1873 0, 1874 1875 165, 1876 -89, 1877 0, 1878 1879 86, 1880 164, 1881 165, 1882 0, 1883 1884 86, 1885 164, 1886 165, 1887 0, 1888 1889 101, 1890 0, 1891 1892 102, 1893 0, 1894 1895 101, 1896 0, 1897 1898 100, 1899 101, 1900 0, 1901 1902 118, 1903 0, 1904 1905 -88, 1906 0, 1907 1908 88, 1909 0, 1910 1911 90, 1912 0, 1913 1914 76, 1915 0, 1916 1917 78, 1918 0, 1919 1920 140, 1921 0, 1922 1923 114, 1924 0, 1925 1926 141, 1927 0, 1928 1929 -92, 1930 0, 1931 1932 92, 1933 0, 1934 1935 93, 1936 0, 1937 1938 138, 1939 0, 1940 1941 146, 1942 0, 1943 1944 136, 1945 0, 1946 1947 147, 1948 0, 1949 1950 137, 1951 0, 1952 1953 134, 1954 0, 1955 1956 87, 1957 0, 1958 1959 94, 1960 0, 1961 1962 139, 1963 0, 1964 1965 87, 1966 0, 1967 1968 84, 1969 87, 1970 0, 1971 1972 87, 1973 0, 1974 1975 84, 1976 87, 1977 0, 1978 1979 84, 1980 0, 1981 1982 123, 1983 0, 1984 1985 120, 1986 0, 1987 1988 117, 1989 0, 1990 1991 122, 1992 0, 1993 1994 124, 1995 0, 1996 1997 82, 1998 0, 1999 2000 79, 2001 0, 2002 2003 79, 2004 81, 2005 0, 2006 2007 152, 2008 0, 2009 2010 142, 2011 0, 2012 2013 115, 2014 0, 2015 2016 79, 2017 0, 2018 2019 79, 2020 0, 2021 2022 79, 2023 0, 2024 2025 79, 2026 0, 2027 2028 79, 2029 0, 2030 2031 79, 2032 0, 2033 2034 9, 2035 79, 2036 0, 2037 2038 79, 2039 0, 2040 2041 79, 2042 0, 2043 2044 79, 2045 0, 2046 2047 79, 2048 0, 2049 2050 79, 2051 0, 2052 2053 79, 2054 0, 2055 2056 17, 2057 79, 2058 0, 2059 2060 79, 2061 0, 2062 2063 79, 2064 0, 2065 2066 79, 2067 0, 2068 2069 79, 2070 0, 2071 2072 79, 2073 0, 2074 2075 79, 2076 0, 2077 2078 79, 2079 0, 2080 2081 79, 2082 0, 2083 2084 79, 2085 0, 2086 2087 79, 2088 0, 2089 2090 79, 2091 0, 2092 2093 79, 2094 0, 2095 2096 79, 2097 0, 2098 2099 79, 2100 0, 2101 2102 79, 2103 0, 2104 2105 79, 2106 0, 2107 2108 79, 2109 0, 2110 2111 79, 2112 0, 2113 2114 79, 2115 0, 2116 2117 143, 2118 0, 2119 2120 116, 2121 0, 2122 2123 98, 2124 0, 2125 2126 96, 2127 0, 2128 2129 155, 2130 0, 2131 2132 154, 2133 0, 2134 2135 157, 2136 0, 2137 2138 95, 2139 0, 2140 2141 85, 2142 0, 2143 2144 85, 2145 0, 2146 2147 85, 2148 0, 2149 2150 157, 2151 0, 2152 2153 157, 2154 0, 2155 2156 157, 2157 0, 2158 2159 157, 2160 0, 2161 2162 157, 2163 0, 2164 2165 157, 2166 0, 2167 2168 157, 2169 0, 2170 2171 157, 2172 0, 2173 2174 157, 2175 0, 2176 2177 157, 2178 0, 2179 2180 157, 2181 0, 2182 2183 157, 2184 0, 2185 2186 157, 2187 0, 2188 2189 157, 2190 0, 2191 2192 157, 2193 0, 2194 2195 157, 2196 0, 2197 2198 157, 2199 0, 2200 2201 157, 2202 0, 2203 2204 157, 2205 0, 2206 2207 157, 2208 0, 2209 2210 157, 2211 0, 2212 2213 99, 2214 0, 2215 2216 97, 2217 0, 2218 2219 164, 2220 0, 2221 2222 163, 2223 0, 2224 2225 -89, 2226 0, 2227 2228 89, 2229 0, 2230 2231 91, 2232 0, 2233 2234 86, 2235 164, 2236 0, 2237 2238 86, 2239 164, 2240 0, 2241 2242 86, 2243 164, 2244 0, 2245 2246 164, 2247 0, 2248 2249 100, 2250 0, 2251 2252 75, 2253 0, 2254 2255 77, 2256 0, 2257 2258 148, 2259 0, 2260 2261 87, 2262 0, 2263 2264 84, 2265 0, 2266 2267 84, 2268 0, 2269 2270 84, 2271 0, 2272 2273 144, 2274 0, 2275 2276 145, 2277 0, 2278 2279 81, 2280 0, 2281 2282 79, 2283 80, 2284 0, 2285 2286 79, 2287 80, 2288 81, 2289 0, 2290 2291 79, 2292 0, 2293 2294 79, 2295 0, 2296 2297 79, 2298 0, 2299 2300 79, 2301 0, 2302 2303 79, 2304 0, 2305 2306 79, 2307 0, 2308 2309 79, 2310 0, 2311 2312 79, 2313 0, 2314 2315 79, 2316 0, 2317 2318 79, 2319 0, 2320 2321 79, 2322 0, 2323 2324 79, 2325 0, 2326 2327 15, 2328 79, 2329 0, 2330 2331 79, 2332 0, 2333 2334 79, 2335 0, 2336 2337 79, 2338 0, 2339 2340 20, 2341 79, 2342 0, 2343 2344 79, 2345 0, 2346 2347 79, 2348 0, 2349 2350 79, 2351 0, 2352 2353 79, 2354 0, 2355 2356 79, 2357 0, 2358 2359 79, 2360 0, 2361 2362 79, 2363 0, 2364 2365 79, 2366 0, 2367 2368 79, 2369 0, 2370 2371 79, 2372 0, 2373 2374 79, 2375 0, 2376 2377 79, 2378 0, 2379 2380 79, 2381 0, 2382 2383 79, 2384 0, 2385 2386 79, 2387 0, 2388 2389 79, 2390 0, 2391 2392 79, 2393 0, 2394 2395 79, 2396 0, 2397 2398 79, 2399 0, 2400 2401 79, 2402 0, 2403 2404 79, 2405 0, 2406 2407 79, 2408 0, 2409 2410 79, 2411 0, 2412 2413 85, 2414 0, 2415 2416 85, 2417 0, 2418 2419 157, 2420 0, 2421 2422 157, 2423 0, 2424 2425 157, 2426 0, 2427 2428 157, 2429 0, 2430 2431 157, 2432 0, 2433 2434 157, 2435 0, 2436 2437 157, 2438 0, 2439 2440 157, 2441 0, 2442 2443 157, 2444 0, 2445 2446 157, 2447 0, 2448 2449 57, 2450 157, 2451 0, 2452 2453 157, 2454 0, 2455 2456 157, 2457 0, 2458 2459 157, 2460 0, 2461 2462 157, 2463 0, 2464 2465 157, 2466 0, 2467 2468 157, 2469 0, 2470 2471 157, 2472 0, 2473 2474 157, 2475 0, 2476 2477 157, 2478 0, 2479 2480 157, 2481 0, 2482 2483 157, 2484 0, 2485 2486 157, 2487 0, 2488 2489 157, 2490 0, 2491 2492 157, 2493 0, 2494 2495 157, 2496 0, 2497 2498 157, 2499 0, 2500 2501 86, 2502 164, 2503 0, 2504 2505 86, 2506 164, 2507 0, 2508 2509 80, 2510 0, 2511 2512 80, 2513 81, 2514 0, 2515 2516 1, 2517 79, 2518 0, 2519 2520 79, 2521 0, 2522 2523 3, 2524 79, 2525 0, 2526 2527 4, 2528 79, 2529 0, 2530 2531 79, 2532 0, 2533 2534 79, 2535 0, 2536 2537 79, 2538 0, 2539 2540 79, 2541 0, 2542 2543 79, 2544 0, 2545 2546 11, 2547 79, 2548 0, 2549 2550 12, 2551 79, 2552 0, 2553 2554 79, 2555 0, 2556 2557 79, 2558 0, 2559 2560 16, 2561 79, 2562 0, 2563 2564 79, 2565 0, 2566 2567 79, 2568 0, 2569 2570 21, 2571 79, 2572 0, 2573 2574 79, 2575 0, 2576 2577 79, 2578 0, 2579 2580 79, 2581 0, 2582 2583 79, 2584 0, 2585 2586 79, 2587 0, 2588 2589 79, 2590 0, 2591 2592 28, 2593 79, 2594 0, 2595 2596 79, 2597 0, 2598 2599 79, 2600 0, 2601 2602 79, 2603 0, 2604 2605 79, 2606 0, 2607 2608 79, 2609 0, 2610 2611 79, 2612 0, 2613 2614 79, 2615 0, 2616 2617 37, 2618 79, 2619 0, 2620 2621 79, 2622 0, 2623 2624 79, 2625 0, 2626 2627 79, 2628 0, 2629 2630 79, 2631 0, 2632 2633 79, 2634 0, 2635 2636 43, 2637 79, 2638 0, 2639 2640 79, 2641 0, 2642 2643 79, 2644 0, 2645 2646 79, 2647 0, 2648 2649 47, 2650 157, 2651 0, 2652 2653 48, 2654 157, 2655 0, 2656 2657 157, 2658 0, 2659 2660 157, 2661 0, 2662 2663 157, 2664 0, 2665 2666 52, 2667 157, 2668 0, 2669 2670 157, 2671 0, 2672 2673 157, 2674 0, 2675 2676 157, 2677 0, 2678 2679 157, 2680 0, 2681 2682 58, 2683 157, 2684 0, 2685 2686 157, 2687 0, 2688 2689 157, 2690 0, 2691 2692 157, 2693 0, 2694 2695 62, 2696 157, 2697 0, 2698 2699 157, 2700 0, 2701 2702 157, 2703 0, 2704 2705 157, 2706 0, 2707 2708 157, 2709 0, 2710 2711 157, 2712 0, 2713 2714 68, 2715 157, 2716 0, 2717 2718 157, 2719 0, 2720 2721 157, 2722 0, 2723 2724 157, 2725 0, 2726 2727 157, 2728 0, 2729 2730 73, 2731 157, 2732 0, 2733 2734 157, 2735 0, 2736 2737 2, 2738 79, 2739 0, 2740 2741 5, 2742 79, 2743 0, 2744 2745 79, 2746 0, 2747 2748 79, 2749 0, 2750 2751 79, 2752 0, 2753 2754 79, 2755 0, 2756 2757 79, 2758 0, 2759 2760 14, 2761 79, 2762 0, 2763 2764 79, 2765 0, 2766 2767 79, 2768 0, 2769 2770 79, 2771 0, 2772 2773 23, 2774 79, 2775 0, 2776 2777 79, 2778 0, 2779 2780 79, 2781 0, 2782 2783 79, 2784 0, 2785 2786 79, 2787 0, 2788 2789 29, 2790 79, 2791 0, 2792 2793 79, 2794 0, 2795 2796 79, 2797 0, 2798 2799 79, 2800 0, 2801 2802 79, 2803 0, 2804 2805 79, 2806 0, 2807 2808 79, 2809 0, 2810 2811 79, 2812 0, 2813 2814 79, 2815 0, 2816 2817 40, 2818 79, 2819 0, 2820 2821 79, 2822 0, 2823 2824 79, 2825 0, 2826 2827 79, 2828 0, 2829 2830 45, 2831 79, 2832 0, 2833 2834 46, 2835 79, 2836 0, 2837 2838 49, 2839 157, 2840 0, 2841 2842 157, 2843 0, 2844 2845 157, 2846 0, 2847 2848 157, 2849 0, 2850 2851 54, 2852 157, 2853 0, 2854 2855 157, 2856 0, 2857 2858 157, 2859 0, 2860 2861 157, 2862 0, 2863 2864 157, 2865 0, 2866 2867 157, 2868 0, 2869 2870 63, 2871 157, 2872 0, 2873 2874 157, 2875 0, 2876 2877 157, 2878 0, 2879 2880 157, 2881 0, 2882 2883 157, 2884 0, 2885 2886 157, 2887 0, 2888 2889 157, 2890 0, 2891 2892 71, 2893 157, 2894 0, 2895 2896 157, 2897 0, 2898 2899 157, 2900 0, 2901 2902 79, 2903 0, 2904 2905 79, 2906 0, 2907 2908 79, 2909 0, 2910 2911 10, 2912 79, 2913 0, 2914 2915 13, 2916 79, 2917 0, 2918 2919 18, 2920 79, 2921 0, 2922 2923 19, 2924 79, 2925 0, 2926 2927 79, 2928 0, 2929 2930 79, 2931 0, 2932 2933 79, 2934 0, 2935 2936 79, 2937 0, 2938 2939 27, 2940 79, 2941 0, 2942 2943 30, 2944 79, 2945 0, 2946 2947 31, 2948 79, 2949 0, 2950 2951 32, 2952 79, 2953 0, 2954 2955 33, 2956 79, 2957 0, 2958 2959 35, 2960 79, 2961 0, 2962 2963 36, 2964 79, 2965 0, 2966 2967 79, 2968 0, 2969 2970 79, 2971 0, 2972 2973 79, 2974 0, 2975 2976 79, 2977 0, 2978 2979 79, 2980 0, 2981 2982 157, 2983 0, 2984 2985 51, 2986 157, 2987 0, 2988 2989 53, 2990 157, 2991 0, 2992 2993 55, 2994 157, 2995 0, 2996 2997 56, 2998 157, 2999 0, 3000 3001 157, 3002 0, 3003 3004 157, 3005 0, 3006 3007 157, 3008 0, 3009 3010 64, 3011 157, 3012 0, 3013 3014 65, 3015 157, 3016 0, 3017 3018 66, 3019 157, 3020 0, 3021 3022 67, 3023 157, 3024 0, 3025 3026 157, 3027 0, 3028 3029 157, 3030 0, 3031 3032 157, 3033 0, 3034 3035 157, 3036 0, 3037 3038 79, 3039 0, 3040 3041 7, 3042 79, 3043 0, 3044 3045 8, 3046 79, 3047 0, 3048 3049 79, 3050 0, 3051 3052 79, 3053 0, 3054 3055 79, 3056 0, 3057 3058 79, 3059 0, 3060 3061 79, 3062 0, 3063 3064 79, 3065 0, 3066 3067 39, 3068 79, 3069 0, 3070 3071 79, 3072 0, 3073 3074 79, 3075 0, 3076 3077 79, 3078 0, 3079 3080 50, 3081 157, 3082 0, 3083 3084 157, 3085 0, 3086 3087 157, 3088 0, 3089 3090 157, 3091 0, 3092 3093 157, 3094 0, 3095 3096 70, 3097 157, 3098 0, 3099 3100 157, 3101 0, 3102 3103 157, 3104 0, 3105 3106 6, 3107 79, 3108 0, 3109 3110 22, 3111 79, 3112 0, 3113 3114 24, 3115 79, 3116 0, 3117 3118 25, 3119 79, 3120 0, 3121 3122 26, 3123 79, 3124 0, 3125 3126 34, 3127 79, 3128 0, 3129 3130 79, 3131 0, 3132 3133 41, 3134 79, 3135 0, 3136 3137 42, 3138 79, 3139 0, 3140 3141 44, 3142 79, 3143 0, 3144 3145 59, 3146 157, 3147 0, 3148 3149 60, 3150 157, 3151 0, 3152 3153 61, 3154 157, 3155 0, 3156 3157 157, 3158 0, 3159 3160 72, 3161 157, 3162 0, 3163 3164 74, 3165 157, 3166 0, 3167 3168 79, 3169 0, 3170 3171 157, 3172 0, 3173 3174 38, 3175 79, 3176 0, 3177 3178 69, 3179 157, 3180 0, 3181 0}; 3182 # define YYTYPE int 3183 struct yywork { YYTYPE verify, advance; } yycrank[] = { 3184 0,0, 0,0, 3,13, 0,0, 3185 0,0, 0,0, 0,0, 0,0, 3186 0,0, 0,0, 3,14, 3,15, 3187 41,146, 0,0, 3,14, 0,0, 3188 0,0, 0,0, 0,0, 0,0, 3189 0,0, 0,0, 0,0, 0,0, 3190 0,0, 0,0, 0,0, 0,0, 3191 0,0, 0,0, 0,0, 0,0, 3192 0,0, 0,0, 3,16, 3,17, 3193 67,186, 3,18, 3,19, 3,20, 3194 3,21, 3,22, 3,23, 3,24, 3195 3,25, 3,26, 3,27, 3,28, 3196 3,29, 3,30, 3,31, 3,31, 3197 3,31, 3,31, 3,31, 3,31, 3198 3,31, 3,31, 3,31, 3,32, 3199 3,33, 3,34, 3,35, 3,36, 3200 3,37, 3,38, 3,39, 16,105, 3201 6,69, 19,113, 12,103, 3,39, 3202 3,39, 6,70, 24,120, 34,137, 3203 34,138, 3,39, 35,139, 36,140, 3204 36,141, 43,147, 69,187, 70,188, 3205 20,114, 76,190, 3,39, 94,218, 3206 126,233, 3,39, 25,121, 29,128, 3207 3,40, 3,41, 3,42, 3,43, 3208 12,104, 3,39, 3,44, 3,45, 3209 3,46, 3,47, 3,48, 3,49, 3210 3,50, 4,66, 3,51, 20,115, 3211 25,122, 3,52, 29,129, 53,166, 3212 3,53, 3,54, 43,148, 3,55, 3213 3,56, 3,57, 3,58, 3,59, 3214 3,60, 3,61, 44,149, 45,150, 3215 3,62, 3,63, 3,64, 3,65, 3216 46,151, 50,161, 52,165, 4,67, 3217 4,18, 4,19, 4,20, 46,152, 3218 4,22, 4,23, 4,24, 4,25, 3219 4,26, 4,27, 46,153, 4,29, 3220 54,167, 4,31, 4,31, 4,31, 3221 4,31, 4,31, 4,31, 4,31, 3222 4,31, 4,31, 4,32, 4,33, 3223 4,34, 4,35, 4,36, 4,37, 3224 4,38, 10,100, 10,100, 10,100, 3225 10,100, 10,100, 10,100, 10,100, 3226 10,100, 10,100, 49,159, 55,168, 3227 59,179, 49,160, 28,126, 27,123, 3228 28,127, 28,127, 28,127, 28,127, 3229 28,127, 28,127, 28,127, 28,127, 3230 28,127, 28,127, 60,180, 4,40, 3231 61,181, 4,42, 4,43, 27,124, 3232 27,125, 4,44, 4,45, 4,46, 3233 4,47, 4,48, 4,49, 4,50, 3234 58,177, 4,51, 63,182, 79,195, 3235 4,52, 58,178, 81,198, 4,53, 3236 4,54, 83,201, 4,55, 4,56, 3237 4,57, 4,58, 4,59, 4,60, 3238 4,61, 5,68, 47,154, 4,62, 3239 4,63, 4,64, 4,65, 85,204, 3240 80,196, 5,68, 5,68, 51,162, 3241 47,155, 5,68, 48,156, 80,197, 3242 48,157, 56,169, 51,163, 51,164, 3243 56,170, 56,171, 84,202, 84,203, 3244 86,205, 87,206, 48,158, 57,174, 3245 66,184, 90,214, 66,184, 66,184, 3246 56,172, 5,68, 5,68, 56,173, 3247 91,215, 57,175, 137,239, 5,68, 3248 82,199, 134,236, 5,69, 89,211, 3249 57,176, 109,0, 5,68, 5,70, 3250 5,68, 63,183, 82,200, 66,184, 3251 88,207, 89,212, 66,185, 88,208, 3252 88,209, 119,0, 135,237, 141,240, 3253 89,213, 93,216, 149,244, 93,216, 3254 93,216, 5,68, 7,71, 88,210, 3255 150,245, 109,106, 5,68, 5,68, 3256 151,246, 134,236, 7,72, 7,73, 3257 5,68, 96,220, 7,72, 96,220, 3258 96,220, 152,247, 153,248, 154,250, 3259 93,216, 5,68, 119,116, 93,217, 3260 5,68, 153,249, 135,237, 155,251, 3261 5,68, 156,252, 157,253, 158,254, 3262 5,68, 159,255, 7,74, 7,71, 3263 96,220, 160,256, 161,257, 103,229, 3264 7,71, 103,229, 103,229, 163,258, 3265 165,261, 7,75, 166,262, 7,74, 3266 7,76, 7,77, 7,78, 7,78, 3267 7,78, 7,78, 7,78, 7,78, 3268 7,78, 7,78, 7,78, 164,259, 3269 167,263, 168,264, 103,229, 109,106, 3270 169,267, 103,230, 7,74, 164,260, 3271 170,268, 171,269, 172,271, 7,74, 3272 7,74, 168,265, 168,266, 119,116, 3273 173,273, 7,74, 174,274, 175,275, 3274 176,276, 177,277, 178,279, 180,282, 3275 181,283, 8,93, 7,74, 172,272, 3276 171,270, 7,74, 192,284, 177,278, 3277 179,280, 7,74, 195,286, 179,281, 3278 196,287, 7,71, 7,79, 198,290, 3279 7,80, 7,81, 7,82, 7,83, 3280 193,192, 197,288, 7,84, 199,291, 3281 200,292, 7,85, 201,293, 8,94, 3282 197,289, 7,86, 202,294, 7,87, 3283 7,88, 7,89, 7,90, 7,91, 3284 8,75, 204,297, 192,284, 8,76, 3285 7,92, 8,78, 8,78, 8,78, 3286 8,78, 8,78, 8,78, 8,78, 3287 8,78, 8,78, 205,298, 207,301, 3288 193,192, 78,191, 78,191, 78,191, 3289 78,191, 78,191, 78,191, 78,191, 3290 78,191, 78,191, 78,191, 111,111, 3291 111,111, 111,111, 111,111, 111,111, 3292 111,111, 111,111, 111,111, 111,111, 3293 111,111, 206,299, 203,295, 208,302, 3294 209,303, 211,306, 212,307, 213,308, 3295 215,311, 78,192, 203,296, 215,312, 3296 210,304, 206,300, 244,317, 9,95, 3297 214,309, 8,79, 78,193, 8,80, 3298 8,81, 8,82, 8,83, 9,96, 3299 9,97, 8,84, 214,310, 9,95, 3300 8,85, 210,305, 224,0, 245,318, 3301 8,86, 246,319, 8,87, 8,88, 3302 8,89, 8,90, 8,91, 247,320, 3303 249,323, 78,192, 250,324, 8,92, 3304 248,321, 248,322, 251,325, 9,95, 3305 9,98, 11,101, 78,193, 252,326, 3306 253,327, 9,95, 224,221, 254,328, 3307 255,329, 11,101, 11,102, 257,330, 3308 9,95, 11,101, 9,99, 9,100, 3309 9,100, 9,100, 9,100, 9,100, 3310 9,100, 9,100, 9,100, 9,100, 3311 258,331, 259,332, 261,333, 99,0, 3312 99,0, 99,0, 99,0, 9,95, 3313 262,334, 11,101, 11,101, 17,106, 3314 9,95, 9,95, 264,337, 11,101, 3315 263,335, 265,338, 9,95, 17,106, 3316 17,107, 266,339, 11,101, 17,106, 3317 11,101, 235,133, 99,0, 9,95, 3318 99,0, 267,340, 9,95, 235,133, 3319 268,341, 269,342, 9,95, 270,343, 3320 263,336, 271,344, 9,95, 273,347, 3321 224,221, 11,101, 99,225, 17,106, 3322 17,108, 274,348, 11,101, 11,101, 3323 275,349, 17,106, 272,345, 238,237, 3324 11,101, 276,350, 277,351, 278,352, 3325 17,106, 235,133, 17,106, 279,353, 3326 238,135, 11,101, 272,346, 235,133, 3327 11,101, 280,354, 281,355, 282,356, 3328 11,101, 283,357, 99,226, 286,358, 3329 11,101, 287,359, 288,360, 17,106, 3330 289,361, 290,362, 291,363, 99,227, 3331 17,106, 17,106, 99,228, 238,237, 3332 292,364, 293,365, 17,106, 294,366, 3333 295,367, 297,368, 298,369, 299,370, 3334 238,135, 300,371, 301,372, 17,106, 3335 18,110, 302,373, 17,106, 303,374, 3336 304,375, 306,378, 17,109, 307,379, 3337 308,380, 309,381, 17,106, 305,376, 3338 18,111, 18,111, 18,111, 18,111, 3339 18,111, 18,111, 18,111, 18,111, 3340 18,111, 18,111, 310,382, 305,377, 3341 311,383, 312,384, 318,385, 321,386, 3342 322,387, 18,112, 18,112, 18,112, 3343 18,112, 18,112, 18,112, 18,112, 3344 18,112, 18,112, 18,112, 18,112, 3345 18,112, 18,112, 18,112, 18,112, 3346 18,112, 18,112, 18,112, 18,112, 3347 18,112, 18,112, 18,112, 18,112, 3348 18,112, 18,112, 18,112, 323,388, 3349 324,389, 325,390, 328,391, 18,112, 3350 18,112, 18,112, 18,112, 18,112, 3351 18,112, 18,112, 18,112, 18,112, 3352 18,112, 18,112, 18,112, 18,112, 3353 18,112, 18,112, 18,112, 18,112, 3354 18,112, 18,112, 18,112, 18,112, 3355 18,112, 18,112, 18,112, 18,112, 3356 18,112, 18,112, 18,112, 21,116, 3357 100,0, 100,0, 100,0, 100,0, 3358 329,392, 331,393, 332,394, 21,116, 3359 21,117, 334,395, 30,130, 21,116, 3360 30,131, 30,131, 30,131, 30,131, 3361 30,131, 30,131, 30,131, 30,131, 3362 30,131, 30,131, 335,396, 100,0, 3363 336,397, 100,0, 337,398, 338,399, 3364 339,400, 341,401, 342,402, 21,116, 3365 21,116, 30,132, 30,133, 343,403, 3366 344,404, 21,118, 285,192, 100,225, 3367 30,134, 345,405, 346,406, 347,407, 3368 21,116, 349,408, 21,116, 285,193, 3369 350,409, 30,135, 351,410, 352,411, 3370 30,136, 130,130, 130,130, 130,130, 3371 130,130, 130,130, 130,130, 130,130, 3372 130,130, 130,130, 130,130, 21,116, 3373 353,412, 30,132, 30,133, 100,226, 3374 21,116, 21,116, 285,192, 355,413, 3375 30,134, 356,414, 21,116, 357,415, 3376 100,227, 360,416, 361,417, 285,193, 3377 362,418, 30,135, 364,419, 21,116, 3378 30,136, 365,420, 21,116, 366,421, 3379 367,422, 369,423, 21,119, 370,424, 3380 371,425, 31,130, 21,116, 31,131, 3381 31,131, 31,131, 31,131, 31,131, 3382 31,131, 31,131, 31,131, 31,131, 3383 31,131, 142,142, 142,142, 142,142, 3384 142,142, 142,142, 142,142, 142,142, 3385 142,142, 142,142, 142,142, 373,426, 3386 31,132, 31,133, 374,427, 375,428, 3387 376,429, 377,430, 379,431, 31,134, 3388 380,432, 381,433, 382,434, 384,435, 3389 132,234, 387,436, 132,234, 388,437, 3390 31,135, 132,235, 132,235, 132,235, 3391 132,235, 132,235, 132,235, 132,235, 3392 132,235, 132,235, 132,235, 389,438, 3393 390,439, 391,440, 393,441, 394,442, 3394 31,132, 31,133, 395,443, 397,444, 3395 398,445, 399,446, 400,447, 31,134, 3396 402,448, 403,449, 404,450, 405,451, 3397 406,452, 407,453, 408,454, 409,455, 3398 31,135, 38,142, 38,142, 38,142, 3399 38,142, 38,142, 38,142, 38,142, 3400 38,142, 38,142, 38,142, 38,142, 3401 38,142, 38,142, 38,142, 38,142, 3402 38,142, 38,142, 38,142, 38,142, 3403 38,142, 38,142, 38,142, 38,142, 3404 38,142, 38,142, 38,142, 411,456, 3405 412,457, 413,458, 417,459, 38,142, 3406 418,460, 38,142, 38,142, 38,142, 3407 38,142, 38,142, 38,142, 38,142, 3408 38,142, 38,142, 38,142, 38,142, 3409 38,142, 38,142, 38,142, 38,142, 3410 38,142, 38,142, 38,142, 38,142, 3411 38,142, 38,142, 38,142, 38,142, 3412 38,142, 38,142, 38,142, 39,143, 3413 419,461, 39,144, 39,144, 39,144, 3414 39,144, 39,144, 39,144, 39,144, 3415 39,144, 39,144, 39,144, 421,462, 3416 422,463, 423,464, 424,465, 425,466, 3417 427,467, 428,468, 39,144, 39,144, 3418 39,144, 39,144, 39,144, 39,144, 3419 39,144, 39,144, 39,144, 39,144, 3420 39,144, 39,144, 39,144, 39,144, 3421 39,144, 39,144, 39,144, 39,144, 3422 39,144, 39,144, 39,144, 39,144, 3423 39,144, 39,144, 39,144, 39,144, 3424 429,469, 430,470, 431,471, 432,472, 3425 39,144, 39,145, 39,144, 39,144, 3426 39,144, 39,144, 39,144, 39,144, 3427 39,144, 39,144, 39,144, 39,144, 3428 39,144, 39,144, 39,144, 39,144, 3429 39,144, 39,144, 39,144, 39,144, 3430 39,144, 39,144, 39,144, 39,144, 3431 39,144, 39,144, 39,144, 39,144, 3432 74,189, 434,473, 435,474, 74,189, 3433 219,0, 219,0, 219,0, 219,0, 3434 436,475, 74,189, 437,476, 438,477, 3435 74,189, 74,189, 443,478, 74,189, 3436 74,189, 74,189, 74,189, 74,189, 3437 74,189, 74,189, 74,189, 74,189, 3438 74,189, 74,189, 444,479, 219,0, 3439 445,480, 219,0, 74,189, 446,481, 3440 74,189, 74,189, 74,189, 74,189, 3441 74,189, 74,189, 74,189, 74,189, 3442 74,189, 74,189, 74,189, 74,189, 3443 74,189, 74,189, 74,189, 74,189, 3444 74,189, 74,189, 74,189, 74,189, 3445 74,189, 74,189, 74,189, 74,189, 3446 74,189, 74,189, 74,189, 74,189, 3447 74,189, 451,482, 74,189, 74,189, 3448 74,189, 74,189, 74,189, 74,189, 3449 74,189, 74,189, 74,189, 74,189, 3450 74,189, 74,189, 74,189, 74,189, 3451 74,189, 74,189, 74,189, 74,189, 3452 74,189, 74,189, 74,189, 74,189, 3453 74,189, 74,189, 74,189, 74,189, 3454 74,189, 74,189, 77,191, 77,191, 3455 77,191, 77,191, 77,191, 77,191, 3456 77,191, 77,191, 77,191, 77,191, 3457 95,219, 225,0, 225,0, 225,0, 3458 225,0, 454,483, 455,484, 456,485, 3459 95,0, 95,0, 95,0, 95,0, 3460 95,219, 457,486, 313,0, 313,0, 3461 313,0, 313,0, 77,192, 458,487, 3462 459,488, 464,489, 465,490, 466,491, 3463 225,0, 471,492, 225,0, 77,193, 3464 472,493, 473,494, 77,194, 95,0, 3465 95,219, 95,0, 98,221, 474,495, 3466 475,496, 313,0, 95,219, 313,0, 3467 225,225, 478,497, 98,221, 98,222, 3468 479,498, 95,219, 98,221, 95,219, 3469 480,499, 481,500, 77,192, 482,501, 3470 483,502, 226,0, 226,0, 226,0, 3471 226,0, 485,503, 486,504, 77,193, 3472 487,505, 489,506, 77,194, 490,507, 3473 95,219, 491,508, 98,221, 98,223, 3474 225,226, 95,219, 95,219, 492,509, 3475 98,221, 494,510, 495,511, 95,219, 3476 226,0, 225,227, 226,0, 98,221, 3477 502,512, 98,221, 509,513, 512,514, 3478 95,219, 513,515, 0,0, 95,219, 3479 0,0, 0,0, 0,0, 95,219, 3480 0,0, 0,0, 0,0, 95,219, 3481 0,0, 0,0, 98,221, 0,0, 3482 0,0, 0,0, 0,0, 98,221, 3483 98,221, 0,0, 0,0, 0,0, 3484 0,0, 98,221, 0,0, 0,0, 3485 0,0, 0,0, 0,0, 0,0, 3486 0,0, 0,0, 98,221, 0,0, 3487 226,313, 98,221, 0,0, 0,0, 3488 0,0, 98,224, 0,0, 0,0, 3489 0,0, 98,221, 110,231, 110,231, 3490 110,231, 110,231, 110,231, 110,231, 3491 110,231, 110,231, 110,231, 110,231, 3492 0,0, 0,0, 0,0, 0,0, 3493 0,0, 0,0, 0,0, 110,232, 3494 110,232, 110,232, 110,232, 110,232, 3495 110,232, 110,232, 110,232, 110,232, 3496 110,232, 110,232, 110,232, 110,232, 3497 110,232, 110,232, 110,232, 110,232, 3498 110,232, 110,232, 110,232, 110,232, 3499 110,232, 110,232, 110,232, 110,232, 3500 110,232, 0,0, 0,0, 0,0, 3501 0,0, 110,232, 110,232, 110,232, 3502 110,232, 110,232, 110,232, 110,232, 3503 110,232, 110,232, 110,232, 110,232, 3504 110,232, 110,232, 110,232, 110,232, 3505 110,232, 110,232, 110,232, 110,232, 3506 110,232, 110,232, 110,232, 110,232, 3507 110,232, 110,232, 110,232, 110,232, 3508 110,232, 112,112, 112,112, 112,112, 3509 112,112, 112,112, 112,112, 112,112, 3510 112,112, 112,112, 112,112, 0,0, 3511 0,0, 0,0, 0,0, 0,0, 3512 0,0, 0,0, 112,112, 112,112, 3513 112,112, 112,112, 112,112, 112,112, 3514 112,112, 112,112, 112,112, 112,112, 3515 112,112, 112,112, 112,112, 112,112, 3516 112,112, 112,112, 112,112, 112,112, 3517 112,112, 112,112, 112,112, 112,112, 3518 112,112, 112,112, 112,112, 112,112, 3519 0,0, 0,0, 0,0, 0,0, 3520 112,112, 112,112, 112,112, 112,112, 3521 112,112, 112,112, 112,112, 112,112, 3522 112,112, 112,112, 112,112, 112,112, 3523 112,112, 112,112, 112,112, 112,112, 3524 112,112, 112,112, 112,112, 112,112, 3525 112,112, 112,112, 112,112, 112,112, 3526 112,112, 112,112, 112,112, 112,112, 3527 127,127, 127,127, 127,127, 127,127, 3528 127,127, 127,127, 127,127, 127,127, 3529 127,127, 127,127, 231,231, 231,231, 3530 231,231, 231,231, 231,231, 231,231, 3531 231,231, 231,231, 231,231, 231,231, 3532 0,0, 127,132, 127,133, 0,0, 3533 0,0, 0,0, 0,0, 0,0, 3534 127,133, 136,238, 136,238, 136,238, 3535 136,238, 136,238, 136,238, 136,238, 3536 136,238, 136,238, 136,238, 0,0, 3537 0,0, 0,0, 0,0, 0,0, 3538 0,0, 0,0, 136,238, 136,238, 3539 136,238, 136,238, 136,238, 136,238, 3540 0,0, 127,132, 127,133, 0,0, 3541 0,0, 0,0, 0,0, 0,0, 3542 127,133, 0,0, 0,0, 0,0, 3543 0,0, 0,0, 0,0, 143,143, 3544 143,143, 143,143, 143,143, 143,143, 3545 143,143, 143,143, 143,143, 143,143, 3546 143,143, 0,0, 136,238, 136,238, 3547 136,238, 136,238, 136,238, 136,238, 3548 143,143, 143,143, 143,143, 143,143, 3549 143,143, 143,143, 143,143, 143,143, 3550 143,143, 143,143, 143,143, 143,143, 3551 143,143, 143,143, 143,143, 143,143, 3552 143,143, 143,143, 143,143, 143,143, 3553 143,143, 143,143, 143,143, 143,143, 3554 143,143, 143,143, 0,0, 0,0, 3555 0,0, 0,0, 143,143, 143,241, 3556 143,143, 143,143, 143,143, 143,143, 3557 143,143, 143,143, 143,143, 143,143, 3558 143,143, 143,143, 143,143, 143,143, 3559 143,143, 143,143, 143,143, 143,143, 3560 143,143, 143,143, 143,143, 143,143, 3561 143,143, 143,143, 143,143, 143,143, 3562 143,143, 143,143, 145,242, 145,242, 3563 145,242, 145,242, 145,242, 145,242, 3564 145,242, 145,242, 145,242, 145,242, 3565 145,242, 145,242, 145,242, 145,242, 3566 145,242, 145,242, 145,242, 145,242, 3567 145,242, 145,242, 145,242, 145,242, 3568 145,242, 145,242, 145,242, 145,242, 3569 0,0, 0,0, 0,0, 0,0, 3570 145,242, 145,243, 145,242, 145,242, 3571 145,242, 145,242, 145,242, 145,242, 3572 145,242, 145,242, 145,242, 145,242, 3573 145,242, 145,242, 145,242, 145,242, 3574 145,242, 145,242, 145,242, 145,242, 3575 145,242, 145,242, 145,242, 145,242, 3576 145,242, 145,242, 145,242, 145,242, 3577 186,186, 227,0, 227,0, 227,0, 3578 227,0, 0,0, 0,0, 0,0, 3579 186,186, 186,0, 0,0, 0,0, 3580 186,186, 0,0, 0,0, 0,0, 3581 228,0, 228,0, 228,0, 228,0, 3582 0,0, 0,0, 0,0, 0,0, 3583 227,0, 0,0, 227,0, 0,0, 3584 0,0, 0,0, 0,0, 0,0, 3585 186,186, 186,186, 0,0, 0,0, 3586 0,0, 0,0, 186,186, 228,0, 3587 0,0, 228,0, 0,0, 0,0, 3588 0,0, 186,186, 0,0, 186,186, 3589 0,0, 0,0, 0,0, 0,0, 3590 0,0, 0,0, 0,0, 228,314, 3591 0,0, 0,0, 0,0, 0,0, 3592 0,0, 0,0, 0,0, 0,0, 3593 186,186, 0,0, 0,0, 0,0, 3594 227,226, 186,186, 186,186, 0,0, 3595 228,314, 0,0, 0,0, 186,186, 3596 0,0, 228,314, 0,0, 0,0, 3597 0,0, 0,0, 0,0, 0,0, 3598 186,186, 0,0, 0,0, 186,186, 3599 0,0, 0,0, 0,0, 186,186, 3600 0,0, 0,0, 0,0, 186,186, 3601 194,285, 194,285, 194,285, 194,285, 3602 194,285, 194,285, 194,285, 194,285, 3603 194,285, 194,285, 0,0, 0,0, 3604 0,0, 0,0, 0,0, 0,0, 3605 0,0, 194,285, 194,285, 194,285, 3606 194,285, 194,285, 194,285, 218,218, 3607 0,0, 0,0, 0,0, 0,0, 3608 0,0, 0,0, 0,0, 218,218, 3609 218,0, 0,0, 0,0, 218,218, 3610 232,232, 232,232, 232,232, 232,232, 3611 232,232, 232,232, 232,232, 232,232, 3612 232,232, 232,232, 0,0, 0,0, 3613 0,0, 194,285, 194,285, 194,285, 3614 194,285, 194,285, 194,285, 218,218, 3615 218,218, 0,0, 0,0, 0,0, 3616 0,0, 218,218, 0,0, 0,0, 3617 0,0, 0,0, 0,0, 0,0, 3618 218,218, 0,0, 218,218, 234,235, 3619 234,235, 234,235, 234,235, 234,235, 3620 234,235, 234,235, 234,235, 234,235, 3621 234,235, 0,0, 0,0, 0,0, 3622 0,0, 0,0, 0,0, 218,218, 3623 0,0, 0,0, 0,0, 0,0, 3624 218,218, 218,218, 0,0, 0,0, 3625 0,0, 0,0, 218,218, 0,0, 3626 0,0, 0,0, 0,0, 0,0, 3627 0,0, 0,0, 0,0, 218,218, 3628 0,0, 0,0, 218,218, 0,0, 3629 0,0, 0,0, 218,218, 0,0, 3630 0,0, 0,0, 218,218, 241,143, 3631 241,143, 241,143, 241,143, 241,143, 3632 241,143, 241,143, 241,143, 241,143, 3633 241,143, 0,0, 0,0, 0,0, 3634 0,0, 0,0, 0,0, 0,0, 3635 241,315, 241,315, 241,315, 241,315, 3636 241,315, 241,315, 241,315, 241,315, 3637 241,315, 241,315, 241,315, 241,315, 3638 241,315, 241,315, 241,315, 241,315, 3639 241,315, 241,315, 241,315, 241,315, 3640 241,315, 241,315, 241,315, 241,315, 3641 241,315, 241,315, 0,0, 0,0, 3642 0,0, 0,0, 241,315, 241,316, 3643 241,315, 241,315, 241,315, 241,315, 3644 241,315, 241,315, 241,315, 241,315, 3645 241,315, 241,315, 241,315, 241,315, 3646 241,315, 241,315, 241,315, 241,315, 3647 241,315, 241,315, 241,315, 241,315, 3648 241,315, 241,315, 241,315, 241,315, 3649 241,315, 241,315, 242,242, 242,242, 3650 242,242, 242,242, 242,242, 242,242, 3651 242,242, 242,242, 242,242, 242,242, 3652 0,0, 0,0, 0,0, 0,0, 3653 0,0, 0,0, 0,0, 242,242, 3654 242,242, 242,242, 242,242, 242,242, 3655 242,242, 242,242, 242,242, 242,242, 3656 242,242, 242,242, 242,242, 242,242, 3657 242,242, 242,242, 242,242, 242,242, 3658 242,242, 242,242, 242,242, 242,242, 3659 242,242, 242,242, 242,242, 242,242, 3660 242,242, 0,0, 0,0, 0,0, 3661 0,0, 242,242, 242,243, 242,242, 3662 242,242, 242,242, 242,242, 242,242, 3663 242,242, 242,242, 242,242, 242,242, 3664 242,242, 242,242, 242,242, 242,242, 3665 242,242, 242,242, 242,242, 242,242, 3666 242,242, 242,242, 242,242, 242,242, 3667 242,242, 242,242, 242,242, 242,242, 3668 242,242, 243,242, 243,242, 243,242, 3669 243,242, 243,242, 243,242, 243,242, 3670 243,242, 243,242, 243,242, 0,0, 3671 0,0, 0,0, 0,0, 0,0, 3672 0,0, 0,0, 243,242, 243,242, 3673 243,242, 243,242, 243,242, 243,242, 3674 243,242, 243,242, 243,242, 243,242, 3675 243,242, 243,242, 243,242, 243,242, 3676 243,242, 243,242, 243,242, 243,242, 3677 243,242, 243,242, 243,242, 243,242, 3678 243,242, 243,242, 243,242, 243,242, 3679 0,0, 0,0, 0,0, 0,0, 3680 243,242, 243,243, 243,242, 243,242, 3681 243,242, 243,242, 243,242, 243,242, 3682 243,242, 243,242, 243,242, 243,242, 3683 243,242, 243,242, 243,242, 243,242, 3684 243,242, 243,242, 243,242, 243,242, 3685 243,242, 243,242, 243,242, 243,242, 3686 243,242, 243,242, 243,242, 243,242, 3687 314,0, 314,0, 314,0, 314,0, 3688 0,0, 0,0, 0,0, 0,0, 3689 0,0, 0,0, 0,0, 0,0, 3690 0,0, 0,0, 0,0, 0,0, 3691 0,0, 0,0, 0,0, 0,0, 3692 0,0, 0,0, 0,0, 314,0, 3693 0,0, 314,0, 0,0, 0,0, 3694 0,0, 0,0, 0,0, 0,0, 3695 0,0, 0,0, 0,0, 0,0, 3696 0,0, 0,0, 0,0, 314,314, 3697 0,0, 0,0, 0,0, 0,0, 3698 0,0, 0,0, 0,0, 0,0, 3699 0,0, 0,0, 0,0, 0,0, 3700 0,0, 0,0, 0,0, 0,0, 3701 314,314, 0,0, 0,0, 0,0, 3702 0,0, 314,314, 0,0, 0,0, 3703 0,0, 0,0, 0,0, 314,226, 3704 0,0, 0,0, 0,0, 0,0, 3705 0,0, 0,0, 0,0, 0,0, 3706 314,227, 315,315, 315,315, 315,315, 3707 315,315, 315,315, 315,315, 315,315, 3708 315,315, 315,315, 315,315, 0,0, 3709 0,0, 0,0, 0,0, 0,0, 3710 0,0, 0,0, 315,315, 315,315, 3711 315,315, 315,315, 315,315, 315,315, 3712 315,315, 315,315, 315,315, 315,315, 3713 315,315, 315,315, 315,315, 315,315, 3714 315,315, 315,315, 315,315, 315,315, 3715 315,315, 315,315, 315,315, 315,315, 3716 315,315, 315,315, 315,315, 315,315, 3717 0,0, 0,0, 0,0, 0,0, 3718 315,315, 315,316, 315,315, 315,315, 3719 315,315, 315,315, 315,315, 315,315, 3720 315,315, 315,315, 315,315, 315,315, 3721 315,315, 315,315, 315,315, 315,315, 3722 315,315, 315,315, 315,315, 315,315, 3723 315,315, 315,315, 315,315, 315,315, 3724 315,315, 315,315, 315,315, 315,315, 3725 316,315, 316,315, 316,315, 316,315, 3726 316,315, 316,315, 316,315, 316,315, 3727 316,315, 316,315, 0,0, 0,0, 3728 0,0, 0,0, 0,0, 0,0, 3729 0,0, 316,315, 316,315, 316,315, 3730 316,315, 316,315, 316,315, 316,315, 3731 316,315, 316,315, 316,315, 316,315, 3732 316,315, 316,315, 316,315, 316,315, 3733 316,315, 316,315, 316,315, 316,315, 3734 316,315, 316,315, 316,315, 316,315, 3735 316,315, 316,315, 316,315, 0,0, 3736 0,0, 0,0, 0,0, 316,315, 3737 316,316, 316,315, 316,315, 316,315, 3738 316,315, 316,315, 316,315, 316,315, 3739 316,315, 316,315, 316,315, 316,315, 3740 316,315, 316,315, 316,315, 316,315, 3741 316,315, 316,315, 316,315, 316,315, 3742 316,315, 316,315, 316,315, 316,315, 3743 316,315, 316,315, 316,315, 0,0, 3744 0,0}; 3745 struct yysvf yysvec[] = { 3746 0, 0, 0, 3747 yycrank+0, 0, 0, 3748 yycrank+0, 0, 0, 3749 yycrank+-1, 0, 0, 3750 yycrank+-96, yysvec+3, 0, 3751 yycrank+-216, 0, 0, 3752 yycrank+-26, yysvec+5, 0, 3753 yycrank+-281, 0, 0, 3754 yycrank+-356, yysvec+7, 0, 3755 yycrank+-450, 0, 0, 3756 yycrank+-112, yysvec+9, 0, 3757 yycrank+-484, 0, 0, 3758 yycrank+-61, yysvec+11, 0, 3759 yycrank+0, 0, yyvstop+1, 3760 yycrank+0, 0, yyvstop+3, 3761 yycrank+0, 0, yyvstop+6, 3762 yycrank+6, 0, yyvstop+8, 3763 yycrank+-518, 0, yyvstop+11, 3764 yycrank+568, 0, yyvstop+14, 3765 yycrank+8, 0, yyvstop+16, 3766 yycrank+46, 0, yyvstop+19, 3767 yycrank+-690, 0, yyvstop+22, 3768 yycrank+0, 0, yyvstop+25, 3769 yycrank+0, 0, yyvstop+28, 3770 yycrank+13, 0, yyvstop+31, 3771 yycrank+47, 0, yyvstop+34, 3772 yycrank+0, 0, yyvstop+37, 3773 yycrank+130, 0, yyvstop+40, 3774 yycrank+128, 0, yyvstop+43, 3775 yycrank+49, 0, yyvstop+46, 3776 yycrank+656, 0, yyvstop+49, 3777 yycrank+739, 0, yyvstop+53, 3778 yycrank+0, 0, yyvstop+57, 3779 yycrank+0, 0, yyvstop+60, 3780 yycrank+15, 0, yyvstop+63, 3781 yycrank+17, 0, yyvstop+66, 3782 yycrank+18, 0, yyvstop+69, 3783 yycrank+0, 0, yyvstop+72, 3784 yycrank+792, 0, yyvstop+75, 3785 yycrank+869, 0, yyvstop+78, 3786 yycrank+0, 0, yyvstop+81, 3787 yycrank+2, 0, yyvstop+84, 3788 yycrank+0, 0, yyvstop+86, 3789 yycrank+20, 0, yyvstop+89, 3790 yycrank+5, yysvec+39, yyvstop+92, 3791 yycrank+9, yysvec+39, yyvstop+95, 3792 yycrank+31, yysvec+39, yyvstop+98, 3793 yycrank+117, yysvec+39, yyvstop+101, 3794 yycrank+122, yysvec+39, yyvstop+104, 3795 yycrank+62, yysvec+39, yyvstop+107, 3796 yycrank+18, yysvec+39, yyvstop+110, 3797 yycrank+125, yysvec+39, yyvstop+113, 3798 yycrank+19, yysvec+39, yyvstop+116, 3799 yycrank+9, yysvec+39, yyvstop+119, 3800 yycrank+30, yysvec+39, yyvstop+122, 3801 yycrank+70, yysvec+39, yyvstop+125, 3802 yycrank+132, yysvec+39, yyvstop+128, 3803 yycrank+139, yysvec+39, yyvstop+131, 3804 yycrank+90, yysvec+39, yyvstop+134, 3805 yycrank+61, yysvec+39, yyvstop+137, 3806 yycrank+82, yysvec+39, yyvstop+140, 3807 yycrank+80, yysvec+39, yyvstop+143, 3808 yycrank+0, 0, yyvstop+146, 3809 yycrank+141, 0, yyvstop+149, 3810 yycrank+0, 0, yyvstop+152, 3811 yycrank+0, 0, yyvstop+155, 3812 yycrank+235, 0, yyvstop+158, 3813 yycrank+3, 0, yyvstop+161, 3814 yycrank+0, 0, yyvstop+164, 3815 yycrank+35, 0, yyvstop+166, 3816 yycrank+41, 0, yyvstop+168, 3817 yycrank+0, 0, yyvstop+170, 3818 yycrank+0, 0, yyvstop+172, 3819 yycrank+0, 0, yyvstop+175, 3820 yycrank+959, 0, yyvstop+177, 3821 yycrank+0, 0, yyvstop+180, 3822 yycrank+43, 0, yyvstop+183, 3823 yycrank+1034, 0, yyvstop+186, 3824 yycrank+369, 0, yyvstop+189, 3825 yycrank+86, yysvec+74, yyvstop+192, 3826 yycrank+120, yysvec+74, yyvstop+195, 3827 yycrank+95, yysvec+74, yyvstop+198, 3828 yycrank+146, yysvec+74, yyvstop+201, 3829 yycrank+101, yysvec+74, yyvstop+204, 3830 yycrank+129, yysvec+74, yyvstop+207, 3831 yycrank+112, yysvec+74, yyvstop+210, 3832 yycrank+126, yysvec+74, yyvstop+213, 3833 yycrank+140, yysvec+74, yyvstop+216, 3834 yycrank+167, yysvec+74, yyvstop+219, 3835 yycrank+155, yysvec+74, yyvstop+222, 3836 yycrank+135, yysvec+74, yyvstop+225, 3837 yycrank+141, yysvec+74, yyvstop+228, 3838 yycrank+0, 0, yyvstop+231, 3839 yycrank+268, 0, yyvstop+234, 3840 yycrank+54, 0, yyvstop+237, 3841 yycrank+-1091, 0, yyvstop+240, 3842 yycrank+284, 0, yyvstop+243, 3843 yycrank+0, 0, yyvstop+246, 3844 yycrank+-1125, 0, yyvstop+248, 3845 yycrank+-502, yysvec+95, yyvstop+251, 3846 yycrank+-683, yysvec+95, yyvstop+255, 3847 yycrank+0, 0, yyvstop+259, 3848 yycrank+0, 0, yyvstop+261, 3849 yycrank+310, 0, yyvstop+263, 3850 yycrank+0, 0, yyvstop+265, 3851 yycrank+0, 0, yyvstop+268, 3852 yycrank+0, yysvec+17, yyvstop+270, 3853 yycrank+0, 0, yyvstop+272, 3854 yycrank+0, 0, yyvstop+274, 3855 yycrank+-251, yysvec+17, 0, 3856 yycrank+1174, 0, 0, 3857 yycrank+379, 0, yyvstop+276, 3858 yycrank+1249, 0, yyvstop+278, 3859 yycrank+0, 0, yyvstop+280, 3860 yycrank+0, 0, yyvstop+282, 3861 yycrank+0, 0, yyvstop+284, 3862 yycrank+0, yysvec+21, yyvstop+286, 3863 yycrank+0, 0, yyvstop+288, 3864 yycrank+0, 0, yyvstop+290, 3865 yycrank+-263, yysvec+21, 0, 3866 yycrank+0, 0, yyvstop+292, 3867 yycrank+0, 0, yyvstop+294, 3868 yycrank+0, 0, yyvstop+296, 3869 yycrank+0, 0, yyvstop+298, 3870 yycrank+0, 0, yyvstop+300, 3871 yycrank+0, 0, yyvstop+302, 3872 yycrank+42, 0, 0, 3873 yycrank+1324, 0, yyvstop+304, 3874 yycrank+0, 0, yyvstop+306, 3875 yycrank+0, 0, yyvstop+308, 3876 yycrank+697, yysvec+127, yyvstop+310, 3877 yycrank+0, yysvec+31, yyvstop+312, 3878 yycrank+777, 0, 0, 3879 yycrank+0, 0, yyvstop+315, 3880 yycrank+181, 0, yyvstop+317, 3881 yycrank+198, 0, yyvstop+320, 3882 yycrank+1353, 0, 0, 3883 yycrank+193, 0, yyvstop+322, 3884 yycrank+0, 0, yyvstop+324, 3885 yycrank+0, 0, yyvstop+326, 3886 yycrank+0, 0, yyvstop+328, 3887 yycrank+214, 0, yyvstop+330, 3888 yycrank+749, yysvec+38, yyvstop+332, 3889 yycrank+1391, yysvec+39, 0, 3890 yycrank+0, yysvec+39, yyvstop+334, 3891 yycrank+1449, yysvec+39, yyvstop+336, 3892 yycrank+0, 0, yyvstop+339, 3893 yycrank+0, 0, yyvstop+341, 3894 yycrank+0, 0, yyvstop+343, 3895 yycrank+162, yysvec+39, yyvstop+345, 3896 yycrank+183, yysvec+39, yyvstop+347, 3897 yycrank+173, yysvec+39, yyvstop+349, 3898 yycrank+200, yysvec+39, yyvstop+351, 3899 yycrank+188, yysvec+39, yyvstop+353, 3900 yycrank+197, yysvec+39, yyvstop+355, 3901 yycrank+190, yysvec+39, yyvstop+357, 3902 yycrank+194, yysvec+39, yyvstop+360, 3903 yycrank+193, yysvec+39, yyvstop+362, 3904 yycrank+195, yysvec+39, yyvstop+364, 3905 yycrank+202, yysvec+39, yyvstop+366, 3906 yycrank+203, yysvec+39, yyvstop+368, 3907 yycrank+202, yysvec+39, yyvstop+370, 3908 yycrank+0, yysvec+39, yyvstop+372, 3909 yycrank+211, yysvec+39, yyvstop+375, 3910 yycrank+231, yysvec+39, yyvstop+377, 3911 yycrank+214, yysvec+39, yyvstop+379, 3912 yycrank+224, yysvec+39, yyvstop+381, 3913 yycrank+229, yysvec+39, yyvstop+383, 3914 yycrank+238, yysvec+39, yyvstop+385, 3915 yycrank+236, yysvec+39, yyvstop+387, 3916 yycrank+237, yysvec+39, yyvstop+389, 3917 yycrank+246, yysvec+39, yyvstop+391, 3918 yycrank+253, yysvec+39, yyvstop+393, 3919 yycrank+251, yysvec+39, yyvstop+395, 3920 yycrank+253, yysvec+39, yyvstop+397, 3921 yycrank+262, yysvec+39, yyvstop+399, 3922 yycrank+248, yysvec+39, yyvstop+401, 3923 yycrank+256, yysvec+39, yyvstop+403, 3924 yycrank+261, yysvec+39, yyvstop+405, 3925 yycrank+267, yysvec+39, yyvstop+407, 3926 yycrank+258, yysvec+39, yyvstop+409, 3927 yycrank+267, yysvec+39, yyvstop+411, 3928 yycrank+0, 0, yyvstop+413, 3929 yycrank+0, 0, yyvstop+415, 3930 yycrank+0, yysvec+66, 0, 3931 yycrank+0, yysvec+67, yyvstop+417, 3932 yycrank+-1571, 0, yyvstop+419, 3933 yycrank+0, 0, yyvstop+421, 3934 yycrank+0, 0, yyvstop+423, 3935 yycrank+0, yysvec+74, yyvstop+425, 3936 yycrank+0, 0, yyvstop+427, 3937 yycrank+0, yysvec+78, yyvstop+429, 3938 yycrank+294, 0, yyvstop+431, 3939 yycrank+308, 0, yyvstop+433, 3940 yycrank+1620, 0, 0, 3941 yycrank+258, yysvec+74, yyvstop+435, 3942 yycrank+279, yysvec+74, yyvstop+437, 3943 yycrank+275, yysvec+74, yyvstop+439, 3944 yycrank+262, yysvec+74, yyvstop+441, 3945 yycrank+270, yysvec+74, yyvstop+443, 3946 yycrank+272, yysvec+74, yyvstop+445, 3947 yycrank+279, yysvec+74, yyvstop+447, 3948 yycrank+282, yysvec+74, yyvstop+449, 3949 yycrank+330, yysvec+74, yyvstop+451, 3950 yycrank+291, yysvec+74, yyvstop+453, 3951 yycrank+303, yysvec+74, yyvstop+455, 3952 yycrank+334, yysvec+74, yyvstop+457, 3953 yycrank+307, yysvec+74, yyvstop+459, 3954 yycrank+328, yysvec+74, yyvstop+461, 3955 yycrank+337, yysvec+74, yyvstop+463, 3956 yycrank+351, yysvec+74, yyvstop+465, 3957 yycrank+336, yysvec+74, yyvstop+467, 3958 yycrank+345, yysvec+74, yyvstop+469, 3959 yycrank+331, yysvec+74, yyvstop+471, 3960 yycrank+347, yysvec+74, yyvstop+473, 3961 yycrank+339, yysvec+74, yyvstop+475, 3962 yycrank+0, yysvec+93, 0, 3963 yycrank+0, yysvec+94, yyvstop+477, 3964 yycrank+-1690, 0, yyvstop+479, 3965 yycrank+-987, yysvec+95, yyvstop+481, 3966 yycrank+0, yysvec+96, yyvstop+483, 3967 yycrank+0, yysvec+98, yyvstop+485, 3968 yycrank+0, 0, yyvstop+487, 3969 yycrank+0, 0, yyvstop+489, 3970 yycrank+-456, yysvec+98, 0, 3971 yycrank+-1084, yysvec+95, yyvstop+491, 3972 yycrank+-1136, yysvec+95, yyvstop+494, 3973 yycrank+-1564, yysvec+95, yyvstop+497, 3974 yycrank+-1579, yysvec+95, yyvstop+500, 3975 yycrank+0, yysvec+103, 0, 3976 yycrank+0, 0, yyvstop+502, 3977 yycrank+1334, 0, yyvstop+504, 3978 yycrank+1656, yysvec+110, yyvstop+506, 3979 yycrank+0, 0, yyvstop+508, 3980 yycrank+1691, 0, 0, 3981 yycrank+463, yysvec+234, yyvstop+510, 3982 yycrank+0, 0, yyvstop+512, 3983 yycrank+0, yysvec+134, yyvstop+514, 3984 yycrank+483, yysvec+136, yyvstop+516, 3985 yycrank+0, 0, yyvstop+518, 3986 yycrank+0, 0, yyvstop+520, 3987 yycrank+1739, yysvec+39, yyvstop+522, 3988 yycrank+1814, yysvec+39, yyvstop+524, 3989 yycrank+1889, yysvec+39, yyvstop+527, 3990 yycrank+339, yysvec+39, yyvstop+531, 3991 yycrank+370, yysvec+39, yyvstop+533, 3992 yycrank+368, yysvec+39, yyvstop+535, 3993 yycrank+361, yysvec+39, yyvstop+537, 3994 yycrank+365, yysvec+39, yyvstop+539, 3995 yycrank+366, yysvec+39, yyvstop+541, 3996 yycrank+381, yysvec+39, yyvstop+543, 3997 yycrank+384, yysvec+39, yyvstop+545, 3998 yycrank+386, yysvec+39, yyvstop+547, 3999 yycrank+379, yysvec+39, yyvstop+549, 4000 yycrank+390, yysvec+39, yyvstop+551, 4001 yycrank+395, yysvec+39, yyvstop+553, 4002 yycrank+0, yysvec+39, yyvstop+555, 4003 yycrank+384, yysvec+39, yyvstop+558, 4004 yycrank+397, yysvec+39, yyvstop+560, 4005 yycrank+404, yysvec+39, yyvstop+562, 4006 yycrank+0, yysvec+39, yyvstop+564, 4007 yycrank+407, yysvec+39, yyvstop+567, 4008 yycrank+401, yysvec+39, yyvstop+569, 4009 yycrank+426, yysvec+39, yyvstop+571, 4010 yycrank+417, yysvec+39, yyvstop+573, 4011 yycrank+409, yysvec+39, yyvstop+575, 4012 yycrank+412, yysvec+39, yyvstop+577, 4013 yycrank+435, yysvec+39, yyvstop+579, 4014 yycrank+426, yysvec+39, yyvstop+581, 4015 yycrank+431, yysvec+39, yyvstop+583, 4016 yycrank+442, yysvec+39, yyvstop+585, 4017 yycrank+429, yysvec+39, yyvstop+587, 4018 yycrank+453, yysvec+39, yyvstop+589, 4019 yycrank+431, yysvec+39, yyvstop+591, 4020 yycrank+438, yysvec+39, yyvstop+593, 4021 yycrank+446, yysvec+39, yyvstop+595, 4022 yycrank+460, yysvec+39, yyvstop+597, 4023 yycrank+451, yysvec+39, yyvstop+599, 4024 yycrank+458, yysvec+39, yyvstop+601, 4025 yycrank+453, yysvec+39, yyvstop+603, 4026 yycrank+473, yysvec+39, yyvstop+605, 4027 yycrank+477, yysvec+39, yyvstop+607, 4028 yycrank+467, yysvec+39, yyvstop+609, 4029 yycrank+461, yysvec+39, yyvstop+611, 4030 yycrank+0, 0, yyvstop+613, 4031 yycrank+654, yysvec+194, yyvstop+615, 4032 yycrank+468, yysvec+74, yyvstop+617, 4033 yycrank+467, yysvec+74, yyvstop+619, 4034 yycrank+467, yysvec+74, yyvstop+621, 4035 yycrank+474, yysvec+74, yyvstop+623, 4036 yycrank+487, yysvec+74, yyvstop+625, 4037 yycrank+477, yysvec+74, yyvstop+627, 4038 yycrank+491, yysvec+74, yyvstop+629, 4039 yycrank+496, yysvec+74, yyvstop+631, 4040 yycrank+484, yysvec+74, yyvstop+633, 4041 yycrank+491, yysvec+74, yyvstop+635, 4042 yycrank+0, yysvec+74, yyvstop+637, 4043 yycrank+494, yysvec+74, yyvstop+640, 4044 yycrank+480, yysvec+74, yyvstop+642, 4045 yycrank+494, yysvec+74, yyvstop+644, 4046 yycrank+485, yysvec+74, yyvstop+646, 4047 yycrank+500, yysvec+74, yyvstop+648, 4048 yycrank+491, yysvec+74, yyvstop+650, 4049 yycrank+497, yysvec+74, yyvstop+652, 4050 yycrank+492, yysvec+74, yyvstop+654, 4051 yycrank+510, yysvec+74, yyvstop+656, 4052 yycrank+494, yysvec+74, yyvstop+658, 4053 yycrank+501, yysvec+74, yyvstop+660, 4054 yycrank+511, yysvec+74, yyvstop+662, 4055 yycrank+502, yysvec+74, yyvstop+664, 4056 yycrank+521, yysvec+74, yyvstop+666, 4057 yycrank+528, yysvec+74, yyvstop+668, 4058 yycrank+532, yysvec+74, yyvstop+670, 4059 yycrank+-1097, yysvec+95, yyvstop+672, 4060 yycrank+-2003, yysvec+95, yyvstop+675, 4061 yycrank+2041, yysvec+39, yyvstop+678, 4062 yycrank+2116, yysvec+39, yyvstop+680, 4063 yycrank+0, yysvec+39, yyvstop+683, 4064 yycrank+523, yysvec+39, yyvstop+686, 4065 yycrank+0, yysvec+39, yyvstop+688, 4066 yycrank+0, yysvec+39, yyvstop+691, 4067 yycrank+515, yysvec+39, yyvstop+694, 4068 yycrank+527, yysvec+39, yyvstop+696, 4069 yycrank+543, yysvec+39, yyvstop+698, 4070 yycrank+543, yysvec+39, yyvstop+700, 4071 yycrank+553, yysvec+39, yyvstop+702, 4072 yycrank+0, yysvec+39, yyvstop+704, 4073 yycrank+0, yysvec+39, yyvstop+707, 4074 yycrank+548, yysvec+39, yyvstop+710, 4075 yycrank+580, yysvec+39, yyvstop+712, 4076 yycrank+0, yysvec+39, yyvstop+714, 4077 yycrank+583, yysvec+39, yyvstop+717, 4078 yycrank+588, yysvec+39, yyvstop+719, 4079 yycrank+0, yysvec+39, yyvstop+721, 4080 yycrank+600, yysvec+39, yyvstop+724, 4081 yycrank+613, yysvec+39, yyvstop+726, 4082 yycrank+611, yysvec+39, yyvstop+728, 4083 yycrank+603, yysvec+39, yyvstop+730, 4084 yycrank+605, yysvec+39, yyvstop+732, 4085 yycrank+606, yysvec+39, yyvstop+734, 4086 yycrank+0, yysvec+39, yyvstop+736, 4087 yycrank+605, yysvec+39, yyvstop+739, 4088 yycrank+621, yysvec+39, yyvstop+741, 4089 yycrank+616, yysvec+39, yyvstop+743, 4090 yycrank+623, yysvec+39, yyvstop+745, 4091 yycrank+623, yysvec+39, yyvstop+747, 4092 yycrank+635, yysvec+39, yyvstop+749, 4093 yycrank+636, yysvec+39, yyvstop+751, 4094 yycrank+0, yysvec+39, yyvstop+753, 4095 yycrank+622, yysvec+39, yyvstop+756, 4096 yycrank+640, yysvec+39, yyvstop+758, 4097 yycrank+632, yysvec+39, yyvstop+760, 4098 yycrank+640, yysvec+39, yyvstop+762, 4099 yycrank+648, yysvec+39, yyvstop+764, 4100 yycrank+0, yysvec+39, yyvstop+766, 4101 yycrank+647, yysvec+39, yyvstop+769, 4102 yycrank+664, yysvec+39, yyvstop+771, 4103 yycrank+666, yysvec+39, yyvstop+773, 4104 yycrank+0, yysvec+74, yyvstop+775, 4105 yycrank+0, yysvec+74, yyvstop+778, 4106 yycrank+653, yysvec+74, yyvstop+781, 4107 yycrank+654, yysvec+74, yyvstop+783, 4108 yycrank+664, yysvec+74, yyvstop+785, 4109 yycrank+0, yysvec+74, yyvstop+787, 4110 yycrank+660, yysvec+74, yyvstop+790, 4111 yycrank+661, yysvec+74, yyvstop+792, 4112 yycrank+665, yysvec+74, yyvstop+794, 4113 yycrank+670, yysvec+74, yyvstop+796, 4114 yycrank+0, yysvec+74, yyvstop+798, 4115 yycrank+676, yysvec+74, yyvstop+801, 4116 yycrank+668, yysvec+74, yyvstop+803, 4117 yycrank+670, yysvec+74, yyvstop+805, 4118 yycrank+0, yysvec+74, yyvstop+807, 4119 yycrank+691, yysvec+74, yyvstop+810, 4120 yycrank+709, yysvec+74, yyvstop+812, 4121 yycrank+706, yysvec+74, yyvstop+814, 4122 yycrank+702, yysvec+74, yyvstop+816, 4123 yycrank+714, yysvec+74, yyvstop+818, 4124 yycrank+0, yysvec+74, yyvstop+820, 4125 yycrank+699, yysvec+74, yyvstop+823, 4126 yycrank+716, yysvec+74, yyvstop+825, 4127 yycrank+707, yysvec+74, yyvstop+827, 4128 yycrank+715, yysvec+74, yyvstop+829, 4129 yycrank+0, yysvec+74, yyvstop+831, 4130 yycrank+703, yysvec+74, yyvstop+834, 4131 yycrank+0, yysvec+39, yyvstop+836, 4132 yycrank+0, yysvec+39, yyvstop+839, 4133 yycrank+711, yysvec+39, yyvstop+842, 4134 yycrank+722, yysvec+39, yyvstop+844, 4135 yycrank+727, yysvec+39, yyvstop+846, 4136 yycrank+735, yysvec+39, yyvstop+848, 4137 yycrank+727, yysvec+39, yyvstop+850, 4138 yycrank+0, yysvec+39, yyvstop+852, 4139 yycrank+722, yysvec+39, yyvstop+855, 4140 yycrank+738, yysvec+39, yyvstop+857, 4141 yycrank+726, yysvec+39, yyvstop+859, 4142 yycrank+0, yysvec+39, yyvstop+861, 4143 yycrank+743, yysvec+39, yyvstop+864, 4144 yycrank+728, yysvec+39, yyvstop+866, 4145 yycrank+740, yysvec+39, yyvstop+868, 4146 yycrank+736, yysvec+39, yyvstop+870, 4147 yycrank+0, yysvec+39, yyvstop+872, 4148 yycrank+748, yysvec+39, yyvstop+875, 4149 yycrank+747, yysvec+39, yyvstop+877, 4150 yycrank+751, yysvec+39, yyvstop+879, 4151 yycrank+748, yysvec+39, yyvstop+881, 4152 yycrank+736, yysvec+39, yyvstop+883, 4153 yycrank+749, yysvec+39, yyvstop+885, 4154 yycrank+746, yysvec+39, yyvstop+887, 4155 yycrank+754, yysvec+39, yyvstop+889, 4156 yycrank+0, yysvec+39, yyvstop+891, 4157 yycrank+773, yysvec+39, yyvstop+894, 4158 yycrank+787, yysvec+39, yyvstop+896, 4159 yycrank+780, yysvec+39, yyvstop+898, 4160 yycrank+0, yysvec+39, yyvstop+900, 4161 yycrank+0, yysvec+39, yyvstop+903, 4162 yycrank+0, yysvec+74, yyvstop+906, 4163 yycrank+785, yysvec+74, yyvstop+909, 4164 yycrank+787, yysvec+74, yyvstop+911, 4165 yycrank+806, yysvec+74, yyvstop+913, 4166 yycrank+0, yysvec+74, yyvstop+915, 4167 yycrank+811, yysvec+74, yyvstop+918, 4168 yycrank+827, yysvec+74, yyvstop+920, 4169 yycrank+829, yysvec+74, yyvstop+922, 4170 yycrank+814, yysvec+74, yyvstop+924, 4171 yycrank+826, yysvec+74, yyvstop+926, 4172 yycrank+0, yysvec+74, yyvstop+928, 4173 yycrank+832, yysvec+74, yyvstop+931, 4174 yycrank+834, yysvec+74, yyvstop+933, 4175 yycrank+857, yysvec+74, yyvstop+935, 4176 yycrank+845, yysvec+74, yyvstop+937, 4177 yycrank+854, yysvec+74, yyvstop+939, 4178 yycrank+862, yysvec+74, yyvstop+941, 4179 yycrank+0, yysvec+74, yyvstop+943, 4180 yycrank+883, yysvec+74, yyvstop+946, 4181 yycrank+889, yysvec+74, yyvstop+948, 4182 yycrank+883, yysvec+39, yyvstop+950, 4183 yycrank+888, yysvec+39, yyvstop+952, 4184 yycrank+887, yysvec+39, yyvstop+954, 4185 yycrank+0, yysvec+39, yyvstop+956, 4186 yycrank+0, yysvec+39, yyvstop+959, 4187 yycrank+0, yysvec+39, yyvstop+962, 4188 yycrank+0, yysvec+39, yyvstop+965, 4189 yycrank+895, yysvec+39, yyvstop+968, 4190 yycrank+917, yysvec+39, yyvstop+970, 4191 yycrank+919, yysvec+39, yyvstop+972, 4192 yycrank+924, yysvec+39, yyvstop+974, 4193 yycrank+0, yysvec+39, yyvstop+976, 4194 yycrank+0, yysvec+39, yyvstop+979, 4195 yycrank+0, yysvec+39, yyvstop+982, 4196 yycrank+0, yysvec+39, yyvstop+985, 4197 yycrank+942, yysvec+39, yyvstop+988, 4198 yycrank+0, yysvec+39, yyvstop+991, 4199 yycrank+0, yysvec+39, yyvstop+994, 4200 yycrank+1000, yysvec+39, yyvstop+997, 4201 yycrank+996, yysvec+39, yyvstop+999, 4202 yycrank+998, yysvec+39, yyvstop+1001, 4203 yycrank+995, yysvec+39, yyvstop+1003, 4204 yycrank+1003, yysvec+39, yyvstop+1005, 4205 yycrank+998, yysvec+74, yyvstop+1007, 4206 yycrank+0, yysvec+74, yyvstop+1009, 4207 yycrank+0, yysvec+74, yyvstop+1012, 4208 yycrank+0, yysvec+74, yyvstop+1015, 4209 yycrank+0, yysvec+74, yyvstop+1018, 4210 yycrank+1012, yysvec+74, yyvstop+1021, 4211 yycrank+1013, yysvec+74, yyvstop+1023, 4212 yycrank+1016, yysvec+74, yyvstop+1025, 4213 yycrank+0, yysvec+74, yyvstop+1027, 4214 yycrank+0, yysvec+74, yyvstop+1030, 4215 yycrank+0, yysvec+74, yyvstop+1033, 4216 yycrank+0, yysvec+74, yyvstop+1036, 4217 yycrank+1020, yysvec+74, yyvstop+1039, 4218 yycrank+1018, yysvec+74, yyvstop+1041, 4219 yycrank+1020, yysvec+74, yyvstop+1043, 4220 yycrank+1019, yysvec+74, yyvstop+1045, 4221 yycrank+1027, yysvec+39, yyvstop+1047, 4222 yycrank+0, yysvec+39, yyvstop+1049, 4223 yycrank+0, yysvec+39, yyvstop+1052, 4224 yycrank+1031, yysvec+39, yyvstop+1055, 4225 yycrank+1022, yysvec+39, yyvstop+1057, 4226 yycrank+1026, yysvec+39, yyvstop+1059, 4227 yycrank+1025, yysvec+39, yyvstop+1061, 4228 yycrank+1041, yysvec+39, yyvstop+1063, 4229 yycrank+1028, yysvec+39, yyvstop+1065, 4230 yycrank+0, yysvec+39, yyvstop+1067, 4231 yycrank+1049, yysvec+39, yyvstop+1070, 4232 yycrank+1050, yysvec+39, yyvstop+1072, 4233 yycrank+1051, yysvec+39, yyvstop+1074, 4234 yycrank+0, yysvec+74, yyvstop+1076, 4235 yycrank+1039, yysvec+74, yyvstop+1079, 4236 yycrank+1041, yysvec+74, yyvstop+1081, 4237 yycrank+1041, yysvec+74, yyvstop+1083, 4238 yycrank+1047, yysvec+74, yyvstop+1085, 4239 yycrank+0, yysvec+74, yyvstop+1087, 4240 yycrank+1065, yysvec+74, yyvstop+1090, 4241 yycrank+1065, yysvec+74, yyvstop+1092, 4242 yycrank+0, yysvec+39, yyvstop+1094, 4243 yycrank+0, yysvec+39, yyvstop+1097, 4244 yycrank+0, yysvec+39, yyvstop+1100, 4245 yycrank+0, yysvec+39, yyvstop+1103, 4246 yycrank+0, yysvec+39, yyvstop+1106, 4247 yycrank+0, yysvec+39, yyvstop+1109, 4248 yycrank+1061, yysvec+39, yyvstop+1112, 4249 yycrank+0, yysvec+39, yyvstop+1114, 4250 yycrank+0, yysvec+39, yyvstop+1117, 4251 yycrank+0, yysvec+39, yyvstop+1120, 4252 yycrank+0, yysvec+74, yyvstop+1123, 4253 yycrank+0, yysvec+74, yyvstop+1126, 4254 yycrank+0, yysvec+74, yyvstop+1129, 4255 yycrank+1063, yysvec+74, yyvstop+1132, 4256 yycrank+0, yysvec+74, yyvstop+1134, 4257 yycrank+0, yysvec+74, yyvstop+1137, 4258 yycrank+1061, yysvec+39, yyvstop+1140, 4259 yycrank+1063, yysvec+74, yyvstop+1142, 4260 yycrank+0, yysvec+39, yyvstop+1144, 4261 yycrank+0, yysvec+74, yyvstop+1147, 4262 0, 0, 0}; 4263 struct yywork *yytop = yycrank+2238; 4264 struct yysvf *yybgin = yysvec+1; 4265 char yymatch[] = { 4266 0, 1, 1, 1, 1, 1, 1, 1, 4267 1, 9, 10, 9, 9, 13, 1, 1, 4268 1, 1, 1, 1, 1, 1, 1, 1, 4269 1, 1, 1, 1, 1, 1, 1, 1, 4270 9, 33, 34, 1, 33, 1, 1, 39, 4271 1, 1, 33, 1, 1, 33, 46, 1, 4272 48, 48, 48, 48, 48, 48, 48, 48, 4273 48, 48, 33, 1, 1, 1, 1, 33, 4274 1, 65, 65, 65, 65, 65, 70, 71, 4275 71, 71, 71, 71, 76, 71, 71, 71, 4276 71, 71, 71, 71, 71, 85, 71, 71, 4277 88, 71, 71, 33, 92, 33, 1, 71, 4278 96, 65, 65, 65, 65, 65, 70, 71, 4279 71, 71, 71, 71, 76, 71, 71, 71, 4280 71, 71, 71, 71, 71, 85, 71, 71, 4281 88, 71, 71, 1, 1, 1, 1, 1, 4282 1, 1, 1, 1, 1, 1, 1, 1, 4283 1, 1, 1, 1, 1, 1, 1, 1, 4284 1, 1, 1, 1, 1, 1, 1, 1, 4285 1, 1, 1, 1, 1, 1, 1, 1, 4286 1, 1, 1, 1, 1, 1, 1, 1, 4287 1, 1, 1, 1, 1, 1, 1, 1, 4288 1, 1, 1, 1, 1, 1, 1, 1, 4289 1, 1, 1, 1, 1, 1, 1, 1, 4290 1, 1, 1, 1, 1, 1, 1, 1, 4291 1, 1, 1, 1, 1, 1, 1, 1, 4292 1, 1, 1, 1, 1, 1, 1, 1, 4293 1, 1, 1, 1, 1, 1, 1, 1, 4294 1, 1, 1, 1, 1, 1, 1, 1, 4295 1, 1, 1, 1, 1, 1, 1, 1, 4296 1, 1, 1, 1, 1, 1, 1, 1, 4297 1, 1, 1, 1, 1, 1, 1, 1, 4298 0}; 4299 char yyextra[] = { 4300 0,0,0,0,0,0,0,0, 4301 0,0,0,0,0,0,0,0, 4302 0,0,0,0,0,0,0,0, 4303 0,0,0,0,0,0,0,0, 4304 0,0,0,0,0,0,0,0, 4305 0,0,0,0,0,0,0,0, 4306 0,0,0,0,0,0,0,0, 4307 0,0,0,0,0,0,0,0, 4308 0,0,0,0,0,0,0,0, 4309 0,0,0,0,0,0,0,0, 4310 0,0,0,0,0,0,0,0, 4311 1,1,0,0,1,0,0,0, 4312 0,0,0,0,0,0,0,0, 4313 0,0,0,0,0,0,0,0, 4314 0,0,0,0,0,0,0,0, 4315 0,0,0,0,0,0,0,0, 4316 0,0,0,0,0,0,0,0, 4317 0,0,0,0,0,0,0,0, 4318 0,0,0,0,0,0,0,0, 4319 0,0,0,0,0,0,0,0, 4320 0,0,0,0,0,0,0,0, 4321 0}; 4322 /* 4323 * CDDL HEADER START 4324 * 4325 * The contents of this file are subject to the terms of the 4326 * Common Development and Distribution License, Version 1.0 only 4327 * (the "License"). You may not use this file except in compliance 4328 * with the License. 4329 * 4330 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 4331 * or http://www.opensolaris.org/os/licensing. 4332 * See the License for the specific language governing permissions 4333 * and limitations under the License. 4334 * 4335 * When distributing Covered Code, include this CDDL HEADER in each 4336 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 4337 * If applicable, add the following below this CDDL HEADER, with the 4338 * fields enclosed by brackets "[]" replaced with your own identifying 4339 * information: Portions Copyright [yyyy] [name of copyright owner] 4340 * 4341 * CDDL HEADER END 4342 */ 4343 4344 /* Copyright (c) 1989 AT&T */ 4345 /* All Rights Reserved */ 4346 4347 #pragma ident "%Z%%M% %I% %E% SMI" 4348 4349 int yylineno =1; 4350 # define YYU(x) x 4351 # define NLSTATE yyprevious=YYNEWLINE 4352 struct yysvf *yylstate [YYLMAX], **yylsp, **yyolsp; 4353 char yysbuf[YYLMAX]; 4354 char *yysptr = yysbuf; 4355 int *yyfnd; 4356 extern struct yysvf *yyestate; 4357 int yyprevious = YYNEWLINE; 4358 #if defined(__cplusplus) || defined(__STDC__) 4359 int yylook(void) 4360 #else 4361 yylook() 4362 #endif 4363 { 4364 register struct yysvf *yystate, **lsp; 4365 register struct yywork *yyt; 4366 struct yysvf *yyz; 4367 int yych, yyfirst; 4368 struct yywork *yyr; 4369 # ifdef LEXDEBUG 4370 int debug; 4371 # endif 4372 char *yylastch; 4373 /* start off machines */ 4374 # ifdef LEXDEBUG 4375 debug = 0; 4376 # endif 4377 yyfirst=1; 4378 if (!yymorfg) 4379 yylastch = yytext; 4380 else { 4381 yymorfg=0; 4382 yylastch = yytext+yyleng; 4383 } 4384 for(;;){ 4385 lsp = yylstate; 4386 yyestate = yystate = yybgin; 4387 if (yyprevious==YYNEWLINE) yystate++; 4388 for (;;){ 4389 # ifdef LEXDEBUG 4390 if(debug)fprintf(yyout,"state %d\n",yystate-yysvec-1); 4391 # endif 4392 yyt = yystate->yystoff; 4393 if(yyt == yycrank && !yyfirst){ /* may not be any transitions */ 4394 yyz = yystate->yyother; 4395 if(yyz == 0)break; 4396 if(yyz->yystoff == yycrank)break; 4397 } 4398 #ifndef __cplusplus 4399 *yylastch++ = yych = input(); 4400 #else 4401 *yylastch++ = yych = lex_input(); 4402 #endif 4403 #ifdef YYISARRAY 4404 if(yylastch > &yytext[YYLMAX]) { 4405 fprintf(yyout,"Input string too long, limit %d\n",YYLMAX); 4406 exit(1); 4407 } 4408 #else 4409 if (yylastch >= &yytext[ yytextsz ]) { 4410 int x = yylastch - yytext; 4411 4412 yytextsz += YYTEXTSZINC; 4413 if (yytext == yy_tbuf) { 4414 yytext = (char *) malloc(yytextsz); 4415 memcpy(yytext, yy_tbuf, sizeof (yy_tbuf)); 4416 } 4417 else 4418 yytext = (char *) realloc(yytext, yytextsz); 4419 if (!yytext) { 4420 fprintf(yyout, 4421 "Cannot realloc yytext\n"); 4422 exit(1); 4423 } 4424 yylastch = yytext + x; 4425 } 4426 #endif 4427 yyfirst=0; 4428 tryagain: 4429 # ifdef LEXDEBUG 4430 if(debug){ 4431 fprintf(yyout,"char "); 4432 allprint(yych); 4433 putchar('\n'); 4434 } 4435 # endif 4436 yyr = yyt; 4437 if ( (uintptr_t)yyt > (uintptr_t)yycrank){ 4438 yyt = yyr + yych; 4439 if (yyt <= yytop && yyt->verify+yysvec == yystate){ 4440 if(yyt->advance+yysvec == YYLERR) /* error transitions */ 4441 {unput(*--yylastch);break;} 4442 *lsp++ = yystate = yyt->advance+yysvec; 4443 if(lsp > &yylstate[YYLMAX]) { 4444 fprintf(yyout,"Input string too long, limit %d\n",YYLMAX); 4445 exit(1); 4446 } 4447 goto contin; 4448 } 4449 } 4450 # ifdef YYOPTIM 4451 else if((uintptr_t)yyt < (uintptr_t)yycrank) { /* r < yycrank */ 4452 yyt = yyr = yycrank+(yycrank-yyt); 4453 # ifdef LEXDEBUG 4454 if(debug)fprintf(yyout,"compressed state\n"); 4455 # endif 4456 yyt = yyt + yych; 4457 if(yyt <= yytop && yyt->verify+yysvec == yystate){ 4458 if(yyt->advance+yysvec == YYLERR) /* error transitions */ 4459 {unput(*--yylastch);break;} 4460 *lsp++ = yystate = yyt->advance+yysvec; 4461 if(lsp > &yylstate[YYLMAX]) { 4462 fprintf(yyout,"Input string too long, limit %d\n",YYLMAX); 4463 exit(1); 4464 } 4465 goto contin; 4466 } 4467 yyt = yyr + YYU(yymatch[yych]); 4468 # ifdef LEXDEBUG 4469 if(debug){ 4470 fprintf(yyout,"try fall back character "); 4471 allprint(YYU(yymatch[yych])); 4472 putchar('\n'); 4473 } 4474 # endif 4475 if(yyt <= yytop && yyt->verify+yysvec == yystate){ 4476 if(yyt->advance+yysvec == YYLERR) /* error transition */ 4477 {unput(*--yylastch);break;} 4478 *lsp++ = yystate = yyt->advance+yysvec; 4479 if(lsp > &yylstate[YYLMAX]) { 4480 fprintf(yyout,"Input string too long, limit %d\n",YYLMAX); 4481 exit(1); 4482 } 4483 goto contin; 4484 } 4485 } 4486 if ((yystate = yystate->yyother) && (yyt= yystate->yystoff) != yycrank){ 4487 # ifdef LEXDEBUG 4488 if(debug)fprintf(yyout,"fall back to state %d\n",yystate-yysvec-1); 4489 # endif 4490 goto tryagain; 4491 } 4492 # endif 4493 else 4494 {unput(*--yylastch);break;} 4495 contin: 4496 # ifdef LEXDEBUG 4497 if(debug){ 4498 fprintf(yyout,"state %d char ",yystate-yysvec-1); 4499 allprint(yych); 4500 putchar('\n'); 4501 } 4502 # endif 4503 ; 4504 } 4505 # ifdef LEXDEBUG 4506 if(debug){ 4507 fprintf(yyout,"stopped at %d with ",*(lsp-1)-yysvec-1); 4508 allprint(yych); 4509 putchar('\n'); 4510 } 4511 # endif 4512 while (lsp-- > yylstate){ 4513 *yylastch-- = 0; 4514 if (*lsp != 0 && (yyfnd= (*lsp)->yystops) && *yyfnd > 0){ 4515 yyolsp = lsp; 4516 if(yyextra[*yyfnd]){ /* must backup */ 4517 while(yyback((*lsp)->yystops,-*yyfnd) != 1 && lsp > yylstate){ 4518 lsp--; 4519 unput(*yylastch--); 4520 } 4521 } 4522 yyprevious = YYU(*yylastch); 4523 yylsp = lsp; 4524 yyleng = yylastch-yytext+1; 4525 yytext[yyleng] = 0; 4526 # ifdef LEXDEBUG 4527 if(debug){ 4528 fprintf(yyout,"\nmatch "); 4529 sprint(yytext); 4530 fprintf(yyout," action %d\n",*yyfnd); 4531 } 4532 # endif 4533 return(*yyfnd++); 4534 } 4535 unput(*yylastch); 4536 } 4537 if (yytext[0] == 0 /* && feof(yyin) */) 4538 { 4539 yysptr=yysbuf; 4540 return(0); 4541 } 4542 #ifndef __cplusplus 4543 yyprevious = yytext[0] = input(); 4544 if (yyprevious>0) 4545 output(yyprevious); 4546 #else 4547 yyprevious = yytext[0] = lex_input(); 4548 if (yyprevious>0) 4549 lex_output(yyprevious); 4550 #endif 4551 yylastch=yytext; 4552 # ifdef LEXDEBUG 4553 if(debug)putchar('\n'); 4554 # endif 4555 } 4556 } 4557 #if defined(__cplusplus) || defined(__STDC__) 4558 int yyback(int *p, int m) 4559 #else 4560 yyback(p, m) 4561 int *p; 4562 #endif 4563 { 4564 if (p==0) return(0); 4565 while (*p) { 4566 if (*p++ == m) 4567 return(1); 4568 } 4569 return(0); 4570 } 4571 /* the following are only used in the lex library */ 4572 #if defined(__cplusplus) || defined(__STDC__) 4573 int yyinput(void) 4574 #else 4575 yyinput() 4576 #endif 4577 { 4578 #ifndef __cplusplus 4579 return(input()); 4580 #else 4581 return(lex_input()); 4582 #endif 4583 } 4584 #if defined(__cplusplus) || defined(__STDC__) 4585 void yyoutput(int c) 4586 #else 4587 yyoutput(c) 4588 int c; 4589 #endif 4590 { 4591 #ifndef __cplusplus 4592 output(c); 4593 #else 4594 lex_output(c); 4595 #endif 4596 } 4597 #if defined(__cplusplus) || defined(__STDC__) 4598 void yyunput(int c) 4599 #else 4600 yyunput(c) 4601 int c; 4602 #endif 4603 { 4604 unput(c); 4605 } 4606