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