comparison tests/agcl/oldagsrc/good/cc-crash.cpp @ 0:13d2b8934445

Import AnaGram (near-)release tree into Mercurial.
author David A. Holland
date Sat, 22 Dec 2007 17:52:45 -0500
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:13d2b8934445
1 // C Prologue
2 /*
3 AnaGram, a System for Syntax Directed Programming
4
5 A Dos Script Language
6
7 Copyright (c) 1993, 1996 Parsifal Software.
8 All Rights Reserved.
9
10 */
11
12
13 #include "stack.h"
14 #include "charsink.h"
15 #include "strdict.h"
16 #include "array.h"
17 #include "symbol.h"
18 #include "query.h"
19 #include <conio.h>
20
21 #ifdef __BCPLUSPLUS__
22 #define ARGS ((char **) args)
23
24 extern unsigned _stklen = 0x4000; // set stack size
25
26 #else
27 #define ARGS ((char const * const *) (char **) args)
28 #endif
29
30
31 // Define stacks for temporary storage
32
33 stack <action_pointer> as(25); // Stack actions
34 stack <int> is(100); // Stack string indices
35 stack <char *> ps(1000,20); // Stack parameter strings
36 stack <query_item> qs(23); // Stack query items
37
38
39 // Define data structures for symbol table
40
41 #define N_STRINGS 2000
42
43 string_accumulator sa(64000U,500);
44 string_dictionary sd(N_STRINGS);
45 array <symbol_table_entry> st(N_STRINGS);
46
47
48 /*
49 * AnaGram, A System for Syntax Directed Programming
50 * File generated by: ...
51 *
52 * AnaGram Parsing Engine
53 * Copyright 1993-2002 Parsifal Software. All Rights Reserved.
54 *
55 * This software is provided 'as-is', without any express or implied
56 * warranty. In no event will the authors be held liable for any damages
57 * arising from the use of this software.
58 *
59 * Permission is granted to anyone to use this software for any purpose,
60 * including commercial applications, and to alter it and redistribute it
61 * freely, subject to the following restrictions:
62 *
63 * 1. The origin of this software must not be misrepresented; you must not
64 * claim that you wrote the original software. If you use this software
65 * in a product, an acknowledgment in the product documentation would be
66 * appreciated but is not required.
67 * 2. Altered source versions must be plainly marked as such, and must not be
68 * misrepresented as being the original software.
69 * 3. This notice may not be removed or altered from any source distribution.
70 */
71
72 #ifndef CC-CRASH_H
73 #include "cc-crash.h"
74 #endif
75
76 #ifndef CC-CRASH_H
77 #error Mismatched header file
78 #endif
79
80 #include <ctype.h>
81 #include <stdio.h>
82
83 #define RULE_CONTEXT (&((PCB).cs[(PCB).ssx]))
84 #define ERROR_CONTEXT ((PCB).cs[(PCB).error_frame_ssx])
85 #define CONTEXT ((PCB).cs[(PCB).ssx])
86
87
88
89 cc-crash_pcb_type cc-crash_pcb;
90 #define PCB cc-crash_pcb
91 #define CHANGE_REDUCTION(x) cc-crash_change_reduction(cc-crash_##x##_token)
92 int cc-crash_change_reduction(cc-crash_token_type);
93
94
95 #line - "cc-crash.syn"
96 #include <process.h>
97 #include <stdlib.h>
98 #include <ctype.h>
99 #include <sys/stat.h>
100 #include <fcntl.h>
101 #include <io.h>
102 #include <conio.h>
103 #include <dos.h>
104 #include <time.h>
105 #include "assert.h"
106
107 #include "edit.h"
108
109
110 #include "screen.h"
111 #include "util.h"
112 #include "redirect.h"
113
114 #define GET_CONTEXT CONTEXT.pointer = PCB.pointer;\
115 CONTEXT.line=PCB.line;\
116 CONTEXT.column = PCB.column;
117
118
119 int debug_switch = 0;
120 char *error_msg = NULL;
121 unsigned errorlevel_index;
122 int errorlevel;
123 int exitcode = 0;
124 int exitflag = 0;
125 int first_line = 1;
126 int first_column = 1;
127 unsigned stderr_index;
128
129 void display_queries(screen_descriptor *);
130
131 #define FIRST_LINE first_line
132 #define FIRST_COLUMN first_column
133
134
135 /*****
136
137 Internal Functions
138
139 *****/
140
141 long file_exists(void) {
142 FILE *f = fopen(sa--,"r");
143 if (f != NULL) fclose(f);
144 return f != NULL;
145 }
146
147 long directory_exists(void) {
148 struct find_t ff;
149 int result;
150
151 sa << "\\*.*";
152 result = _dos_findfirst(sa--,_A_SUBDIR,&ff);
153 return result == 0;
154 }
155
156 long string_length(void) {
157 return size(sa--);
158 }
159
160 long get_file_length(void) {
161 int handle = open(sa--, O_RDONLY);
162 long length;
163 if (handle < 0) return 0;
164 length = filelength(handle);
165 close(handle);
166 return length;
167 }
168
169 long disk_space(void) {
170 struct diskfree_t free;
171 int drive = toupper(*(char *)sa--) - 64;
172 long avail;
173
174 _dos_getdiskfree(drive, &free);
175 avail = (long) free.avail_clusters
176 * (long) free.bytes_per_sector
177 * (long) free.sectors_per_cluster;
178 return avail;
179 }
180
181 long file_time(void) {
182 int handle = open(sa--, O_RDONLY);
183 #ifdef __BCPLUSPLUS__
184 unsigned date, time;
185 #else
186 unsigned short date, time;
187 #endif
188 struct tm t;
189
190 if (handle < 0) return 0;
191 _dos_getftime(handle, &date, &time);
192 close(handle);
193 t.tm_year = ((date & 0xfe00) >> 9) + 80;
194 t.tm_mon = ((date & 0x1e00) >> 5) - 1;
195 t.tm_mday = date & 0x001f;
196 ;
197 t.tm_hour = (time & 0xf800) >> 11;
198 t.tm_min = (time & 0x07e0) >> 5;
199 t.tm_sec = (time & 0x001f) << 1;
200 return mktime(&t);
201 }
202
203
204 // Support for reduction procecures
205
206 // Compare top strings on string accumulator
207
208 /*
209 pops top two strings from string accumulator using strcmp
210 and returns
211 -1 if first string is less than top string
212 0 if strings match
213 +1 if top string is greater than first string
214 */
215
216 int string_comp(void) {
217 int n = size(sa);
218 array<char> right_string(sa--, n+1);
219 return strcmp(sa--,right_string);
220 }
221
222 /*
223 replace the top string on the stack, with a substring where the index
224 of the first character in the substring is given by "first" and the index
225 of the last character is given by "last"
226 */
227
228 void extract(unsigned first, unsigned last) {
229 int n = last - first + 1;
230 assert (last >= first);
231 array <char> x((char *) sa-- + first, n+1);
232 x[n] = 0;
233 ++sa << x;
234 }
235
236 /*
237 Look up the top string on the accumulator stack in the string dictionary.
238 If it has a value in the symbol table, replace it with the symbol table
239 value. If the value is numeric, convert it to integer. Otherwise, leave the
240 string untouched on the stack.
241 */
242
243 void lookup(void) {
244 unsigned index = sd[sa];
245 if (index == 0) return;
246 switch (st[index].type) {
247 case string_type:
248 case value_type: {
249 --sa; // discard name
250 ++sa << st[index].data.text; // stack value
251 break;
252 }
253 case integer_type: {
254 --sa; // discard name
255 (++sa).printf("%ld", st[index].data.integer); // convert to ascii
256 break;
257 }
258 }
259 }
260
261 /*
262 Find the data type of a symbol and change the reduction accordingly.
263 Return the dictionary index for strings, and the value itself for integers.
264 */
265
266 long name_type(void) {
267 unsigned index = sd << sa--;
268 switch (st[index].type) {
269 case value_type:
270 case string_type: {
271 CHANGE_REDUCTION(string_name);
272 return index;
273 }
274 case built_in_function_type: {
275 CHANGE_REDUCTION(built_in_name);
276 return index;
277 }
278 case undefined_type: {
279 CHANGE_REDUCTION(undefined_name);
280 return index;
281 }
282 case integer_type: return st[index].data.integer;
283 }
284 return 0;
285 }
286
287 /*
288 Store a string formula. A string formula is a sequence of string identifiers
289 the values of which are to be concatenated. The parser has accumulated the
290 identifiers on the integer_stack, is. The formula is terminated by a zero
291 entry.
292 */
293
294 int *formula(void) {
295 int n = size(is << 0);
296 int *f = new int[n];
297 while (n--) is >> f[n];
298 return f;
299 }
300
301 /*
302 Make a copy of an action that has been identified in the text stream.
303 An action pointer was stacked at the beginning of the action text on the
304 action stack, as.
305 */
306
307 action_pointer copy_action(void) {
308 action_pointer ap;
309 as >> ap; // pop action descriptor
310 unsigned length = (unsigned) (PCB.pointer - ap.pointer);
311 unsigned char *action = memdup(ap.pointer,length + 1);
312 action[length] = 0;
313 ap.pointer = action;
314 return ap;
315 }
316
317
318 // Internal Commands
319
320 int echo(int, char *args[]) {
321 int i;
322 char *cs = "";
323 for (i = 1; args[i]; i++) printf("%s%s", cs, args[i]), cs = " ";
324 printf("\n");
325 fflush(stdout);
326 return 0;
327 }
328
329 int pause(int, char *[]) {
330 int c;
331 while (kbhit()) getch(); // Empty buffer
332 printf("Press any key to continue . . .\n");
333 c = getch();
334 if (c == 3) exit(1);
335 return c;
336 }
337
338 int exit_script(int n_args, char *args[]) {
339 if (n_args > 1) sscanf(args[1], "%ld", &exitcode);
340 exit(exitcode);
341 return exitcode;
342 }
343
344 /*
345 int return_script(int n_args, char *args[]) {
346 if (n_args > 1) sscanf(args[1], "%ld", &exitcode);
347 PCB.exit_flag = AG_SUCCESS_CODE;
348 return exitcode;
349 }
350 */
351
352 int subdirs(int, char *args[]) {
353 struct find_t file_block;
354 int flag;
355 int length = strlen(args[1]);
356 array <char> name(args[1],length + 5);
357
358 strcat(name, "\\*.*");
359 for(flag = _dos_findfirst(name, _A_SUBDIR, &file_block);
360 flag == 0; flag = _dos_findnext(&file_block)) {
361 if ((file_block.attrib & _A_SUBDIR) == 0) continue;
362 if (strcmp(file_block.name, ".") == 0) continue;
363 if (strcmp(file_block.name, "..") == 0) continue;
364 puts(file_block.name);
365 }
366 return 0;
367 }
368
369 int files(int, char *args[]) {
370 struct find_t file_block;
371 int flag;
372 int length = strlen(args[1]);
373 array<char> name(args[1],length + 5);
374
375 strcat(name, "\\*.*");
376 for(flag = _dos_findfirst(name, 0, &file_block);
377 flag == 0; flag = _dos_findnext(&file_block)) {
378 puts(file_block.name);
379 }
380 return 0;
381 }
382
383
384 /*****
385
386 Execute Command Line
387
388 *****/
389
390
391 void perform_action(action_pointer ap) {
392 dsl_pcb_type save_pcb = PCB;
393
394 PCB.pointer = ap.pointer;
395 first_line = ap.line;
396 first_column = ap.column;
397 dsl();
398 exitflag = PCB.exit_flag != AG_SUCCESS_CODE;
399 PCB = save_pcb;
400 if (exitflag) PCB.exit_flag = AG_SEMANTIC_ERROR_CODE;
401 }
402
403 void exec(void) {
404 int n = size(ps << (char *) NULL);
405 int n_args = n - 1;
406 unsigned index;
407 int i;
408
409 array <char *> args(n);
410 while (n--) ps >> args[n];
411
412 strupr(args[0]);
413 if (debug_switch) {
414 for (i = 0; args[i]; i++) fprintf(stderr, "%s ", args[i]);
415 fprintf(stderr,"\nPress any key to continue\n");
416 while (!kbhit());
417 getch();
418 }
419 index = sd[args[0]];
420 if (n_args == 1 && strlen(args[0]) == 2 && args[0][1] == ':') {
421 errorlevel = system(args[0]);
422 }
423 else if ( *args[0] && index) switch (st[index].type) {
424 case internal_type: {
425 errorlevel = (*st[index].data.proc)(n_args, args);
426 break;
427 }
428 case dos_type: {
429 int i;
430 for (i = 1; args[i]; i++) args[i][-1] = ' ';
431 errorlevel = system(args[0]);
432 assert(errorlevel >= 0);
433 break;
434 }
435 case action_type: {
436 action_descriptor d = *st[index].data.action;
437 stack <symbol_table_entry> old_entries(d.n_args);
438 for (i = 0; i < d.n_args && args[i+1]; i++) {
439 old_entries << st[d.args[i]];
440 st[d.args[i]].type = value_type;
441 st[d.args[i]].data.text = memdup(args[i+1], 1 + strlen(args[i+1]));
442 }
443 perform_action(d.ap);
444 for (i = d.n_args; i--;) {
445 release(st[d.args[i]]);
446 old_entries >> st[d.args[i]];
447 }
448 }
449 }
450 else {
451 errorlevel = spawnvp(P_WAIT,args[0],ARGS);
452 assert(errorlevel >= 0);
453 }
454 st[errorlevel_index].data.integer = errorlevel;
455 while (n_args--) --sa;
456 --ps;
457 if (kbhit()) {
458 int c = getch();
459 if (c == 3) exit(1);
460 ungetch(c);
461 }
462 }
463
464 void discard_temp_file(char *file_name) {
465 unlink(file_name); // Delete file
466 delete [] file_name; // Free storage for name
467 }
468
469
470 /*****
471
472 Execute Command with piped input
473
474 *****/
475
476
477 void exec_pipe_in(char *file_name) {
478 {
479 redirect sin(STDIN, file_name);
480 exec();
481 }
482 discard_temp_file(file_name);
483 }
484
485
486 /*****
487
488 Execute Command with redirected I/O
489
490 *****/
491
492 void exec_redirect_in(void) {
493 redirect sin(STDIN, sa--);
494 exec();
495 }
496
497 char *exec_pipe_out(void) {
498 fflush(stdout);
499 redirect sout(STDOUT);
500 exec();
501 fflush(stdout);
502 return save_file(sout);
503 }
504
505 char *exec_pipe_in_pipe_out(char *file_name) {
506 char *result;
507 {
508 redirect sin(STDIN, file_name);
509 fflush(stdout);
510 redirect sout(STDOUT);
511 exec();
512 fflush(stdout);
513 result = save_file(sout);
514 }
515 discard_temp_file(file_name);
516 return result;
517 }
518
519 char *exec_redirect_in_pipe_out(void) {
520 fflush(stdout);
521 redirect sout(STDOUT);
522 exec_redirect_in();
523 fflush(stdout);
524 return save_file(sout);
525 }
526
527 unsigned check_integer(void) {
528 unsigned index = sd << sa--;
529 if (st[index].type == integer_type) return index;
530 CHANGE_REDUCTION(undeclared_variable);
531 if (st[index].type == string_type) CHANGE_REDUCTION(string_variable);
532 return index;
533 }
534
535 void assign_value(unsigned index) {
536 char *text = copy(sa--);
537 release(st[index]);
538 st[index].type = value_type;
539 st[index].data.text = text;
540 }
541
542 void grab_output(char *temp_name) {
543 unlink(sa); // delete old file
544 rename(temp_name, sa--); // rename temp file
545 delete [] temp_name; // discard name string
546 }
547
548 void append_output(char *temp_name) {
549 fflush(stdout);
550 redirect sout(STDOUT, sa--, 1); // append to file named on sa
551 redirect sin(STDIN, temp_name);
552 char buf[2000];
553 int n;
554 while (1) {
555 n = read(STDIN, buf, 2000);
556 if (n == 0) break;
557 write(STDOUT, buf, n);
558 }
559 fflush(stdout);
560 unlink(temp_name);
561 delete [] temp_name;
562 }
563
564 void action_string(void) {
565 action_pointer ap;
566 as >> ap;
567 unsigned length = (unsigned)(PCB.pointer - ap.pointer);
568 array <unsigned char> action(ap.pointer,length + 1);
569 action[length] = 0;
570 fflush(stdout);
571 redirect sout(STDOUT);
572 char *result;
573
574 ap.pointer = action;
575 perform_action(ap);
576 fflush(stdout);
577 result = content(sout);
578 ++sa << result;
579 delete [] result;
580 }
581
582
583 // Program Control functions
584
585 // If/else statement
586
587 int do_if(int pc, int cc) {
588 action_pointer ap;
589 as >> ap;
590 if (!pc && cc && exitflag == 0) {
591 unsigned length = (unsigned) (PCB.pointer - ap.pointer);
592 array<unsigned char> q(ap.pointer, length+1);
593 q[length] = 0;
594 ap.pointer = q;
595 perform_action(ap);
596 }
597 return pc || cc;
598 }
599
600 // While statement
601
602 void do_while(int cc) {
603 unsigned length;
604 action_pointer ap;
605 as >> ap;
606 if (cc == 0) return;
607 length = (unsigned) (PCB.pointer - ap.pointer);
608 array<unsigned char> q(ap.pointer, length+1);
609 q[length] = 0;
610 ap.pointer = q;
611 perform_action(ap);
612 if (exitflag) return;
613 PCB.pointer = CONTEXT.pointer;
614 PCB.line = CONTEXT.line;
615 PCB.column = CONTEXT.column;
616 }
617
618
619 // For Statement
620 // Note that this is the for statement in the DOS batch languange for, not C
621
622 void do_for_loop(void) {
623 int n,k;
624 char *q;
625 char *seps = " \t\v\f\r\n";
626 action_pointer ap;
627 as >> ap;
628 unsigned length = (unsigned)(PCB.pointer - ap.pointer);
629 array <unsigned char> action(ap.pointer, length + 1);
630 action[length] = 0;
631
632 ap.pointer = action;
633 n = size(sa);
634 array<char> text(sa--, n + 1);
635
636
637 unsigned index = sd << sa--;
638
639 ++ps;
640 for (q = strtok(text, seps); q != NULL; q = strtok(NULL,seps)) {
641 if (*q == '(') {
642 int k = strlen(q) - 1;
643 assert(q[k] == ')');
644 q[k] = 0;
645 q++;
646 }
647 else if (*q == '"') {
648 int k = strlen(q) - 1;
649 assert(q[k] == '"');
650 q[k] = 0;
651 q++;
652 }
653 ps << q;
654 }
655 k = n = size(ps);
656 array<char *> args(n);
657 while (k--) ps >> args[k];
658 --ps;
659 symbol_table_entry save_table_entry = st[index];
660 st[index].type = value_type;
661
662 for (k = 0; k < n && exitflag == 0; k++) {
663 st[index].data.text = args[k];
664 perform_action(ap);
665 }
666 st[index] = save_table_entry;
667 }
668
669 void invoke_script(void) {
670 int handle = open(sa, O_TEXT | O_RDONLY);
671 long size;
672 unsigned n;
673 action_pointer ap;
674
675 if (handle < 0) {
676 fprintf(stderr,"Cannot open %s\n", (char *) sa--);
677 exit(1);
678 }
679 --sa;
680 size = filelength(handle);
681 assert(size < 65536L);
682 array <unsigned char> data((unsigned) size+1);
683 n = (unsigned) read(handle,data,(unsigned) size);
684 data[n] = 0;
685 close(handle);
686 exitflag = 0;
687 ap.pointer = data;
688 ap.line = ap.column = 1;
689 perform_action(ap);
690 st[errorlevel_index].data.integer = exitcode;
691 exitflag = exitcode = 0;
692 return;
693 }
694
695 internal_commands_descriptor internal_commands[] = {
696 {"ECHO", echo},
697 {"EXIT", exit_script},
698 {"FILES", files},
699 {"PAUSE", pause},
700 // {"RETURN", return_script},
701 {"SUBDIRS", subdirs},
702 {NULL, NULL}
703 };
704
705 struct built_ins_descriptor built_ins[] = {
706 {"file_exists", file_exists},
707 {"directory_exists", directory_exists},
708 {"string_length", string_length},
709 {"file_length", get_file_length},
710 {"disk_space", disk_space},
711 {"file_time", file_time},
712 {NULL, NULL}
713 };
714
715 void set_extension(char *path, char *e) {
716 char s[_MAX_PATH];
717 char drive[_MAX_DRIVE];
718 char dir[_MAX_DIR];
719 char file[_MAX_FNAME];
720 char ext[_MAX_EXT];
721
722 _splitpath(path,drive,dir,file,ext);
723 _makepath(s, drive, dir, file, e);
724 ++sa << s;
725 }
726
727 /*
728 Note that if this program is called without any arguments, it looks for a
729 script with the same name as the executable. Thus, to make an install
730 program that picks up the install script without any arguments, you simply
731 rename DSL.EXE to INSTALL.EXE. Then when you run it without any arguments
732 it will run the INSTALL.DSL script.
733 */
734
735 void main(int argc, char *argv[]) {
736 int arg_number = 0;
737 int i = 1;
738 int j = 0;
739
740 if (argv[0][0] == '.') argv[0] = "\\agex\\dsl\\wat32\\dsl.exe";
741 init_dos_internals();
742 set_arg(j++, argv[0]);
743 if (argc > i && (argv[i][0] == '/' || argv[i][0] == '-')) {
744 if (toupper(argv[i][1]) != 'D') {
745 printf("Unrecognized switch -- /%s\n",argv[i][1]);
746 return;
747 }
748 debug_switch = 1;
749 i++;
750 }
751 if (argc > i) arg_number = i++;
752 set_extension(argv[arg_number], "DSL");
753 set_arg(j++,copy(sa));
754 while (i < argc) set_arg(j++, argv[i++]);
755 define_integer("argc", j);
756 invoke_script(); // Takes file name from sa
757 exit(exitcode);
758 }
759 #line - "cc-crash.cpp"
760
761 #ifndef CONVERT_CASE
762 #define CONVERT_CASE(c) (c)
763 #endif
764 #ifndef TAB_SPACING
765 #define TAB_SPACING 8
766 #endif
767
768 #define ag_rp_1(v) (++sa << sd[v], lookup())
769
770 #define ag_rp_2() (sa << '[')
771
772 #define ag_rp_3() (concat(sa) << ']', lookup())
773
774 #define ag_rp_4() (concat(sa))
775
776 #define ag_rp_5() (concat(sa))
777
778 #define ag_rp_6(c) (++sa << c)
779
780 #define ag_rp_7(c) (sa << c)
781
782 #define ag_rp_8() (action_string())
783
784 #define ag_rp_9() (as << CONTEXT)
785
786 static void ag_rp_10(void) {
787 #line - "cc-crash.syn"
788 action_pointer a; as >> a;
789 #line - "cc-crash.cpp"
790 }
791
792 #define ag_rp_11() (++sa)
793
794 #define ag_rp_12(c) (sa << c)
795
796 #define ag_rp_13() (sa << '(')
797
798 #define ag_rp_14() (concat(sa) << ')')
799
800 #define ag_rp_15() (++sa)
801
802 #define ag_rp_16(c) (sa << c)
803
804 #define ag_rp_17(c) (sa << c)
805
806 #define ag_rp_18() ('\a')
807
808 #define ag_rp_19() ('\b')
809
810 #define ag_rp_20() ('\f')
811
812 #define ag_rp_21() ('\n')
813
814 #define ag_rp_22() ('\r')
815
816 #define ag_rp_23() ('\t')
817
818 #define ag_rp_24() ('\v')
819
820 #define ag_rp_25() ('\\')
821
822 #define ag_rp_26() ('\?')
823
824 #define ag_rp_27() ('\'')
825
826 #define ag_rp_28() ('"')
827
828 #define ag_rp_29(d) (d-'0')
829
830 #define ag_rp_30(n, d) (8*n + d-'0')
831
832 #define ag_rp_31(n, d) (8*n + d-'0')
833
834 #define ag_rp_32(n) ((int) n)
835
836 #define ag_rp_33(n, d) (16*n + d)
837
838 #define ag_rp_34() (exec())
839
840 #define ag_rp_35() (exec_redirect_in())
841
842 #define ag_rp_36(file) (exec_pipe_in(file))
843
844 #define ag_rp_37(file) (grab_output(file))
845
846 #define ag_rp_38(file) (append_output(file))
847
848 #define ag_rp_39() (exec_pipe_out())
849
850 #define ag_rp_40() (exec_redirect_in_pipe_out())
851
852 #define ag_rp_41(file) (exec_pipe_in_pipe_out(file))
853
854 #define ag_rp_42() (sa << 0, ++ps << sa)
855
856 #define ag_rp_43() (ps << sa, sa << 0)
857
858 #define ag_rp_44() (ps << sa, sa << 0)
859
860 #define ag_rp_45(pc) (do_if(pc,1))
861
862 #define ag_rp_46(cc) (cc)
863
864 #define ag_rp_47(cc) (cc)
865
866 #define ag_rp_48(pc, cc) (do_if(pc,cc!=0))
867
868 #define ag_rp_49(cc) ((int) cc)
869
870 #define ag_rp_50(cc) (do_if(0,cc != 0))
871
872 #define ag_rp_51(v) (assign_value(v))
873
874 #define ag_rp_52(v, x) (st[v].data.integer = (int) x)
875
876 #define ag_rp_53(v) (st[v].data.text = copy(sa--))
877
878 #define ag_rp_54(v, n, x) (st[v].data.text[(unsigned)n] = (char) x)
879
880 #define ag_rp_55() (check_integer())
881
882 #define ag_rp_56(cc) (do_while(cc != 0))
883
884 #define ag_rp_57() (do_for_loop())
885
886 #define ag_rp_58(n) (define_action(n))
887
888 #define ag_rp_59(x) (define_integer(sa--, x))
889
890 #define ag_rp_60() (define_string())
891
892 #define ag_rp_61() (0)
893
894 #define ag_rp_62(n) (n+1)
895
896 #define ag_rp_63(c) (++sa << c)
897
898 #define ag_rp_64(c) (sa << c)
899
900 #define ag_rp_65(c) (sa << c)
901
902 #define ag_rp_66(c, x, y) (c != 0 ? x : y)
903
904 #define ag_rp_67(x, y) (x != 0 || y!=0)
905
906 #define ag_rp_68(x, y) (x != 0 && y !=0)
907
908 #define ag_rp_69(x, y) (x | y)
909
910 #define ag_rp_70(x, y) (x ^ y)
911
912 #define ag_rp_71(x, y) (x & y)
913
914 #define ag_rp_72(x, y) (x == y)
915
916 #define ag_rp_73(x, y) (x != y)
917
918 #define ag_rp_74() (string_comp() == 0)
919
920 #define ag_rp_75() (string_comp() != 0)
921
922 #define ag_rp_76(x, y) (x < y)
923
924 #define ag_rp_77(x, y) (x > y)
925
926 #define ag_rp_78(x, y) (x <= y)
927
928 #define ag_rp_79(x, y) (x >= y)
929
930 #define ag_rp_80() (string_comp() < 0)
931
932 #define ag_rp_81() (string_comp() > 0)
933
934 #define ag_rp_82() (string_comp() <= 0)
935
936 #define ag_rp_83() (string_comp() >= 0)
937
938 #define ag_rp_84(x, y) (x << (int) y)
939
940 #define ag_rp_85(x, y) (x >> (int) y)
941
942 #define ag_rp_86(x, y) (x + y)
943
944 #define ag_rp_87(x, y) (x - y)
945
946 #define ag_rp_88(x, y) (x * y)
947
948 #define ag_rp_89(x, y) (x / y)
949
950 #define ag_rp_90(x, y) (x % y)
951
952 static long ag_rp_91(long x) {
953 #line - "cc-crash.syn"
954 assert(x);
955 return x;
956
957 #line - "cc-crash.cpp"
958 }
959
960 #define ag_rp_92(x) (x)
961
962 #define ag_rp_93(x) (-x)
963
964 #define ag_rp_94(x) (~x)
965
966 #define ag_rp_95(x) (!x)
967
968 #define ag_rp_96(n) (((unsigned char *) sa--)[(unsigned) n])
969
970 static long ag_rp_97(void) {
971 #line - "cc-crash.syn"
972 long temp;
973 sscanf(sa--, "%ld", &temp);
974 return temp;
975
976 #line - "cc-crash.cpp"
977 }
978
979 #define ag_rp_98(x) (x)
980
981 #define ag_rp_99(x) ((*st[(unsigned)x].data.func)())
982
983 #define ag_rp_100() (name_type())
984
985 #define ag_rp_101() (concat(sa))
986
987 #define ag_rp_102(first, last) (extract((unsigned)first, (unsigned) last))
988
989 #define ag_rp_103() (sa << '[')
990
991 #define ag_rp_104() (concat(sa) << ']', lookup())
992
993 #define ag_rp_105(x) (++sa << st[(unsigned)x].data.text)
994
995 #define ag_rp_106(x) (++sa << sd[(unsigned)x])
996
997 #define ag_rp_107() (action_string())
998
999 #define ag_rp_108(x) (++sa,sa.printf("%ld",x))
1000
1001 #define ag_rp_109() (0)
1002
1003 #define ag_rp_110(x, d) (16*x + d-'0')
1004
1005 #define ag_rp_111(d) ((d&7) + 9)
1006
1007 #define ag_rp_112() (0)
1008
1009 #define ag_rp_113(n, d) (8*n + d-'0')
1010
1011 #define ag_rp_114(d) (d-'0')
1012
1013 #define ag_rp_115(n, d) (10*n + d-'0')
1014
1015 #define ag_rp_116(c) (c)
1016
1017 #define ag_rp_117(scd) (display_queries(scd))
1018
1019 #define ag_rp_118() (reset(qs), new screen_descriptor)
1020
1021 #define ag_rp_119(scd) (scd->title = formula(), scd)
1022
1023 #define ag_rp_120(scd, c) (scd->color = (char) c, scd)
1024
1025 #define ag_rp_121(scd, c) (scd->entry_color = (char) c, scd)
1026
1027 #define ag_rp_122(scd, c) (scd->highlight_color = (char) c, scd)
1028
1029 #define ag_rp_123(scd, w, h) (scd->width = (unsigned)w, scd->height = (unsigned) h, scd)
1030
1031 #define ag_rp_124(scd, px, py) (scd->pos.x = (unsigned) px,scd->pos.y = (unsigned) py, scd)
1032
1033 #define ag_rp_125(scd, q) (qs << *q, delete q, scd)
1034
1035 #define ag_rp_126(scd, q) (qs << *q, delete q, scd)
1036
1037 #define ag_rp_127(fg, bg) (COLOR((unsigned)fg,(unsigned)bg))
1038
1039 #define ag_rp_128() (clear(new query_item))
1040
1041 #define ag_rp_129(q) (q->id = sd << sa--, q)
1042
1043 #define ag_rp_130(q) (q->value = formula(), q)
1044
1045 #define ag_rp_131(q) (q->prompt = formula(), q)
1046
1047 #define ag_rp_132(q) (q->explanation = formula(),q)
1048
1049 #define ag_rp_133() (clear(new query_item))
1050
1051 #define ag_rp_134(q) (q->prompt = formula(), q)
1052
1053 #define ag_rp_135(q) (q->explanation = formula(),q)
1054
1055 #define ag_rp_136(q) (q->action = copy_action(), q)
1056
1057 #define ag_rp_137() (reset(is) << (sd << sa--))
1058
1059 #define ag_rp_138() (is << (sd << sa--))
1060
1061 #define ag_rp_139() (sa << '[')
1062
1063 #define ag_rp_140() (concat(sa) << ']')
1064
1065
1066 #define READ_COUNTS
1067 #define WRITE_COUNTS
1068 #undef V
1069 #define V(i,t) (*t (&(PCB).vs[(PCB).ssx + i]))
1070 #undef VS
1071 #define VS(i) (PCB).vs[(PCB).ssx + i]
1072
1073 #ifndef GET_CONTEXT
1074 #define GET_CONTEXT CONTEXT = (PCB).input_context
1075 #endif
1076
1077 typedef enum {
1078 ag_action_1,
1079 ag_action_2,
1080 ag_action_3,
1081 ag_action_4,
1082 ag_action_5,
1083 ag_action_6,
1084 ag_action_7,
1085 ag_action_8,
1086 ag_action_9,
1087 ag_action_10,
1088 ag_action_11,
1089 ag_action_12
1090 } ag_parser_action;
1091
1092
1093 #ifndef NULL_VALUE_INITIALIZER
1094 #define NULL_VALUE_INITIALIZER = { 0 }
1095 #endif
1096
1097 static cc-crash_vs_type const ag_null_value NULL_VALUE_INITIALIZER;
1098
1099 static const unsigned char ag_rpx[] = {
1100 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1101 0, 0, 0, 0, 0, 1, 2, 3, 0, 4, 0, 5, 6, 7, 0, 8, 0, 9,
1102 0, 0, 10, 0, 0, 0, 0, 0, 0, 11, 0, 12, 13, 14, 0, 15, 0, 16,
1103 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 0, 0, 0, 0, 0, 29,
1104 30, 31, 32, 0, 33, 0, 0, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
1105 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 46, 47, 48, 49, 50,
1106 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 52, 53, 54, 55, 56, 0, 0,
1107 57, 58, 59, 60, 61, 0, 0, 62, 63, 64, 65, 0, 66, 0, 67, 0, 68, 0,
1108 69, 0, 70, 0, 71, 0, 72, 73, 74, 75, 0, 76, 77, 78, 79, 80, 81, 82,
1109 83, 0, 84, 85, 0, 86, 87, 0, 88, 89, 90, 91, 0, 92, 93, 94, 95, 0,
1110 0, 96, 97, 0, 98, 99, 0,100, 0,101, 0,102,103,104, 0,105,106,107,
1111 108, 0, 0, 0, 0, 0, 0,109,110, 0,111,112,113,114,115,116, 0, 0,
1112 117,118, 0,119,120,121,122,123,124,125,126,127,128, 0,129,130,131,132,
1113 133, 0,134,135,136,137,138, 0, 0, 0,139,140
1114 };
1115
1116 static const unsigned char ag_key_itt[] = {
1117 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1118 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1119 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1,
1120 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1,
1121 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1122 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1123 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1124 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1125 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1127 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1128 0
1129 };
1130
1131 static const unsigned short ag_key_pt[] = {
1132 0,211, 0,214, 0,218, 0,221, 0,220, 0,219, 0,223, 0,224,
1133 0,225, 0,162, 0,163, 0,247, 0,248, 0,249, 0,250, 0,252,
1134 0,253, 0,254, 0,255, 0,256, 0,257, 0,258, 0,259, 0,260,
1135 0
1136 };
1137
1138 static const unsigned char ag_key_ch[] = {
1139 0, 42, 47,255, 47, 97,105,115,255, 42, 47,255, 42, 47,255, 88,120,255,
1140 60, 61,255, 61, 62,255,101,111,255,108,110,120,255,105,111,255,116,255,
1141 102,110,255, 99,105,116,255, 33, 38, 46, 47, 48, 60, 61, 62, 97, 98, 99,
1142 100,101,102,104,105,108,112,115,116,118,119,124,255, 47, 97,105,115,255,
1143 47,255, 42, 47,255,110,120,255,105,111,255,102,110,255, 99,105,116,255,
1144 47, 97, 98, 99,100,101,102,104,105,108,112,115,116,118,119,255, 42, 47,
1145 255,108,110,120,255,105,111,255,102,110,255, 99,105,116,255, 47, 97, 98,
1146 99,100,101,102,104,105,108,112,115,116,118,119,255,102,110,255, 99,116,
1147 255, 47, 97,102,105,115,119,255, 42, 47,255, 60, 61,255, 61, 62,255,116,
1148 255,110,255,105,116,255, 33, 38, 46, 47, 60, 61, 62, 97, 98, 99,101,102,
1149 104,105,108,115,116,124,255,102,110,255, 99,116,255, 97,102,105,115,119,
1150 255, 42, 47,255, 88,120,255, 47, 48,255, 88,120,255, 48,255, 47,255, 34,
1151 39, 63, 92, 97, 98,102,110,114,116,118,120,255, 92,255, 42, 47,255, 60,
1152 61,255, 61, 62,255,105,116,255, 33, 38, 46, 47, 60, 61, 62, 97, 98, 99,
1153 100,101,102,104,105,108,115,116,124,255, 42, 47,255, 47, 62,100,255, 42,
1154 47,255, 47, 62,255, 47, 62,255, 47, 98, 99,101,102,104,108,115,116,255,
1155 62,255, 47,119,255, 47,101,255, 88,120,255, 47, 48,255, 60, 61,255, 61,
1156 62,255,105,116,255, 33, 38, 46, 47, 60, 61, 62, 97, 98, 99,101,102,104,
1157 105,108,115,116,124,255,105,116,255, 33, 38, 46, 47, 60, 61, 62, 97, 98,
1158 99,101,102,104,105,108,115,116,124,255, 42, 47,255, 60, 61,255, 61, 62,
1159 255,105,116,255, 33, 38, 46, 47, 60, 61, 62, 97, 98, 99,101,102,104,105,
1160 108,115,116,124,255, 42, 47,255, 60, 61,255, 61, 62,255,105,116,255, 33,
1161 38, 46, 47, 60, 61, 62,104,105,108,115,116,124,255, 42, 47,255, 47,255,
1162 33, 60, 61, 62,255,105,116,255, 33, 38, 46, 47, 61, 97, 98, 99,101,102,
1163 104,105,108,115,116,124,255,105,116,255, 38, 46, 47, 97, 98, 99,101,102,
1164 104,105,108,115,116,124,255,105,116,255, 46, 47, 97, 98, 99,101,102,104,
1165 105,108,115,116,124,255, 42, 47,255, 60, 61,255, 61, 62,255,108,110,255,
1166 105,116,255, 33, 38, 46, 47, 60, 61, 62, 97, 98, 99,100,101,102,104,105,
1167 108,115,116,119,124,255, 47,101,112,255, 47,100,101,112,118,255, 47, 99,
1168 255, 99,255,105,255, 47, 62,100,255,102,110,255, 99,116,255, 47, 97,101,
1169 102,105,115,119,255,101,255, 42, 47,255, 47,105,255, 47,105,255, 60, 62,
1170 255,100,255,105,255, 46,255, 42, 47,255, 61, 62,255,105,116,255, 33, 38,
1171 46, 47, 60, 61, 62, 97, 98, 99,100,101,102,104,105,108,115,116,124,255
1172 };
1173
1174 static const unsigned char ag_key_act[] = {
1175 0,0,0,4,2,7,7,7,4,3,3,4,0,0,4,5,5,4,0,0,4,0,0,4,7,5,4,7,7,7,4,7,7,4,5,
1176 4,5,6,4,7,7,7,4,3,3,3,2,2,2,3,2,7,7,7,2,2,2,7,2,7,7,2,7,7,7,3,4,3,7,7,
1177 7,4,3,4,0,0,4,7,7,4,7,7,4,5,7,4,7,7,7,4,2,7,7,7,7,2,2,7,2,7,7,2,7,7,7,
1178 4,0,0,4,7,7,7,4,7,7,4,5,7,4,7,7,7,4,2,7,7,7,7,2,2,7,2,7,7,2,7,7,7,4,5,
1179 7,4,7,7,4,3,7,7,2,2,7,4,0,0,4,0,0,4,0,0,4,5,4,6,4,7,7,4,3,3,3,2,2,3,2,
1180 7,7,7,7,7,7,2,7,2,7,3,4,5,7,4,7,7,4,7,7,2,2,7,4,0,0,4,5,5,4,2,2,4,5,5,
1181 4,2,4,3,4,0,0,0,0,0,0,0,0,0,0,0,0,4,2,4,0,0,4,0,0,4,0,0,4,7,7,4,3,3,3,
1182 2,2,3,2,7,7,7,7,7,7,7,7,7,2,7,3,4,0,0,4,2,3,7,4,0,0,4,2,3,4,3,3,4,3,7,
1183 7,7,7,7,7,7,7,4,3,4,3,7,4,3,7,4,5,5,4,3,2,4,0,0,4,0,0,4,7,7,4,3,3,3,3,
1184 2,3,2,7,7,7,7,7,7,7,7,2,7,3,4,7,7,4,3,3,3,3,3,3,3,7,7,7,7,7,7,7,7,2,7,
1185 3,4,0,0,4,0,0,4,0,0,4,7,7,4,3,3,3,2,2,3,2,7,7,7,7,7,7,7,7,2,7,3,4,0,0,
1186 4,0,0,4,0,0,4,7,7,4,3,3,3,2,2,3,2,7,7,7,2,7,3,4,0,0,4,2,4,3,3,3,3,4,7,
1187 7,4,3,3,3,3,3,7,7,7,7,7,7,7,7,2,7,3,4,7,7,4,3,3,3,7,7,7,7,7,7,7,7,2,7,
1188 3,4,7,7,4,3,3,7,7,7,7,7,7,7,7,2,7,3,4,0,0,4,0,0,4,0,0,4,7,7,4,7,7,4,3,
1189 3,3,2,2,3,2,7,7,7,7,2,7,7,7,7,2,7,7,3,4,3,7,7,4,3,7,7,7,7,4,3,7,4,7,4,
1190 7,4,3,3,7,4,5,7,4,7,7,4,3,7,7,7,2,2,7,4,7,4,0,0,4,2,7,4,3,7,4,3,3,4,7,
1191 4,7,4,3,4,0,0,4,0,0,4,7,7,4,3,3,3,2,3,3,2,7,7,7,7,7,7,7,7,7,2,7,3,4
1192 };
1193
1194 static const unsigned short ag_key_parm[] = {
1195 0, 13, 16, 0, 0, 12, 14, 16, 0, 12, 13, 0, 13, 16, 0, 20, 18, 0,
1196 236,234, 0,235,210, 0, 40, 10, 0, 0, 26, 44, 0, 36, 6, 0, 14, 0,
1197 2, 8, 0, 22, 30, 16, 0,233,229,246, 0, 0, 0,232, 0, 12, 46, 34,
1198 0, 0, 0, 28, 0, 32, 42, 0, 24, 38, 4,228, 0, 16, 12, 14, 16, 0,
1199 13, 0, 13, 16, 0, 26, 44, 0, 36, 6, 0, 2, 14, 0, 22, 30, 16, 0,
1200 0, 12, 46, 34, 40, 0, 0, 28, 0, 32, 42, 0, 24, 38, 4, 0, 13, 16,
1201 0, 0, 26, 44, 0, 36, 6, 0, 2, 14, 0, 22, 30, 16, 0, 0, 12, 46,
1202 34, 40, 0, 0, 28, 0, 32, 42, 0, 24, 38, 4, 0, 2, 14, 0, 22, 16,
1203 0, 16, 12, 6, 0, 0, 4, 0, 13, 16, 0,236,234, 0,235,210, 0, 14,
1204 0, 8, 0, 30, 16, 0,233,229,246, 0, 0,232, 0, 12, 46, 34, 26, 36,
1205 28, 0, 32, 0, 24,228, 0, 2, 14, 0, 22, 16, 0, 12, 6, 0, 0, 4,
1206 0, 13, 16, 0, 20, 18, 0, 0, 0, 0, 20, 18, 0, 0, 0, 16, 0, 64,
1207 63, 62, 61, 54, 55, 56, 57, 58, 59, 60, 72, 0, 0, 0, 13, 16, 0,236,
1208 234, 0,235,210, 0, 30, 16, 0,233,229,246, 0, 0,232, 0, 12, 46, 34,
1209 10, 26, 36, 28, 14, 32, 0, 24,228, 0, 13, 16, 0, 0,210, 10, 0, 13,
1210 16, 0, 0,210, 0, 16,210, 0, 16, 46, 34, 26, 36, 28, 32, 30, 24, 0,
1211 210, 0, 16, 4, 0, 16, 0, 0, 20, 18, 0, 13, 0, 0,236,234, 0,235,
1212 210, 0, 30, 16, 0,233,229,246, 16, 0,232, 0, 12, 46, 34, 26, 36, 28,
1213 14, 32, 0, 24,228, 0, 30, 16, 0,233,229,246, 16,234,232,235, 12, 46,
1214 34, 26, 36, 28, 14, 32, 0, 24,228, 0, 13, 16, 0,236,234, 0,235,210,
1215 0, 30, 16, 0,233,229,246, 0, 0,232, 0, 12, 46, 34, 26, 36, 28, 14,
1216 32, 0, 24,228, 0, 13, 16, 0,236,234, 0,235,210, 0, 30, 16, 0,233,
1217 229,246, 0, 0,232, 0, 28, 14, 32, 0, 24,228, 0, 13, 16, 0, 0, 0,
1218 233,234,232,235, 0, 30, 16, 0,233,229,246, 16,232, 12, 46, 34, 26, 36,
1219 28, 14, 32, 0, 24,228, 0, 30, 16, 0,229,246, 16, 12, 46, 34, 26, 36,
1220 28, 14, 32, 0, 24,228, 0, 30, 16, 0,246, 16, 12, 46, 34, 26, 36, 28,
1221 14, 32, 0, 24,228, 0, 13, 16, 0,236,234, 0,235,210, 0, 0, 26, 0,
1222 30, 16, 0,233,229,246, 0, 0,232, 0, 12, 46, 34, 10, 0, 36, 28, 14,
1223 32, 0, 24, 4,228, 0, 16, 44, 42, 0, 16, 40, 44, 42, 38, 0, 13, 34,
1224 0, 34, 0, 8, 0, 16,210, 10, 0, 2, 14, 0, 22, 16, 0, 16, 12, 0,
1225 6, 0, 0, 4, 0, 0, 0, 13, 16, 0, 0, 2, 0, 16, 2, 0,234,235,
1226 0, 10, 0, 2, 0,246, 0, 13, 16, 0,235,210, 0, 30, 16, 0,233,229,
1227 246, 0,234,232, 0, 12, 46, 34, 10, 26, 36, 28, 14, 32, 0, 24,228, 0
1228 };
1229
1230 static const unsigned short ag_key_jmp[] = {
1231 0, 0, 0, 0, 1, 0, 6, 9, 0, 15, 17, 0, 0, 0, 0, 0, 0, 0,
1232 0, 0, 0, 0, 0, 0, 44, 0, 0, 50, 53, 57, 0, 67, 71, 0, 0, 0,
1233 0, 34, 0, 96,101,104, 0, 19, 21, 23, 12, 15, 18, 25, 21, 27, 33, 39,
1234 24, 27, 31, 73, 36, 82, 90, 39,109,114,122,127, 0,129,131,137,140, 0,
1235 146, 0, 0, 0, 0,172,176, 0,186,190, 0, 0,201, 0,217,222,225, 0,
1236 74,148,154,160,165, 77, 80,192, 83,203,211, 86,230,235,243, 0, 0, 0,
1237 0,272,275,279, 0,289,293, 0, 0,304, 0,320,325,328, 0,106,248,254,
1238 260,265,109,113,295,116,306,314,119,333,338,346, 0, 0,362, 0,364,369,
1239 0,351,353,359,139,142,374, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1240 0,161, 0,431,434, 0,379,381,383,152,155,385,158,387,393,399,404,409,
1241 414,163,423,165,439,444, 0, 0,455, 0,457,462, 0,446,452,187,190,467,
1242 0, 0, 0, 0, 0, 0, 0,199,202, 0, 0, 0, 0,208, 0,472, 0, 0,
1243 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,215, 0, 0, 0, 0, 0,
1244 0, 0, 0, 0, 0,531,534, 0,474,476,478,230,233,480,236,482,488,494,
1245 499,501,506,511,520,523,239,539,544, 0, 0, 0, 0,262,546,548, 0, 0,
1246 0, 0,269,550, 0,552,554, 0,556,558,564,569,574,579,588,596,600, 0,
1247 605, 0,607,609, 0,614,616, 0, 0, 0, 0,620,296, 0, 0, 0, 0, 0,
1248 0, 0,679,682, 0,622,624,626,628,302,630,305,632,638,644,649,654,659,
1249 668,671,308,687,692, 0,755,758, 0,694,696,698,700,702,704,706,708,714,
1250 720,725,730,735,744,747,330,763,768, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1251 0,825,828, 0,770,772,774,352,355,776,358,778,784,790,795,800,805,814,
1252 817,361,833,838, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,868,871, 0,840,
1253 842,844,383,386,846,389,848,857,860,392,876,881, 0, 0, 0, 0,409, 0,
1254 883,885,887,889, 0,948,951, 0,891,893,895,897,899,901,907,913,918,923,
1255 928,937,940,419,956,961, 0,1016,1019, 0,963,965,967,969,975,981,986,
1256 991,996,1005,1008,439,1024,1029, 0,1082,1085, 0,1031,1033,1035,1041,
1257 1047,1052,1057,1062,1071,1074,457,1090,1095, 0, 0, 0, 0, 0, 0, 0,
1258 0, 0, 0,1124,1127, 0,1156,1159, 0,1097,1099,1101,474,477,1103,480,
1259 1105,1111,1117,1122,483,1131,1136,1145,1148,486,1164,1169,1174, 0,1176,
1260 1178,1189, 0,1195,1197,1204,1215,1221, 0,1229,1231, 0,1236, 0,1241,
1261 0,1243,1245,1247, 0, 0,1264, 0,1266,1271, 0,1249,1251,1257,1261,
1262 531,534,1276, 0,1281, 0, 0, 0, 0,547,1285, 0,1287,1289, 0,1291,
1263 1293, 0,1295, 0,1297, 0,1299, 0, 0, 0, 0, 0, 0, 0,1360,1363,
1264 0,1301,1303,1305,565,1307,1309,568,1311,1317,1323,1328,1330,1335,1340,
1265 1349,1352,571,1368,1373, 0
1266 };
1267
1268 static const unsigned short ag_key_index[] = {
1269 4, 9, 43, 67, 0, 72, 72, 72, 90,123, 0, 0, 0,145, 67, 0, 0, 0,
1270 168,168, 0, 0, 72, 72, 0,145,193,205, 0,211, 72,213,228, 0,242,265,
1271 72, 72,272,275, 72, 0, 0, 72,275, 0,278, 0, 0, 0,275,288,275, 0,
1272 290,293,213, 0,299,311, 0,211,333, 67,228,364,364,395,412,364,364,299,
1273 299,299,299, 0, 0,211,211,211,211,211,311,311,414,311,414,333,422,442,
1274 442,442,442,460, 67, 72,205,205,205,213,489, 0, 0,228,228, 0, 72, 0,
1275 211, 0,211, 72, 0,510, 72, 0,514, 72, 0, 72, 0,520,523,520,523, 72,
1276 0,213, 72, 0,525,299,211, 0,211, 0,299, 0, 0, 0,527,275,275,275,
1277 537,545,145, 0, 0, 0, 0, 0, 4, 0, 0,414, 0,299,211,299,211,299,
1278 211,211,211,211,211,299,211,299, 0,299, 0, 0, 0,299, 0,299, 0,211,
1279 211,211,211,211,211,299,211,299,211,211,299,211,299,211,299,211, 0,228,
1280 0, 0, 0,275, 0,213, 72, 0, 72, 0,213, 0, 0, 72, 0, 72, 0,213,
1281 211,211,213,213,211, 0, 72, 0, 0,213,213,213,213,213,275, 0,275, 0,
1282 550,553,364, 0,211,333, 0,311,311,211,311,311,333,333,333,333,422,422,
1283 311,311,311,311,556,333,333,422,442,442,442,442, 0, 0, 0, 0, 0, 0,
1284 0, 0, 0, 0, 0, 0, 0,213,213,559,211,275,275,561, 0,563,563,299,
1285 211,574,213,213,213,213,213,213,299,211,211,211, 0, 0, 72, 0,213, 0,
1286 299,211, 0,213, 0, 0
1287 };
1288
1289 static const unsigned char ag_key_ends[] = {
1290 99,116,105,111,110,0, 110,116,0, 116,114,105,110,103,0, 47,0,
1291 42,0, 61,0, 38,0, 46,0, 61,0, 99,116,105,111,110,0,
1292 117,116,116,111,110,0, 111,108,111,114,0, 102,97,117,108,116,0,
1293 115,101,0, 116,114,121,0, 112,108,97,110,97,116,105,111,110,0,
1294 101,108,100,0, 114,0, 105,103,104,108,105,103,104,116,0,
1295 111,99,97,116,105,111,110,0, 114,111,109,112,116,0, 114,101,101,110,0,
1296 122,101,0, 114,105,110,103,0, 105,116,108,101,0,
1297 97,114,105,97,98,108,101,0, 104,105,108,101,0, 124,0, 47,0,
1298 99,116,105,111,110,0, 110,116,0, 116,114,105,110,103,0, 42,0,
1299 99,116,105,111,110,0, 117,116,116,111,110,0, 111,108,111,114,0,
1300 101,102,97,117,108,116,0, 116,114,121,0,
1301 112,108,97,110,97,116,105,111,110,0, 101,108,100,0, 114,0,
1302 105,103,104,108,105,103,104,116,0, 116,0, 111,99,97,116,105,111,110,0,
1303 114,111,109,112,116,0, 114,101,101,110,0, 122,101,0,
1304 114,105,110,103,0, 105,116,108,101,0, 97,114,105,97,98,108,101,0,
1305 104,105,108,101,0, 99,116,105,111,110,0, 117,116,116,111,110,0,
1306 111,108,111,114,0, 101,102,97,117,108,116,0, 115,101,0,
1307 116,114,121,0, 112,108,97,110,97,116,105,111,110,0, 101,108,100,0,
1308 114,0, 105,103,104,108,105,103,104,116,0, 116,0,
1309 111,99,97,116,105,111,110,0, 114,111,109,112,116,0, 114,101,101,110,0,
1310 122,101,0, 114,105,110,103,0, 105,116,108,101,0,
1311 97,114,105,97,98,108,101,0, 104,105,108,101,0, 47,0,
1312 99,116,105,111,110,0, 111,114,0, 116,0, 114,101,101,110,0,
1313 114,105,110,103,0, 104,105,108,101,0, 61,0, 38,0, 46,0, 61,0,
1314 99,116,105,111,110,0, 117,116,116,111,110,0, 111,108,111,114,0,
1315 110,116,114,121,0, 105,101,108,100,0, 105,103,104,108,105,103,104,116,0,
1316 111,99,97,116,105,111,110,0, 122,101,0, 114,105,110,103,0,
1317 105,116,108,101,0, 124,0, 99,116,105,111,110,0, 111,114,0, 116,0,
1318 114,101,101,110,0, 114,105,110,103,0, 104,105,108,101,0, 47,0,
1319 61,0, 38,0, 46,0, 61,0, 99,116,105,111,110,0, 117,116,116,111,110,0,
1320 111,108,111,114,0, 111,0, 110,116,114,121,0, 105,101,108,100,0,
1321 105,103,104,108,105,103,104,116,0, 110,116,0,
1322 111,99,97,116,105,111,110,0, 122,101,0, 114,105,110,103,0,
1323 105,116,108,101,0, 124,0, 62,0, 111,0, 62,0, 47,0, 62,0, 47,0,
1324 117,116,116,111,110,0, 111,108,111,114,0, 110,116,114,121,0,
1325 105,101,108,100,0, 105,103,104,108,105,103,104,116,0,
1326 111,99,97,116,105,111,110,0, 105,122,101,0, 105,116,108,101,0,
1327 62,0, 47,0, 104,105,108,101,0, 47,0, 108,115,101,0, 42,0, 61,0,
1328 38,0, 46,0, 47,0, 61,0, 99,116,105,111,110,0, 117,116,116,111,110,0,
1329 111,108,111,114,0, 110,116,114,121,0, 105,101,108,100,0,
1330 105,103,104,108,105,103,104,116,0, 110,116,0,
1331 111,99,97,116,105,111,110,0, 122,101,0, 114,105,110,103,0,
1332 105,116,108,101,0, 124,0, 61,0, 38,0, 46,0, 47,0, 61,0, 61,0,
1333 61,0, 99,116,105,111,110,0, 117,116,116,111,110,0, 111,108,111,114,0,
1334 110,116,114,121,0, 105,101,108,100,0, 105,103,104,108,105,103,104,116,0,
1335 110,116,0, 111,99,97,116,105,111,110,0, 122,101,0, 114,105,110,103,0,
1336 105,116,108,101,0, 124,0, 61,0, 38,0, 46,0, 61,0,
1337 99,116,105,111,110,0, 117,116,116,111,110,0, 111,108,111,114,0,
1338 110,116,114,121,0, 105,101,108,100,0, 105,103,104,108,105,103,104,116,0,
1339 110,116,0, 111,99,97,116,105,111,110,0, 122,101,0, 114,105,110,103,0,
1340 105,116,108,101,0, 124,0, 61,0, 38,0, 46,0, 61,0,
1341 105,103,104,108,105,103,104,116,0, 110,116,0,
1342 111,99,97,116,105,111,110,0, 122,101,0, 114,105,110,103,0,
1343 105,116,108,101,0, 124,0, 61,0, 61,0, 61,0, 61,0, 61,0, 38,0,
1344 46,0, 47,0, 61,0, 99,116,105,111,110,0, 117,116,116,111,110,0,
1345 111,108,111,114,0, 110,116,114,121,0, 105,101,108,100,0,
1346 105,103,104,108,105,103,104,116,0, 110,116,0,
1347 111,99,97,116,105,111,110,0, 122,101,0, 114,105,110,103,0,
1348 105,116,108,101,0, 124,0, 38,0, 46,0, 47,0, 99,116,105,111,110,0,
1349 117,116,116,111,110,0, 111,108,111,114,0, 110,116,114,121,0,
1350 105,101,108,100,0, 105,103,104,108,105,103,104,116,0, 110,116,0,
1351 111,99,97,116,105,111,110,0, 122,101,0, 114,105,110,103,0,
1352 105,116,108,101,0, 124,0, 46,0, 47,0, 99,116,105,111,110,0,
1353 117,116,116,111,110,0, 111,108,111,114,0, 110,116,114,121,0,
1354 105,101,108,100,0, 105,103,104,108,105,103,104,116,0, 110,116,0,
1355 111,99,97,116,105,111,110,0, 122,101,0, 114,105,110,103,0,
1356 105,116,108,101,0, 124,0, 61,0, 38,0, 46,0, 61,0,
1357 99,116,105,111,110,0, 117,116,116,111,110,0, 111,108,111,114,0,
1358 111,0, 115,101,0, 116,114,121,0, 105,101,108,100,0,
1359 105,103,104,108,105,103,104,116,0, 110,116,0,
1360 111,99,97,116,105,111,110,0, 122,101,0, 114,105,110,103,0,
1361 105,116,108,101,0, 104,105,108,101,0, 124,0, 47,0,
1362 120,112,108,97,110,97,116,105,111,110,0, 114,111,109,112,116,0,
1363 47,0, 101,102,97,117,108,116,0, 120,112,108,97,110,97,116,105,111,110,0,
1364 114,111,109,112,116,0, 97,114,105,97,98,108,101,0, 42,0,
1365 111,108,111,114,0, 111,108,111,114,0, 110,0, 47,0, 62,0, 111,0,
1366 47,0, 99,116,105,111,110,0, 108,115,101,0, 111,114,0, 116,0,
1367 114,101,101,110,0, 114,105,110,103,0, 104,105,108,101,0,
1368 108,115,101,0, 102,0, 47,0, 102,0, 61,0, 61,0, 111,0, 102,0,
1369 46,0, 61,0, 38,0, 46,0, 61,0, 61,0, 99,116,105,111,110,0,
1370 117,116,116,111,110,0, 111,108,111,114,0, 111,0, 110,116,114,121,0,
1371 105,101,108,100,0, 105,103,104,108,105,103,104,116,0, 110,116,0,
1372 111,99,97,116,105,111,110,0, 122,101,0, 114,105,110,103,0,
1373 105,116,108,101,0, 124,0,
1374 };
1375
1376 #define AG_TCV(x) ag_tcv[(x)]
1377
1378 static const unsigned short ag_tcv[] = {
1379 26,193,193,193,193,193,193,193,193, 9, 15, 9, 9, 9,193,193,193,193,
1380 193,193,193,193,193,193,193,193, 26,193,193,193,193,193, 9,243, 50,203,
1381 193,241,231,169,213,212,239,237,251,238,193,240,167,194,194,194,194,194,
1382 194,194,195,195,226,216,207,215,209,227,217,261,261,261,261,261,261,262,
1383 262,262,262,262,262,262,262,262,262,262,262,262,262,262,262,262,262,262,
1384 262,202, 70,201,230,262,193,261,261,261,261,261,261,262,262,262,262,262,
1385 262,262,262,262,262,262,262,262,262,262,262,262,262,262,262,205,208,204,
1386 242,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,
1387 193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,
1388 193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,
1389 193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,
1390 193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,
1391 193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,
1392 193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,
1393 193,193,193,193
1394 };
1395
1396 #ifndef SYNTAX_ERROR
1397 #define SYNTAX_ERROR fprintf(stderr,"%s, line %d, column %d\n", \
1398 (PCB).error_message, (PCB).line, (PCB).column)
1399 #endif
1400
1401 #ifndef FIRST_LINE
1402 #define FIRST_LINE 1
1403 #endif
1404
1405 #ifndef FIRST_COLUMN
1406 #define FIRST_COLUMN 1
1407 #endif
1408
1409 #ifndef PARSER_STACK_OVERFLOW
1410 #define PARSER_STACK_OVERFLOW {fprintf(stderr, \
1411 "\nParser stack overflow, line %d, column %d\n",\
1412 (PCB).line, (PCB).column);}
1413 #endif
1414
1415 #ifndef REDUCTION_TOKEN_ERROR
1416 #define REDUCTION_TOKEN_ERROR {fprintf(stderr, \
1417 "\nReduction token error, line %d, column %d\n", \
1418 (PCB).line, (PCB).column);}
1419 #endif
1420
1421
1422 #ifndef INPUT_CODE
1423 #define INPUT_CODE(T) (T)
1424 #endif
1425
1426 typedef enum
1427 {ag_accept_key, ag_set_key, ag_jmp_key, ag_end_key, ag_no_match_key,
1428 ag_cf_accept_key, ag_cf_set_key, ag_cf_end_key} key_words;
1429
1430 static void ag_get_key_word(int ag_k) {
1431 int ag_save = (int) ((PCB).la_ptr - (PCB).pointer);
1432 const unsigned char *ag_p;
1433 int ag_ch;
1434 while (1) {
1435 switch (ag_key_act[ag_k]) {
1436 case ag_cf_end_key: {
1437 const unsigned char *sp = ag_key_ends + ag_key_jmp[ag_k];
1438 do {
1439 if ((ag_ch = *sp++) == 0) {
1440 int ag_k1 = ag_key_parm[ag_k];
1441 int ag_k2 = ag_key_pt[ag_k1];
1442 if (ag_key_itt[ag_k2 + CONVERT_CASE(*(PCB).la_ptr)]) goto ag_fail;
1443 (PCB).token_number = (cc-crash_token_type) ag_key_pt[ag_k1 + 1];
1444 return;
1445 }
1446 } while (CONVERT_CASE(*(PCB).la_ptr++) == ag_ch);
1447 goto ag_fail;
1448 }
1449 case ag_end_key: {
1450 const unsigned char *sp = ag_key_ends + ag_key_jmp[ag_k];
1451 do {
1452 if ((ag_ch = *sp++) == 0) {
1453 (PCB).token_number = (cc-crash_token_type) ag_key_parm[ag_k];
1454 return;
1455 }
1456 } while (CONVERT_CASE(*(PCB).la_ptr++) == ag_ch);
1457 }
1458 case ag_no_match_key:
1459 ag_fail:
1460 (PCB).la_ptr = (PCB).pointer + ag_save;
1461 return;
1462 case ag_cf_set_key: {
1463 int ag_k1 = ag_key_parm[ag_k];
1464 int ag_k2 = ag_key_pt[ag_k1];
1465 ag_k = ag_key_jmp[ag_k];
1466 if (ag_key_itt[ag_k2 + CONVERT_CASE(*(PCB).la_ptr)]) break;
1467 ag_save = (int) ((PCB).la_ptr - (PCB).pointer);
1468 (PCB).token_number = (cc-crash_token_type) ag_key_pt[ag_k1+1];
1469 break;
1470 }
1471 case ag_set_key:
1472 ag_save = (int) ((PCB).la_ptr - (PCB).pointer);
1473 (PCB).token_number = (cc-crash_token_type) ag_key_parm[ag_k];
1474 case ag_jmp_key:
1475 ag_k = ag_key_jmp[ag_k];
1476 break;
1477 case ag_accept_key:
1478 (PCB).token_number = (cc-crash_token_type) ag_key_parm[ag_k];
1479 return;
1480 case ag_cf_accept_key: {
1481 int ag_k1 = ag_key_parm[ag_k];
1482 int ag_k2 = ag_key_pt[ag_k1];
1483 if (ag_key_itt[ag_k2 + CONVERT_CASE(*(PCB).la_ptr)])
1484 (PCB).la_ptr = (PCB).pointer + ag_save;
1485 else (PCB).token_number = (cc-crash_token_type) ag_key_pt[ag_k1+1];
1486 return;
1487 }
1488 }
1489 ag_ch = CONVERT_CASE(*(PCB).la_ptr++);
1490 ag_p = &ag_key_ch[ag_k];
1491 if (ag_ch <= 255) while (*ag_p < ag_ch) ag_p++;
1492 if (ag_ch > 255 || *ag_p != ag_ch) {
1493 (PCB).la_ptr = (PCB).pointer + ag_save;
1494 return;
1495 }
1496 ag_k = (int) (ag_p - ag_key_ch);
1497 }
1498 }
1499
1500
1501 #ifndef AG_NEWLINE
1502 #define AG_NEWLINE 10
1503 #endif
1504
1505 #ifndef AG_RETURN
1506 #define AG_RETURN 13
1507 #endif
1508
1509 #ifndef AG_FORMFEED
1510 #define AG_FORMFEED 12
1511 #endif
1512
1513 #ifndef AG_TABCHAR
1514 #define AG_TABCHAR 9
1515 #endif
1516
1517 static void ag_track(void) {
1518 int ag_k = (int) ((PCB).la_ptr - (PCB).pointer);
1519 while (ag_k--) {
1520 switch (*(PCB).pointer++) {
1521 case AG_NEWLINE:
1522 (PCB).column = 1, (PCB).line++;
1523 case AG_RETURN:
1524 case AG_FORMFEED:
1525 break;
1526 case AG_TABCHAR:
1527 (PCB).column += (TAB_SPACING) - ((PCB).column - 1) % (TAB_SPACING);
1528 break;
1529 default:
1530 (PCB).column++;
1531 }
1532 }
1533 }
1534
1535
1536 static void ag_prot(void) {
1537 int ag_k;
1538 ag_k = 128 - ++(PCB).btsx;
1539 if (ag_k <= (PCB).ssx) {
1540 (PCB).exit_flag = AG_STACK_ERROR_CODE;
1541 PARSER_STACK_OVERFLOW;
1542 return;
1543 }
1544 (PCB).bts[(PCB).btsx] = (PCB).sn;
1545 (PCB).bts[ag_k] = (PCB).ssx;
1546 (PCB).vs[ag_k] = (PCB).vs[(PCB).ssx];
1547 (PCB).ss[ag_k] = (PCB).ss[(PCB).ssx];
1548 (PCB).cs[ag_k] = (PCB).cs[(PCB).ssx];
1549 }
1550
1551 static void ag_undo(void) {
1552 if ((PCB).drt == -1) return;
1553 while ((PCB).btsx) {
1554 int ag_k = 128 - (PCB).btsx;
1555 (PCB).sn = (PCB).bts[(PCB).btsx--];
1556 (PCB).ssx = (PCB).bts[ag_k];
1557 (PCB).vs[(PCB).ssx] = (PCB).vs[ag_k];
1558 (PCB).ss[(PCB).ssx] = (PCB).ss[ag_k];
1559 (PCB).cs[(PCB).ssx] = (PCB).cs[ag_k];
1560 }
1561 (PCB).token_number = (cc-crash_token_type) (PCB).drt;
1562 (PCB).ssx = (PCB).dssx;
1563 (PCB).sn = (PCB).dsn;
1564 (PCB).drt = -1;
1565 }
1566
1567
1568
1569 static const int ag_rtt[] = {
1570 101,104, 28, 0,152,155,153,156, 0
1571 };
1572
1573 static const unsigned short ag_tstt[] = {
1574 225,224,223,205,26,16,15,13,9,0,1,10,11,117,197,
1575 262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,215,213,212,
1576 209,208,207,205,204,203,202,201,195,194,193,169,167,70,50,15,13,12,9,0,
1577 10,11,
1578 13,9,0,1,10,11,
1579 225,224,223,205,26,16,15,0,7,20,21,22,23,24,25,40,114,115,116,198,
1580 262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,215,213,212,
1581 209,208,207,205,204,203,202,201,195,194,193,169,167,70,50,15,9,0,18,19,
1582 262,261,13,9,0,1,10,11,117,197,
1583 262,261,13,9,0,1,10,11,117,197,
1584 262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,195,194,193,169,
1585 167,70,13,9,0,1,10,11,117,197,
1586 262,261,260,259,258,257,256,255,254,253,252,251,250,249,248,247,243,242,241,
1587 240,239,238,237,231,230,227,226,225,224,223,221,218,216,215,214,213,209,
1588 208,207,205,204,203,195,194,193,169,167,70,50,16,15,13,9,0,1,10,11,117,
1589 197,
1590 262,261,260,259,258,257,256,255,254,253,252,251,250,249,248,247,243,242,241,
1591 240,239,238,237,231,230,227,226,225,224,223,221,218,216,215,214,213,211,
1592 209,208,207,205,204,203,195,194,193,169,167,70,50,26,16,15,13,9,0,1,10,
1593 11,117,197,
1594 262,261,0,110,166,196,
1595 262,261,0,110,166,196,
1596 262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,195,194,193,169,
1597 167,70,0,8,206,222,
1598 262,261,251,247,243,242,241,240,239,238,237,231,230,227,226,225,224,223,221,
1599 218,216,214,213,204,195,194,193,169,167,70,50,16,15,0,7,84,85,198,
1600 225,224,223,205,16,15,0,7,21,22,23,40,114,115,116,198,
1601 26,0,
1602 262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,215,213,212,
1603 209,208,207,205,204,203,202,201,195,194,193,169,167,70,50,9,0,
1604 15,0,
1605 262,261,260,255,254,253,252,251,250,249,248,246,241,240,239,238,237,236,235,
1606 234,233,232,231,230,229,228,227,226,225,224,223,220,217,216,215,213,212,
1607 210,209,208,207,205,204,203,202,195,194,167,26,16,15,13,9,0,1,10,11,117,
1608 197,
1609 262,261,260,255,254,253,252,251,250,249,248,246,241,240,239,238,237,236,235,
1610 234,233,232,231,230,229,228,227,226,225,224,223,220,217,216,215,213,212,
1611 210,209,208,207,205,204,203,202,195,194,167,26,16,15,13,9,0,1,10,11,117,
1612 197,
1613 262,261,215,195,194,167,0,100,119,166,196,
1614 262,261,215,195,194,167,0,100,119,166,196,
1615 262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,195,194,193,169,
1616 167,70,0,
1617 205,13,9,0,1,10,11,117,197,
1618 205,0,37,38,40,
1619 16,15,0,7,198,
1620 262,261,251,247,243,242,241,240,239,238,237,231,230,227,226,225,224,223,221,
1621 218,216,214,213,204,195,194,193,169,167,70,50,0,2,4,5,22,27,28,33,43,49,
1622 75,76,80,86,87,88,89,91,92,93,95,96,97,98,99,101,104,108,109,114,115,
1623 116,172,173,199,200,206,
1624 262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,215,213,209,208,
1625 207,205,204,203,195,194,193,169,167,163,162,70,50,16,15,13,9,0,1,10,11,
1626 117,197,
1627 262,261,215,213,205,50,0,4,37,38,40,45,49,100,105,110,150,151,155,156,166,
1628 196,200,
1629 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
1630 34,37,38,40,45,49,94,100,105,107,110,120,123,125,127,128,130,132,135,
1631 138,140,141,142,143,148,149,150,151,152,153,155,156,159,160,161,164,166,
1632 196,200,244,245,
1633 262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,195,194,193,169,
1634 167,70,13,9,0,1,10,11,206,
1635 262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,215,213,209,208,
1636 207,205,204,203,195,194,193,169,167,70,50,16,15,0,2,4,5,7,34,37,38,39,
1637 40,41,43,49,79,81,82,100,198,199,200,206,
1638 262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,215,213,212,
1639 209,208,207,205,204,203,202,201,195,194,193,169,167,72,70,64,63,62,61,
1640 60,59,58,57,56,55,54,50,9,0,51,53,65,66,67,68,69,
1641 262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,215,213,212,
1642 209,208,207,205,204,203,202,201,195,194,193,169,167,70,50,15,9,0,46,48,
1643 262,261,260,255,254,253,252,251,250,249,248,246,243,242,241,240,239,238,237,
1644 236,235,234,233,232,231,230,229,228,227,226,225,224,223,219,217,216,215,
1645 213,212,210,209,208,207,205,204,203,202,201,195,194,193,169,167,70,50,
1646 26,16,15,13,9,0,1,10,11,117,197,
1647 262,261,251,243,242,241,240,239,238,237,231,230,227,226,219,216,215,213,212,
1648 210,209,208,207,205,204,203,202,201,195,194,193,169,167,70,50,16,15,13,
1649 9,0,1,10,11,117,197,
1650 213,13,9,0,1,10,11,117,197,
1651 205,13,9,0,1,10,11,117,197,
1652 262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,215,213,212,
1653 210,209,208,207,205,204,203,202,201,195,194,193,169,167,70,50,16,15,13,
1654 9,0,1,10,11,117,197,
1655 202,0,29,
1656 213,13,9,0,1,10,11,117,197,
1657 213,0,45,
1658 205,0,40,
1659 262,261,13,9,0,1,10,11,117,197,
1660 203,0,34,
1661 213,0,45,
1662 260,255,254,253,252,250,249,248,204,16,15,0,7,39,174,176,177,178,179,181,
1663 182,183,184,185,190,198,
1664 262,261,0,110,166,196,
1665 217,215,0,100,106,
1666 215,0,100,
1667 215,0,100,
1668 210,209,208,0,81,82,83,
1669 262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,213,210,209,208,
1670 207,205,204,195,194,193,169,167,70,50,16,15,0,2,4,5,27,28,31,35,37,38,
1671 40,43,49,77,78,199,200,206,
1672 205,0,37,38,40,
1673 218,0,98,108,
1674 211,204,16,15,0,7,84,85,198,
1675 204,16,15,0,7,84,85,198,
1676 204,0,39,
1677 262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,215,213,205,203,
1678 195,194,193,169,167,163,162,70,50,13,9,0,1,10,11,117,197,
1679 262,261,195,194,167,0,119,166,196,
1680 262,261,215,213,205,50,0,4,37,38,40,45,49,100,105,110,150,151,155,156,166,
1681 196,200,
1682 262,261,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,34,37,38,40,45,
1683 49,100,107,110,150,151,152,153,155,156,159,160,161,164,166,196,200,244,
1684 245,
1685 217,202,0,29,106,
1686 225,224,223,216,205,204,203,26,16,15,0,34,102,103,
1687 262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,215,213,212,
1688 209,208,207,205,204,203,202,201,195,194,193,167,72,70,64,63,62,61,60,59,
1689 58,57,56,55,54,50,9,0,53,65,66,67,68,69,170,
1690 195,194,167,0,
1691 194,167,0,
1692 261,195,194,167,0,74,
1693 262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,215,213,209,208,
1694 207,205,204,203,195,194,193,169,167,70,50,16,15,13,9,0,1,10,11,117,197,
1695 260,255,254,253,252,251,250,249,248,246,241,240,239,238,237,236,235,234,233,
1696 232,231,230,229,228,227,226,225,224,223,217,216,215,212,210,209,208,207,
1697 205,204,203,202,26,16,15,13,9,0,1,10,11,117,197,
1698 260,255,254,253,252,251,250,249,248,246,241,240,239,238,237,236,235,234,233,
1699 232,231,230,229,228,227,226,225,224,223,217,216,215,212,210,209,208,207,
1700 205,204,203,202,26,16,15,13,9,0,1,10,11,117,197,
1701 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,13,9,0,1,
1702 10,11,117,197,
1703 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,13,9,0,1,
1704 10,11,117,197,
1705 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,13,9,0,1,
1706 10,11,117,197,
1707 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,13,9,0,1,
1708 10,11,117,197,
1709 213,0,45,154,
1710 262,261,215,213,205,50,0,4,37,38,40,45,49,100,110,151,155,156,166,196,200,
1711 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
1712 34,37,38,40,45,49,100,107,110,141,142,143,148,149,150,151,152,153,155,
1713 156,159,160,161,164,166,196,200,244,245,
1714 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
1715 34,37,38,40,45,49,100,107,110,141,142,143,148,149,150,151,152,153,155,
1716 156,159,160,161,164,166,196,200,244,245,
1717 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
1718 34,37,38,40,45,49,100,107,110,141,142,143,148,149,150,151,152,153,155,
1719 156,159,160,161,164,166,196,200,244,245,
1720 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
1721 34,37,38,40,45,49,100,107,110,141,142,143,148,149,150,151,152,153,155,
1722 156,159,160,161,164,166,196,200,244,245,
1723 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
1724 34,37,38,40,45,49,94,100,105,107,110,120,123,125,127,128,130,132,135,
1725 138,140,141,142,143,148,149,150,151,152,153,155,156,159,160,161,164,166,
1726 196,200,244,245,
1727 241,240,239,0,144,145,147,
1728 238,237,0,141,142,
1729 217,202,0,29,106,
1730 236,210,0,83,139,
1731 235,234,233,232,209,207,203,0,34,79,82,133,134,136,137,
1732 235,234,209,207,0,79,82,136,137,
1733 233,232,0,133,134,
1734 231,0,131,
1735 230,0,129,
1736 208,0,81,
1737 229,0,126,
1738 228,227,0,121,124,
1739 225,224,223,216,205,204,26,16,15,0,102,103,
1740 262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,195,194,193,169,
1741 167,70,0,
1742 262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,215,213,209,208,
1743 207,205,204,203,195,194,193,169,167,163,162,70,50,16,15,13,9,0,1,10,11,
1744 117,197,
1745 262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,215,213,209,208,
1746 207,205,204,203,195,194,193,169,167,163,162,70,50,16,15,13,9,0,1,10,11,
1747 117,197,
1748 262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,215,213,209,208,
1749 207,205,204,203,195,194,193,169,167,163,162,70,50,16,15,13,9,0,1,10,11,
1750 117,197,
1751 202,0,29,
1752 262,261,260,255,254,253,252,251,250,249,248,246,243,242,241,240,239,238,237,
1753 236,235,234,233,232,231,230,229,228,227,226,225,224,223,219,218,217,216,
1754 215,213,212,211,210,209,208,207,205,204,203,202,201,195,194,193,169,167,
1755 70,50,26,16,15,13,9,0,1,10,11,117,197,
1756 194,167,0,
1757 261,195,194,167,0,73,74,
1758 194,167,0,
1759 194,167,0,
1760 213,0,43,
1761 262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,213,205,195,194,
1762 193,169,167,70,50,13,9,0,1,10,11,117,197,
1763 262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,213,205,195,194,
1764 193,169,167,70,50,0,30,
1765 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
1766 34,37,38,40,45,49,94,100,105,107,110,120,123,125,127,128,130,132,135,
1767 138,140,141,142,143,148,149,150,151,152,153,155,156,159,160,161,164,166,
1768 196,200,244,245,
1769 262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,213,195,194,193,
1770 169,167,70,50,0,2,4,5,27,28,43,49,199,200,206,
1771 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
1772 34,37,38,40,45,49,94,100,105,107,110,120,123,125,127,128,130,132,135,
1773 138,140,141,142,143,148,149,150,151,152,153,155,156,159,160,161,164,166,
1774 196,200,244,245,
1775 205,13,9,0,1,10,11,117,197,
1776 205,0,40,
1777 259,258,205,204,16,15,0,7,37,38,39,40,188,189,198,
1778 205,13,9,0,1,10,11,117,197,
1779 205,0,40,
1780 259,258,257,256,204,16,15,0,7,39,186,187,188,189,198,
1781 215,13,9,0,1,10,11,117,197,
1782 215,0,100,
1783 215,13,9,0,1,10,11,117,197,
1784 215,0,100,
1785 254,13,9,0,1,10,11,117,197,
1786 254,0,176,184,
1787 254,13,9,0,1,10,11,117,197,
1788 254,0,176,184,
1789 215,13,9,0,1,10,11,117,197,
1790 215,0,100,
1791 16,15,0,7,198,
1792 215,13,9,0,1,10,11,117,197,
1793 215,0,100,
1794 262,261,220,195,194,167,0,111,119,166,196,
1795 262,261,215,213,205,203,195,194,169,167,163,162,50,13,9,0,1,10,11,117,197,
1796 262,261,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,34,37,38,40,45,
1797 49,100,107,110,150,151,152,153,155,156,159,160,161,164,166,196,200,244,
1798 245,
1799 262,261,215,213,205,50,0,4,37,38,40,45,49,100,105,110,150,151,155,156,166,
1800 196,200,
1801 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
1802 34,37,38,40,45,49,94,100,105,107,110,120,123,125,127,128,130,132,135,
1803 138,140,141,142,143,148,149,150,151,152,153,155,156,159,160,161,164,166,
1804 196,200,244,245,
1805 262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,213,205,195,194,
1806 193,169,167,70,50,0,2,4,5,27,28,31,35,37,38,40,43,49,199,200,206,
1807 262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,215,213,205,203,
1808 195,194,193,169,167,163,162,70,50,13,9,0,1,10,11,117,197,
1809 262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,213,205,195,194,
1810 193,169,167,70,50,0,2,4,5,27,28,31,35,37,38,40,43,49,199,200,206,
1811 262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,213,205,195,194,
1812 193,169,167,70,50,0,2,4,5,27,28,31,35,37,38,40,43,49,199,200,206,
1813 262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,213,195,194,193,
1814 169,167,70,50,0,2,4,5,27,28,33,43,49,76,199,200,206,
1815 202,0,29,
1816 203,0,34,
1817 262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,213,205,195,194,
1818 193,169,167,70,50,0,2,4,5,27,28,31,35,37,38,40,43,49,199,200,206,
1819 210,209,208,207,204,16,15,0,79,
1820 262,261,251,247,243,242,241,240,239,238,237,231,230,227,226,225,224,223,221,
1821 218,216,214,213,195,194,193,169,167,70,50,16,15,0,2,4,5,7,22,27,28,33,
1822 43,49,75,76,80,89,91,92,93,95,96,97,98,99,101,104,108,109,114,115,116,
1823 172,173,198,199,200,206,
1824 211,0,90,
1825 262,261,251,247,243,242,241,240,239,238,237,231,230,227,226,225,224,223,221,
1826 218,216,214,213,195,194,193,169,167,70,50,16,15,0,2,4,5,7,22,27,28,33,
1827 43,49,75,76,80,89,91,92,93,95,96,97,98,99,101,104,108,109,114,115,116,
1828 172,173,198,199,200,206,
1829 212,203,0,34,44,
1830 217,202,0,29,106,
1831 262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,213,205,195,194,
1832 193,169,167,70,50,0,158,
1833 213,0,45,
1834 262,261,215,213,205,50,0,4,37,38,40,45,49,100,110,150,151,155,156,166,196,
1835 200,
1836 225,224,223,205,204,26,16,15,13,9,0,1,10,11,117,197,
1837 169,0,
1838 262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,213,205,195,194,
1839 193,169,167,70,50,0,2,4,5,27,28,31,35,37,38,40,43,49,199,200,206,
1840 235,234,233,232,212,209,207,203,0,34,44,79,82,133,134,136,137,
1841 212,0,44,
1842 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,13,9,0,1,
1843 10,11,117,197,
1844 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
1845 34,37,38,40,45,49,100,107,110,141,142,143,146,148,149,150,151,152,153,
1846 155,156,159,160,161,164,166,196,200,244,245,
1847 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,13,9,0,1,
1848 10,11,117,197,
1849 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
1850 34,37,38,40,45,49,100,107,110,141,142,143,146,148,149,150,151,152,153,
1851 155,156,159,160,161,164,166,196,200,244,245,
1852 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,13,9,0,1,
1853 10,11,117,197,
1854 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
1855 34,37,38,40,45,49,100,107,110,141,142,143,148,149,150,151,152,153,155,
1856 156,159,160,161,164,166,196,200,244,245,
1857 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
1858 34,37,38,40,45,49,100,107,110,140,141,142,143,148,149,150,151,152,153,
1859 155,156,159,160,161,164,166,196,200,244,245,
1860 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
1861 34,37,38,40,45,49,100,107,110,140,141,142,143,148,149,150,151,152,153,
1862 155,156,159,160,161,164,166,196,200,244,245,
1863 262,261,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,34,37,38,40,45,
1864 49,100,107,110,150,151,152,153,155,156,159,160,161,164,166,196,200,244,
1865 245,
1866 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
1867 34,37,38,40,45,49,100,107,110,138,140,141,142,143,148,149,150,151,152,
1868 153,155,156,159,160,161,164,166,196,200,244,245,
1869 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,13,9,0,1,
1870 10,11,117,197,
1871 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
1872 34,37,38,40,45,49,100,107,110,138,140,141,142,143,148,149,150,151,152,
1873 153,155,156,159,160,161,164,166,196,200,244,245,
1874 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,13,9,0,1,
1875 10,11,117,197,
1876 262,261,215,213,205,50,0,4,37,38,40,45,49,100,105,110,150,151,155,156,166,
1877 196,200,
1878 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,13,9,0,1,
1879 10,11,117,197,
1880 262,261,215,213,205,50,0,4,37,38,40,45,49,100,105,110,150,151,155,156,166,
1881 196,200,
1882 262,261,215,213,205,50,0,4,37,38,40,45,49,100,105,110,150,151,155,156,166,
1883 196,200,
1884 262,261,215,213,205,50,0,4,37,38,40,45,49,100,105,110,150,151,155,156,166,
1885 196,200,
1886 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,13,9,0,1,
1887 10,11,117,197,
1888 262,261,215,213,205,50,0,4,37,38,40,45,49,100,105,110,150,151,155,156,166,
1889 196,200,
1890 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,13,9,0,1,
1891 10,11,117,197,
1892 262,261,215,213,205,50,0,4,37,38,40,45,49,100,105,110,150,151,155,156,166,
1893 196,200,
1894 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
1895 34,37,38,40,45,49,100,107,110,135,138,140,141,142,143,148,149,150,151,
1896 152,153,155,156,159,160,161,164,166,196,200,244,245,
1897 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
1898 34,37,38,40,45,49,100,107,110,135,138,140,141,142,143,148,149,150,151,
1899 152,153,155,156,159,160,161,164,166,196,200,244,245,
1900 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
1901 34,37,38,40,45,49,100,107,110,135,138,140,141,142,143,148,149,150,151,
1902 152,153,155,156,159,160,161,164,166,196,200,244,245,
1903 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
1904 34,37,38,40,45,49,100,107,110,135,138,140,141,142,143,148,149,150,151,
1905 152,153,155,156,159,160,161,164,166,196,200,244,245,
1906 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
1907 34,37,38,40,45,49,100,105,107,110,132,135,138,140,141,142,143,148,149,
1908 150,151,152,153,155,156,159,160,161,164,166,196,200,244,245,
1909 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
1910 34,37,38,40,45,49,100,105,107,110,132,135,138,140,141,142,143,148,149,
1911 150,151,152,153,155,156,159,160,161,164,166,196,200,244,245,
1912 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,13,9,0,1,
1913 10,11,117,197,
1914 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
1915 34,37,38,40,45,49,100,105,107,110,130,132,135,138,140,141,142,143,148,
1916 149,150,151,152,153,155,156,159,160,161,164,166,196,200,244,245,
1917 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,13,9,0,1,
1918 10,11,117,197,
1919 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
1920 34,37,38,40,45,49,100,105,107,110,128,130,132,135,138,140,141,142,143,
1921 148,149,150,151,152,153,155,156,159,160,161,164,166,196,200,244,245,
1922 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
1923 34,37,38,40,45,49,100,105,107,110,127,128,130,132,135,138,140,141,142,
1924 143,148,149,150,151,152,153,155,156,159,160,161,164,166,196,200,244,245,
1925 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,13,9,0,1,
1926 10,11,117,197,
1927 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
1928 34,37,38,40,45,49,100,105,107,110,125,127,128,130,132,135,138,140,141,
1929 142,143,148,149,150,151,152,153,155,156,159,160,161,164,166,196,200,244,
1930 245,
1931 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,13,9,0,1,
1932 10,11,117,197,
1933 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
1934 34,37,38,40,45,49,100,105,107,110,123,125,127,128,130,132,135,138,140,
1935 141,142,143,148,149,150,151,152,153,155,156,159,160,161,164,166,196,200,
1936 244,245,
1937 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,13,9,0,1,
1938 10,11,117,197,
1939 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
1940 34,37,38,40,45,49,94,100,105,107,110,120,123,125,127,128,130,132,135,
1941 138,140,141,142,143,148,149,150,151,152,153,155,156,159,160,161,164,166,
1942 196,200,244,245,
1943 262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,213,205,195,194,
1944 193,169,167,70,50,0,2,4,5,27,28,31,35,37,38,40,43,49,199,200,206,
1945 261,195,194,167,0,74,
1946 262,261,251,243,242,241,240,239,238,237,231,230,227,226,217,216,215,213,212,
1947 209,208,207,205,204,203,202,201,195,194,193,169,167,70,50,15,9,0,46,48,
1948 262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,213,205,195,194,
1949 193,169,167,70,50,0,2,4,5,27,28,31,35,37,38,40,43,49,199,200,206,
1950 212,0,44,
1951 202,0,29,
1952 212,0,44,
1953 16,15,0,7,198,
1954 215,13,9,0,1,10,11,117,197,
1955 215,0,100,
1956 215,13,9,0,1,10,11,117,197,
1957 215,0,100,
1958 16,15,0,7,198,
1959 215,0,100,
1960 215,0,100,
1961 215,13,9,0,1,10,11,117,197,
1962 215,0,100,
1963 215,13,9,0,1,10,11,117,197,
1964 215,0,100,
1965 16,15,0,7,198,
1966 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
1967 34,37,38,40,45,49,94,100,105,107,110,120,123,125,127,128,130,132,135,
1968 138,140,141,142,143,148,149,150,151,152,153,155,156,159,160,161,164,166,
1969 196,200,244,245,
1970 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
1971 34,37,38,40,45,49,94,100,105,107,110,120,123,125,127,128,130,132,135,
1972 138,140,141,142,143,148,149,150,151,152,153,155,156,159,160,161,164,166,
1973 196,200,244,245,
1974 16,15,0,7,198,
1975 16,15,0,7,198,
1976 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
1977 34,37,38,40,45,49,94,100,105,107,110,120,123,125,127,128,130,132,135,
1978 138,140,141,142,143,148,149,150,151,152,153,155,156,159,160,161,164,166,
1979 196,200,244,245,
1980 262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,213,195,194,193,
1981 169,167,70,50,0,2,4,5,43,49,175,191,199,200,206,
1982 262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,213,205,195,194,
1983 193,169,167,70,50,13,9,0,1,10,11,117,197,
1984 262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,213,205,195,194,
1985 193,169,167,70,50,0,2,4,5,27,28,31,35,37,38,40,43,49,199,200,206,
1986 215,0,100,
1987 216,204,203,16,15,0,34,102,103,
1988 216,204,16,15,0,102,103,
1989 203,0,34,
1990 203,0,34,
1991 203,0,34,
1992 262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,213,210,209,208,
1993 205,204,195,194,193,169,167,70,50,16,15,0,2,4,5,27,28,31,35,37,38,40,43,
1994 49,77,78,199,200,206,
1995 262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,213,205,195,194,
1996 193,169,167,70,50,0,2,4,5,27,28,35,37,38,40,43,49,199,200,206,
1997 203,0,34,
1998 262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,213,205,195,194,
1999 193,169,167,70,50,0,2,4,5,27,28,31,35,37,38,40,43,49,199,200,206,
2000 214,205,16,15,13,9,0,1,10,11,117,197,
2001 214,205,16,15,0,7,37,38,40,84,85,198,
2002 260,255,254,253,252,251,250,249,248,246,241,240,239,238,237,236,235,234,233,
2003 232,231,230,229,228,227,226,225,224,223,217,216,215,212,210,209,208,207,
2004 205,204,203,202,26,16,15,13,9,0,1,10,11,117,197,
2005 262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,213,205,195,194,
2006 193,169,167,70,50,0,2,4,5,27,28,31,35,37,38,40,43,49,199,200,206,
2007 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
2008 34,37,38,40,45,49,94,100,105,107,110,120,123,125,127,128,130,132,135,
2009 138,140,141,142,143,148,149,150,151,152,153,155,156,159,160,161,164,166,
2010 196,200,244,245,
2011 217,202,0,29,106,
2012 212,203,0,34,44,
2013 241,240,239,0,144,145,147,
2014 241,240,239,0,144,145,147,
2015 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
2016 34,37,38,40,45,49,94,100,105,107,110,120,123,125,127,128,130,132,135,
2017 138,140,141,142,143,148,149,150,151,152,153,155,156,159,160,161,164,166,
2018 196,200,244,245,
2019 238,237,0,141,142,
2020 238,237,0,141,142,
2021 203,0,34,
2022 203,0,34,
2023 203,0,34,
2024 203,0,34,
2025 203,0,34,
2026 203,0,34,
2027 236,210,0,83,139,
2028 236,210,0,83,139,
2029 236,210,0,83,139,
2030 236,210,0,83,139,
2031 235,234,209,207,203,0,34,79,82,136,137,
2032 235,234,209,207,0,79,82,136,137,
2033 235,234,209,207,0,79,82,136,137,
2034 233,232,0,133,134,
2035 231,0,131,
2036 230,0,129,
2037 208,0,81,
2038 229,0,126,
2039 226,0,122,
2040 203,201,0,32,34,
2041 203,201,0,32,34,
2042 205,0,37,38,40,
2043 262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,213,195,194,193,
2044 169,167,70,50,0,2,4,5,43,49,175,191,199,200,206,
2045 262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,213,195,194,193,
2046 169,167,70,50,0,2,4,5,43,49,175,191,199,200,206,
2047 262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,213,195,194,193,
2048 169,167,70,50,0,2,4,5,43,49,175,191,199,200,206,
2049 262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,213,195,194,193,
2050 169,167,70,50,0,2,4,5,43,49,175,191,199,200,206,
2051 262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,213,195,194,193,
2052 169,167,70,50,0,2,4,5,43,49,175,191,199,200,206,
2053 262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,195,194,193,169,
2054 167,70,0,2,206,
2055 251,0,180,
2056 251,0,180,
2057 251,0,180,
2058 202,0,29,
2059 203,16,15,0,7,34,198,
2060 219,205,203,0,34,112,113,
2061 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
2062 34,37,38,40,45,49,94,100,105,107,110,120,123,125,127,128,130,132,135,
2063 138,140,141,142,143,148,149,150,151,152,153,155,156,159,160,161,164,166,
2064 196,200,244,245,
2065 210,209,208,204,16,15,0,
2066 210,209,208,204,203,16,15,0,34,
2067 214,0,92,93,
2068 203,201,0,32,34,
2069 246,0,157,
2070 246,212,0,44,157,
2071 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,13,9,0,1,
2072 10,11,117,197,
2073 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
2074 34,37,38,40,45,49,94,100,105,107,110,120,123,125,127,128,130,132,135,
2075 138,140,141,142,143,148,149,150,151,152,153,155,156,159,160,161,164,166,
2076 196,200,244,245,
2077 262,261,260,255,254,253,252,251,250,249,248,246,243,242,241,240,239,238,237,
2078 235,234,233,232,231,230,229,228,227,226,225,224,223,219,217,216,215,213,
2079 212,210,209,208,207,205,204,203,202,201,195,194,193,169,167,70,50,26,16,
2080 15,13,9,0,1,10,11,117,197,
2081 203,16,15,0,7,34,198,
2082 203,16,15,0,7,34,198,
2083 203,16,15,0,7,34,198,
2084 203,16,15,0,7,34,198,
2085 203,16,15,0,7,34,198,
2086 16,15,0,7,198,
2087 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,13,9,0,1,
2088 10,11,117,197,
2089 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
2090 34,37,38,40,45,49,94,100,105,107,110,120,123,125,127,128,130,132,135,
2091 138,140,141,142,143,148,149,150,151,152,153,155,156,159,160,161,164,166,
2092 196,200,244,245,
2093 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
2094 34,37,38,40,45,49,94,100,105,107,110,120,123,125,127,128,130,132,135,
2095 138,140,141,142,143,148,149,150,151,152,153,155,156,159,160,161,164,166,
2096 196,200,244,245,
2097 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
2098 34,37,38,40,45,49,94,100,105,107,110,120,123,125,127,128,130,132,135,
2099 138,140,141,142,143,148,149,150,151,152,153,155,156,159,160,161,164,166,
2100 196,200,244,245,
2101 262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,213,205,195,194,
2102 193,169,167,70,50,0,192,
2103 262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,213,195,194,193,
2104 169,167,70,50,0,2,4,5,43,49,191,199,200,206,
2105 205,13,9,0,1,10,11,117,197,
2106 205,0,37,38,40,
2107 216,204,16,15,0,102,103,
2108 205,0,37,38,40,
2109 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,13,9,0,1,
2110 10,11,117,197,
2111 262,261,243,242,238,237,215,213,205,203,195,194,169,167,163,162,50,0,3,4,6,
2112 34,37,38,40,45,49,94,100,105,107,110,120,123,125,127,128,130,132,135,
2113 138,140,141,142,143,148,149,150,151,152,153,155,156,159,160,161,164,166,
2114 196,200,244,245,
2115 262,261,251,243,242,241,240,239,238,237,231,230,227,226,216,213,205,195,194,
2116 193,169,167,70,50,0,2,4,5,27,28,31,35,37,38,40,43,49,199,200,206,
2117 202,0,29,
2118 212,0,44,
2119 203,201,0,32,34,
2120
2121 };
2122
2123
2124 static unsigned const char ag_astt[6900] = {
2125 8,8,8,8,8,8,8,1,1,7,1,1,1,1,1,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
2126 9,9,9,9,9,9,9,9,9,9,9,9,9,1,3,9,7,3,1,1,9,5,3,3,1,1,1,1,1,8,1,1,7,1,0,1,1,
2127 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2128 1,1,1,1,1,8,1,7,1,1,5,5,1,1,7,1,1,1,1,3,5,5,1,1,7,1,1,1,1,3,5,5,5,5,5,5,5,
2129 5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
2130 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,
2131 1,7,1,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
2132 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,1,1,7,1,2,2,
2133 1,1,7,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,7,1,1,1,8,8,8,8,8,8,
2134 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,5,8,8,8,8,8,8,8,1,1,7,1,1,1,1,1,1,1,1,1,
2135 1,5,3,3,3,3,1,1,1,1,1,3,7,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
2136 9,9,9,9,9,9,9,9,9,9,9,5,3,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
2137 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,5,
2138 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
2139 5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,1,1,1,10,10,10,7,1,2,2,2,1,1,1,
2140 10,10,10,7,1,2,2,2,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
2141 10,10,10,4,5,1,1,7,1,1,1,1,3,1,7,2,1,2,1,1,5,3,1,2,2,2,1,2,2,2,2,2,2,2,2,2,
2142 2,2,1,1,1,1,1,2,1,2,8,2,2,2,2,2,2,2,7,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2143 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
2144 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,1,1,1,1,1,2,7,1,2,1,2,1,1,1,
2145 1,1,1,1,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,2,1,2,1,1,1,
2146 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,1,2,2,2,
2147 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,9,5,3,3,1,1,2,2,2,2,2,2,2,2,2,2,2,2,
2148 2,2,2,1,2,1,1,1,1,1,1,2,2,2,2,2,2,2,1,1,7,1,1,1,3,3,2,1,3,2,1,1,1,3,3,3,3,
2149 1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,
2150 1,2,2,2,2,2,2,2,2,2,2,2,3,2,7,3,2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2151 2,2,4,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,7,3,1,5,5,5,5,5,5,5,5,5,5,5,5,5,
2152 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
2153 5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
2154 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,5,1,1,7,1,1,1,1,3,5,1,1,7,
2155 1,1,1,1,3,10,10,10,10,10,10,10,10,10,10,10,10,10,10,5,10,5,5,5,5,5,5,5,5,5,
2156 5,5,5,10,10,10,10,10,10,5,5,5,1,1,7,1,1,1,1,3,1,5,1,5,1,1,7,1,1,1,1,3,1,7,
2157 1,1,7,2,5,5,1,1,7,1,1,1,1,3,1,4,1,1,7,1,1,1,1,1,1,1,1,1,1,1,1,7,3,2,1,1,1,
2158 1,1,1,1,1,1,1,1,1,1,1,7,1,2,2,1,1,7,1,1,1,7,1,1,4,1,1,1,1,7,1,1,1,2,2,2,2,
2159 2,2,2,2,2,2,2,2,2,2,2,2,5,5,5,8,1,5,2,2,2,2,2,2,2,5,5,7,2,1,1,1,2,1,1,2,1,
2160 2,1,1,1,1,1,1,1,1,7,2,1,2,1,5,3,1,8,5,1,1,7,1,1,1,1,5,1,1,7,1,1,3,1,1,7,3,
2161 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,1,
2162 1,10,10,10,4,2,2,2,1,1,1,1,1,2,7,1,2,1,2,1,1,1,1,1,1,1,2,2,2,2,1,1,1,1,1,1,
2163 1,2,2,1,2,2,2,2,7,2,1,2,1,2,1,2,1,1,1,2,1,1,1,2,1,2,2,1,1,1,2,2,2,1,1,1,1,
2164 1,5,1,1,5,5,5,1,5,5,1,5,5,5,7,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2165 1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,1,1,7,1,1,1,1,1,1,1,10,
2166 10,10,5,10,10,5,2,10,10,10,5,2,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
2167 5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
2168 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,5,5,5,5,
2169 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
2170 5,5,5,1,1,7,1,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,5,
2171 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,
2172 5,5,5,5,1,1,7,1,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,
2173 1,7,1,2,1,1,1,1,1,2,7,2,2,1,2,1,1,1,1,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,2,2,
2174 1,2,2,2,2,7,2,1,2,1,2,1,2,1,1,1,2,1,1,1,2,1,1,1,1,2,1,2,2,1,1,1,2,2,2,1,1,
2175 1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,2,1,2,1,2,1,2,1,1,1,2,1,1,1,2,1,1,1,
2176 1,2,1,2,2,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,2,1,2,1,2,
2177 1,2,1,1,1,2,1,1,1,2,1,1,1,1,2,1,2,2,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,
2178 2,2,1,2,2,2,2,7,2,1,2,1,2,1,2,1,1,1,2,1,1,1,2,1,1,1,1,2,1,2,2,1,1,1,2,2,2,
2179 1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,
2180 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,1,1,1,1,5,1,1,1,1,1,
2181 5,1,1,1,1,5,1,1,1,1,5,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,5,1,1,1,1,
2182 1,1,5,1,1,1,5,1,1,5,1,1,5,1,1,5,1,1,1,5,1,1,5,5,5,1,5,5,5,5,5,7,2,2,10,10,
2183 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,4,5,5,5,5,5,5,5,5,
2184 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,5,5,5,
2185 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,
2186 1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,
2187 1,7,1,1,1,1,3,1,5,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
2188 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,
2189 1,1,1,3,2,2,7,2,1,1,1,7,1,1,2,2,5,2,2,5,2,7,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
2190 5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
2191 4,4,4,4,4,7,1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,2,1,2,1,1,1,1,1,
2192 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,1,2,2,2,2,2,
2193 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,7,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,
2194 1,1,2,2,1,2,2,2,2,7,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2195 1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,1,5,1,1,7,1,1,1,1,3,1,7,2,1,1,1,1,1,1,7,3,
2196 1,1,1,2,1,1,1,5,1,1,7,1,1,1,1,3,1,7,2,1,1,1,1,1,1,1,7,3,1,1,1,1,1,1,5,1,1,
2197 7,1,1,1,1,3,1,7,1,5,1,1,7,1,1,1,1,3,1,7,1,5,1,1,7,1,1,1,1,3,1,7,1,1,5,1,1,
2198 7,1,1,1,1,3,1,7,1,1,5,1,1,7,1,1,1,1,3,1,7,1,1,1,7,2,1,5,1,1,7,1,1,1,1,3,1,
2199 7,1,1,1,1,10,10,10,7,1,2,2,2,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,1,1,
2200 1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,
2201 1,1,1,1,1,1,1,2,7,1,2,1,2,1,1,1,1,1,1,1,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,2,2,
2202 1,2,2,2,2,7,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2203 1,1,2,2,1,1,1,2,2,2,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,
2204 7,2,1,1,1,2,1,1,2,1,2,1,1,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
2205 5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,
2206 2,2,7,2,1,1,1,2,1,1,2,1,2,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,
2207 2,2,2,2,2,7,2,1,1,1,2,1,1,2,1,2,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2208 2,2,2,2,2,2,2,7,2,1,1,1,2,1,1,1,1,1,1,1,1,5,1,1,4,1,2,2,2,2,2,2,2,2,2,2,2,
2209 2,2,2,2,2,1,2,2,2,2,2,2,2,5,2,1,1,1,2,1,1,2,1,2,1,1,1,1,1,4,4,4,1,4,4,4,7,
2210 1,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,2,1,2,2,2,2,2,2,2,2,1,1,5,2,1,1,
2211 3,3,1,1,1,1,1,3,1,1,3,2,1,1,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,1,2,2,
2212 2,1,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,2,1,2,2,2,2,2,2,2,2,1,1,5,2,1,1,3,3,1,
2213 1,1,1,1,3,1,1,3,2,1,1,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,3,1,1,7,
2214 1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,1,1,7,1,1,1,1,1,1,2,
2215 7,1,2,1,2,1,1,1,1,1,1,2,2,2,2,1,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,2,7,2,2,2,
2216 2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,7,2,1,1,1,2,1,1,2,1,2,1,1,1,1,1,
2217 1,1,1,1,1,1,1,1,7,1,3,1,1,1,1,1,1,1,7,2,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
2218 1,1,7,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,2,1,2,1,2,1,2,1,1,1,2,
2219 1,1,1,2,2,1,1,1,1,2,1,2,2,1,1,1,2,2,2,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
2220 5,5,1,1,7,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,2,1,2,1,2,1,2,1,1,
2221 1,2,1,1,1,2,2,1,1,1,1,2,1,2,2,1,1,1,2,2,2,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,
2222 5,5,5,5,1,1,7,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,2,1,2,1,2,1,2,
2223 1,1,1,2,1,1,1,2,1,1,1,1,2,1,2,2,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,
2224 1,2,2,2,2,7,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,
2225 1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,
2226 1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,2,1,2,1,2,1,2,
2227 1,1,1,2,1,1,1,2,1,2,2,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,
2228 7,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,1,5,5,
2229 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,2,2,1,2,
2230 2,2,2,7,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,
2231 1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,1,1,1,1,1,2,7,1,2,1,2,
2232 1,1,1,1,1,1,1,2,2,2,2,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,
2233 1,1,1,1,1,2,7,1,2,1,2,1,1,1,1,1,1,1,2,2,2,2,1,1,1,1,1,1,2,7,1,2,1,2,1,1,1,
2234 1,1,1,1,2,2,2,2,1,1,1,1,1,1,2,7,1,2,1,2,1,1,1,1,1,1,1,2,2,2,2,1,5,5,5,5,5,
2235 5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,1,1,1,1,1,2,7,1,2,1,2,1,1,1,1,1,1,
2236 1,2,2,2,2,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,1,1,1,1,1,2,
2237 7,1,2,1,2,1,1,1,1,1,1,1,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,1,
2238 1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,1,1,1,1,1,
2239 1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2240 1,2,2,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,2,1,2,
2241 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,
2242 1,2,2,1,2,2,2,2,7,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,
2243 1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,2,1,2,1,1,1,1,1,
2244 1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,
2245 1,2,2,2,2,7,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,
2246 2,2,2,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,1,1,1,1,1,1,
2247 1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2248 1,1,2,2,1,1,1,2,2,2,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,
2249 3,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,
2250 1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,
2251 2,7,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,
2252 2,2,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,1,1,1,1,1,1,1,
2253 1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2254 1,1,1,1,2,2,1,1,1,2,2,2,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,
2255 1,1,3,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,
2256 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,1,5,5,5,5,5,5,5,5,5,5,5,
2257 5,5,5,5,5,5,1,1,7,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,2,
2258 1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,
2259 1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,7,2,1,1,1,2,1,1,2,1,2,
2260 1,1,1,1,1,2,10,10,10,4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,2,2,2,2,2,2,2,
2261 2,2,2,2,2,2,2,2,2,2,2,7,3,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,
2262 2,7,2,1,1,1,2,1,1,2,1,2,1,1,1,1,1,1,7,1,1,4,1,1,7,2,1,1,7,2,1,5,1,1,7,1,1,
2263 1,1,3,1,7,1,5,1,1,7,1,1,1,1,3,1,7,1,1,1,7,2,1,1,7,1,1,7,1,5,1,1,7,1,1,1,1,
2264 3,1,7,1,5,1,1,7,1,1,1,1,3,1,7,1,1,1,7,2,1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,
2265 2,7,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,
2266 1,1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,2,1,2,1,1,1,
2267 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,1,1,1,7,
2268 2,1,1,1,7,2,1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,2,1,2,1,1,1,1,1,
2269 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,1,2,2,2,2,2,
2270 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,7,1,1,1,1,1,1,1,1,1,1,5,5,5,5,5,5,5,5,
2271 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,2,2,2,2,2,2,2,2,2,2,2,2,2,
2272 2,2,2,1,2,2,2,2,2,2,2,7,2,1,1,1,2,1,1,2,1,2,1,1,1,1,1,1,7,1,1,5,1,5,5,7,1,
2273 2,2,1,5,5,5,7,2,2,1,4,1,1,4,1,1,4,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,5,5,5,
2274 1,5,2,2,2,2,2,2,2,5,5,7,2,1,1,1,2,1,1,2,1,2,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,
2275 2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,7,2,1,1,1,2,2,2,1,2,1,1,1,1,1,1,4,1,2,2,2,
2276 2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,7,2,1,1,1,2,1,1,2,1,2,1,1,1,1,1,
2277 5,5,5,5,1,1,7,1,1,1,1,3,8,1,1,1,7,1,2,1,2,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,
2278 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,
2279 1,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,7,2,1,1,1,2,1,1,2,1,2,
2280 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,2,1,2,1,1,1,1,1,1,1,
2281 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,1,1,1,4,1,1,1,1,
2282 7,1,3,1,1,1,4,1,1,1,1,1,1,4,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,1,
2283 1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,
2284 2,2,1,1,1,1,1,4,1,1,1,1,4,1,1,1,4,1,1,4,1,1,4,1,1,4,1,1,4,1,1,4,1,1,1,4,1,
2285 1,1,1,4,1,1,1,1,4,1,1,1,1,4,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,4,1,1,1,1,1,
2286 1,1,1,4,1,1,1,1,1,1,4,1,1,1,4,1,1,4,1,1,4,1,1,4,1,1,7,1,1,1,7,3,1,1,1,7,2,
2287 1,1,7,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,7,1,1,1,1,1,1,1,
2288 1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,7,1,1,1,1,1,1,1,1,1,1,
2289 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,7,1,1,1,1,1,1,1,1,1,1,2,2,2,
2290 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,7,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,
2291 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,7,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,
2292 2,2,2,2,2,2,2,2,2,2,2,2,7,1,1,1,7,1,1,7,1,1,7,1,1,4,1,1,1,1,7,2,1,1,1,8,1,
2293 7,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,
2294 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,1,4,4,4,4,4,4,7,4,
2295 4,4,4,1,4,4,7,1,1,7,1,1,1,1,7,2,1,1,7,1,1,1,7,2,1,5,5,5,5,5,5,5,5,5,5,5,5,
2296 5,5,5,5,5,1,1,7,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,2,1,
2297 2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,
2298 1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
2299 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,1,1,1,7,2,1,1,1,
2300 1,1,7,2,1,1,1,1,1,7,2,1,1,1,1,1,7,2,1,1,1,1,1,7,2,1,1,1,1,7,2,1,5,5,5,5,5,
2301 5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,
2302 7,1,1,1,1,2,1,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,
2303 1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,2,1,2,1,1,2,1,
2304 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,1,1,1,1,1,
2305 1,1,1,1,1,1,2,2,1,2,2,2,2,7,1,1,1,1,2,1,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,
2306 1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,2,2,1,1,1,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
2307 4,4,4,4,4,4,4,4,7,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,7,1,1,1,
2308 1,1,1,1,1,1,5,1,1,7,1,1,1,1,3,1,7,2,1,2,1,5,5,5,7,2,2,1,7,2,1,2,5,5,5,5,5,
2309 5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,2,2,
2310 7,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,
2311 1,1,2,2,2,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,7,2,1,1,1,
2312 2,1,1,2,1,2,1,1,1,1,1,1,4,1,1,7,2,1,1,7,2,1
2313 };
2314
2315
2316 static const unsigned short ag_pstt[] = {
2317 3,3,3,3,3,3,3,1,2,0,2,2,1,2,3,
2318 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,3,5,
2319 1,6,1,
2320 1,132,454,132,132,1,
2321 5,6,7,8,15,4,9,3,14,0,14,14,14,14,15,13,12,11,10,9,
2322 16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
2323 16,16,16,16,16,16,16,16,16,17,16,4,16,17,
2324 453,453,1,2,5,2,2,1,2,482,
2325 453,453,1,2,6,2,2,1,2,481,
2326 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
2327 453,453,1,2,7,2,2,1,2,480,
2328 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
2329 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
2330 453,453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,8,2,2,1,2,
2331 462,
2332 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
2333 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
2334 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,9,2,
2335 2,1,2,455,
2336 18,19,10,20,134,134,
2337 18,19,11,21,134,134,
2338 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,12,24,22,23,
2339 26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,92,26,
2340 26,26,26,26,26,26,4,9,13,25,25,26,9,
2341 5,6,7,8,4,9,19,17,17,17,17,13,12,11,10,9,
2342 20,15,
2343 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,11,
2344 12,17,
2345 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
2346 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
2347 453,453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,18,2,2,1,2,
2348 519,
2349 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
2350 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
2351 453,453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,19,2,2,1,2,
2352 518,
2353 18,19,27,136,136,136,20,28,136,135,135,
2354 18,19,27,136,136,136,21,29,136,135,135,
2355 31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,130,
2356 453,1,30,23,30,30,1,30,479,
2357 8,24,127,31,35,
2358 4,9,93,91,9,
2359 30,30,30,37,30,30,30,30,30,30,30,30,30,30,30,5,6,7,43,36,30,40,45,57,30,30,
2360 30,30,30,30,51,26,122,39,39,56,39,50,44,33,32,56,52,51,56,55,57,56,55,
2361 53,45,56,56,56,54,54,49,48,41,47,12,11,10,46,42,35,34,38,
2362 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
2363 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,27,2,2,
2364 1,2,472,
2365 18,19,27,58,8,51,28,62,197,31,35,60,32,61,63,59,62,62,195,196,134,134,34,
2366 18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,29,82,84,82,76,197,
2367 31,35,81,32,94,61,86,82,59,93,92,91,90,89,88,87,85,83,82,80,79,82,78,77,
2368 84,84,82,75,195,196,67,66,65,205,134,134,34,70,69,
2369 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,1,132,454,
2370 132,132,1,95,
2371 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,27,45,97,96,98,8,100,68,30,30,
2372 30,30,30,30,51,4,9,31,99,99,99,37,39,38,31,34,35,99,33,32,39,39,39,39,9,
2373 35,34,38,
2374 53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,
2375 53,53,53,53,53,53,53,102,101,65,64,63,62,61,60,59,58,57,56,55,50,53,32,
2376 52,54,54,54,104,103,54,
2377 47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,48,44,47,47,47,47,47,47,
2378 47,47,47,47,47,47,47,47,47,47,47,33,46,105,
2379 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
2380 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
2381 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
2382 453,453,453,1,2,34,2,2,1,2,457,
2383 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
2384 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
2385 1,2,35,2,2,1,2,456,
2386 453,1,2,36,2,2,1,2,475,
2387 453,1,2,37,2,2,1,2,504,
2388 31,31,31,31,31,31,31,31,31,31,31,31,31,31,453,31,453,453,453,453,453,453,
2389 453,453,453,453,453,453,31,31,31,31,31,31,453,453,453,1,2,38,2,2,1,2,
2390 463,
2391 106,26,107,
2392 453,1,2,40,2,2,1,2,471,
2393 58,41,108,
2394 8,42,217,
2395 453,453,1,2,43,2,2,1,2,478,
2396 68,87,109,
2397 58,45,110,
2398 111,114,125,117,119,121,123,128,100,4,9,46,218,216,129,127,124,122,120,118,
2399 116,113,126,115,112,9,
2400 18,19,47,130,134,134,
2401 131,27,48,133,132,
2402 27,49,134,
2403 27,23,135,
2404 136,97,96,51,139,138,137,
2405 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,45,77,77,77,143,8,77,30,30,30,
2406 30,30,30,51,77,77,52,122,140,140,140,23,141,141,33,31,35,33,32,142,143,
2407 35,34,38,
2408 8,53,107,31,35,
2409 36,115,114,41,
2410 145,92,4,9,55,144,144,145,9,
2411 92,4,9,56,146,146,95,9,
2412 100,57,97,
2413 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
2414 453,453,453,453,453,453,453,453,453,1,2,58,2,2,1,2,470,
2415 18,19,136,136,136,187,136,135,135,
2416 18,19,27,58,8,51,60,62,197,31,35,60,32,61,147,59,62,62,195,196,134,134,34,
2417 18,19,27,58,8,68,211,211,64,209,205,205,51,61,198,148,198,76,197,31,35,81,
2418 32,61,198,59,148,148,198,75,195,196,67,66,65,205,134,134,34,70,69,
2419 131,106,188,149,150,
2420 117,117,117,152,117,117,68,117,117,117,63,151,129,129,
2421 153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,
2422 153,153,153,153,153,153,153,153,153,153,153,153,102,101,65,64,63,62,61,
2423 60,59,58,57,56,55,153,153,64,153,153,153,104,103,153,153,
2424 212,212,212,202,
2425 210,210,201,
2426 208,206,206,206,200,206,
2427 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
2428 453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,68,2,2,1,2,460,
2429 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
2430 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
2431 453,453,453,453,453,453,453,1,2,69,2,2,1,2,502,
2432 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
2433 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
2434 453,453,453,453,453,453,453,1,2,70,2,2,1,2,501,
2435 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,71,
2436 2,2,1,2,500,
2437 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,72,
2438 2,2,1,2,499,
2439 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,73,
2440 2,2,1,2,495,
2441 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,74,
2442 2,2,1,2,494,
2443 58,75,154,185,
2444 18,19,27,58,8,51,76,182,197,31,35,60,32,61,59,182,195,196,134,134,34,
2445 18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,77,178,148,178,76,
2446 197,31,35,81,32,61,178,59,80,79,178,78,77,148,148,178,75,195,196,67,66,
2447 65,205,134,134,34,70,69,
2448 18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,78,177,148,177,76,
2449 197,31,35,81,32,61,177,59,80,79,177,78,77,148,148,177,75,195,196,67,66,
2450 65,205,134,134,34,70,69,
2451 18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,79,176,148,176,76,
2452 197,31,35,81,32,61,176,59,80,79,176,78,77,148,148,176,75,195,196,67,66,
2453 65,205,134,134,34,70,69,
2454 18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,80,175,148,175,76,
2455 197,31,35,81,32,61,175,59,80,79,175,78,77,148,148,175,75,195,196,67,66,
2456 65,205,134,134,34,70,69,
2457 18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,81,82,84,82,76,197,
2458 31,35,81,32,156,61,155,82,59,93,92,91,90,89,88,87,85,83,82,80,79,82,78,
2459 77,84,84,82,75,195,196,67,66,65,205,134,134,34,70,69,
2460 157,159,161,166,162,160,158,
2461 73,74,163,164,163,
2462 131,106,188,149,165,
2463 167,136,154,166,168,
2464 169,171,175,177,97,98,68,86,151,174,173,178,176,172,170,
2465 169,171,97,98,149,182,181,180,179,
2466 175,177,147,184,183,
2467 185,145,186,
2468 187,143,188,
2469 96,141,189,
2470 190,139,191,
2471 192,194,137,195,193,
2472 117,117,117,152,117,117,117,117,117,94,128,128,
2473 31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,133,
2474 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
2475 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,96,2,2,
2476 1,2,465,
2477 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
2478 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,97,2,2,
2479 1,2,466,
2480 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
2481 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,98,2,2,
2482 1,2,464,
2483 106,36,196,
2484 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
2485 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
2486 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
2487 453,453,453,453,453,1,2,100,2,2,1,2,461,
2488 71,71,101,
2489 208,197,197,197,102,197,197,
2490 73,73,69,
2491 72,72,68,
2492 45,105,198,
2493 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
2494 453,453,453,453,453,1,2,106,2,2,1,2,459,
2495 24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,107,
2496 199,
2497 18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,108,82,84,82,76,197,
2498 31,35,81,32,200,61,86,82,59,93,92,91,90,89,88,87,85,83,82,80,79,82,78,
2499 77,84,84,82,75,195,196,67,66,65,205,134,134,34,70,69,
2500 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,45,30,30,30,30,30,30,51,109,
2501 122,201,201,201,23,33,32,35,34,38,
2502 18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,110,82,84,82,76,197,
2503 31,35,81,32,202,61,86,82,59,93,92,91,90,89,88,87,85,83,82,80,79,82,78,
2504 77,84,84,82,75,195,196,67,66,65,205,134,134,34,70,69,
2505 453,1,2,111,2,2,1,2,517,
2506 8,112,234,
2507 204,206,8,100,4,9,113,235,203,31,208,35,207,205,9,
2508 453,1,2,114,2,2,1,2,512,
2509 8,115,228,
2510 204,206,211,213,100,4,9,116,229,215,214,212,210,209,9,
2511 453,1,2,117,2,2,1,2,510,
2512 27,118,216,
2513 453,1,2,119,2,2,1,2,509,
2514 27,120,217,
2515 453,1,2,121,2,2,1,2,507,
2516 125,122,218,126,
2517 453,1,2,123,2,2,1,2,506,
2518 125,124,219,126,
2519 453,1,2,125,2,2,1,2,511,
2520 27,126,220,
2521 4,9,127,220,9,
2522 453,1,2,128,2,2,1,2,505,
2523 27,129,221,
2524 18,19,222,136,136,136,130,223,136,135,135,
2525 453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,131,2,2,1,2,474,
2526 18,19,27,58,8,68,211,211,64,209,205,205,51,132,224,148,224,76,197,31,35,81,
2527 32,61,224,59,148,148,224,75,195,196,67,66,65,205,134,134,34,70,69,
2528 18,19,27,58,8,51,133,62,197,31,35,60,32,61,225,59,62,62,195,196,134,134,34,
2529 18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,134,82,84,82,76,197,
2530 31,35,81,32,226,61,86,82,59,93,92,91,90,89,88,87,85,83,82,80,79,82,78,
2531 77,84,84,82,75,195,196,67,66,65,205,134,134,34,70,69,
2532 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,45,8,30,30,30,30,30,30,51,135,
2533 122,140,140,140,23,227,227,33,31,35,33,32,35,34,38,
2534 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
2535 453,453,453,453,453,453,453,453,453,1,2,136,2,2,1,2,467,
2536 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,45,8,30,30,30,30,30,30,51,137,
2537 122,140,140,140,23,228,228,33,31,35,33,32,35,34,38,
2538 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,45,8,30,30,30,30,30,30,51,138,
2539 122,140,140,140,23,229,229,33,31,35,33,32,35,34,38,
2540 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,45,30,30,30,30,30,30,51,139,
2541 122,39,39,39,23,44,33,32,230,35,34,38,
2542 106,32,107,
2543 68,88,231,
2544 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,45,8,30,30,30,30,30,30,51,78,
2545 122,140,140,140,23,232,232,33,31,35,33,32,35,34,38,
2546 84,84,84,98,79,79,79,143,233,
2547 30,30,30,37,30,30,30,30,30,30,30,30,30,30,30,5,6,7,43,36,30,40,45,30,30,30,
2548 30,30,30,51,4,9,93,122,39,39,91,100,39,50,44,33,32,100,52,51,100,103,53,
2549 45,100,100,100,54,54,49,48,41,47,12,11,10,46,42,9,35,34,38,
2550 234,96,235,
2551 30,30,30,37,30,30,30,30,30,30,30,30,30,30,30,5,6,7,43,36,30,40,45,30,30,30,
2552 30,30,30,51,4,9,93,122,39,39,91,99,39,50,44,33,32,99,52,51,99,104,53,45,
2553 99,99,99,54,54,49,48,41,47,12,11,10,46,42,9,35,34,38,
2554 236,68,147,151,199,
2555 131,106,148,149,165,
2556 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,
2557 192,192,192,192,192,149,237,
2558 58,150,238,
2559 18,19,27,58,8,51,151,239,197,31,35,60,32,61,59,239,239,195,196,134,134,34,
2560 453,453,453,453,453,453,453,453,1,2,152,2,2,1,2,473,
2561 213,153,
2562 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,45,8,30,30,30,30,30,30,51,154,
2563 122,140,140,140,23,240,240,33,31,35,33,32,35,34,38,
2564 169,171,175,177,236,97,98,68,155,151,199,174,173,178,176,172,170,
2565 236,156,184,
2566 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,157,
2567 2,2,1,2,498,
2568 18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,158,173,148,173,76,
2569 197,31,35,81,32,61,173,59,80,79,173,172,78,77,148,148,173,75,195,196,67,
2570 66,65,205,134,134,34,70,69,
2571 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,159,
2572 2,2,1,2,497,
2573 18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,160,173,148,173,76,
2574 197,31,35,81,32,61,173,59,80,79,173,171,78,77,148,148,173,75,195,196,67,
2575 66,65,205,134,134,34,70,69,
2576 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,161,
2577 2,2,1,2,496,
2578 18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,162,170,148,170,76,
2579 197,31,35,81,32,61,170,59,80,79,170,78,77,148,148,170,75,195,196,67,66,
2580 65,205,134,134,34,70,69,
2581 18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,163,241,148,241,76,
2582 197,31,35,81,32,61,241,59,241,80,79,241,78,77,148,148,241,75,195,196,67,
2583 66,65,205,134,134,34,70,69,
2584 18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,164,242,148,242,76,
2585 197,31,35,81,32,61,242,59,242,80,79,242,78,77,148,148,242,75,195,196,67,
2586 66,65,205,134,134,34,70,69,
2587 18,19,27,58,8,68,211,211,64,209,205,205,51,165,181,148,181,76,197,31,35,243,
2588 32,61,181,59,148,148,181,75,195,196,67,66,65,205,134,134,34,70,69,
2589 18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,166,82,148,82,76,197,
2590 31,35,81,32,61,82,59,244,82,80,79,82,78,77,148,148,82,75,195,196,67,66,
2591 65,205,134,134,34,70,69,
2592 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,167,
2593 2,2,1,2,493,
2594 18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,168,82,148,82,76,197,
2595 31,35,81,32,61,82,59,245,82,80,79,82,78,77,148,148,82,75,195,196,67,66,
2596 65,205,134,134,34,70,69,
2597 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,169,
2598 2,2,1,2,492,
2599 18,19,27,58,8,51,170,62,197,31,35,60,32,61,246,59,62,62,195,196,134,134,34,
2600 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,171,
2601 2,2,1,2,491,
2602 18,19,27,58,8,51,172,62,197,31,35,60,32,61,247,59,62,62,195,196,134,134,34,
2603 18,19,27,58,8,51,173,62,197,31,35,60,32,61,248,59,62,62,195,196,134,134,34,
2604 18,19,27,58,8,51,174,62,197,31,35,60,32,61,249,59,62,62,195,196,134,134,34,
2605 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,175,
2606 2,2,1,2,490,
2607 18,19,27,58,8,51,176,62,197,31,35,60,32,61,250,59,62,62,195,196,134,134,34,
2608 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,177,
2609 2,2,1,2,489,
2610 18,19,27,58,8,51,178,62,197,31,35,60,32,61,251,59,62,62,195,196,134,134,34,
2611 18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,179,82,148,82,76,197,
2612 31,35,81,32,61,82,59,252,83,82,80,79,82,78,77,148,148,82,75,195,196,67,
2613 66,65,205,134,134,34,70,69,
2614 18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,180,82,148,82,76,197,
2615 31,35,81,32,61,82,59,253,83,82,80,79,82,78,77,148,148,82,75,195,196,67,
2616 66,65,205,134,134,34,70,69,
2617 18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,181,82,148,82,76,197,
2618 31,35,81,32,61,82,59,254,83,82,80,79,82,78,77,148,148,82,75,195,196,67,
2619 66,65,205,134,134,34,70,69,
2620 18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,182,82,148,82,76,197,
2621 31,35,81,32,61,82,59,255,83,82,80,79,82,78,77,148,148,82,75,195,196,67,
2622 66,65,205,134,134,34,70,69,
2623 18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,183,82,84,82,76,197,
2624 31,35,81,32,61,256,82,59,257,85,83,82,80,79,82,78,77,84,84,82,75,195,
2625 196,67,66,65,205,134,134,34,70,69,
2626 18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,184,82,84,82,76,197,
2627 31,35,81,32,61,256,82,59,258,85,83,82,80,79,82,78,77,84,84,82,75,195,
2628 196,67,66,65,205,134,134,34,70,69,
2629 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,185,
2630 2,2,1,2,488,
2631 18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,186,82,84,82,76,197,
2632 31,35,81,32,61,86,82,59,259,87,85,83,82,80,79,82,78,77,84,84,82,75,195,
2633 196,67,66,65,205,134,134,34,70,69,
2634 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,187,
2635 2,2,1,2,487,
2636 18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,188,82,84,82,76,197,
2637 31,35,81,32,61,86,82,59,260,88,87,85,83,82,80,79,82,78,77,84,84,82,75,
2638 195,196,67,66,65,205,134,134,34,70,69,
2639 18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,189,82,84,82,76,197,
2640 31,35,81,32,61,86,82,59,261,89,88,87,85,83,82,80,79,82,78,77,84,84,82,
2641 75,195,196,67,66,65,205,134,134,34,70,69,
2642 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,190,
2643 2,2,1,2,486,
2644 18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,191,82,84,82,76,197,
2645 31,35,81,32,61,86,82,59,262,90,89,88,87,85,83,82,80,79,82,78,77,84,84,
2646 82,75,195,196,67,66,65,205,134,134,34,70,69,
2647 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,192,
2648 2,2,1,2,485,
2649 18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,193,82,84,82,76,197,
2650 31,35,81,32,61,86,82,59,263,91,90,89,88,87,85,83,82,80,79,82,78,77,84,
2651 84,82,75,195,196,67,66,65,205,134,134,34,70,69,
2652 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,194,
2653 2,2,1,2,484,
2654 18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,195,82,84,82,76,197,
2655 31,35,81,32,264,61,86,82,59,93,92,91,90,89,88,87,85,83,82,80,79,82,78,
2656 77,84,84,82,75,195,196,67,66,65,205,134,134,34,70,69,
2657 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,45,8,30,30,30,30,30,30,51,196,
2658 122,140,140,140,23,265,265,33,31,35,33,32,35,34,38,
2659 208,76,76,76,74,76,
2660 47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,48,49,47,47,47,47,47,47,
2661 47,47,47,47,47,47,47,47,47,47,47,198,46,105,
2662 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,45,8,30,30,30,30,30,30,51,199,
2663 122,140,140,140,23,266,266,33,31,35,33,32,35,34,38,
2664 236,200,267,
2665 106,27,107,
2666 236,202,106,
2667 4,9,203,238,9,
2668 453,1,2,204,2,2,1,2,516,
2669 27,205,268,
2670 453,1,2,206,2,2,1,2,515,
2671 27,207,269,
2672 4,9,208,226,9,
2673 27,209,270,
2674 27,210,271,
2675 453,1,2,211,2,2,1,2,514,
2676 27,212,272,
2677 453,1,2,213,2,2,1,2,513,
2678 27,214,273,
2679 4,9,215,225,9,
2680 18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,216,82,84,82,76,197,
2681 31,35,81,32,274,61,86,82,59,93,92,91,90,89,88,87,85,83,82,80,79,82,78,
2682 77,84,84,82,75,195,196,67,66,65,205,134,134,34,70,69,
2683 18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,217,82,84,82,76,197,
2684 31,35,81,32,275,61,86,82,59,93,92,91,90,89,88,87,85,83,82,80,79,82,78,
2685 77,84,84,82,75,195,196,67,66,65,205,134,134,34,70,69,
2686 4,9,218,222,9,
2687 4,9,219,221,9,
2688 18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,220,82,84,82,76,197,
2689 31,35,81,32,276,61,86,82,59,93,92,91,90,89,88,87,85,83,82,80,79,82,78,
2690 77,84,84,82,75,195,196,67,66,65,205,134,134,34,70,69,
2691 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,45,30,30,30,30,30,30,51,221,
2692 277,277,277,33,32,278,277,35,34,38,
2693 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
2694 453,453,453,453,453,1,2,222,2,2,1,2,477,
2695 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,45,8,30,30,30,30,30,30,51,223,
2696 122,140,140,140,23,279,279,33,31,35,33,32,35,34,38,
2697 27,224,280,
2698 152,117,68,117,117,225,151,120,120,
2699 152,117,117,117,226,119,119,
2700 68,116,231,
2701 68,83,231,
2702 68,82,231,
2703 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,45,77,77,77,8,77,30,30,30,30,
2704 30,30,51,77,77,230,122,140,140,140,23,141,141,33,31,35,33,32,142,281,35,
2705 34,38,
2706 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,45,8,30,30,30,30,30,30,51,231,
2707 122,140,140,140,23,29,33,31,35,33,32,35,34,38,
2708 68,89,231,
2709 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,45,8,30,30,30,30,30,30,51,233,
2710 122,140,140,140,23,282,282,33,31,35,33,32,35,34,38,
2711 453,453,453,453,1,2,234,2,2,1,2,468,
2712 283,8,4,9,235,25,101,31,35,25,283,9,
2713 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
2714 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
2715 453,453,453,453,453,453,453,1,2,236,2,2,1,2,469,
2716 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,45,8,30,30,30,30,30,30,51,237,
2717 122,140,140,140,23,284,284,33,31,35,33,32,35,34,38,
2718 18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,238,82,84,82,76,197,
2719 31,35,81,32,285,61,86,82,59,93,92,91,90,89,88,87,85,83,82,80,79,82,78,
2720 77,84,84,82,75,195,196,67,66,65,205,134,134,34,70,69,
2721 131,106,189,149,150,
2722 236,68,240,231,186,
2723 157,159,161,168,162,160,158,
2724 157,159,161,167,162,160,158,
2725 18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,243,82,84,82,76,197,
2726 31,35,81,32,286,61,155,82,59,93,92,91,90,89,88,87,85,83,82,80,79,82,78,
2727 77,84,84,82,75,195,196,67,66,65,205,134,134,34,70,69,
2728 73,74,165,164,163,
2729 73,74,164,164,163,
2730 68,162,151,
2731 68,161,151,
2732 68,160,151,
2733 68,159,151,
2734 68,153,151,
2735 68,152,151,
2736 167,136,158,166,168,
2737 167,136,157,166,168,
2738 167,136,156,166,168,
2739 167,136,155,166,168,
2740 169,171,97,98,68,256,151,174,173,172,170,
2741 169,171,97,98,151,182,181,180,179,
2742 169,171,97,98,150,182,181,180,179,
2743 175,177,148,184,183,
2744 185,146,186,
2745 187,144,188,
2746 96,142,189,
2747 190,140,191,
2748 287,264,288,
2749 68,289,265,43,231,
2750 68,289,266,25,231,
2751 8,267,123,31,35,
2752 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,45,30,30,30,30,30,30,51,268,
2753 277,277,277,33,32,290,277,35,34,38,
2754 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,45,30,30,30,30,30,30,51,269,
2755 277,277,277,33,32,291,277,35,34,38,
2756 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,45,30,30,30,30,30,30,51,270,
2757 277,277,277,33,32,292,277,35,34,38,
2758 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,45,30,30,30,30,30,30,51,271,
2759 277,277,277,33,32,293,277,35,34,38,
2760 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,45,30,30,30,30,30,30,51,272,
2761 277,277,277,33,32,294,277,35,34,38,
2762 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,273,295,38,
2763 296,274,297,
2764 296,275,298,
2765 296,276,299,
2766 106,239,300,
2767 68,4,9,278,219,301,9,
2768 302,303,68,279,231,303,303,
2769 18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,280,82,84,82,76,197,
2770 31,35,81,32,304,61,86,82,59,93,92,91,90,89,88,87,85,83,82,80,79,82,78,
2771 77,84,84,82,75,195,196,67,66,65,205,134,134,34,70,69,
2772 86,86,86,81,81,81,281,
2773 85,85,85,80,68,80,80,282,231,
2774 40,283,305,45,
2775 68,289,284,193,231,
2776 306,285,307,
2777 306,236,286,184,307,
2778 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,287,
2779 2,2,1,2,483,
2780 18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,288,82,84,82,76,197,
2781 31,35,81,32,138,61,86,82,59,93,92,91,90,89,88,87,85,83,82,80,79,82,78,
2782 77,84,84,82,75,195,196,67,66,65,205,134,134,34,70,69,
2783 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
2784 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
2785 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,
2786 453,453,1,2,289,2,2,1,2,458,
2787 68,4,9,290,237,301,9,
2788 68,4,9,291,236,301,9,
2789 68,4,9,292,233,301,9,
2790 68,4,9,293,232,301,9,
2791 68,4,9,294,231,301,9,
2792 4,9,295,230,9,
2793 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,296,
2794 2,2,1,2,508,
2795 18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,297,82,84,82,76,197,
2796 31,35,81,32,224,61,86,82,59,93,92,91,90,89,88,87,85,83,82,80,79,82,78,
2797 77,84,84,82,75,195,196,67,66,65,205,134,134,34,70,69,
2798 18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,298,82,84,82,76,197,
2799 31,35,81,32,223,61,86,82,59,93,92,91,90,89,88,87,85,83,82,80,79,82,78,
2800 77,84,84,82,75,195,196,67,66,65,205,134,134,34,70,69,
2801 18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,299,82,84,82,76,197,
2802 31,35,81,32,227,61,86,82,59,93,92,91,90,89,88,87,85,83,82,80,79,82,78,
2803 77,84,84,82,75,195,196,67,66,65,205,134,134,34,70,69,
2804 244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,244,
2805 244,244,244,244,244,300,308,
2806 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,45,30,30,30,30,30,30,51,301,
2807 309,309,309,33,32,309,35,34,38,
2808 453,1,2,302,2,2,1,2,476,
2809 8,303,126,31,35,
2810 152,117,117,117,304,121,121,
2811 8,305,105,31,35,
2812 453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,453,1,2,306,
2813 2,2,1,2,503,
2814 18,19,71,72,73,74,27,58,8,68,211,211,64,209,205,205,51,307,82,84,82,76,197,
2815 31,35,81,32,310,61,86,82,59,93,92,91,90,89,88,87,85,83,82,80,79,82,78,
2816 77,84,84,82,75,195,196,67,66,65,205,134,134,34,70,69,
2817 30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,45,8,30,30,30,30,30,30,51,308,
2818 122,140,140,140,23,311,311,33,31,35,33,32,35,34,38,
2819 106,240,300,
2820 236,310,191,
2821 68,289,311,245,231,
2822
2823 };
2824
2825
2826 static const unsigned short ag_sbt[] = {
2827 0, 15, 56, 62, 82, 121, 131, 141, 170, 229, 290, 296, 302, 327,
2828 365, 381, 383, 419, 421, 480, 539, 550, 561, 583, 592, 597, 602, 670,
2829 712, 735, 797, 825, 878, 933, 972,1038,1083,1092,1101,1146,1149,1158,
2830 1161,1164,1174,1177,1180,1206,1212,1217,1220,1223,1230,1279,1284,1288,
2831 1297,1305,1308,1344,1353,1376,1417,1422,1436,1490,1494,1497,1503,1543,
2832 1595,1647,1672,1697,1722,1747,1751,1772,1822,1872,1922,1972,2034,2041,
2833 2046,2051,2056,2071,2080,2085,2088,2091,2094,2097,2102,2114,2136,2178,
2834 2220,2262,2265,2333,2336,2343,2346,2349,2352,2384,2410,2472,2506,2568,
2835 2577,2580,2595,2604,2607,2622,2631,2634,2643,2646,2655,2659,2668,2672,
2836 2681,2684,2689,2698,2701,2712,2733,2774,2797,2859,2899,2935,2975,3015,
2837 3051,3054,3057,3097,3106,3174,3177,3245,3250,3255,3281,3284,3306,3322,
2838 3324,3364,3381,3384,3409,3460,3485,3536,3561,3611,3662,3713,3754,3806,
2839 3831,3883,3908,3931,3956,3979,4002,4025,4050,4073,4098,4121,4174,4227,
2840 4280,4333,4388,4443,4468,4524,4549,4606,4664,4689,4748,4773,4833,4858,
2841 4920,4960,4966,5005,5045,5048,5051,5054,5059,5068,5071,5080,5083,5088,
2842 5091,5094,5103,5106,5115,5118,5123,5185,5247,5252,5257,5319,5353,5385,
2843 5425,5428,5437,5444,5447,5450,5453,5501,5540,5543,5583,5595,5607,5659,
2844 5699,5761,5766,5771,5778,5785,5847,5852,5857,5860,5863,5866,5869,5872,
2845 5875,5880,5885,5890,5895,5906,5915,5924,5929,5932,5935,5938,5941,5944,
2846 5949,5954,5959,5993,6027,6061,6095,6129,6153,6156,6159,6162,6165,6172,
2847 6179,6241,6248,6257,6261,6266,6269,6274,6299,6361,6426,6433,6440,6447,
2848 6454,6461,6466,6491,6553,6615,6677,6703,6736,6745,6750,6757,6762,6787,
2849 6849,6889,6892,6895,6900
2850 };
2851
2852
2853 static const unsigned short ag_sbe[] = {
2854 9, 53, 58, 69, 118, 125, 135, 164, 223, 284, 292, 298, 323, 360,
2855 371, 382, 418, 420, 474, 533, 545, 556, 582, 586, 593, 599, 633, 706,
2856 718, 752, 820, 857, 925, 969,1032,1077,1086,1095,1140,1147,1152,1159,
2857 1162,1168,1175,1178,1191,1208,1214,1218,1221,1226,1261,1280,1285,1292,
2858 1300,1306,1338,1349,1359,1389,1419,1432,1482,1493,1496,1501,1537,1589,
2859 1641,1666,1691,1716,1741,1748,1757,1789,1839,1889,1939,1989,2037,2043,
2860 2048,2053,2063,2075,2082,2086,2089,2092,2095,2099,2111,2135,2172,2214,
2861 2256,2263,2327,2335,2340,2345,2348,2350,2378,2408,2427,2495,2523,2571,
2862 2578,2586,2598,2605,2614,2625,2632,2637,2644,2649,2656,2662,2669,2675,
2863 2682,2686,2692,2699,2707,2727,2746,2780,2814,2883,2929,2959,2999,3038,
2864 3052,3055,3081,3104,3138,3175,3209,3247,3252,3279,3282,3290,3316,3323,
2865 3348,3372,3382,3403,3426,3479,3502,3555,3578,3628,3679,3726,3771,3825,
2866 3848,3902,3914,3950,3962,3985,4008,4044,4056,4092,4104,4138,4191,4244,
2867 4297,4350,4405,4462,4485,4543,4566,4623,4683,4706,4767,4790,4852,4875,
2868 4944,4964,5002,5029,5046,5049,5052,5056,5062,5069,5074,5081,5085,5089,
2869 5092,5097,5104,5109,5116,5120,5140,5202,5249,5254,5274,5342,5379,5409,
2870 5426,5433,5441,5445,5448,5451,5483,5525,5541,5567,5589,5599,5653,5683,
2871 5716,5763,5768,5774,5781,5802,5849,5854,5858,5861,5864,5867,5870,5873,
2872 5877,5882,5887,5892,5900,5910,5919,5926,5930,5933,5936,5939,5942,5946,
2873 5951,5955,5982,6016,6050,6084,6118,6150,6154,6157,6160,6163,6168,6175,
2874 6196,6247,6255,6258,6263,6267,6271,6293,6316,6420,6429,6436,6443,6450,
2875 6457,6463,6485,6508,6570,6632,6701,6726,6739,6746,6754,6758,6781,6804,
2876 6873,6890,6893,6897,6900
2877 };
2878
2879
2880 static const unsigned char ag_fl[] = {
2881 2,1,1,2,1,2,2,1,1,2,0,1,3,1,1,1,1,2,0,1,2,1,1,1,0,5,1,3,1,3,1,2,1,1,2,
2882 1,2,2,2,2,1,1,1,4,2,1,2,1,0,3,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2883 1,2,2,2,2,1,2,0,1,2,4,4,3,3,2,4,4,1,1,2,1,2,0,1,0,2,2,4,1,3,3,4,1,3,3,
2884 6,4,2,1,1,1,1,1,1,2,1,3,0,1,4,4,6,1,5,0,1,6,3,5,5,1,1,2,3,1,2,2,1,5,1,
2885 3,1,3,1,3,1,3,1,3,1,3,3,3,3,1,3,3,3,3,3,3,3,3,1,3,3,1,3,3,1,3,3,3,1,1,
2886 2,2,2,2,1,1,3,2,1,3,2,3,1,1,3,1,7,0,5,1,1,1,1,2,3,1,1,1,1,1,1,2,1,1,1,
2887 2,1,2,3,1,1,2,2,2,5,3,4,4,6,6,4,4,5,2,2,5,5,5,5,2,2,5,5,3,1,3,1,1,1,0,
2888 5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2889 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2890 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2891 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2892 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
2893 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,
2894 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
2895 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
2896 };
2897
2898 static const unsigned short ag_ptt[] = {
2899 0, 1, 1, 10, 11, 11, 11,198, 18, 18, 19, 19,198, 23, 23, 23, 24, 24,
2900 25, 25, 20, 27, 27, 27, 30, 27, 33, 33, 31, 31,206,206, 35, 35, 37, 38,
2901 38, 38, 38, 38, 41, 41, 41, 41,199, 43, 43, 46, 48, 46,200, 49, 49, 51,
2902 51, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 65, 65, 65, 67,
2903 68, 69, 66, 73, 73, 78, 78, 75, 75, 75, 75, 75, 80, 80, 80, 76, 77, 77,
2904 84, 84, 85, 85, 88, 88, 88, 21, 86, 86, 86, 86, 87, 87, 87, 87, 92, 91,
2905 89, 89, 89, 89, 89, 99, 99, 89, 95,103,103, 95, 95, 95,101, 98,113,113,
2906 96, 22, 22, 22,222,117,117,222,110,110,110, 94, 94,120,120,123,123,125,
2907 125,127,127,128,128,130,130,130,130,130,132,132,132,132,132,132,132,132,
2908 132,135,135,135,138,138,138,140,140,140,140,146,143,143,143,143,143,107,
2909 107,107,107,107,107,107,154,152,105,105,150,150,158,150,151,151,151,151,
2910 151,151,244,244,244,164,164,159,159, 74, 74,160,160,161,161,245,170,170,
2911 97,172,172,172,172,172,172,172,172,172,172,176,182,182,182,182,182,182,
2912 183,183,183,183,183,175,175,191,191,191,192,191,119, 14, 14, 14, 14, 14,
2913 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
2914 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 17, 17, 17, 17, 17,
2915 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
2916 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 36, 36, 36, 36, 36, 36,
2917 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 42, 42, 42,
2918 42, 42, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
2919 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
2920 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
2921 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 71, 71,118,
2922 118,165,165,165,168,168,171,171,171,171,171,171,171,171,171,171,171,171,
2923 171,171,171,171,171,171,171,171,171,171,171,171,171,171,171,171,171,171,
2924 171,171,171,197,197, 7, 5, 4, 32, 29, 34, 39, 40, 2, 79, 81, 82, 83,
2925 90, 44, 45, 93,100,102,106,108,112,111,109, 8,114,115,116,122,121,124,
2926 126,129,131,133,134,136,137,139,141,142,144,145,147,148,149, 3, 6,157,
2927 173,174,177,178,180,179,181,184,185,186,187,188,189,190,166,196
2928 };
2929
2930 static const unsigned short *ag_valid(int ag_k) {
2931 const unsigned short *ag_tp = &ag_tstt[ag_sbt[(PCB).sn+1]];
2932 while (*--ag_tp != (unsigned short) ag_k) if (*ag_tp == 0) return NULL;
2933 return ag_tp;
2934 }
2935
2936 int cc-crash_change_reduction(cc-crash_token_type ag_k) {
2937 if (!ag_valid(ag_k)) return 0;
2938 (PCB).reduction_token = ag_k;
2939 return 1;
2940 }
2941
2942 static void ag_default(const int *ag_tp) {
2943 (PCB).ag_dsn = (PCB).sn;
2944 (PCB).ag_dtl = ag_tp;
2945 while (!ag_valid((cc-crash_token_type) *ag_tp)) ag_tp++;
2946 (PCB).reduction_token = (cc-crash_token_type) *ag_tp;
2947 }
2948
2949
2950
2951 static void ag_ra(void)
2952 {
2953 switch(ag_rpx[(PCB).ag_ap]) {
2954 case 1: ag_rp_1(V(0,(unsigned *))); break;
2955 case 2: ag_rp_2(); break;
2956 case 3: ag_rp_3(); break;
2957 case 4: ag_rp_4(); break;
2958 case 5: ag_rp_5(); break;
2959 case 6: ag_rp_6(V(0,(int *))); break;
2960 case 7: ag_rp_7(V(1,(int *))); break;
2961 case 8: ag_rp_8(); break;
2962 case 9: ag_rp_9(); break;
2963 case 10: ag_rp_10(); break;
2964 case 11: ag_rp_11(); break;
2965 case 12: ag_rp_12(V(0,(int *))); break;
2966 case 13: ag_rp_13(); break;
2967 case 14: ag_rp_14(); break;
2968 case 15: ag_rp_15(); break;
2969 case 16: ag_rp_16(V(0,(int *))); break;
2970 case 17: ag_rp_17(V(0,(int *))); break;
2971 case 18: V(0,(int *)) = ag_rp_18(); break;
2972 case 19: V(0,(int *)) = ag_rp_19(); break;
2973 case 20: V(0,(int *)) = ag_rp_20(); break;
2974 case 21: V(0,(int *)) = ag_rp_21(); break;
2975 case 22: V(0,(int *)) = ag_rp_22(); break;
2976 case 23: V(0,(int *)) = ag_rp_23(); break;
2977 case 24: V(0,(int *)) = ag_rp_24(); break;
2978 case 25: V(0,(int *)) = ag_rp_25(); break;
2979 case 26: V(0,(int *)) = ag_rp_26(); break;
2980 case 27: V(0,(int *)) = ag_rp_27(); break;
2981 case 28: V(0,(int *)) = ag_rp_28(); break;
2982 case 29: V(0,(int *)) = ag_rp_29(V(1,(int *))); break;
2983 case 30: V(0,(int *)) = ag_rp_30(V(0,(int *)), V(1,(int *))); break;
2984 case 31: V(0,(int *)) = ag_rp_31(V(0,(int *)), V(1,(int *))); break;
2985 case 32: V(0,(int *)) = ag_rp_32(V(1,(long *))); break;
2986 case 33: V(0,(long *)) = ag_rp_33(V(0,(long *)), V(1,(long *))); break;
2987 case 34: ag_rp_34(); break;
2988 case 35: ag_rp_35(); break;
2989 case 36: ag_rp_36(V(0,(char * *))); break;
2990 case 37: ag_rp_37(V(0,(char * *))); break;
2991 case 38: ag_rp_38(V(0,(char * *))); break;
2992 case 39: V(0,(char * *)) = ag_rp_39(); break;
2993 case 40: V(0,(char * *)) = ag_rp_40(); break;
2994 case 41: V(0,(char * *)) = ag_rp_41(V(0,(char * *))); break;
2995 case 42: ag_rp_42(); break;
2996 case 43: ag_rp_43(); break;
2997 case 44: ag_rp_44(); break;
2998 case 45: ag_rp_45(V(0,(int *))); break;
2999 case 46: V(0,(int *)) = ag_rp_46(V(2,(int *))); break;
3000 case 47: V(0,(int *)) = ag_rp_47(V(2,(int *))); break;
3001 case 48: V(0,(int *)) = ag_rp_48(V(0,(int *)), V(4,(int *))); break;
3002 case 49: V(0,(int *)) = ag_rp_49(V(2,(long *))); break;
3003 case 50: V(0,(int *)) = ag_rp_50(V(0,(int *))); break;
3004 case 51: ag_rp_51(V(0,(unsigned *))); break;
3005 case 52: ag_rp_52(V(0,(unsigned *)), V(2,(long *))); break;
3006 case 53: ag_rp_53(V(0,(unsigned *))); break;
3007 case 54: ag_rp_54(V(0,(unsigned *)), V(2,(long *)), V(4,(long *))); break;
3008 case 55: ag_default(&ag_rtt[0]); V(0,(unsigned *)) = ag_rp_55(); break;
3009 case 56: ag_rp_56(V(2,(long *))); break;
3010 case 57: ag_rp_57(); break;
3011 case 58: ag_rp_58(V(1,(int *))); break;
3012 case 59: ag_rp_59(V(3,(long *))); break;
3013 case 60: ag_rp_60(); break;
3014 case 61: V(0,(int *)) = ag_rp_61(); break;
3015 case 62: V(0,(int *)) = ag_rp_62(V(0,(int *))); break;
3016 case 63: ag_rp_63(V(0,(int *))); break;
3017 case 64: ag_rp_64(V(1,(int *))); break;
3018 case 65: ag_rp_65(V(1,(int *))); break;
3019 case 66: V(0,(long *)) = ag_rp_66(V(0,(long *)), V(2,(long *)), V(4,(long *))); break;
3020 case 67: V(0,(long *)) = ag_rp_67(V(0,(long *)), V(2,(long *))); break;
3021 case 68: V(0,(long *)) = ag_rp_68(V(0,(long *)), V(2,(long *))); break;
3022 case 69: V(0,(long *)) = ag_rp_69(V(0,(long *)), V(2,(long *))); break;
3023 case 70: V(0,(long *)) = ag_rp_70(V(0,(long *)), V(2,(long *))); break;
3024 case 71: V(0,(long *)) = ag_rp_71(V(0,(long *)), V(2,(long *))); break;
3025 case 72: V(0,(long *)) = ag_rp_72(V(0,(long *)), V(2,(long *))); break;
3026 case 73: V(0,(long *)) = ag_rp_73(V(0,(long *)), V(2,(long *))); break;
3027 case 74: V(0,(long *)) = ag_rp_74(); break;
3028 case 75: V(0,(long *)) = ag_rp_75(); break;
3029 case 76: V(0,(long *)) = ag_rp_76(V(0,(long *)), V(2,(long *))); break;
3030 case 77: V(0,(long *)) = ag_rp_77(V(0,(long *)), V(2,(long *))); break;
3031 case 78: V(0,(long *)) = ag_rp_78(V(0,(long *)), V(2,(long *))); break;
3032 case 79: V(0,(long *)) = ag_rp_79(V(0,(long *)), V(2,(long *))); break;
3033 case 80: V(0,(long *)) = ag_rp_80(); break;
3034 case 81: V(0,(long *)) = ag_rp_81(); break;
3035 case 82: V(0,(long *)) = ag_rp_82(); break;
3036 case 83: V(0,(long *)) = ag_rp_83(); break;
3037 case 84: V(0,(long *)) = ag_rp_84(V(0,(long *)), V(2,(long *))); break;
3038 case 85: V(0,(long *)) = ag_rp_85(V(0,(long *)), V(2,(long *))); break;
3039 case 86: V(0,(long *)) = ag_rp_86(V(0,(long *)), V(2,(long *))); break;
3040 case 87: V(0,(long *)) = ag_rp_87(V(0,(long *)), V(2,(long *))); break;
3041 case 88: V(0,(long *)) = ag_rp_88(V(0,(long *)), V(2,(long *))); break;
3042 case 89: V(0,(long *)) = ag_rp_89(V(0,(long *)), V(2,(long *))); break;
3043 case 90: V(0,(long *)) = ag_rp_90(V(0,(long *)), V(2,(long *))); break;
3044 case 91: V(0,(long *)) = ag_rp_91(V(0,(long *))); break;
3045 case 92: V(0,(long *)) = ag_rp_92(V(1,(long *))); break;
3046 case 93: V(0,(long *)) = ag_rp_93(V(1,(long *))); break;
3047 case 94: V(0,(long *)) = ag_rp_94(V(1,(long *))); break;
3048 case 95: V(0,(long *)) = ag_rp_95(V(1,(long *))); break;
3049 case 96: V(0,(long *)) = ag_rp_96(V(2,(long *))); break;
3050 case 97: V(0,(long *)) = ag_rp_97(); break;
3051 case 98: V(0,(long *)) = ag_rp_98(V(1,(long *))); break;
3052 case 99: V(0,(long *)) = ag_rp_99(V(0,(long *))); break;
3053 case 100: ag_default(&ag_rtt[4]); V(0,(long *)) = ag_rp_100(); break;
3054 case 101: ag_rp_101(); break;
3055 case 102: ag_rp_102(V(3,(long *)), V(5,(long *))); break;
3056 case 103: ag_rp_103(); break;
3057 case 104: ag_rp_104(); break;
3058 case 105: ag_rp_105(V(0,(long *))); break;
3059 case 106: ag_rp_106(V(0,(long *))); break;
3060 case 107: ag_rp_107(); break;
3061 case 108: ag_rp_108(V(1,(long *))); break;
3062 case 109: V(0,(long *)) = ag_rp_109(); break;
3063 case 110: V(0,(long *)) = ag_rp_110(V(0,(long *)), V(1,(long *))); break;
3064 case 111: V(0,(long *)) = ag_rp_111(V(0,(int *))); break;
3065 case 112: V(0,(long *)) = ag_rp_112(); break;
3066 case 113: V(0,(long *)) = ag_rp_113(V(0,(long *)), V(1,(int *))); break;
3067 case 114: V(0,(long *)) = ag_rp_114(V(0,(int *))); break;
3068 case 115: V(0,(long *)) = ag_rp_115(V(0,(long *)), V(1,(int *))); break;
3069 case 116: V(0,(int *)) = ag_rp_116(V(1,(int *))); break;
3070 case 117: ag_rp_117(V(0,(screen_descriptor * *))); break;
3071 case 118: V(0,(screen_descriptor * *)) = ag_rp_118(); break;
3072 case 119: V(0,(screen_descriptor * *)) = ag_rp_119(V(0,(screen_descriptor * *))); break;
3073 case 120: V(0,(screen_descriptor * *)) = ag_rp_120(V(0,(screen_descriptor * *)), V(1,(int *))); break;
3074 case 121: V(0,(screen_descriptor * *)) = ag_rp_121(V(0,(screen_descriptor * *)), V(2,(int *))); break;
3075 case 122: V(0,(screen_descriptor * *)) = ag_rp_122(V(0,(screen_descriptor * *)), V(2,(int *))); break;
3076 case 123: V(0,(screen_descriptor * *)) = ag_rp_123(V(0,(screen_descriptor * *)), V(3,(long *)), V(5,(long *))); break;
3077 case 124: V(0,(screen_descriptor * *)) = ag_rp_124(V(0,(screen_descriptor * *)), V(3,(long *)), V(5,(long *))); break;
3078 case 125: V(0,(screen_descriptor * *)) = ag_rp_125(V(0,(screen_descriptor * *)), V(1,(query_item * *))); break;
3079 case 126: V(0,(screen_descriptor * *)) = ag_rp_126(V(0,(screen_descriptor * *)), V(1,(query_item * *))); break;
3080 case 127: V(0,(int *)) = ag_rp_127(V(2,(long *)), V(4,(long *))); break;
3081 case 128: V(0,(query_item * *)) = ag_rp_128(); break;
3082 case 129: V(0,(query_item * *)) = ag_rp_129(V(0,(query_item * *))); break;
3083 case 130: V(0,(query_item * *)) = ag_rp_130(V(0,(query_item * *))); break;
3084 case 131: V(0,(query_item * *)) = ag_rp_131(V(0,(query_item * *))); break;
3085 case 132: V(0,(query_item * *)) = ag_rp_132(V(0,(query_item * *))); break;
3086 case 133: V(0,(query_item * *)) = ag_rp_133(); break;
3087 case 134: V(0,(query_item * *)) = ag_rp_134(V(0,(query_item * *))); break;
3088 case 135: V(0,(query_item * *)) = ag_rp_135(V(0,(query_item * *))); break;
3089 case 136: V(0,(query_item * *)) = ag_rp_136(V(0,(query_item * *))); break;
3090 case 137: ag_rp_137(); break;
3091 case 138: ag_rp_138(); break;
3092 case 139: ag_rp_139(); break;
3093 case 140: ag_rp_140(); break;
3094 }
3095 (PCB).la_ptr = (PCB).pointer;
3096 }
3097
3098 #define TOKEN_NAMES cc-crash_token_names
3099 const char *const cc-crash_token_names[263] = {
3100 "script file",
3101 "ws",
3102 "literal",
3103 "integer constant",
3104 "string literal",
3105 "paren string",
3106 "character constant",
3107 "eol",
3108 "literals",
3109 "white",
3110 "comment",
3111 "comment head",
3112 "\"*/\"",
3113 "\"/*\"",
3114 "",
3115 "'\\n'",
3116 "\"//\"",
3117 "not eol",
3118 "",
3119 "",
3120 "script file",
3121 "execution block",
3122 "declaration",
3123 "",
3124 "",
3125 "",
3126 "eof",
3127 "word",
3128 "undeclared variable",
3129 "'['",
3130 "",
3131 "parameter string",
3132 "']'",
3133 "string",
3134 "'#'",
3135 "param word",
3136 "text char",
3137 "action text",
3138 "action text head",
3139 "'}'",
3140 "'{'",
3141 "action word",
3142 "operator",
3143 "paren string chars",
3144 "')'",
3145 "'('",
3146 "paren string char",
3147 "not paren",
3148 "",
3149 "string chars",
3150 "'\\\"'",
3151 "string char",
3152 "not double quote",
3153 "escape sequence",
3154 "\"\\\\a\"",
3155 "\"\\\\b\"",
3156 "\"\\\\f\"",
3157 "\"\\\\n\"",
3158 "\"\\\\r\"",
3159 "\"\\\\t\"",
3160 "\"\\\\v\"",
3161 "\"\\\\\\\\\"",
3162 "\"\\\\?\"",
3163 "\"\\\\\\'\"",
3164 "\"\\\\\\\"\"",
3165 "octal escape",
3166 "hex escape",
3167 "one octal",
3168 "two octal",
3169 "three octal",
3170 "'\\\\'",
3171 "",
3172 "\"\\\\x\"",
3173 "hex number",
3174 "hex digit",
3175 "command",
3176 "identifier",
3177 "parameters",
3178 "",
3179 "'<'",
3180 "piped command",
3181 "'|'",
3182 "'>'",
3183 "\">>\"",
3184 "",
3185 "",
3186 "command sequence",
3187 "if sequence",
3188 "",
3189 "statement",
3190 "\"else\"",
3191 "if statement",
3192 "if condition",
3193 "\"if\"",
3194 "conditional exp",
3195 "assignment",
3196 "for statement",
3197 "screen description",
3198 "while statement",
3199 "",
3200 "'='",
3201 "integer variable",
3202 "';'",
3203 "",
3204 "string variable",
3205 "string exp",
3206 "'@'",
3207 "primary exp",
3208 "\"while\"",
3209 "\"for\"",
3210 "name",
3211 "\"in\"",
3212 "\"do\"",
3213 "",
3214 "\"action\"",
3215 "\"int\"",
3216 "\"string\"",
3217 "",
3218 "letter",
3219 "digit",
3220 "logical or exp",
3221 "'\\?'",
3222 "':'",
3223 "logical and exp",
3224 "\"||\"",
3225 "inclusive or exp",
3226 "\"&&\"",
3227 "exclusive or exp",
3228 "and exp",
3229 "'^'",
3230 "equality exp",
3231 "'&'",
3232 "relational exp",
3233 "\"==\"",
3234 "\"!=\"",
3235 "shift exp",
3236 "\"<=\"",
3237 "\">=\"",
3238 "additive exp",
3239 "\"<<\"",
3240 "multiplicative exp",
3241 "'+'",
3242 "'-'",
3243 "unary exp",
3244 "'*'",
3245 "'/'",
3246 "nonzero",
3247 "'%'",
3248 "'~'",
3249 "'!'",
3250 "string term",
3251 "string element",
3252 "numeric name",
3253 "built_in name",
3254 "built_in argument",
3255 "string name",
3256 "undefined name",
3257 "\"..\"",
3258 "",
3259 "hex constant",
3260 "octal constant",
3261 "decimal constant",
3262 "\"0x\"",
3263 "\"0X\"",
3264 "",
3265 "",
3266 "",
3267 "'0'",
3268 "",
3269 "'\\''",
3270 "char constant element",
3271 "not single quote",
3272 "screen items",
3273 "\"screen\"",
3274 "\"title\"",
3275 "formula",
3276 "color spec",
3277 "\"entry\"",
3278 "\"highlight\"",
3279 "\"size\"",
3280 "','",
3281 "\"location\"",
3282 "query line",
3283 "button line",
3284 "\"color\"",
3285 "\"field\"",
3286 "\"variable\"",
3287 "\"default\"",
3288 "\"prompt\"",
3289 "\"explanation\"",
3290 "\"button\"",
3291 "formula element",
3292 "",
3293 "",
3294 "",
3295 "",
3296 "",
3297 "",
3298 "eol",
3299 "paren string",
3300 "string literal",
3301 "']'",
3302 "'['",
3303 "'#'",
3304 "'}'",
3305 "'{'",
3306 "literal",
3307 "'<'",
3308 "'|'",
3309 "'>'",
3310 "\">>\"",
3311 "\"else\"",
3312 "')'",
3313 "'('",
3314 "\"if\"",
3315 "'='",
3316 "';'",
3317 "'@'",
3318 "\"while\"",
3319 "\"do\"",
3320 "\"in\"",
3321 "\"for\"",
3322 "literals",
3323 "\"action\"",
3324 "\"int\"",
3325 "\"string\"",
3326 "':'",
3327 "'\\?'",
3328 "\"||\"",
3329 "\"&&\"",
3330 "'^'",
3331 "'&'",
3332 "\"==\"",
3333 "\"!=\"",
3334 "\"<=\"",
3335 "\">=\"",
3336 "\"<<\"",
3337 "'+'",
3338 "'-'",
3339 "'*'",
3340 "'/'",
3341 "'%'",
3342 "'~'",
3343 "'!'",
3344 "integer constant",
3345 "character constant",
3346 "\"..\"",
3347 "\"screen\"",
3348 "\"title\"",
3349 "\"entry\"",
3350 "\"highlight\"",
3351 "','",
3352 "\"size\"",
3353 "\"location\"",
3354 "\"color\"",
3355 "\"field\"",
3356 "\"variable\"",
3357 "\"default\"",
3358 "\"prompt\"",
3359 "\"explanation\"",
3360 "\"button\"",
3361 "",
3362 "",
3363
3364 };
3365
3366 #ifndef MISSING_FORMAT
3367 #define MISSING_FORMAT "Missing %s"
3368 #endif
3369 #ifndef UNEXPECTED_FORMAT
3370 #define UNEXPECTED_FORMAT "Unexpected %s"
3371 #endif
3372 #ifndef UNNAMED_TOKEN
3373 #define UNNAMED_TOKEN "input"
3374 #endif
3375
3376
3377 static void ag_diagnose(void) {
3378 int ag_snd = (PCB).sn;
3379 int ag_k = ag_sbt[ag_snd];
3380
3381 if (*TOKEN_NAMES[ag_tstt[ag_k]] && ag_astt[ag_k + 1] == ag_action_8) {
3382 sprintf((PCB).ag_msg, MISSING_FORMAT, TOKEN_NAMES[ag_tstt[ag_k]]);
3383 }
3384 else if (ag_astt[ag_sbe[(PCB).sn]] == ag_action_8
3385 && (ag_k = (int) ag_sbe[(PCB).sn] + 1) == (int) ag_sbt[(PCB).sn+1] - 1
3386 && *TOKEN_NAMES[ag_tstt[ag_k]]) {
3387 sprintf((PCB).ag_msg, MISSING_FORMAT, TOKEN_NAMES[ag_tstt[ag_k]]);
3388 }
3389 else if ((PCB).token_number && *TOKEN_NAMES[(PCB).token_number]) {
3390 sprintf((PCB).ag_msg, UNEXPECTED_FORMAT, TOKEN_NAMES[(PCB).token_number]);
3391 }
3392 else if (isprint(INPUT_CODE((*(PCB).pointer))) && INPUT_CODE((*(PCB).pointer)) != '\\') {
3393 char buf[20];
3394 sprintf(buf, "\'%c\'", (char) INPUT_CODE((*(PCB).pointer)));
3395 sprintf((PCB).ag_msg, UNEXPECTED_FORMAT, buf);
3396 }
3397 else sprintf((PCB).ag_msg, UNEXPECTED_FORMAT, UNNAMED_TOKEN);
3398 (PCB).error_message = (PCB).ag_msg;
3399
3400
3401 }
3402 static int ag_action_1_r_proc(void);
3403 static int ag_action_2_r_proc(void);
3404 static int ag_action_3_r_proc(void);
3405 static int ag_action_4_r_proc(void);
3406 static int ag_action_1_s_proc(void);
3407 static int ag_action_3_s_proc(void);
3408 static int ag_action_1_proc(void);
3409 static int ag_action_2_proc(void);
3410 static int ag_action_3_proc(void);
3411 static int ag_action_4_proc(void);
3412 static int ag_action_5_proc(void);
3413 static int ag_action_6_proc(void);
3414 static int ag_action_7_proc(void);
3415 static int ag_action_8_proc(void);
3416 static int ag_action_9_proc(void);
3417 static int ag_action_10_proc(void);
3418 static int ag_action_11_proc(void);
3419 static int ag_action_8_proc(void);
3420
3421
3422 static int (*const ag_r_procs_scan[])(void) = {
3423 ag_action_1_r_proc,
3424 ag_action_2_r_proc,
3425 ag_action_3_r_proc,
3426 ag_action_4_r_proc
3427 };
3428
3429 static int (*const ag_s_procs_scan[])(void) = {
3430 ag_action_1_s_proc,
3431 ag_action_2_r_proc,
3432 ag_action_3_s_proc,
3433 ag_action_4_r_proc
3434 };
3435
3436 static int (*const ag_gt_procs_scan[])(void) = {
3437 ag_action_1_proc,
3438 ag_action_2_proc,
3439 ag_action_3_proc,
3440 ag_action_4_proc,
3441 ag_action_5_proc,
3442 ag_action_6_proc,
3443 ag_action_7_proc,
3444 ag_action_8_proc,
3445 ag_action_9_proc,
3446 ag_action_10_proc,
3447 ag_action_11_proc,
3448 ag_action_8_proc
3449 };
3450
3451
3452 static int ag_action_10_proc(void) {
3453 int ag_t = (PCB).token_number;
3454 (PCB).btsx = 0, (PCB).drt = -1;
3455 do {
3456 ag_track();
3457 (PCB).token_number = (cc-crash_token_type) AG_TCV(INPUT_CODE(*(PCB).la_ptr));
3458 (PCB).la_ptr++;
3459 if (ag_key_index[(PCB).sn]) {
3460 unsigned ag_k = ag_key_index[(PCB).sn];
3461 int ag_ch = CONVERT_CASE(INPUT_CODE(*(PCB).pointer));
3462 if (ag_ch <= 255) {
3463 while (ag_key_ch[ag_k] < ag_ch) ag_k++;
3464 if (ag_key_ch[ag_k] == ag_ch) ag_get_key_word(ag_k);
3465 }
3466 }
3467 } while ((PCB).token_number == (cc-crash_token_type) ag_t);
3468 (PCB).la_ptr = (PCB).pointer;
3469 return 1;
3470 }
3471
3472 static int ag_action_11_proc(void) {
3473 int ag_t = (PCB).token_number;
3474
3475 (PCB).btsx = 0, (PCB).drt = -1;
3476 do {
3477 (*(int *) &(PCB).vs[(PCB).ssx]) = *(PCB).pointer;
3478 (PCB).ssx--;
3479 ag_track();
3480 ag_ra();
3481 if ((PCB).exit_flag != AG_RUNNING_CODE) return 0;
3482 (PCB).ssx++;
3483 (PCB).token_number = (cc-crash_token_type) AG_TCV(INPUT_CODE(*(PCB).la_ptr));
3484 (PCB).la_ptr++;
3485 if (ag_key_index[(PCB).sn]) {
3486 unsigned ag_k = ag_key_index[(PCB).sn];
3487 int ag_ch = CONVERT_CASE(INPUT_CODE(*(PCB).pointer));
3488 if (ag_ch <= 255) {
3489 while (ag_key_ch[ag_k] < ag_ch) ag_k++;
3490 if (ag_key_ch[ag_k] == ag_ch) ag_get_key_word(ag_k);
3491 }
3492 }
3493 }
3494 while ((PCB).token_number == (cc-crash_token_type) ag_t);
3495 (PCB).la_ptr = (PCB).pointer;
3496 return 1;
3497 }
3498
3499 static int ag_action_3_r_proc(void) {
3500 int ag_sd = ag_fl[(PCB).ag_ap] - 1;
3501 if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
3502 (PCB).btsx = 0, (PCB).drt = -1;
3503 (PCB).reduction_token = (cc-crash_token_type) ag_ptt[(PCB).ag_ap];
3504 ag_ra();
3505 return (PCB).exit_flag == AG_RUNNING_CODE;
3506 }
3507
3508 static int ag_action_3_s_proc(void) {
3509 int ag_sd = ag_fl[(PCB).ag_ap] - 1;
3510 if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
3511 (PCB).btsx = 0, (PCB).drt = -1;
3512 (PCB).reduction_token = (cc-crash_token_type) ag_ptt[(PCB).ag_ap];
3513 ag_ra();
3514 return (PCB).exit_flag == AG_RUNNING_CODE;
3515 }
3516
3517 static int ag_action_4_r_proc(void) {
3518 int ag_sd = ag_fl[(PCB).ag_ap] - 1;
3519 if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
3520 (PCB).reduction_token = (cc-crash_token_type) ag_ptt[(PCB).ag_ap];
3521 return 1;
3522 }
3523
3524 static int ag_action_2_proc(void) {
3525 (PCB).btsx = 0, (PCB).drt = -1;
3526 if ((PCB).ssx >= 128) {
3527 (PCB).exit_flag = AG_STACK_ERROR_CODE;
3528 PARSER_STACK_OVERFLOW;
3529 }
3530 (*(int *) &(PCB).vs[(PCB).ssx]) = *(PCB).pointer;
3531 GET_CONTEXT;
3532 (PCB).ss[(PCB).ssx] = (PCB).sn;
3533 (PCB).ssx++;
3534 (PCB).sn = (PCB).ag_ap;
3535 ag_track();
3536 return 0;
3537 }
3538
3539 static int ag_action_9_proc(void) {
3540 if ((PCB).drt == -1) {
3541 (PCB).drt=(PCB).token_number;
3542 (PCB).dssx=(PCB).ssx;
3543 (PCB).dsn=(PCB).sn;
3544 }
3545 ag_prot();
3546 (PCB).vs[(PCB).ssx] = ag_null_value;
3547 GET_CONTEXT;
3548 (PCB).ss[(PCB).ssx] = (PCB).sn;
3549 (PCB).ssx++;
3550 (PCB).sn = (PCB).ag_ap;
3551 (PCB).la_ptr = (PCB).pointer;
3552 return (PCB).exit_flag == AG_RUNNING_CODE;
3553 }
3554
3555 static int ag_action_2_r_proc(void) {
3556 (PCB).ssx++;
3557 (PCB).sn = (PCB).ag_ap;
3558 return 0;
3559 }
3560
3561 static int ag_action_7_proc(void) {
3562 --(PCB).ssx;
3563 (PCB).la_ptr = (PCB).pointer;
3564 (PCB).exit_flag = AG_SUCCESS_CODE;
3565 return 0;
3566 }
3567
3568 static int ag_action_1_proc(void) {
3569 ag_track();
3570 (PCB).exit_flag = AG_SUCCESS_CODE;
3571 return 0;
3572 }
3573
3574 static int ag_action_1_r_proc(void) {
3575 (PCB).exit_flag = AG_SUCCESS_CODE;
3576 return 0;
3577 }
3578
3579 static int ag_action_1_s_proc(void) {
3580 (PCB).exit_flag = AG_SUCCESS_CODE;
3581 return 0;
3582 }
3583
3584 static int ag_action_4_proc(void) {
3585 int ag_sd = ag_fl[(PCB).ag_ap] - 1;
3586 (PCB).reduction_token = (cc-crash_token_type) ag_ptt[(PCB).ag_ap];
3587 (PCB).btsx = 0, (PCB).drt = -1;
3588 (*(int *) &(PCB).vs[(PCB).ssx]) = *(PCB).pointer;
3589 if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
3590 else GET_CONTEXT;
3591 (PCB).ss[(PCB).ssx] = (PCB).sn;
3592 ag_track();
3593 while ((PCB).exit_flag == AG_RUNNING_CODE) {
3594 unsigned ag_t1 = ag_sbe[(PCB).sn] + 1;
3595 unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1;
3596 do {
3597 unsigned ag_tx = (ag_t1 + ag_t2)/2;
3598 if (ag_tstt[ag_tx] < (unsigned short)(PCB).reduction_token) ag_t1 = ag_tx + 1;
3599 else ag_t2 = ag_tx;
3600 } while (ag_t1 < ag_t2);
3601 if (ag_tstt[ag_t1] != (PCB).reduction_token) {
3602 (PCB).exit_flag = AG_REDUCTION_ERROR_CODE;
3603 REDUCTION_TOKEN_ERROR; break;}
3604 (PCB).ag_ap = ag_pstt[ag_t1];
3605 if ((ag_s_procs_scan[ag_astt[ag_t1]])() == 0) break;
3606 }
3607 return 0;
3608 }
3609
3610 static int ag_action_3_proc(void) {
3611 int ag_sd = ag_fl[(PCB).ag_ap] - 1;
3612 (PCB).btsx = 0, (PCB).drt = -1;
3613 (*(int *) &(PCB).vs[(PCB).ssx]) = *(PCB).pointer;
3614 if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
3615 else GET_CONTEXT;
3616 (PCB).ss[(PCB).ssx] = (PCB).sn;
3617 ag_track();
3618 (PCB).reduction_token = (cc-crash_token_type) ag_ptt[(PCB).ag_ap];
3619 ag_ra();
3620 while ((PCB).exit_flag == AG_RUNNING_CODE) {
3621 unsigned ag_t1 = ag_sbe[(PCB).sn] + 1;
3622 unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1;
3623 do {
3624 unsigned ag_tx = (ag_t1 + ag_t2)/2;
3625 if (ag_tstt[ag_tx] < (unsigned short)(PCB).reduction_token) ag_t1 = ag_tx + 1;
3626 else ag_t2 = ag_tx;
3627 } while (ag_t1 < ag_t2);
3628 if (ag_tstt[ag_t1] != (PCB).reduction_token) {
3629 (PCB).exit_flag = AG_REDUCTION_ERROR_CODE;
3630 REDUCTION_TOKEN_ERROR; break;}
3631 (PCB).ag_ap = ag_pstt[ag_t1];
3632 if ((ag_s_procs_scan[ag_astt[ag_t1]])() == 0) break;
3633 }
3634 return 0;
3635 }
3636
3637 static int ag_action_8_proc(void) {
3638 ag_undo();
3639 (PCB).la_ptr = (PCB).pointer;
3640 (PCB).exit_flag = AG_SYNTAX_ERROR_CODE;
3641 ag_diagnose();
3642 SYNTAX_ERROR;
3643 {(PCB).la_ptr = (PCB).pointer + 1; ag_track();}
3644 return (PCB).exit_flag == AG_RUNNING_CODE;
3645 }
3646
3647 static int ag_action_5_proc(void) {
3648 int ag_sd = ag_fl[(PCB).ag_ap];
3649 (PCB).btsx = 0, (PCB).drt = -1;
3650 if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
3651 else {
3652 GET_CONTEXT;
3653 (PCB).ss[(PCB).ssx] = (PCB).sn;
3654 }
3655 (PCB).la_ptr = (PCB).pointer;
3656 (PCB).reduction_token = (cc-crash_token_type) ag_ptt[(PCB).ag_ap];
3657 ag_ra();
3658 while ((PCB).exit_flag == AG_RUNNING_CODE) {
3659 unsigned ag_t1 = ag_sbe[(PCB).sn] + 1;
3660 unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1;
3661 do {
3662 unsigned ag_tx = (ag_t1 + ag_t2)/2;
3663 if (ag_tstt[ag_tx] < (unsigned short)(PCB).reduction_token) ag_t1 = ag_tx + 1;
3664 else ag_t2 = ag_tx;
3665 } while (ag_t1 < ag_t2);
3666 if (ag_tstt[ag_t1] != (PCB).reduction_token) {
3667 (PCB).exit_flag = AG_REDUCTION_ERROR_CODE;
3668 REDUCTION_TOKEN_ERROR; break;}
3669 (PCB).ag_ap = ag_pstt[ag_t1];
3670 if ((ag_r_procs_scan[ag_astt[ag_t1]])() == 0) break;
3671 }
3672 return (PCB).exit_flag == AG_RUNNING_CODE;
3673 }
3674
3675 static int ag_action_6_proc(void) {
3676 int ag_sd = ag_fl[(PCB).ag_ap];
3677 (PCB).reduction_token = (cc-crash_token_type) ag_ptt[(PCB).ag_ap];
3678 if ((PCB).drt == -1) {
3679 (PCB).drt=(PCB).token_number;
3680 (PCB).dssx=(PCB).ssx;
3681 (PCB).dsn=(PCB).sn;
3682 }
3683 if (ag_sd) {
3684 (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
3685 }
3686 else {
3687 ag_prot();
3688 (PCB).vs[(PCB).ssx] = ag_null_value;
3689 GET_CONTEXT;
3690 (PCB).ss[(PCB).ssx] = (PCB).sn;
3691 }
3692 (PCB).la_ptr = (PCB).pointer;
3693 while ((PCB).exit_flag == AG_RUNNING_CODE) {
3694 unsigned ag_t1 = ag_sbe[(PCB).sn] + 1;
3695 unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1;
3696 do {
3697 unsigned ag_tx = (ag_t1 + ag_t2)/2;
3698 if (ag_tstt[ag_tx] < (unsigned short)(PCB).reduction_token) ag_t1 = ag_tx + 1;
3699 else ag_t2 = ag_tx;
3700 } while (ag_t1 < ag_t2);
3701 if (ag_tstt[ag_t1] != (PCB).reduction_token) {
3702 (PCB).exit_flag = AG_REDUCTION_ERROR_CODE;
3703 REDUCTION_TOKEN_ERROR; break;}
3704 (PCB).ag_ap = ag_pstt[ag_t1];
3705 if ((ag_r_procs_scan[ag_astt[ag_t1]])() == 0) break;
3706 }
3707 return (PCB).exit_flag == AG_RUNNING_CODE;
3708 }
3709
3710
3711 void init_cc-crash(void) {
3712 (PCB).la_ptr = (PCB).pointer;
3713 (PCB).ss[0] = (PCB).sn = (PCB).ssx = 0;
3714 (PCB).exit_flag = AG_RUNNING_CODE;
3715 (PCB).line = FIRST_LINE;
3716 (PCB).column = FIRST_COLUMN;
3717 (PCB).btsx = 0, (PCB).drt = -1;
3718 }
3719
3720 void cc-crash(void) {
3721 init_cc-crash();
3722 (PCB).exit_flag = AG_RUNNING_CODE;
3723 while ((PCB).exit_flag == AG_RUNNING_CODE) {
3724 unsigned ag_t1 = ag_sbt[(PCB).sn];
3725 if (ag_tstt[ag_t1]) {
3726 unsigned ag_t2 = ag_sbe[(PCB).sn] - 1;
3727 (PCB).token_number = (cc-crash_token_type) AG_TCV(INPUT_CODE(*(PCB).la_ptr));
3728 (PCB).la_ptr++;
3729 if (ag_key_index[(PCB).sn]) {
3730 unsigned ag_k = ag_key_index[(PCB).sn];
3731 int ag_ch = CONVERT_CASE(INPUT_CODE(*(PCB).pointer));
3732 if (ag_ch <= 255) {
3733 while (ag_key_ch[ag_k] < ag_ch) ag_k++;
3734 if (ag_key_ch[ag_k] == ag_ch) ag_get_key_word(ag_k);
3735 }
3736 }
3737 do {
3738 unsigned ag_tx = (ag_t1 + ag_t2)/2;
3739 if (ag_tstt[ag_tx] > (unsigned short)(PCB).token_number)
3740 ag_t1 = ag_tx + 1;
3741 else ag_t2 = ag_tx;
3742 } while (ag_t1 < ag_t2);
3743 if (ag_tstt[ag_t1] != (unsigned short)(PCB).token_number)
3744 ag_t1 = ag_sbe[(PCB).sn];
3745 }
3746 (PCB).ag_ap = ag_pstt[ag_t1];
3747 (ag_gt_procs_scan[ag_astt[ag_t1]])();
3748 }
3749 }
3750
3751