Initial revision
[charm.git] / src / xlat / xl-yacc.tab.c
1
2 /*  A Bison parser, made from xl-yacc.y
3  by  GNU Bison version 1.25
4   */
5
6 #define YYBISON 1  /* Identify Bison output.  */
7
8 #define CHARE   258
9 #define MAIN    259
10 #define MESSAGE 260
11 #define ENTRY   261
12 #define PRIVATE 262
13 #define DATAINIT        263
14 #define CHAREINIT       264
15 #define QUIESCENCE      265
16 #define MODULE  266
17 #define BRANCHOFFICE    267
18 #define READONLY        268
19 #define MONOTONIC       269
20 #define TABLE   270
21 #define ACCUMULATOR     271
22 #define STATIC  272
23 #define PACK    273
24 #define UNPACK  274
25 #define VARSIZE 275
26 #define FUNCTION        276
27 #define BRANCH  277
28 #define SIZEOF  278
29 #define AUTO    279
30 #define BREAK   280
31 #define CASE    281
32 #define CHAR    282
33 #define CONST   283
34 #define CONTINUE        284
35 #define DEFAULT 285
36 #define DO      286
37 #define DOUBLE  287
38 #define ELSE    288
39 #define ENUM    289
40 #define EXTERN  290
41 #define FLOAT   291
42 #define FOR     292
43 #define GOTO    293
44 #define IF      294
45 #define INT     295
46 #define LONG    296
47 #define REGISTER        297
48 #define RETURN  298
49 #define SHORT   299
50 #define SIGNED  300
51 #define STRUCT  301
52 #define SWITCH  302
53 #define TYPEDEF 303
54 #define UNION   304
55 #define UNSIGNED        305
56 #define VOID    306
57 #define WHILE   307
58 #define INTERFACE       308
59 #define ChareIDType     309
60 #define EntryPointType  310
61 #define PeNumType       311
62 #define PackIDType      312
63 #define WriteOnceID     313
64 #define PVECTOR 314
65 #define ChareNumType    315
66 #define EntryNumType    316
67 #define BOOLEAN 317
68 #define R_PAREN 318
69 #define R_SQUARE        319
70 #define L_BRACE 320
71 #define R_BRACE 321
72 #define SEMICOLON       322
73 #define IDENTIFIER      323
74 #define TYPE_IDENTIFIER 324
75 #define EPIDENTIFIER    325
76 #define MCIDENTIFIER    326
77 #define STRING  327
78 #define NUMBER  328
79 #define CHAR_CONST      329
80 #define COMMA_R_BRACE   330
81 #define COMMA_L_BRACE   331
82 #define AT      332
83 #define COMMA   333
84 #define ASGNOP  334
85 #define EQUAL   335
86 #define QUESTION        336
87 #define COLON   337
88 #define OROR    338
89 #define ANDAND  339
90 #define OR      340
91 #define HAT     341
92 #define AND     342
93 #define EQUALEQUAL      343
94 #define NOTEQUAL        344
95 #define COMPARE 345
96 #define SHIFT   346
97 #define PLUS    347
98 #define MINUS   348
99 #define MULT    349
100 #define DIV     350
101 #define MOD     351
102 #define UNARY   352
103 #define INCDEC  353
104 #define TILDE   354
105 #define EXCLAIM 355
106 #define L_PAREN 356
107 #define L_SQUARE        357
108 #define DOT     358
109 #define POINTERREF      359
110 #define PRIVATECALL     360
111 #define BRANCHCALL      361
112 #define ID_DCOLON_ID    362
113 #define PUBLIC  363
114 #define FNNAMETOREF     364
115 #define CKALLOCMSG      365
116 #define CKALLOCPRIOMSG  366
117 #define READMSGINIT     367
118 #define ACCUMULATE      368
119 #define NEWVALUE        369
120 #define ACCIDTYPE       370
121 #define MONOIDTYPE      371
122 #define DUMMYMSG        372
123 #define FunctionRefType 373
124 #define FUNCTION_PTR    374
125 #define FNREFTONAME     375
126 #define IMPLICIT        376
127 #define BLOCKEDRECV     377
128 #define DAG     378
129 #define MATCH   379
130 #define AUTOFREE        380
131 #define WHEN    381
132 #define CHARECALL       382
133 #define ChareNameType   383
134 #define EXPORT_TO_C     384
135
136 #line 1 "xl-yacc.y"
137
138 #include "xl-lex.h"
139 #include "xl-sym.h"
140
141 extern int CurrentInputLineNo,SavedLineNo;
142 extern char CurrentFileName[],SavedFileName[];
143 extern char ModuleName[];
144
145 #define USERDEFINED 1
146 #define SYSTEMDEFINED 2
147
148 #define YYSTYPE YSNPTR
149 #define YYMAXDEPTH 300
150
151 #define dump(string)    writeoutput(string,NOFREE)
152
153 extern char *AppendMap(),*AppendMapIndex();  
154 char token[256];
155
156 BUFFERTYPE buffer;
157
158 extern void RestoreCurrentTable();
159 extern void SetIdList();
160 extern void GenerateStruct();           /* outh.c */
161 extern void InsertSysCalls();           /* readtokens.c */
162 extern TYPEPTR ProcessTypeIdentifier();
163
164 char *dummy_ptr=NULL;
165 SYMTABPTR worksymtab,SavedFnNode;
166 SYMTABPTR ImportModule=NULL;
167 SYMTABPTR ModuleDefined=NULL;
168 SYMTABPTR Pass1Module=NULL;
169 SYMTABPTR sym1,sym2;
170 TYPEPTR SavedTypeNode;
171 char *SavedName,*itoa(),*Map(),*AccMonoName,*AccMonoTypeName;
172 char *ForwardedMsgName;
173 int SaveMsgCount;
174
175 SYMTABPTR GlobalModuleSearch(),GlobalEntryFind(),ProcessIdDcolonId();
176 void SwapFile();
177
178 char *CkMyData="_CK_4mydata->";
179 char *CkLocalPtr="_CK_4localptr";
180 char *CkDummyPtr="_CK_4dummyptr";
181 char *CkMsgQualifier="MSG";
182 char *DataSuffix="_Data";
183 char *AssignMyDataPtr=" *_CK_4mydata = (";
184 char *AssignMyID="\nChareIDType ThisChareID=((CHARE_BLOCK *)_CK_4mydata)[-1].selfID;";
185 char *AssignMyBOC="\nint ThisBOC=((CHARE_BLOCK *)_CK_4mydata)[-1].x.boc_num;";
186 char *DummyField="  char _CK;";
187 extern char *REFSUFFIX;         /* outh.c */
188 extern char *CkGenericAlloc,*CkVarSizeAlloc;
189
190
191 int INSIDE_PRIVFUNC_PROTO=0; /* Jun 14, 1995, added by Attila */
192 int PRIVATEFLAG=0;
193 int StoredEPFlag;
194 int IMPORTFLAG=0;
195 int IMPORTMSGFLAG=0; /* Dec 30, 1991 Added by Attila */
196 int SELFIMPMODULE=0; /* Jan 2, 1992  Added by Attila */
197 int MULTI_STMT_TR=0; /* Feb 18, 1992  Added by Attila */
198 int export_to_c_flag=0; /* March, 1994  Added by Attila */
199 int ImportStruct=0;
200 int ImportLevel=0;
201 int OUTPUTOFF=0;
202 int FUNCTIONCOUNT=0;
203 int FNNAMETOREFFLAG=0;
204 int FNREFTONAMEFLAG=0; /* Jan 16, 1992 Added by Attila */
205 int READMSGINITFLAG=0;
206 int BUFFEROUTPUT=0;
207 int FORWARDEDMESSAGE=0;
208 int MsgCount=10;        /* ARBITRARY - Set to > 1 */
209 int MsgToStructFlag=0;
210 FILE *outfile;
211
212 TYPEPTR SetType(typeptr)
213 TYPEPTR typeptr;
214 { (typeptr->count)++;
215   return(typeptr);
216 }
217
218 void RecursiveFree(typeptr)
219 TYPEPTR typeptr;
220 { if (typeptr->type != NULL) RecursiveFree(typeptr->type);
221   if (typeptr->table != NULL) FreeTree(typeptr->table); 
222   dontfree(typeptr);
223 }
224
225 void FreeType(typeptr)
226 TYPEPTR typeptr;
227 { if (typeptr==NULL) return;
228   if (--(typeptr->count) <= 0) RecursiveFree(typeptr); }
229
230 #ifndef YYSTYPE
231 #define YYSTYPE int
232 #endif
233 #include <stdio.h>
234
235 #ifndef __cplusplus
236 #ifndef __STDC__
237 #define const
238 #endif
239 #endif
240
241
242
243 #define YYFINAL         1015
244 #define YYFLAG          -32768
245 #define YYNTBASE        130
246
247 #define YYTRANSLATE(x) ((unsigned)(x) <= 384 ? yytranslate[x] : 432)
248
249 static const short yytranslate[] = {     0,
250      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
251      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
252      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
253      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
254      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
255      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
256      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
257      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
258      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
259      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
260      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
261      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
262      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
263      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
264      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
265      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
266      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
267      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
268      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
269      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
270      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
271      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
272      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
273      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
274      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
275      2,     2,     2,     2,     2,     1,     2,     3,     4,     5,
276      6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
277     16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
278     26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
279     36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
280     46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
281     56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
282     66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
283     76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
284     86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
285     96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
286    106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
287    116,   117,   118,   119,   120,   121,   122,   123,   124,   125,
288    126,   127,   128,   129
289 };
290
291 #if YYDEBUG != 0
292 static const short yyprhs[] = {     0,
293      0,     2,     4,     7,     9,    12,    13,    14,    23,    25,
294     28,    30,    35,    39,    41,    43,    45,    47,    49,    51,
295     53,    54,    57,    58,    61,    62,    67,    68,    73,    75,
296     79,    81,    85,    87,    92,    93,    96,    97,    98,   103,
297    104,   108,   109,   113,   114,   116,   117,   118,   128,   129,
298    136,   137,   144,   145,   152,   156,   158,   161,   166,   167,
299    172,   175,   177,   179,   182,   185,   186,   193,   195,   198,
300    200,   201,   202,   209,   213,   214,   220,   222,   225,   229,
301    234,   236,   237,   238,   242,   243,   249,   254,   258,   262,
302    267,   271,   274,   277,   278,   279,   285,   287,   289,   291,
303    293,   295,   297,   299,   301,   303,   305,   307,   308,   316,
304    317,   322,   323,   328,   331,   332,   337,   338,   340,   342,
305    345,   348,   350,   352,   354,   356,   360,   364,   369,   375,
306    379,   381,   382,   387,   389,   392,   395,   397,   400,   403,
307    405,   407,   410,   413,   416,   418,   420,   422,   425,   428,
308    431,   434,   437,   440,   444,   448,   452,   454,   456,   458,
309    460,   462,   464,   466,   468,   470,   472,   474,   476,   478,
310    480,   482,   484,   486,   488,   490,   494,   495,   498,   500,
311    504,   505,   509,   513,   517,   522,   525,   528,   529,   534,
312    537,   540,   541,   546,   549,   552,   553,   558,   560,   562,
313    563,   568,   570,   573,   577,   579,   583,   585,   589,   592,
314    593,   599,   600,   602,   606,   608,   609,   614,   615,   617,
315    620,   621,   626,   629,   632,   634,   639,   640,   645,   648,
316    649,   653,   654,   658,   662,   666,   671,   673,   675,   677,
317    680,   685,   688,   693,   697,   701,   705,   709,   713,   717,
318    718,   723,   724,   729,   730,   735,   736,   741,   742,   747,
319    748,   755,   759,   763,   766,   769,   771,   774,   779,   782,
320    787,   791,   795,   799,   803,   807,   811,   812,   817,   818,
321    823,   824,   829,   830,   835,   836,   841,   842,   849,   853,
322    857,   858,   863,   864,   865,   875,   876,   877,   878,   891,
323    892,   893,   894,   907,   908,   914,   915,   921,   925,   926,
324    931,   932,   939,   945,   946,   952,   953,   954,   965,   966,
325    967,   978,   979,   980,   987,   989,   990,   994,   996,   997,
326   1002,  1003,  1004,  1007,  1009,  1011,  1013,  1015,  1017,  1019,
327   1021,  1023,  1025,  1027,  1029,  1031,  1035,  1039,  1044,  1049,
328   1050,  1055,  1056,  1061,  1064,  1067,  1069,  1071,  1073,  1077,
329   1081,  1082,  1088,  1089,  1091,  1093,  1096,  1097,  1099,  1101,
330   1104,  1106,  1109,  1115,  1123,  1129,  1136,  1146,  1152,  1157,
331   1161,  1164,  1167,  1170,  1174,  1175,  1180,  1181,  1186,  1188,
332   1189,  1190,  1197,  1198,  1199,  1208,  1210,  1211,  1212,  1214,
333   1216,  1220,  1223,  1224,  1228,  1229,  1235,  1236,  1238,  1240,
334   1242,  1244,  1251,  1252,  1254,  1256,  1258,  1261,  1264,  1265,
335   1267,  1271,  1272,  1273,  1274,  1275,  1287,  1289,  1291,  1293,
336   1294,  1301,  1302,  1303,  1311,  1312,  1313,  1321,  1322,  1330,
337   1331,  1336,  1338,  1342,  1343,  1356,  1357,  1371,  1372,  1373,
338   1382,  1383,  1384,  1385,  1394,  1396,  1397,  1401,  1402,  1403,
339   1410,  1411,  1412,  1419,  1420,  1421,  1428,  1429,  1437,  1438,
340   1446,  1448,  1451,  1452,  1458,  1459,  1466,  1468,  1469,  1470,
341   1480,  1481,  1486,  1487,  1488,  1494,  1496,  1498,  1499,  1505,
342   1506,  1514,  1516,  1519,  1521,  1522,  1528,  1529,  1535,  1536,
343   1538,  1540,  1543,  1545,  1547,  1549,  1551,  1553,  1555,  1557,
344   1559,  1561,  1563,  1565,  1567,  1569,  1571,  1573,  1575,  1577,
345   1579,  1581,  1583,  1585,  1587,  1589,  1590,  1591,  1598,  1600,
346   1604,  1606,  1609,  1611,  1612,  1618,  1623,  1624,  1630,  1631,
347   1637,  1638,  1639,  1640,  1649,  1651,  1654,  1655,  1656,  1657,
348   1674,  1675,  1677,  1678,  1680,  1684,  1685,  1687,  1690,  1692,
349   1694,  1695,  1696,  1703,  1705,  1709,  1712,  1716,  1717,  1719,
350   1720,  1721
351 };
352
353 static const short yyrhs[] = {   131,
354      0,   171,     0,   132,   171,     0,   133,     0,   132,   133,
355      0,     0,     0,    53,   134,    11,    68,   135,    65,   136,
356     66,     0,   138,     0,   136,   138,     0,    48,     0,   137,
357    199,   200,   388,     0,   137,   200,   388,     0,   149,     0,
358    156,     0,   141,     0,   143,     0,   159,     0,   163,     0,
359    161,     0,     0,   139,   147,     0,     0,   140,   322,     0,
360      0,    16,   142,   145,    67,     0,     0,    14,   144,   146,
361     67,     0,    68,     0,   145,    78,    68,     0,    68,     0,
362    146,    78,    68,     0,   397,     0,    68,   101,    63,    67,
363      0,     0,   150,   148,     0,     0,     0,   151,   198,   152,
364    148,     0,     0,    69,   153,   148,     0,     0,   154,   204,
365    148,     0,     0,    68,     0,     0,     0,     5,   157,   155,
366     65,   158,   305,    66,    68,    67,     0,     0,     3,    68,
367    160,    65,   170,    66,     0,     0,    12,    68,   162,    65,
368    170,    66,     0,     0,     3,     4,   164,    65,   166,    66,
369      0,     6,    68,    67,     0,   165,     0,   166,   165,     0,
370     68,   101,    63,    67,     0,     0,   108,   169,   199,   167,
371      0,   108,   167,     0,   165,     0,   168,     0,   170,   165,
372      0,   170,   168,     0,     0,    11,    68,   172,    65,   173,
373     66,     0,   183,     0,   173,   183,     0,    68,     0,     0,
374      0,    68,   175,   102,   176,   179,    64,     0,    68,   101,
375     63,     0,     0,    68,   101,   177,   178,    63,     0,   230,
376      0,   230,    68,     0,   178,   390,   230,     0,   178,   390,
377    230,    68,     0,   302,     0,     0,     0,   294,   181,   174,
378      0,     0,   180,   390,   294,   182,   174,     0,   393,   199,
379    200,   388,     0,   393,   200,   388,     0,   188,   192,   388,
380      0,    35,   199,   180,   388,     0,    35,   180,   388,     0,
381    289,   388,     0,   289,   297,     0,     0,     0,   129,   184,
382    289,   185,   297,     0,   309,     0,   328,     0,   326,     0,
383    348,     0,   406,     0,   350,     0,   404,     0,   366,     0,
384    397,     0,   322,     0,   186,     0,     0,    28,   227,    68,
385    187,    80,   240,    67,     0,     0,   394,    68,   189,   209,
386      0,     0,   396,    68,   190,   209,     0,   395,    68,     0,
387      0,   395,    68,   191,   215,     0,     0,   199,     0,   194,
388      0,   199,   194,     0,   194,   199,     0,    24,     0,    17,
389      0,    42,     0,    28,     0,   193,   200,   388,     0,   393,
390    200,   388,     0,   393,   199,   200,   388,     0,    35,   199,
391    294,   180,   388,     0,    35,   180,   388,     0,   195,     0,
392      0,   363,   197,   289,   388,     0,    27,     0,    50,    27,
393      0,    45,    27,     0,    44,     0,    50,    44,     0,    45,
394     44,     0,    40,     0,    41,     0,    50,    41,     0,    45,
395     41,     0,    45,    40,     0,    32,     0,    36,     0,    50,
396      0,    44,    40,     0,    41,    40,     0,    41,    41,     0,
397     41,    36,     0,    41,    32,     0,    50,    40,     0,    50,
398     40,    40,     0,    50,    41,    41,     0,    50,    41,    40,
399      0,    51,     0,    54,     0,    55,     0,    56,     0,    57,
400      0,    58,     0,    59,     0,   128,     0,    60,     0,    61,
401      0,    62,     0,   115,     0,   116,     0,   117,     0,   118,
402      0,   119,     0,   204,     0,   230,     0,   201,     0,   200,
403    390,   201,     0,     0,   202,   221,     0,    68,     0,   376,
404    202,   377,     0,     0,    94,   203,   202,     0,   202,   376,
405    377,     0,   202,   374,   375,     0,   202,   374,   240,   375,
406      0,   394,   209,     0,   394,   208,     0,     0,   394,    68,
407    205,   209,     0,   396,   209,     0,   396,    68,     0,     0,
408    396,    68,   206,   209,     0,   395,   215,     0,   395,    68,
409      0,     0,   395,    68,   207,   215,     0,    68,     0,    69,
410      0,     0,    65,   210,   211,    66,     0,   212,     0,   211,
411    212,     0,   199,   213,   388,     0,   214,     0,   213,   390,
412    214,     0,   202,     0,   202,   389,   303,     0,   389,   303,
413      0,     0,    65,   216,   217,   218,    66,     0,     0,   219,
414      0,   218,   390,   219,     0,    68,     0,     0,    68,   220,
415    380,   231,     0,     0,   222,     0,   380,   240,     0,     0,
416    380,    65,   223,   224,     0,   225,    66,     0,   225,   392,
417      0,   240,     0,   225,   391,   225,    66,     0,     0,    65,
418    226,   225,    66,     0,   199,   228,     0,     0,   376,   228,
419    377,     0,     0,    94,   229,   228,     0,   228,   376,   377,
420      0,   228,   374,   375,     0,   228,   374,   240,   375,     0,
421     69,     0,   198,     0,   276,     0,   273,   231,     0,    23,
422    376,   230,   377,     0,    23,   231,     0,   376,   227,   377,
423    231,     0,   231,   274,   231,     0,   231,   275,   231,     0,
424    231,   383,   231,     0,   231,   384,   231,     0,   231,   382,
425    231,     0,   231,   381,   231,     0,     0,   231,    87,   232,
426    231,     0,     0,   231,    86,   233,   231,     0,     0,   231,
427     85,   234,   231,     0,     0,   231,    84,   235,   231,     0,
428      0,   231,    83,   236,   231,     0,     0,   231,    81,   237,
429    231,   389,   231,     0,   276,   379,   231,     0,   276,   380,
430    231,     0,   111,   101,     0,   110,   101,     0,   276,     0,
431    273,   240,     0,    23,   376,   230,   377,     0,    23,   240,
432      0,   376,   227,   377,   240,     0,   240,   274,   240,     0,
433    240,   275,   240,     0,   240,   383,   240,     0,   240,   384,
434    240,     0,   240,   382,   240,     0,   240,   381,   240,     0,
435      0,   240,    87,   241,   240,     0,     0,   240,    86,   242,
436    240,     0,     0,   240,    85,   243,   240,     0,     0,   240,
437     84,   244,   240,     0,     0,   240,    83,   245,   240,     0,
438      0,   240,    81,   246,   240,   389,   240,     0,   276,   379,
439    240,     0,   276,   380,   240,     0,     0,   240,    78,   247,
440    240,     0,     0,     0,   105,   376,    68,   248,   376,   249,
441    271,   377,   377,     0,     0,     0,     0,   106,   376,   250,
442    231,   251,    78,   279,   376,   252,   271,   377,   377,     0,
443      0,     0,     0,   127,   376,   253,   231,   254,    78,   279,
444    376,   255,   271,   377,   377,     0,     0,   109,   101,   256,
445    279,    63,     0,     0,   120,   101,   257,   240,    63,     0,
446    239,    68,   269,     0,     0,   239,    69,   258,   269,     0,
447      0,   238,    69,    78,   259,   231,   269,     0,   238,    68,
448     78,   231,   269,     0,     0,   112,   260,   376,   279,   377,
449      0,     0,     0,   113,   101,   261,   231,    78,   262,    68,
450    101,   267,   377,     0,     0,     0,   114,   101,   263,   231,
451     78,   264,    68,   101,   267,   377,     0,     0,     0,   122,
452    265,   376,   266,   279,   377,     0,    63,     0,     0,   268,
453    240,    63,     0,    63,     0,     0,    78,   270,   231,    63,
454      0,     0,     0,   272,   240,     0,    94,     0,    87,     0,
455     93,     0,    99,     0,   100,     0,    94,     0,    95,     0,
456     96,     0,    92,     0,    93,     0,   302,     0,   387,     0,
457    376,   240,   377,     0,   276,   376,   377,     0,   276,   376,
458    240,   377,     0,   276,   374,   240,   375,     0,     0,   276,
459    103,   277,    68,     0,     0,   276,   104,   278,    68,     0,
460    378,   276,     0,   276,   378,     0,   279,     0,    68,     0,
461    107,     0,   107,    77,    68,     0,    68,    77,    68,     0,
462      0,    65,   281,   282,   284,    66,     0,     0,   283,     0,
463    196,     0,   283,   196,     0,     0,   285,     0,   286,     0,
464    285,   286,     0,   280,     0,   240,    67,     0,    39,   376,
465    240,   377,   286,     0,    39,   376,   240,   377,   286,    33,
466    286,     0,    52,   376,   240,   377,   286,     0,    31,   286,
467     52,   376,   240,   377,     0,    37,   376,   301,   388,   301,
468    388,   301,   377,   286,     0,    47,   376,   240,   377,   286,
469      0,    26,   240,   389,   286,     0,    30,   389,   286,     0,
470     25,   388,     0,    29,   388,     0,    43,   388,     0,    43,
471    240,   388,     0,     0,    38,    68,   287,   388,     0,     0,
472     68,   288,   389,   286,     0,   388,     0,     0,     0,    68,
473    290,   376,   291,   295,   377,     0,     0,     0,   199,   294,
474     68,   292,   376,   293,   295,   377,     0,    94,     0,     0,
475      0,   296,     0,    68,     0,   296,   390,    68,     0,   230,
476     68,     0,     0,   282,   298,   299,     0,     0,    65,   300,
477    282,   284,    66,     0,     0,   240,     0,   385,     0,   386,
478      0,   302,     0,    20,   230,    68,   102,    64,    67,     0,
479      0,   306,     0,   212,     0,   304,     0,   306,   212,     0,
480    306,   304,     0,     0,    68,     0,   102,    68,    64,     0,
481      0,     0,     0,     0,     5,   310,   308,   307,    65,   311,
482    305,   312,   314,   313,    67,     0,    68,     0,    69,     0,
483     66,     0,     0,    18,   316,   315,    19,   319,    66,     0,
484      0,     0,    68,   317,   376,   295,   377,   318,   297,     0,
485      0,     0,    68,   320,   376,   295,   377,   321,   297,     0,
486      0,    15,    65,   333,    66,   323,   325,   388,     0,     0,
487     15,   324,   325,   388,     0,    68,     0,   325,   390,    68,
488      0,     0,    14,    65,    69,    94,    68,    67,   327,   330,
489    345,    66,    68,    67,     0,     0,    16,    65,    69,    94,
490     68,    67,   329,   330,   339,   342,    66,    68,    67,     0,
491      0,     0,   199,   294,    68,   331,   101,   337,   332,   297,
492      0,     0,     0,     0,    68,   334,   101,    68,   335,   377,
493    336,   297,     0,   377,     0,     0,   338,   296,   377,     0,
494      0,     0,    68,   340,   101,   337,   341,   297,     0,     0,
495      0,    68,   343,   101,   337,   344,   297,     0,     0,     0,
496     68,   346,   101,   337,   347,   297,     0,     0,     3,    68,
497    349,    65,   372,   352,    66,     0,     0,    12,    68,   351,
498     65,   372,   352,    66,     0,   357,     0,   352,   357,     0,
499      0,     6,    68,   354,    82,   376,     0,     0,     6,   121,
500     68,   355,    82,   376,     0,    69,     0,     0,     0,   353,
501      5,   356,    94,    68,   358,   377,   359,   364,     0,     0,
502    353,    63,   360,   364,     0,     0,     0,   363,   361,   289,
503    362,   297,     0,     7,     0,   108,     0,     0,    65,   365,
504    282,   284,    66,     0,     0,     3,     4,   367,    65,   372,
505    368,    66,     0,   369,     0,   368,   369,     0,   357,     0,
506      0,     6,    10,   370,    82,   364,     0,     0,     6,     9,
507    371,    82,   364,     0,     0,   373,     0,   195,     0,   373,
508    195,     0,   102,     0,    64,     0,   101,     0,    63,     0,
509     98,     0,    79,     0,    80,     0,    89,     0,    88,     0,
510     91,     0,    90,     0,    73,     0,    74,     0,    72,     0,
511     67,     0,    82,     0,    78,     0,    76,     0,    75,     0,
512     48,     0,    46,     0,    34,     0,    49,     0,     0,     0,
513     13,   398,   230,   399,   400,   388,     0,   401,     0,   400,
514    390,   401,     0,    68,     0,    94,    68,     0,   402,     0,
515      0,    68,   403,   374,   240,   375,     0,   402,   374,   240,
516    375,     0,     0,   123,    12,    68,   405,   408,     0,     0,
517    123,     3,    68,   407,   408,     0,     0,     0,     0,    65,
518    409,   372,   410,   412,   411,   420,    66,     0,   413,     0,
519    412,   413,     0,     0,     0,     0,     6,    68,   414,   419,
520    417,   418,    82,   101,   415,     5,   356,    94,    68,   416,
521     63,    67,     0,     0,   124,     0,     0,   125,     0,   102,
522     68,    64,     0,     0,   421,     0,   420,   421,     0,   422,
523      0,   429,     0,     0,     0,   126,   423,   425,    82,   424,
524    428,     0,   426,     0,   425,    78,   426,     0,    68,   427,
525      0,   102,    68,    64,     0,     0,   364,     0,     0,     0,
526    363,   430,   289,   431,   297,     0
527 };
528
529 #endif
530
531 #if YYDEBUG != 0
532 static const short yyrline[] = { 0,
533    216,   223,   230,   239,   243,   249,   250,   268,   278,   279,
534    282,   285,   292,   299,   301,   303,   305,   307,   309,   311,
535    313,   316,   322,   325,   333,   334,   338,   339,   343,   350,
536    359,   366,   375,   378,   391,   392,   392,   393,   394,   394,
537    403,   403,   403,   406,   407,   416,   423,   424,   452,   462,
538    477,   486,   500,   511,   526,   539,   540,   543,   554,   555,
539    556,   558,   559,   560,   561,   564,   587,   590,   591,   594,
540    601,   602,   604,   611,   620,   624,   634,   637,   640,   643,
541    649,   650,   652,   655,   655,   658,   660,   664,   668,   672,
542    673,   674,   680,   684,   687,   689,   693,   694,   695,   696,
543    697,   698,   699,   700,   701,   702,   703,   707,   712,   719,
544    726,   757,   764,   798,   829,   837,   870,   878,   879,   880,
545    881,   884,   885,   886,   887,   890,   894,   898,   902,   903,
546    906,   907,   910,   918,   919,   922,   925,   926,   928,   930,
547    931,   932,   934,   936,   938,   939,   940,   941,   943,   945,
548    947,   949,   951,   953,   956,   959,   962,   963,   964,   965,
549    966,   967,   968,   969,   970,   971,   972,   973,   974,   975,
550    976,   977,   980,   981,   984,   985,   991,   994,   997,  1008,
551   1010,  1011,  1017,  1024,  1031,  1040,  1047,  1077,  1085,  1116,
552   1125,  1155,  1163,  1198,  1205,  1236,  1244,  1278,  1279,  1282,
553   1285,  1293,  1294,  1297,  1303,  1306,  1310,  1311,  1312,  1318,
554   1321,  1330,  1332,  1333,  1340,  1345,  1350,  1353,  1354,  1357,
555   1358,  1361,  1363,  1365,  1368,  1369,  1372,  1374,  1379,  1384,
556   1385,  1386,  1387,  1387,  1388,  1389,  1392,  1416,  1421,  1422,
557   1423,  1424,  1425,  1426,  1427,  1428,  1429,  1430,  1431,  1432,
558   1433,  1433,  1434,  1434,  1435,  1435,  1436,  1436,  1437,  1437,
559   1437,  1438,  1439,  1441,  1444,  1447,  1448,  1449,  1450,  1451,
560   1452,  1453,  1454,  1455,  1456,  1457,  1458,  1459,  1459,  1460,
561   1460,  1461,  1461,  1462,  1462,  1463,  1463,  1463,  1464,  1465,
562   1466,  1467,  1467,  1481,  1484,  1485,  1486,  1487,  1492,  1493,
563   1494,  1495,  1500,  1501,  1502,  1505,  1509,  1513,  1517,  1555,
564   1555,  1586,  1587,  1592,  1593,  1595,  1596,  1605,  1611,  1612,
565   1622,  1628,  1631,  1639,  1642,  1643,  1644,  1647,  1649,  1650,
566   1654,  1655,  1656,  1658,  1659,  1660,  1661,  1662,  1664,  1665,
567   1666,  1669,  1670,  1673,  1674,  1675,  1676,  1677,  1678,  1679,
568   1680,  1685,  1686,  1691,  1692,  1693,  1696,  1743,  1762,  1780,
569   1795,  1800,  1809,  1810,  1813,  1814,  1817,  1818,  1821,  1822,
570   1825,  1826,  1833,  1834,  1835,  1836,  1838,  1840,  1841,  1842,
571   1843,  1844,  1845,  1846,  1847,  1853,  1853,  1860,  1861,  1865,
572   1888,  1892,  1902,  1928,  1932,  1944,  1945,  1948,  1949,  1952,
573   1960,  1968,  1976,  1992,  2001,  2020,  2024,  2025,  2028,  2029,
574   2032,  2035,  2053,  2054,  2057,  2058,  2059,  2060,  2063,  2064,
575   2071,  2078,  2080,  2082,  2085,  2108,  2140,  2141,  2144,  2145,
576   2147,  2151,  2157,  2160,  2162,  2168,  2171,  2173,  2178,  2179,
577   2187,  2190,  2197,  2208,  2212,  2219,  2223,  2230,  2243,  2253,
578   2256,  2266,  2273,  2274,  2277,  2278,  2278,  2281,  2293,  2303,
579   2306,  2318,  2328,  2331,  2343,  2353,  2356,  2367,  2373,  2384,
580   2390,  2391,  2394,  2406,  2408,  2420,  2423,  2441,  2459,  2478,
581   2481,  2496,  2503,  2513,  2520,  2523,  2524,  2527,  2544,  2550,
582   2560,  2566,  2567,  2570,  2581,  2583,  2587,  2589,  2598,  2604,
583   2613,  2614,  2617,  2619,  2621,  2623,  2625,  2629,  2633,  2635,
584   2637,  2639,  2643,  2647,  2651,  2655,  2659,  2661,  2663,  2665,
585   2667,  2670,  2673,  2676,  2679,  2682,  2686,  2687,  2690,  2691,
586   2694,  2703,  2713,  2716,  2725,  2726,  2732,  2745,  2748,  2761,
587   2763,  2766,  2781,  2786,  2796,  2797,  2800,  2813,  2815,  2828,
588   2832,  2833,  2836,  2837,  2840,  2842,  2845,  2846,  2849,  2850,
589   2853,  2855,  2861,  2866,  2867,  2870,  2874,  2880,  2883,  2886,
590   2893,  2899
591 };
592 #endif
593
594
595 #if YYDEBUG != 0 || defined (YYERROR_VERBOSE)
596
597 static const char * const yytname[] = {   "$","error","$undefined.","CHARE",
598 "MAIN","MESSAGE","ENTRY","PRIVATE","DATAINIT","CHAREINIT","QUIESCENCE","MODULE",
599 "BRANCHOFFICE","READONLY","MONOTONIC","TABLE","ACCUMULATOR","STATIC","PACK",
600 "UNPACK","VARSIZE","FUNCTION","BRANCH","SIZEOF","AUTO","BREAK","CASE","CHAR",
601 "CONST","CONTINUE","DEFAULT","DO","DOUBLE","ELSE","ENUM","EXTERN","FLOAT","FOR",
602 "GOTO","IF","INT","LONG","REGISTER","RETURN","SHORT","SIGNED","STRUCT","SWITCH",
603 "TYPEDEF","UNION","UNSIGNED","VOID","WHILE","INTERFACE","ChareIDType","EntryPointType",
604 "PeNumType","PackIDType","WriteOnceID","PVECTOR","ChareNumType","EntryNumType",
605 "BOOLEAN","R_PAREN","R_SQUARE","L_BRACE","R_BRACE","SEMICOLON","IDENTIFIER",
606 "TYPE_IDENTIFIER","EPIDENTIFIER","MCIDENTIFIER","STRING","NUMBER","CHAR_CONST",
607 "COMMA_R_BRACE","COMMA_L_BRACE","AT","COMMA","ASGNOP","EQUAL","QUESTION","COLON",
608 "OROR","ANDAND","OR","HAT","AND","EQUALEQUAL","NOTEQUAL","COMPARE","SHIFT","PLUS",
609 "MINUS","MULT","DIV","MOD","UNARY","INCDEC","TILDE","EXCLAIM","L_PAREN","L_SQUARE",
610 "DOT","POINTERREF","PRIVATECALL","BRANCHCALL","ID_DCOLON_ID","PUBLIC","FNNAMETOREF",
611 "CKALLOCMSG","CKALLOCPRIOMSG","READMSGINIT","ACCUMULATE","NEWVALUE","ACCIDTYPE",
612 "MONOIDTYPE","DUMMYMSG","FunctionRefType","FUNCTION_PTR","FNREFTONAME","IMPLICIT",
613 "BLOCKEDRECV","DAG","MATCH","AUTOFREE","WHEN","CHARECALL","ChareNameType","EXPORT_TO_C",
614 "program","file_text","import_text","import_decl","@1","@2","import_constructs",
615 "ITypeDef","imp_construct","@3","@4","imp_acc","@5","imp_mono","@6","aid_list",
616 "mid_list","imp_readonly","ID_L_R_S","imp_fn_decl","@7","@8","@9","@10","@11",
617 "optID","imp_message_defn","@12","@13","imp_chare_defn","@14","imp_boc_defn",
618 "@15","imp_main_chare_defn","@16","EIS","entry_list","ILRS","PUBFN","@17","entry_pub_fn_list",
619 "module_text","@18","mod_constructs","ext_const","@19","@20","@21","ext_parameter_list",
620 "ext_constant","ext_list","@22","@23","construct","@24","@25","const_declaration",
621 "@26","module_su_spec","@27","@28","@29","module_init_decl","decl_specs","sc_spec",
622 "mod_declaration","declaration","@30","system_types","type_spec","init_decl_list",
623 "init_decl","declarator","@31","su_spec","@32","@33","@34","TYPE_OR_ID","su_rest",
624 "@35","s_decl_list","struct_decl","s_declarator_list","s_declarator","enum_rest",
625 "@36","enum_opt","enum_list","enum_member","@37","initializer_opt","initializer",
626 "@38","init_rest","initializer_list","@39","typename","abstract_decl","@40",
627 "typedef_name","base_expression","@41","@42","@43","@44","@45","@46","CKPRIO_L",
628 "CK_L","expression","@47","@48","@49","@50","@51","@52","@53","@54","@55","@56",
629 "@57","@58","@59","@60","@61","@62","@63","@64","@65","@66","@67","@68","@69",
630 "@70","@71","@72","expression_R_PAREN","@73","ckallocrest","@74","expression_opt",
631 "@75","unary","MULTDIV","ADDSUB","primary","@76","@77","ck_primary","compound_statement",
632 "@78","decl_list_opt","decl_list","stmt_list_opt","stmt_list","statement","@79",
633 "@80","function_decl","@81","@82","@83","@84","mopt","parameter_list_opt","parameter_list",
634 "function_body","@85","function_stmt","@86","exp_opt","constant","const_exp",
635 "varsize_decl","msg_opt_su_rest","msg_su_rest","msg_opt_id","optname_insquare",
636 "message_defn","@87","@88","@89","TypeOrId","msg_pu_rest","@90","pfn","@91",
637 "@92","ufn","@93","@94","table_defn","@95","@96","tid_list","mono_defn","@97",
638 "acc_defn","@98","initfn","@99","@100","hashfn","@101","@102","@103","paralist_opt_R_PAREN",
639 "@104","addfn","@105","@106","combinefn","@107","@108","updatefn","@109","@110",
640 "chare_defn","@111","boc_defn","@112","entry_or_fns","entry_head","@113","@114",
641 "msg_type","entry_or_fn","@115","@116","@117","@118","@119","privpub","entry_stmt",
642 "@120","main_chare_defn","@121","m_entry_or_fns","m_entry_or_fn","@122","@123",
643 "c_decl_list_opt","c_decl_list","lsquare","rsquare","lparen","rparen","incdec",
644 "asgnop","equal","notequal","equalequal","shift","compare","number","char_const",
645 "string","semicolon","colon","comma","comma_L_BRACE","comma_R_BRACE","TypeDef",
646 "Struct","Enum","Union","readonly","@124","@125","read_id_list","read_id","read_array",
647 "@126","dag_boc_defn","@127","dag_chare_defn","@128","dag_rest","@129","@130",
648 "@131","dag_entry_list","dag_entry","@132","@133","@134","dag_matching","dag_autofree",
649 "dag_multentry","dag_when_fn_list","dag_when_fn","dag_when","@135","@136","dag_when_conds",
650 "dag_when_cond","dag_mult_cond","dag_when_stmt","dag_fn","@137","@138", NULL
651 };
652 #endif
653
654 static const short yyr1[] = {     0,
655    130,   131,   131,   132,   132,   134,   135,   133,   136,   136,
656    137,   138,   138,   138,   138,   138,   138,   138,   138,   138,
657    139,   138,   140,   138,   142,   141,   144,   143,   145,   145,
658    146,   146,   147,   148,   150,   149,   151,   152,   149,   153,
659    149,   154,   149,   155,   155,   157,   158,   156,   160,   159,
660    162,   161,   164,   163,   165,   166,   166,   167,   169,   168,
661    168,   170,   170,   170,   170,   172,   171,   173,   173,   174,
662    175,   176,   174,   174,   177,   174,   178,   178,   178,   178,
663    179,   179,   181,   180,   182,   180,   183,   183,   183,   183,
664    183,   183,   183,   184,   185,   183,   183,   183,   183,   183,
665    183,   183,   183,   183,   183,   183,   183,   187,   186,   189,
666    188,   190,   188,   188,   191,   188,   192,   193,   193,   193,
667    193,   194,   194,   194,   194,   195,   195,   195,   195,   195,
668    196,   197,   196,   198,   198,   198,   198,   198,   198,   198,
669    198,   198,   198,   198,   198,   198,   198,   198,   198,   198,
670    198,   198,   198,   198,   198,   198,   198,   198,   198,   198,
671    198,   198,   198,   198,   198,   198,   198,   198,   198,   198,
672    198,   198,   199,   199,   200,   200,   200,   201,   202,   202,
673    203,   202,   202,   202,   202,   204,   204,   205,   204,   204,
674    204,   206,   204,   204,   204,   207,   204,   208,   208,   210,
675    209,   211,   211,   212,   213,   213,   214,   214,   214,   216,
676    215,   217,   218,   218,   219,   220,   219,   221,   221,   222,
677    223,   222,   224,   224,   225,   225,   226,   225,   227,   228,
678    228,   229,   228,   228,   228,   228,   230,   230,   231,   231,
679    231,   231,   231,   231,   231,   231,   231,   231,   231,   232,
680    231,   233,   231,   234,   231,   235,   231,   236,   231,   237,
681    231,   231,   231,   238,   239,   240,   240,   240,   240,   240,
682    240,   240,   240,   240,   240,   240,   241,   240,   242,   240,
683    243,   240,   244,   240,   245,   240,   246,   240,   240,   240,
684    247,   240,   248,   249,   240,   250,   251,   252,   240,   253,
685    254,   255,   240,   256,   240,   257,   240,   240,   258,   240,
686    259,   240,   240,   260,   240,   261,   262,   240,   263,   264,
687    240,   265,   266,   240,   267,   268,   267,   269,   270,   269,
688    271,   272,   271,   273,   273,   273,   273,   273,   274,   274,
689    274,   275,   275,   276,   276,   276,   276,   276,   276,   277,
690    276,   278,   276,   276,   276,   276,   279,   279,   279,   279,
691    281,   280,   282,   282,   283,   283,   284,   284,   285,   285,
692    286,   286,   286,   286,   286,   286,   286,   286,   286,   286,
693    286,   286,   286,   286,   287,   286,   288,   286,   286,   290,
694    291,   289,   292,   293,   289,   294,   294,   295,   295,   296,
695    296,   296,   298,   297,   300,   299,   301,   301,   302,   302,
696    303,   304,   305,   305,   306,   306,   306,   306,   307,   307,
697    308,   308,   310,   311,   312,   309,   313,   313,   314,   315,
698    314,   317,   318,   316,   320,   321,   319,   323,   322,   324,
699    322,   325,   325,   327,   326,   329,   328,   331,   332,   330,
700    334,   335,   336,   333,   337,   338,   337,   340,   341,   339,
701    343,   344,   342,   346,   347,   345,   349,   348,   351,   350,
702    352,   352,   354,   353,   355,   353,   356,   358,   359,   357,
703    360,   357,   361,   362,   357,   363,   363,   365,   364,   367,
704    366,   368,   368,   369,   370,   369,   371,   369,   372,   372,
705    373,   373,   374,   375,   376,   377,   378,   379,   380,   381,
706    382,   383,   384,   385,   386,   387,   388,   389,   390,   391,
707    392,   393,   394,   395,   396,   398,   399,   397,   400,   400,
708    401,   401,   401,   403,   402,   402,   405,   404,   407,   406,
709    409,   410,   411,   408,   412,   412,   414,   415,   416,   413,
710    417,   417,   418,   418,   419,   419,   420,   420,   421,   421,
711    423,   424,   422,   425,   425,   426,   427,   427,   428,   430,
712    431,   429
713 };
714
715 static const short yyr2[] = {     0,
716      1,     1,     2,     1,     2,     0,     0,     8,     1,     2,
717      1,     4,     3,     1,     1,     1,     1,     1,     1,     1,
718      0,     2,     0,     2,     0,     4,     0,     4,     1,     3,
719      1,     3,     1,     4,     0,     2,     0,     0,     4,     0,
720      3,     0,     3,     0,     1,     0,     0,     9,     0,     6,
721      0,     6,     0,     6,     3,     1,     2,     4,     0,     4,
722      2,     1,     1,     2,     2,     0,     6,     1,     2,     1,
723      0,     0,     6,     3,     0,     5,     1,     2,     3,     4,
724      1,     0,     0,     3,     0,     5,     4,     3,     3,     4,
725      3,     2,     2,     0,     0,     5,     1,     1,     1,     1,
726      1,     1,     1,     1,     1,     1,     1,     0,     7,     0,
727      4,     0,     4,     2,     0,     4,     0,     1,     1,     2,
728      2,     1,     1,     1,     1,     3,     3,     4,     5,     3,
729      1,     0,     4,     1,     2,     2,     1,     2,     2,     1,
730      1,     2,     2,     2,     1,     1,     1,     2,     2,     2,
731      2,     2,     2,     3,     3,     3,     1,     1,     1,     1,
732      1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
733      1,     1,     1,     1,     1,     3,     0,     2,     1,     3,
734      0,     3,     3,     3,     4,     2,     2,     0,     4,     2,
735      2,     0,     4,     2,     2,     0,     4,     1,     1,     0,
736      4,     1,     2,     3,     1,     3,     1,     3,     2,     0,
737      5,     0,     1,     3,     1,     0,     4,     0,     1,     2,
738      0,     4,     2,     2,     1,     4,     0,     4,     2,     0,
739      3,     0,     3,     3,     3,     4,     1,     1,     1,     2,
740      4,     2,     4,     3,     3,     3,     3,     3,     3,     0,
741      4,     0,     4,     0,     4,     0,     4,     0,     4,     0,
742      6,     3,     3,     2,     2,     1,     2,     4,     2,     4,
743      3,     3,     3,     3,     3,     3,     0,     4,     0,     4,
744      0,     4,     0,     4,     0,     4,     0,     6,     3,     3,
745      0,     4,     0,     0,     9,     0,     0,     0,    12,     0,
746      0,     0,    12,     0,     5,     0,     5,     3,     0,     4,
747      0,     6,     5,     0,     5,     0,     0,    10,     0,     0,
748     10,     0,     0,     6,     1,     0,     3,     1,     0,     4,
749      0,     0,     2,     1,     1,     1,     1,     1,     1,     1,
750      1,     1,     1,     1,     1,     3,     3,     4,     4,     0,
751      4,     0,     4,     2,     2,     1,     1,     1,     3,     3,
752      0,     5,     0,     1,     1,     2,     0,     1,     1,     2,
753      1,     2,     5,     7,     5,     6,     9,     5,     4,     3,
754      2,     2,     2,     3,     0,     4,     0,     4,     1,     0,
755      0,     6,     0,     0,     8,     1,     0,     0,     1,     1,
756      3,     2,     0,     3,     0,     5,     0,     1,     1,     1,
757      1,     6,     0,     1,     1,     1,     2,     2,     0,     1,
758      3,     0,     0,     0,     0,    11,     1,     1,     1,     0,
759      6,     0,     0,     7,     0,     0,     7,     0,     7,     0,
760      4,     1,     3,     0,    12,     0,    13,     0,     0,     8,
761      0,     0,     0,     8,     1,     0,     3,     0,     0,     6,
762      0,     0,     6,     0,     0,     6,     0,     7,     0,     7,
763      1,     2,     0,     5,     0,     6,     1,     0,     0,     9,
764      0,     4,     0,     0,     5,     1,     1,     0,     5,     0,
765      7,     1,     2,     1,     0,     5,     0,     5,     0,     1,
766      1,     2,     1,     1,     1,     1,     1,     1,     1,     1,
767      1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
768      1,     1,     1,     1,     1,     0,     0,     6,     1,     3,
769      1,     2,     1,     0,     5,     4,     0,     5,     0,     5,
770      0,     0,     0,     8,     1,     2,     0,     0,     0,    16,
771      0,     1,     0,     1,     3,     0,     1,     2,     1,     1,
772      0,     0,     6,     1,     3,     2,     3,     0,     1,     0,
773      0,     5
774 };
775
776 static const short yydefact[] = {     0,
777      0,     6,     1,     0,     4,     2,    66,     0,     5,     3,
778      0,     0,     0,     7,     0,   423,     0,   526,     0,   440,
779      0,   134,     0,   145,   524,   397,   146,   140,   141,   137,
780      0,   523,   522,   525,   147,   157,   158,   159,   160,   161,
781    162,   163,   165,   166,   167,   390,   237,   168,   169,   170,
782    171,   172,     0,   164,    94,     0,    68,   107,   117,   238,
783    397,   173,   174,   363,    97,   106,    99,    98,   100,   102,
784    104,   177,     0,     0,     0,   105,   103,   101,     0,   490,
785    467,   422,   469,     0,     0,     0,     0,     0,   230,     0,
786      0,     0,     0,   396,     0,   397,    83,   152,   151,   149,
787    150,   148,   136,   144,   143,   139,   135,   153,   142,   138,
788      0,     0,     0,     0,    67,    69,     0,     0,   486,   123,
789    122,   125,   397,   124,   517,   487,   177,   119,   131,   365,
790    118,   403,   364,    93,   132,    92,   177,   179,   181,   505,
791    177,     0,   175,   218,     0,   200,   198,   199,   187,   186,
792    210,   195,   194,   191,   190,    37,     0,     0,     0,   419,
793      0,   527,     0,   451,     0,   442,     0,     0,   232,   229,
794    230,   108,   198,   195,   191,   519,    91,   397,     0,     0,
795    154,   156,   155,   391,   539,   537,    95,    89,   393,     0,
796    397,     0,   121,   120,     0,   366,     0,   177,     0,     0,
797      0,    88,     0,   509,   503,   178,   219,     0,     0,     0,
798      0,     0,     0,     0,   212,     0,     0,     0,     0,     0,
799     46,     0,    27,    25,    11,    40,    37,   177,     9,     0,
800      0,    16,    17,    14,     0,     0,     0,    15,    18,    20,
801     19,   499,   499,     0,   420,     0,   499,     0,     0,     0,
802    438,   441,     0,     0,   230,     0,     0,     0,     0,    85,
803     90,    70,    84,   398,     0,     0,   363,     0,   130,   397,
804    126,   405,   404,     0,     0,   127,   182,    87,   176,     0,
805    504,   357,   516,   514,   515,   335,   336,   334,   507,   337,
806    338,     0,     0,   358,     0,     0,     0,   314,     0,     0,
807      0,   322,     0,     0,     0,     0,     0,   266,   356,   344,
808    184,     0,     0,   409,   410,   345,   506,   183,   221,   220,
809    180,     0,     0,   202,   111,   189,     0,   116,   197,   113,
810    193,    53,    49,    44,    51,     0,     0,     0,     8,    10,
811    177,     0,    22,    33,    24,     0,    36,    38,     0,   501,
812      0,   500,     0,   421,   424,     0,   531,     0,     0,   529,
813    533,     0,     0,     0,   443,     0,   233,     0,   235,   234,
814    231,     0,     0,    75,     0,   400,     0,     0,   399,   541,
815    540,   538,    96,   394,     0,   363,   133,   128,   269,     0,
816      0,     0,   296,     0,   304,   265,   264,     0,   316,   319,
817    306,     0,   300,     0,     0,     0,   309,   291,   287,   285,
818    283,   281,   279,   277,   511,   510,   513,   512,   342,   343,
819    339,   340,   341,     0,     0,   185,     0,     0,     0,     0,
820    267,   508,   350,   352,     0,     0,   355,     0,     0,     0,
821      0,   354,     0,     0,   518,   207,     0,   205,     0,   201,
822    203,   215,     0,   213,     0,     0,    45,     0,     0,    31,
823      0,    29,     0,    41,     0,    13,     0,     0,    43,     0,
824      0,   494,   483,     0,   492,   502,     0,     0,   471,   413,
825      0,     0,   532,   528,     0,     0,   444,   452,     0,   446,
826    236,     0,    86,    74,     0,    72,   402,   392,     0,   499,
827    398,   129,   367,   174,   360,   293,     0,   359,     0,     0,
828      0,     0,     0,   323,     0,     0,   311,   328,   329,   308,
829      0,     0,     0,     0,     0,     0,     0,     0,   271,   272,
830    276,   275,   273,   274,     0,     0,     0,     0,   347,   289,
831    290,     0,   346,   227,   222,     0,   225,     0,   204,     0,
832    411,   209,     0,   211,     0,     0,     0,    47,     0,    28,
833      0,    26,     0,    12,     0,    39,   497,   495,   473,     0,
834      0,   481,     0,   491,   493,   468,   472,     0,   415,   416,
835    425,   414,   470,     0,   530,     0,     0,     0,   439,     0,
836    109,     0,    77,    82,   401,   542,     0,     0,     0,     0,
837      0,     0,     0,     0,     0,     0,     0,     0,   361,   357,
838      0,   371,     0,   368,   369,   389,   268,     0,     0,   297,
839      0,   239,     0,     0,     0,     0,     0,     0,     0,   301,
840      0,     0,     0,   310,   292,     0,   286,   284,   282,   280,
841    278,   351,   353,   349,   348,   270,     0,   223,   521,   520,
842      0,   224,   208,   206,     0,   214,     0,    56,     0,    59,
843     62,    63,     0,   413,     0,    32,    30,    34,     0,     0,
844      0,   475,   477,     0,     0,   484,     0,     0,   417,   418,
845      0,   536,   397,     0,   453,     0,    76,     0,    78,     0,
846     81,     0,   395,   381,     0,   382,     0,     0,   407,   385,
847      0,     0,   383,     0,     0,   363,     0,   372,   406,   370,
848    294,   242,     0,   260,   258,   256,   254,   252,   250,     0,
849      0,     0,     0,     0,     0,     0,   240,     0,     0,     0,
850    305,   315,   317,   320,   307,     0,     0,   313,     0,     0,
851      0,     0,     0,   217,     0,    54,    57,     0,    61,     0,
852     50,    64,    65,     0,    52,     0,     0,     0,     0,     0,
853    488,   482,   363,     0,     0,   429,     0,   535,     0,   464,
854      0,   363,   458,     0,    79,    73,     0,   543,   545,     0,
855    380,     0,   408,     0,     0,     0,   384,     0,     0,   367,
856      0,   332,   174,     0,     0,     0,     0,     0,     0,     0,
857    244,   245,   249,   248,   246,   247,   262,   263,     0,     0,
858      0,   324,     0,   312,   330,   288,   228,   226,    55,     0,
859      0,     0,   498,   496,   474,     0,   478,   363,   485,     0,
860    432,   430,   427,   428,     0,   448,     0,     0,   454,     0,
861    461,     0,    80,   547,     0,   546,   379,     0,   407,   386,
862      0,     0,     0,     0,   388,     0,     0,   241,     0,   259,
863    257,   255,   253,   251,     0,   243,     0,     0,     0,     0,
864     60,     0,   476,     0,   367,     0,     0,     0,   426,     0,
865    456,     0,   456,     0,     0,   556,   561,   570,     0,   557,
866    559,   560,     0,     0,   373,   378,   375,   362,     0,   333,
867      0,   298,   326,   326,   302,    58,    48,   479,     0,   412,
868    398,     0,   456,   465,     0,   455,   445,   459,   456,     0,
869      0,   551,     0,     0,   544,   558,   376,   407,     0,   295,
870    261,   332,   325,     0,     0,     0,   332,     0,   489,     0,
871    435,     0,   449,   363,     0,   363,   462,   447,     0,   552,
872    553,   568,     0,   564,   571,     0,   374,     0,   318,     0,
873    321,     0,   480,   433,     0,   431,   363,   466,   457,   460,
874    363,   555,   554,     0,     0,   566,     0,   562,   363,     0,
875      0,   327,     0,   363,   398,   450,   463,     0,     0,   565,
876      0,   572,   377,   299,   303,   434,     0,   548,   567,   569,
877    563,   436,     0,   363,     0,   437,     0,     0,   549,     0,
878      0,   550,     0,     0,     0
879 };
880
881 static const short yydefgoto[] = {  1013,
882      3,     4,     5,     8,    79,   227,   228,   229,   230,   231,
883    232,   337,   233,   336,   463,   461,   343,   347,   234,   235,
884    236,   468,   338,   237,   458,   238,   334,   664,   239,   456,
885    240,   459,   241,   455,   661,   659,   749,   662,   750,   663,
886      6,    11,    56,   263,   375,   594,   495,   592,   690,    95,
887    180,   373,    57,   114,   267,    58,   259,    59,   213,   218,
888    216,   117,   127,   128,   129,   130,   197,    60,   131,   142,
889    143,   144,   200,    62,   214,   219,   217,   149,   150,   212,
890    323,   579,   447,   448,   153,   215,   327,   453,   454,   553,
891    206,   207,   444,   545,   546,   647,   440,   170,   255,    63,
892    620,   799,   798,   797,   796,   795,   794,   304,   305,   611,
893    528,   527,   526,   525,   524,   523,   522,   618,   792,   507,
894    720,   932,   515,   737,   937,   509,   513,   521,   632,   398,
895    511,   810,   512,   811,   402,   629,   934,   935,   520,   633,
896    856,   857,   307,   424,   425,   308,   535,   536,   309,   612,
897    706,   132,   133,   613,   614,   615,   785,   707,    64,   111,
898    264,   268,   501,    97,   378,   379,   134,   195,   273,   386,
899    784,   310,   552,   580,   581,   582,   246,   160,    65,    82,
900    480,   678,   835,   767,   878,   832,   877,   984,   942,   965,
901   1004,    66,   364,    87,   167,    67,   587,    68,   590,   684,
902    880,   967,   165,   250,   588,   772,   914,   915,   774,   840,
903    946,   842,   884,   971,   771,   837,   944,    69,   158,    70,
904    161,   478,   471,   671,   759,   674,   472,   874,   938,   675,
905    573,   763,   135,   762,   828,    71,   157,   474,   475,   670,
906    669,   351,   352,   208,   311,   312,   916,   313,   438,   210,
907    427,   428,   429,   430,   314,   315,   316,   616,   449,   203,
908    651,   652,   137,    91,    92,    93,    76,    84,   248,   359,
909    360,   361,   482,    77,   266,    78,   265,   381,   500,   692,
910    845,   778,   779,   886,  1003,  1010,   951,   974,   922,   889,
911    890,   891,   923,   991,   953,   954,   976,  1001,   892,   924,
912    979
913 };
914
915 static const short yypact[] = {    85,
916     -3,-32768,-32768,    85,-32768,-32768,-32768,    70,-32768,-32768,
917    135,   138,  1625,-32768,    38,-32768,   169,-32768,   189,   208,
918    273,-32768,  2774,-32768,-32768,  2681,-32768,-32768,   300,   251,
919    203,-32768,-32768,-32768,   231,-32768,-32768,-32768,-32768,-32768,
920 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
921 -32768,-32768,   228,-32768,-32768,  1527,-32768,-32768,-32768,-32768,
922    248,-32768,-32768,  1728,-32768,-32768,-32768,-32768,-32768,-32768,
923 -32768,  2588,   291,   238,   258,-32768,-32768,-32768,   297,-32768,
924 -32768,   194,-32768,  2910,   299,   312,   324,   307,   182,   330,
925    298,   289,   317,-32768,   202,   248,-32768,-32768,-32768,-32768,
926 -32768,-32768,-32768,-32768,-32768,-32768,-32768,   371,   333,-32768,
927    316,   351,   361,  2722,-32768,-32768,   364,   375,-32768,-32768,
928 -32768,-32768,  2681,-32768,-32768,-32768,    96,  2774,-32768,-32768,
929    210,-32768,  1825,-32768,-32768,-32768,  2588,-32768,-32768,-32768,
930     96,   202,-32768,   131,    96,-32768,   376,-32768,-32768,-32768,
931 -32768,   244,-32768,   389,-32768,   937,   390,   392,   382,   391,
932    393,-32768,   366,-32768,   396,-32768,   202,   388,-32768,   288,
933    182,-32768,   400,   419,   421,-32768,-32768,   248,   202,   420,
934 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   202,
935    248,   202,-32768,-32768,   424,-32768,  2722,    96,   202,    96,
936    202,-32768,    96,-32768,-32768,-32768,-32768,  2219,   429,  2275,
937     28,  2774,   428,   428,-32768,   431,   431,   428,   428,   108,
938 -32768,   426,-32768,-32768,-32768,-32768,   801,  2588,-32768,   474,
939    482,-32768,-32768,-32768,   430,  2960,   256,-32768,-32768,-32768,
940 -32768,  1922,  1922,   435,-32768,   436,  1922,    20,   434,   402,
941 -32768,-32768,   437,   439,   182,  2219,   429,    28,   440,-32768,
942 -32768,   306,-32768,  2867,   443,   443,  1825,   316,-32768,   248,
943 -32768,-32768,-32768,   364,   202,-32768,   288,-32768,-32768,  2499,
944 -32768,   432,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
945 -32768,   316,   316,   433,   410,   413,   414,-32768,   415,   416,
946    423,-32768,   316,   365,   367,  1727,  2499,   218,-32768,-32768,
947 -32768,  2062,   188,-32768,-32768,-32768,-32768,-32768,-32768,  2956,
948 -32768,   134,  2815,-32768,-32768,-32768,   453,-32768,-32768,-32768,
949 -32768,-32768,-32768,   454,-32768,   469,   471,   430,-32768,-32768,
950     96,   202,-32768,-32768,-32768,   441,-32768,-32768,   430,-32768,
951     49,  1922,    77,-32768,-32768,    77,   444,   477,   202,-32768,
952    445,   481,   489,   324,-32768,   483,   288,  1727,-32768,-32768,
953 -32768,  2499,   420,   486,   456,-32768,   491,   429,   484,-32768,
954 -32768,-32768,-32768,-32768,   202,  1825,-32768,-32768,-32768,  2062,
955    493,   495,-32768,   496,-32768,-32768,-32768,   316,-32768,-32768,
956 -32768,   316,-32768,   490,   492,    99,-32768,-32768,-32768,-32768,
957 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
958 -32768,-32768,-32768,  2499,  2499,-32768,  2499,  2499,  2499,  2499,
959 -32768,-32768,-32768,-32768,  2499,  2331,-32768,  2499,  2499,   429,
960    528,   292,  2499,  2387,-32768,    -9,   202,-32768,   373,-32768,
961 -32768,   498,    50,-32768,   506,   508,-32768,   510,   511,-32768,
962    214,-32768,   234,-32768,   202,-32768,   516,   430,-32768,    53,
963     36,-32768,-32768,    47,-32768,-32768,    14,    61,-32768,  1965,
964     88,   445,-32768,-32768,    20,  2499,-32768,-32768,   202,-32768,
965 -32768,  1821,-32768,-32768,  2910,-32768,-32768,-32768,   521,  1922,
966   2867,-32768,  2162,   429,-32768,-32768,   271,-32768,    72,    72,
967    271,   271,  2499,-32768,   271,   271,-32768,-32768,-32768,-32768,
968     99,  2499,  2499,  2499,  2499,  2499,  2499,  2499,-32768,   319,
969    332,   332,   308,   255,   522,   539,  1727,   528,-32768,   385,
970    385,  2499,-32768,-32768,-32768,   252,  2956,   373,-32768,   134,
971 -32768,-32768,   546,-32768,   453,   602,    60,-32768,    60,-32768,
972    557,-32768,   559,-32768,   561,-32768,-32768,-32768,-32768,   564,
973    560,-32768,  2722,-32768,-32768,-32768,-32768,  2910,-32768,-32768,
974 -32768,  1965,-32768,  2499,-32768,  1727,  2774,   429,-32768,  2774,
975 -32768,   161,   565,   373,-32768,-32768,   429,   364,  2499,   364,
976    552,  2162,   316,   567,   316,  2443,   316,   316,-32768,    98,
977   1968,-32768,   570,  2162,-32768,-32768,-32768,   316,   271,  1433,
978    271,   218,  2062,   574,   429,  2975,  3006,  1279,    72,  1433,
979   1516,   271,   271,-32768,   385,  1633,   579,   507,   698,  1157,
980    438,-32768,-32768,-32768,-32768,-32768,  2387,-32768,-32768,-32768,
981   2387,-32768,-32768,-32768,   271,-32768,   578,-32768,    52,   580,
982 -32768,-32768,    39,  1965,    43,-32768,-32768,-32768,   562,   568,
983    571,-32768,-32768,   553,   584,-32768,   592,    51,-32768,-32768,
984   1727,-32768,   248,   611,-32768,   612,-32768,  2910,-32768,   588,
985 -32768,   675,-32768,-32768,  1633,-32768,  2162,   630,  2499,-32768,
986   2499,  2584,-32768,  2499,  2499,  1825,   552,-32768,-32768,-32768,
987 -32768,-32768,  2062,-32768,-32768,-32768,-32768,-32768,-32768,   608,
988    271,   271,   271,   271,   271,   271,-32768,   271,   271,   429,
989 -32768,-32768,-32768,-32768,-32768,   429,   610,-32768,  1516,  1378,
990   2499,   116,   183,  1433,   622,-32768,-32768,   589,-32768,  2774,
991 -32768,-32768,-32768,   626,-32768,   584,   584,   316,   613,   625,
992 -32768,-32768,  1825,   595,   631,-32768,   370,-32768,   633,-32768,
993    636,  1825,-32768,   635,   637,-32768,   638,   675,-32768,  2162,
994 -32768,   316,  2956,   364,   364,   528,-32768,   528,   528,  2162,
995   2162,   641,   429,   271,   271,   271,   271,   271,   271,    72,
996 -32768,   319,   332,   332,   308,   255,  1433,  1433,   271,   639,
997    643,-32768,    72,-32768,-32768,  1835,-32768,-32768,-32768,   646,
998    580,   645,-32768,-32768,-32768,   316,-32768,  1825,-32768,   650,
999 -32768,-32768,-32768,-32768,   651,-32768,   615,   653,-32768,   616,
1000 -32768,   656,-32768,-32768,    44,-32768,-32768,  2499,  2499,-32768,
1001   2162,  2162,  2162,   657,-32768,   429,  2499,-32768,  3022,   933,
1002   1037,  1066,  1171,   438,   316,-32768,   618,   623,   316,   659,
1003 -32768,   667,-32768,   429,  2162,   671,   316,   720,-32768,   640,
1004    429,   676,   429,   647,   678,   648,-32768,-32768,    45,-32768,
1005 -32768,-32768,   528,   364,   716,-32768,-32768,-32768,   429,  2956,
1006    271,-32768,   690,   690,-32768,-32768,-32768,-32768,   688,-32768,
1007   2867,   689,   429,-32768,  2867,-32768,-32768,-32768,   429,   691,
1008    692,   642,   693,  2722,-32768,-32768,-32768,  2499,  2162,-32768,
1009   1982,   641,-32768,   429,  2499,   429,   641,   584,-32768,   429,
1010 -32768,   696,-32768,  1825,   185,  1825,-32768,-32768,   699,-32768,
1011    644,   662,   226,-32768,-32768,   429,-32768,   429,-32768,  1614,
1012 -32768,   429,-32768,-32768,   316,-32768,  1825,-32768,-32768,-32768,
1013   1825,-32768,-32768,   683,   702,-32768,   693,-32768,  1825,  2162,
1014    429,-32768,   429,  1825,  2867,-32768,-32768,   666,   707,-32768,
1015    584,-32768,-32768,-32768,-32768,-32768,   429,-32768,-32768,-32768,
1016 -32768,-32768,   767,  1825,   560,-32768,   679,   708,-32768,   712,
1017    710,-32768,   781,   796,-32768
1018 };
1019
1020 static const short yypgoto[] = {-32768,
1021 -32768,-32768,   793,-32768,-32768,-32768,-32768,   572,-32768,-32768,
1022 -32768,-32768,-32768,-32768,-32768,-32768,-32768,  -301,-32768,-32768,
1023 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
1024 -32768,-32768,-32768,-32768,  -476,-32768,   -20,  -279,-32768,   246,
1025    803,-32768,-32768,   446,-32768,-32768,-32768,-32768,-32768,   -62,
1026 -32768,-32768,   752,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
1027 -32768,-32768,-32768,   680,  -218,   685,-32768,   573,   -13,   -91,
1028    617,  -129,-32768,   585,-32768,-32768,-32768,-32768,     4,-32768,
1029 -32768,  -201,-32768,   274,   236,-32768,-32768,-32768,   268,-32768,
1030 -32768,-32768,-32768,-32768,  -453,-32768,   -19,  -132,-32768,   -83,
1031    422,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   488,
1032 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
1033 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
1034 -32768,-32768,-32768,-32768,-32768,-32768,   -79,-32768,  -488,-32768,
1035   -718,-32768,   267,  -221,   377,   240,-32768,-32768,  -483,-32768,
1036 -32768,  -372,-32768,  -750,-32768,  -538,-32768,-32768,  -112,-32768,
1037 -32768,-32768,-32768,   -52,  -495,   -89,  -259,-32768,-32768,-32768,
1038   -763,  -428,   279,   247,   166,-32768,-32768,-32768,-32768,-32768,
1039 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
1040 -32768,   600,-32768,-32768,   472,-32768,-32768,-32768,-32768,   243,
1041 -32768,-32768,-32768,-32768,-32768,-32768,  -811,-32768,-32768,-32768,
1042 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
1043 -32768,   485,-32768,-32768,-32768,  -168,  -318,-32768,-32768,-32768,
1044 -32768,-32768,  -333,  -726,-32768,-32768,-32768,-32768,   368,-32768,
1045 -32768,  -215,-32768,  -158,  -249,   -67,   -53,  -293,   216,  -289,
1046    545,   576,   649,   687,-32768,-32768,-32768,    78,  -429,   -92,
1047 -32768,-32768,    34,    76,   165,   173,   609,-32768,-32768,-32768,
1048    358,-32768,-32768,-32768,-32768,-32768,-32768,   582,-32768,-32768,
1049 -32768,-32768,    66,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
1050    -44,-32768,-32768,-32768,-32768,  -126,-32768,-32768,-32768,-32768,
1051 -32768
1052 };
1053
1054
1055 #define YYLAST          3118
1056
1057
1058 static const short yytable[] = {    61,
1059    162,   187,   178,    90,   145,   597,   369,   383,   118,    89,
1060    324,   256,    96,   503,   437,   211,   548,   473,   439,   473,
1061    551,   171,   473,   350,   350,   624,   625,   353,   350,   823,
1062    824,   356,   634,   179,   479,   192,   464,   479,   258,   854,
1063    571,    80,    61,   184,   657,   199,    72,   469,   657,   201,
1064    119,   119,   470,   119,   470,   119,   426,   657,   141,   145,
1065    190,   567,   568,   698,     7,   657,   477,   119,   765,   145,
1066    277,   918,   445,   145,   253,   710,   209,   145,   155,   658,
1067     12,   569,   477,   119,   274,   894,   178,   357,    73,    72,
1068    317,   140,   205,   477,   119,     1,   155,   178,   572,   256,
1069     61,   943,   257,   171,   751,    81,   275,   947,   755,   191,
1070    925,   332,   574,   358,   193,   554,   766,   746,   491,   551,
1071    569,   451,   367,   198,   909,   260,   576,   176,   140,   205,
1072    145,    73,   145,   476,   570,   145,   342,     2,   270,   282,
1073    473,   136,   738,   209,   473,   736,   660,   473,   437,   435,
1074    660,   126,   126,   583,   126,   318,   126,   321,   781,   577,
1075    145,   518,   577,   138,   956,   691,   566,   660,   126,   887,
1076    887,   697,   177,   570,   391,   333,   519,    74,   294,  -387,
1077    377,   817,   747,    61,   126,    75,   752,   171,   752,   139,
1078    257,   650,   446,   742,   188,   126,   140,   743,   322,    13,
1079    384,   138,   486,   370,   371,    14,   741,   385,   256,   209,
1080    204,   963,   390,   958,   341,   445,   325,   326,   962,   202,
1081     74,   330,   331,   687,   392,   393,   120,   139,    75,   103,
1082    112,   140,   205,   121,   140,   403,    83,   122,   176,   113,
1083    436,   847,   104,   105,   252,   443,   106,   317,   818,   465,
1084    814,   124,   855,    85,   145,   282,   261,   107,   650,   283,
1085    284,   285,   176,   655,  1000,   780,   485,   269,   125,   271,
1086    108,   109,    86,   145,   110,   169,   276,   791,   278,   176,
1087    560,   350,   140,   435,   596,   289,   499,   644,   140,    25,
1088    102,   561,   178,   619,   294,   159,   432,   204,    89,   257,
1089    562,    32,   151,   977,    34,   152,   504,   978,  -115,   322,
1090   -114,   563,   895,   896,   897,   289,   865,   648,   140,   205,
1091    433,   434,   146,   584,   498,   154,   649,   650,   437,   869,
1092    510,    98,   729,   790,   514,    99,   682,    88,   282,   100,
1093    101,    94,   283,   284,   285,   418,   419,   420,   421,   422,
1094    423,   387,   388,   151,   550,   146,   174,   286,   147,   148,
1095    555,   156,   146,   287,   288,   173,   148,   163,   289,   290,
1096    291,   140,   182,   183,   436,   168,    89,   294,   209,   164,
1097    679,   146,   539,   753,   175,   753,   542,   543,   140,   205,
1098    957,   166,   140,   205,   433,   434,   253,   172,   721,   419,
1099    420,   421,   422,   423,   721,   721,   374,   -71,   721,   721,
1100    181,   593,   421,   422,   423,   940,   140,   377,   185,   466,
1101    446,   417,   418,   419,   420,   421,   422,   423,   186,   901,
1102    125,   768,   404,   405,   406,   407,   484,   833,   834,   623,
1103   -110,   993,   189,   623,   623,   284,   285,   623,   623,   244,
1104    617,   328,   329,  -112,   242,   875,   243,   247,   245,   249,
1105    676,   251,   502,   435,  -188,   409,   322,   410,   411,   412,
1106    413,   414,   415,   416,   417,   418,   419,   420,   421,   422,
1107    423,   254,   145,  -196,   645,  -192,    18,   262,   272,   997,
1108    721,   317,   146,   335,   677,   151,    20,   346,   354,   688,
1109    355,   362,   363,   829,   365,   721,   366,   380,   391,   394,
1110    395,   888,   839,   396,   397,   399,   400,   721,   721,   372,
1111    452,   457,   721,   401,   549,   415,   416,   417,   418,   419,
1112    420,   421,   422,   423,   685,   699,   460,   701,   462,   704,
1113    705,   467,   564,   693,   483,  -534,   205,   487,   494,   490,
1114    711,   713,   442,   623,   436,   888,   488,   496,   497,    61,
1115    505,   176,   506,   508,   623,   623,   589,   516,   322,   517,
1116    556,   732,   557,   683,   558,   559,   683,  -216,   565,   721,
1117    721,   721,   721,   721,   721,   721,   721,   623,   595,   642,
1118    317,   412,   413,   414,   415,   416,   417,   418,   419,   420,
1119    421,   422,   423,   730,   775,   408,   643,   657,   409,    89,
1120    410,   411,   412,   413,   414,   415,   416,   417,   418,   419,
1121    420,   421,   422,   423,   666,   204,   667,   668,   673,   793,
1122    769,   672,   689,   445,   700,   709,   731,   721,   721,   721,
1123    721,   721,   721,   756,   721,   745,   760,   748,   761,   757,
1124    322,   776,   758,   623,   623,   623,   623,   623,   623,   764,
1125    623,   623,   411,   412,   413,   414,   415,   416,   417,   418,
1126    419,   420,   421,   422,   423,   694,   809,   696,   770,   773,
1127    777,   782,   812,   703,   968,   800,   970,   813,   819,   820,
1128    825,   822,   827,   730,   826,   306,   830,   320,   831,    89,
1129    836,   838,   841,  -331,   843,   844,   867,   986,   870,   721,
1130    868,   987,   872,   876,   848,   881,   883,   879,   903,   992,
1131    882,   885,   898,   904,   996,   906,   623,   623,   623,   623,
1132    623,   623,   851,   907,   852,   853,   821,   910,   912,   858,
1133    913,   623,   917,   368,  1006,   920,   622,   919,   929,   921,
1134    622,   622,   933,   939,   622,   622,   941,   948,   873,   949,
1135    952,   966,   972,   975,   988,   950,   998,   389,   973,   989,
1136    999,  1005,  1008,   621,  1011,  1009,  1012,   621,   621,   787,
1137   1014,   621,   621,   413,   414,   415,   416,   417,   418,   419,
1138    420,   421,   422,   423,   431,  1015,     9,   902,   340,   441,
1139    871,   905,   899,   220,   665,   221,    10,   116,   348,   911,
1140    194,   955,   222,   -21,   223,   -23,   224,   196,   493,   279,
1141    908,   349,   656,   654,   936,   945,   653,   377,   680,   754,
1142    345,   377,   686,   623,   -42,   489,  1007,   728,   344,   927,
1143    481,   575,   585,   846,   926,   930,   -42,   382,   225,   -42,
1144    990,     0,   499,     0,     0,     0,     0,     0,   622,   492,
1145    622,   849,   850,     0,     0,     0,   339,     0,   -35,   226,
1146      0,   622,   622,     0,     0,     0,     0,   441,     0,     0,
1147    959,     0,   961,     0,     0,   621,   964,   621,     0,     0,
1148      0,   969,     0,     0,   622,     0,     0,   985,   621,   621,
1149      0,   377,   980,     0,   981,     0,     0,     0,   983,     0,
1150     61,   529,   530,     0,   531,   532,   533,   534,     0,     0,
1151      0,   621,   537,   538,     0,   540,   541,   994,     0,   995,
1152    441,   547,   626,   627,     0,     0,   630,   631,     0,   220,
1153      0,   221,     0,  1002,     0,     0,     0,     0,   222,   -21,
1154    223,   -23,   224,     0,     0,     0,     0,     0,     0,     0,
1155    622,   622,   622,   622,   622,   622,     0,   622,   622,     0,
1156    -42,   928,     0,   586,     0,     0,     0,     0,     0,     0,
1157      0,     0,   -42,     0,   225,   -42,     0,   621,   621,   621,
1158    621,   621,   621,     0,   621,   621,   722,     0,     0,     0,
1159    628,     0,   722,   722,   -35,   226,   722,   722,     0,   635,
1160    636,   637,   638,   639,   640,   641,   716,   717,   718,   719,
1161    415,   416,   417,   418,   419,   420,   421,   422,   423,   646,
1162      0,     0,     0,   622,   622,   622,   622,   622,   622,     0,
1163    712,     0,   727,     0,     0,     0,     0,     0,   622,     0,
1164      0,     0,     0,   739,   740,     0,     0,     0,     0,     0,
1165    621,   621,   621,   621,   621,   621,     0,     0,     0,     0,
1166      0,   681,     0,     0,     0,   621,   744,     0,     0,     0,
1167      0,     0,     0,     0,     0,     0,   695,     0,   722,     0,
1168      0,     0,     0,   702,     0,     0,     0,     0,     0,     0,
1169      0,     0,     0,   722,     0,     0,     0,     0,     0,     0,
1170    441,     0,     0,     0,     0,   722,   722,     0,     0,     0,
1171    722,   717,   718,   719,   415,   416,   417,   418,   419,   420,
1172    421,   422,   423,     0,   547,     0,     0,     0,   547,     0,
1173    622,     0,   801,   802,   803,   804,   805,   806,     0,   807,
1174    808,   718,   719,   415,   416,   417,   418,   419,   420,   421,
1175    422,   423,     0,     0,   723,     0,     0,   621,     0,     0,
1176    723,   723,     0,     0,   723,   723,     0,   722,   722,   722,
1177    722,   722,   722,   722,   722,     0,   783,     0,   786,     0,
1178      0,   788,   789,     0,     0,   724,     0,     0,     0,     0,
1179    441,   724,   724,     0,     0,   724,   724,     0,     0,     0,
1180      0,     0,     0,     0,     0,   859,   860,   861,   862,   863,
1181    864,     0,     0,     0,     0,     0,     0,     0,   816,     0,
1182    866,     0,     0,     0,     0,   722,   722,   722,   722,   722,
1183    722,     0,   722,   414,   415,   416,   417,   418,   419,   420,
1184    421,   422,   423,     0,     0,     0,   723,   719,   415,   416,
1185    417,   418,   419,   420,   421,   422,   423,     0,   725,     0,
1186      0,   723,     0,     0,   725,   725,     0,     0,   725,   725,
1187      0,     0,     0,   723,   723,     0,     0,   724,   723,     0,
1188      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1189      0,     0,   724,     0,     0,     0,   726,   722,     0,     0,
1190      0,     0,   726,   726,   724,   724,   726,   726,     0,   724,
1191      0,     0,   931,     0,     0,     0,     0,     0,     0,     0,
1192      0,     0,     0,     0,     0,   893,   783,     0,     0,     0,
1193      0,   735,     0,     0,   900,   723,   723,   723,   723,   723,
1194    723,   723,   723,     0,     0,     0,   408,     0,     0,   409,
1195    725,   410,   411,   412,   413,   414,   415,   416,   417,   418,
1196    419,   420,   421,   422,   423,   725,   724,   724,   724,   724,
1197    724,   724,   724,   724,     0,     0,     0,   725,   725,     0,
1198      0,     0,   725,     0,     0,     0,     0,     0,   726,     0,
1199      0,     0,     0,   723,   723,   723,   723,   723,   723,     0,
1200    723,     0,     0,   726,     0,   783,     0,     0,     0,     0,
1201      0,     0,   960,     0,     0,   726,   726,     0,     0,     0,
1202    726,     0,     0,     0,   724,   724,   724,   724,   724,   724,
1203    815,   724,     0,     0,     0,     0,     0,     0,     0,   725,
1204    725,   725,   725,   725,   725,   725,   725,     0,   714,     0,
1205    715,   716,   717,   718,   719,   415,   416,   417,   418,   419,
1206    420,   421,   422,   423,     0,   723,     0,     0,     0,     0,
1207      0,     0,     0,     0,     0,     0,     0,   726,   726,   726,
1208    726,   726,   726,   726,   726,     0,     0,     0,     0,     0,
1209      0,     0,     0,     0,     0,     0,   724,   725,   725,   725,
1210    725,   725,   725,   714,   725,   715,   716,   717,   718,   719,
1211    415,   416,   417,   418,   419,   420,   421,   422,   423,    15,
1212      0,    16,     0,     0,     0,     0,     0,     0,    17,    18,
1213     19,    20,    21,     0,     0,   726,   726,   726,   726,   726,
1214    726,     0,   726,    22,    23,     0,     0,     0,    24,     0,
1215     25,    26,    27,     0,     0,     0,    28,    29,     0,     0,
1216     30,    31,    32,     0,    33,    34,    35,    36,   518,   725,
1217     37,    38,    39,    40,    41,    42,    43,    44,    45,     0,
1218      0,     0,   115,   519,    46,    47,   714,     0,   715,   716,
1219    717,   718,   719,   415,   416,   417,   418,   419,   420,   421,
1220    422,   423,     0,     0,     0,     0,     0,   726,     0,     0,
1221      0,     0,     0,     0,     0,     0,     0,    15,     0,    16,
1222      0,     0,     0,     0,     0,     0,    17,    18,    19,    20,
1223     21,    48,    49,    50,    51,    52,     0,     0,     0,    53,
1224      0,    22,    23,     0,    54,    55,    24,     0,    25,    26,
1225     27,     0,     0,     0,    28,    29,     0,     0,    30,    31,
1226     32,     0,    33,    34,    35,    36,   982,     0,    37,    38,
1227     39,    40,    41,    42,    43,    44,    45,     0,     0,     0,
1228      0,   408,    46,    47,   409,     0,   410,   411,   412,   413,
1229    414,   415,   416,   417,   418,   419,   420,   421,   422,   423,
1230    408,     0,     0,   409,   445,   410,   411,   412,   413,   414,
1231    415,   416,   417,   418,   419,   420,   421,   422,   423,     0,
1232      0,     0,     0,     0,   119,     0,     0,     0,     0,    48,
1233     49,    50,    51,    52,   120,     0,     0,    53,     0,     0,
1234      0,   121,    54,    55,    22,   122,     0,     0,     0,    24,
1235      0,    25,   123,    27,     0,     0,     0,    28,    29,   124,
1236      0,    30,    31,    32,     0,    33,    34,    35,    36,     0,
1237      0,    37,    38,    39,    40,    41,    42,    43,    44,    45,
1238    281,     0,     0,     0,   125,     0,    47,     0,     0,     0,
1239      0,     0,     0,     0,   408,     0,     0,   409,     0,   410,
1240    411,   412,   413,   414,   415,   416,   417,   418,   419,   420,
1241    421,   422,   423,     0,     0,     0,     0,     0,     0,     0,
1242      0,   119,     0,     0,     0,   126,     0,     0,     0,     0,
1243      0,   120,    48,    49,    50,    51,    52,     0,   121,     0,
1244      0,    22,   122,     0,     0,    54,    24,     0,    25,   123,
1245     27,     0,     0,     0,    28,    29,   124,     0,    30,    31,
1246     32,     0,    33,    34,    35,    36,     0,     0,    37,    38,
1247     39,    40,    41,    42,    43,    44,    45,   591,     0,     0,
1248      0,     0,     0,    47,     0,     0,     0,     0,   408,     0,
1249      0,   409,     0,   410,   411,   412,   413,   414,   415,   416,
1250    417,   418,   419,   420,   421,   422,   423,   410,   411,   412,
1251    413,   414,   415,   416,   417,   418,   419,   420,   421,   422,
1252    423,     0,   126,     0,     0,     0,     0,     0,   120,    48,
1253     49,    50,    51,    52,     0,   121,     0,     0,    22,   122,
1254      0,     0,    54,    24,     0,    25,   123,    27,     0,     0,
1255      0,    28,    29,   124,     0,    30,    31,    32,     0,    33,
1256     34,    35,    36,     0,     0,    37,    38,    39,    40,    41,
1257     42,    43,    44,    45,   578,     0,     0,     0,     0,     0,
1258     47,    22,     0,     0,     0,     0,    24,     0,    25,     0,
1259     27,     0,     0,     0,    28,    29,     0,     0,    30,    31,
1260     32,     0,     0,    34,    35,    36,     0,     0,    37,    38,
1261     39,    40,    41,    42,    43,    44,    45,     0,     0,     0,
1262      0,     0,     0,    47,   708,     0,    48,    49,    50,    51,
1263     52,     0,     0,     0,     0,   408,     0,     0,   409,    54,
1264    410,   411,   412,   413,   414,   415,   416,   417,   418,   419,
1265    420,   421,   422,   423,   715,   716,   717,   718,   719,   415,
1266    416,   417,   418,   419,   420,   421,   422,   423,     0,    48,
1267     49,    50,    51,    52,   280,     0,     0,     0,    22,     0,
1268      0,     0,    54,    24,     0,    25,     0,    27,     0,     0,
1269      0,    28,    29,     0,     0,    30,    31,    32,     0,     0,
1270     34,    35,    36,     0,     0,    37,    38,    39,    40,    41,
1271     42,    43,    44,    45,     0,     0,     0,     0,     0,   282,
1272     47,     0,     0,   283,   284,   285,     0,     0,     0,     0,
1273      0,     0,     0,     0,     0,     0,     0,     0,   286,     0,
1274      0,     0,     0,     0,   287,   288,     0,     0,     0,   289,
1275    290,   291,   140,     0,     0,     0,   292,   293,   294,     0,
1276    295,   296,   297,   298,   299,   300,    48,    49,    50,    51,
1277     52,   301,     0,   302,   280,     0,   598,   599,   303,    54,
1278    600,   601,   602,     0,     0,     0,     0,     0,   603,   604,
1279    605,     0,     0,     0,   606,     0,     0,     0,   607,     0,
1280      0,     0,     0,   608,     0,     0,     0,     0,     0,     0,
1281      0,     0,     0,     0,     0,     0,   609,     0,   125,   610,
1282      0,     0,     0,   283,   284,   285,     0,     0,     0,     0,
1283      0,   280,     0,     0,     0,     0,     0,     0,   286,     0,
1284      0,     0,     0,     0,   287,   288,     0,     0,     0,   289,
1285    290,   291,   140,     0,     0,     0,   292,   293,   294,     0,
1286    295,   296,   297,   298,   299,   300,     0,     0,     0,     0,
1287      0,   301,   281,   302,     0,     0,   282,     0,   303,     0,
1288    283,   284,   285,     0,     0,     0,     0,   280,     0,     0,
1289      0,     0,     0,     0,     0,   286,     0,     0,     0,     0,
1290      0,   287,   288,     0,     0,     0,   289,   290,   291,   140,
1291      0,     0,     0,   292,   293,   294,     0,   295,   296,   297,
1292    298,   299,   300,     0,     0,     0,     0,     0,   301,   319,
1293    302,     0,   282,     0,     0,   303,   283,   284,   285,     0,
1294      0,     0,     0,   280,     0,     0,     0,     0,     0,     0,
1295      0,   286,     0,     0,     0,     0,     0,   287,   288,     0,
1296      0,     0,   289,   290,   291,   140,     0,     0,     0,   292,
1297    293,   294,     0,   295,   296,   297,   298,   299,   300,     0,
1298      0,     0,     0,   317,   301,     0,   302,     0,   282,     0,
1299      0,   303,   283,   284,   285,     0,     0,     0,     0,   280,
1300      0,     0,     0,     0,     0,     0,     0,   286,     0,     0,
1301      0,     0,     0,   287,   288,     0,     0,     0,   289,   290,
1302    291,   140,     0,     0,     0,   292,   293,   294,     0,   295,
1303    296,   297,   298,   299,   300,     0,     0,     0,     0,     0,
1304    301,   544,   302,     0,   282,     0,     0,   303,   283,   284,
1305    285,     0,     0,     0,     0,   280,     0,     0,     0,     0,
1306      0,     0,     0,   286,     0,     0,     0,     0,     0,   287,
1307    288,     0,     0,     0,   289,   290,   291,   140,     0,     0,
1308      0,   292,   293,   294,     0,   295,   296,   297,   298,   299,
1309    300,     0,     0,     0,     0,     0,   301,     0,   302,   125,
1310    282,     0,     0,   303,   283,   284,   285,     0,     0,     0,
1311      0,   280,     0,     0,     0,     0,     0,     0,     0,   286,
1312      0,     0,     0,     0,     0,   287,   288,     0,     0,     0,
1313    289,   290,   291,   140,     0,     0,     0,   292,   293,   294,
1314      0,   295,   296,   297,   298,   299,   300,     0,     0,     0,
1315      0,     0,   301,     0,   302,     0,   282,     0,     0,   303,
1316    283,   284,   285,     0,     0,     0,     0,     0,     0,     0,
1317      0,     0,     0,     0,     0,   286,     0,     0,     0,     0,
1318      0,   287,   288,     0,     0,     0,   289,   290,   291,   140,
1319      0,     0,     0,   292,   293,   294,     0,   295,   296,   297,
1320    298,   299,   300,     0,    22,     0,     0,     0,   301,    24,
1321    302,    25,     0,    27,     0,   303,     0,    28,    29,     0,
1322      0,    30,    31,    32,     0,     0,    34,    35,    36,     0,
1323      0,    37,    38,    39,    40,    41,    42,    43,    44,    45,
1324    125,     0,     0,     0,     0,   138,    47,     0,     0,     0,
1325      0,   408,     0,     0,   409,     0,   410,   411,   412,   413,
1326    414,   415,   416,   417,   418,   419,   420,   421,   422,   423,
1327      0,   139,     0,     0,     0,     0,     0,     0,   140,     0,
1328      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1329      0,     0,    48,    49,    50,    51,    52,    22,     0,     0,
1330      0,     0,    24,     0,    25,    54,    27,     0,     0,     0,
1331     28,    29,     0,     0,    30,    31,    32,     0,     0,    34,
1332     35,    36,     0,     0,    37,    38,    39,    40,    41,    42,
1333     43,    44,    45,     0,     0,     0,     0,     0,    22,    47,
1334      0,     0,     0,    24,     0,    25,     0,    27,     0,     0,
1335      0,    28,    29,     0,     0,    30,    31,    32,     0,     0,
1336     34,    35,    36,     0,    94,    37,    38,    39,    40,    41,
1337     42,    43,    44,    45,     0,     0,     0,     0,     0,    46,
1338     47,     0,     0,     0,     0,    48,    49,    50,    51,    52,
1339     22,     0,     0,     0,     0,    24,     0,    25,    54,    27,
1340      0,     0,     0,    28,    29,     0,     0,    30,    31,    32,
1341      0,     0,    34,    35,    36,     0,     0,    37,    38,    39,
1342     40,    41,    42,    43,    44,    45,    48,    49,    50,    51,
1343     52,    22,    47,     0,     0,     0,    24,     0,    25,    54,
1344     27,     0,     0,     0,    28,    29,     0,     0,    30,    31,
1345     32,     0,     0,    34,    35,    36,     0,     0,    37,    38,
1346     39,    40,    41,    42,    43,    44,    45,     0,     0,     0,
1347    450,     0,     0,    47,     0,     0,     0,     0,    48,    49,
1348     50,    51,    52,    22,     0,     0,     0,     0,    24,     0,
1349      0,    54,    27,     0,     0,     0,    28,    29,     0,     0,
1350     30,    31,     0,     0,     0,     0,    35,    36,     0,     0,
1351     37,    38,    39,    40,    41,    42,    43,    44,    45,    48,
1352     49,    50,    51,    52,   376,    47,    22,     0,     0,     0,
1353      0,    24,    54,     0,     0,    27,     0,     0,     0,    28,
1354     29,     0,     0,    30,    31,     0,     0,     0,     0,    35,
1355     36,     0,     0,    37,    38,    39,    40,    41,    42,    43,
1356     44,    45,     0,     0,     0,     0,     0,     0,    47,     0,
1357      0,    48,    49,    50,    51,    52,    22,     0,     0,     0,
1358      0,    24,     0,     0,    54,    27,     0,     0,     0,    28,
1359     29,     0,     0,    30,    31,     0,     0,     0,     0,    35,
1360     36,     0,     0,    37,    38,    39,    40,    41,    42,    43,
1361     44,    45,     0,     0,    48,    49,    50,    51,    52,     0,
1362      0,     0,     0,   408,     0,     0,   409,    54,   410,   411,
1363    412,   413,   414,   415,   416,   417,   418,   419,   420,   421,
1364    422,   423,   733,     0,     0,   714,     0,   715,   716,   717,
1365    718,   719,   415,   416,   417,   418,   419,   420,   421,   422,
1366    423,     0,     0,     0,    48,    49,    50,    51,    52,     0,
1367      0,     0,     0,   734,     0,     0,   714,    54,   715,   716,
1368    717,   718,   719,   415,   416,   417,   418,   419,   420,   421,
1369    422,   423,   714,   445,   715,   716,   717,   718,   719,   415,
1370    416,   417,   418,   419,   420,   421,   422,   423
1371 };
1372
1373 static const short yycheck[] = {    13,
1374     84,   114,    95,    23,    72,   501,   256,   267,    61,    23,
1375    212,   170,    26,   386,   308,   145,   446,   351,   308,   353,
1376    449,    89,   356,   242,   243,   509,   510,   243,   247,   756,
1377    757,   247,   521,    96,   353,   127,   338,   356,   171,   790,
1378      5,     4,    56,   111,     6,   137,    13,   349,     6,   141,
1379      7,     7,     6,     7,     6,     7,   306,     6,    72,   127,
1380    123,     9,    10,   602,    68,     6,     6,     7,    18,   137,
1381    200,   883,    82,   141,   167,   614,   144,   145,    75,   556,
1382     11,    68,     6,     7,   197,   849,   179,    68,    13,    56,
1383     63,   101,   102,     6,     7,    11,    93,   190,    63,   258,
1384    114,   913,   170,   171,    66,    68,   198,   919,    66,   123,
1385     66,     4,    66,    94,   128,    66,    66,    66,   368,   548,
1386     68,   323,   255,   137,   875,   178,    66,    78,   101,   102,
1387    198,    56,   200,   352,   121,   203,   228,    53,   191,    68,
1388    474,    64,   631,   211,   478,   629,   108,   481,   442,   308,
1389    108,   108,   108,    66,   108,   209,   108,   211,   697,   478,
1390    228,    63,   481,    68,   928,   594,   468,   108,   108,   126,
1391    126,   601,    95,   121,    77,    68,    78,    13,   107,    82,
1392    264,    66,   659,   197,   108,    13,   663,   255,   665,    94,
1393    258,    76,   322,   647,   117,   108,   101,   651,   212,    65,
1394    268,    68,   361,   257,   258,    68,   636,   270,   367,   277,
1395     80,   938,   280,   932,   228,    82,   213,   214,   937,   142,
1396     56,   218,   219,    63,   292,   293,    17,    94,    56,    27,
1397      3,   101,   102,    24,   101,   303,    68,    28,    78,    12,
1398    308,   780,    40,    41,   167,   313,    44,    63,    66,   341,
1399    739,    42,   791,    65,   322,    68,   179,    27,    76,    72,
1400     73,    74,    78,   553,   991,   695,   359,   190,    67,   192,
1401     40,    41,    65,   341,    44,    94,   199,   707,   201,    78,
1402     67,   500,   101,   442,   500,    98,   379,   537,   101,    34,
1403     40,    78,   385,    23,   107,   102,    79,    80,   312,   367,
1404     67,    46,    65,    78,    49,    68,   390,    82,    65,   323,
1405     67,    78,   851,   852,   853,    98,   800,    66,   101,   102,
1406    103,   104,    65,   482,   378,    68,    75,    76,   622,   813,
1407    398,    32,   622,   706,   402,    36,   586,    65,    68,    40,
1408     41,    94,    72,    73,    74,    91,    92,    93,    94,    95,
1409     96,   274,   275,    65,   447,    65,    68,    87,    68,    69,
1410    453,    65,    65,    93,    94,    68,    69,    69,    98,    99,
1411    100,   101,    40,    41,   442,    69,   390,   107,   446,    68,
1412    582,    65,   436,   663,    68,   665,   440,   441,   101,   102,
1413    929,    68,   101,   102,   103,   104,   489,    68,   620,    92,
1414     93,    94,    95,    96,   626,   627,   101,   102,   630,   631,
1415     40,   495,    94,    95,    96,   911,   101,   501,    68,   342,
1416    550,    90,    91,    92,    93,    94,    95,    96,    68,   859,
1417     67,   681,    68,    69,    68,    69,   359,    68,    69,   507,
1418     65,   980,    68,   511,   512,    73,    74,   515,   516,    68,
1419    504,   216,   217,    65,    65,   828,    65,    65,    68,    94,
1420    573,    66,   385,   622,    65,    81,   480,    83,    84,    85,
1421     86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
1422     96,    94,   550,    65,   538,    65,    13,    68,    65,   985,
1423    712,    63,    65,    68,   578,    65,    15,    68,    64,   592,
1424     65,    68,   101,   763,    68,   727,    68,    65,    77,    77,
1425    101,   845,   772,   101,   101,   101,   101,   739,   740,    80,
1426     68,    68,   744,   101,   447,    88,    89,    90,    91,    92,
1427     93,    94,    95,    96,   588,   603,    68,   605,    68,   607,
1428    608,   101,   465,   597,    68,   102,   102,    67,    63,    67,
1429    618,   619,   313,   621,   622,   889,    68,   102,    68,   573,
1430     68,    78,    68,    68,   632,   633,   489,    78,   582,    78,
1431     65,   625,    65,   587,    65,    65,   590,    80,    63,   801,
1432    802,   803,   804,   805,   806,   807,   808,   655,    68,    68,
1433     63,    85,    86,    87,    88,    89,    90,    91,    92,    93,
1434     94,    95,    96,   623,   688,    78,    68,     6,    81,   623,
1435     83,    84,    85,    86,    87,    88,    89,    90,    91,    92,
1436     93,    94,    95,    96,    68,    80,    68,    67,    69,   713,
1437    683,    68,    68,    82,    68,    66,    63,   859,   860,   861,
1438    862,   863,   864,    82,   866,    68,    94,    68,    65,    82,
1439    664,    64,    82,   721,   722,   723,   724,   725,   726,    68,
1440    728,   729,    84,    85,    86,    87,    88,    89,    90,    91,
1441     92,    93,    94,    95,    96,   598,   730,   600,    68,    68,
1442      6,    52,   736,   606,   944,    78,   946,    78,    67,   101,
1443    758,    66,    68,   713,    82,   208,   102,   210,    68,   713,
1444     68,    66,    68,    63,    68,    68,    68,   967,    63,   931,
1445     68,   971,    68,    64,   782,   101,   101,    67,   101,   979,
1446     68,    66,    66,   101,   984,    67,   794,   795,   796,   797,
1447    798,   799,   786,    67,   788,   789,   750,    67,    19,   793,
1448    101,   809,    67,   256,  1004,    68,   507,   101,    33,   102,
1449    511,   512,    63,    66,   515,   516,    68,    67,   826,    68,
1450     68,    66,    64,   102,    82,   124,   101,   280,   125,    68,
1451     64,     5,    94,   507,    63,    68,    67,   511,   512,   702,
1452      0,   515,   516,    86,    87,    88,    89,    90,    91,    92,
1453     93,    94,    95,    96,   307,     0,     4,   865,   227,   312,
1454    821,   869,   856,     3,   559,     5,     4,    56,   236,   877,
1455    131,   924,    12,    13,    14,    15,    16,   133,   373,   203,
1456    874,   237,   555,   550,   904,   915,   548,   911,   582,   664,
1457    231,   915,   590,   901,    34,   364,  1005,   622,   230,   893,
1458    356,   474,   485,   778,   889,   899,    46,   266,    48,    49,
1459    977,    -1,   945,    -1,    -1,    -1,    -1,    -1,   619,   372,
1460    621,   784,   785,    -1,    -1,    -1,    66,    -1,    68,    69,
1461     -1,   632,   633,    -1,    -1,    -1,    -1,   390,    -1,    -1,
1462    934,    -1,   936,    -1,    -1,   619,   940,   621,    -1,    -1,
1463     -1,   945,    -1,    -1,   655,    -1,    -1,   965,   632,   633,
1464     -1,   985,   956,    -1,   958,    -1,    -1,    -1,   962,    -1,
1465    924,   424,   425,    -1,   427,   428,   429,   430,    -1,    -1,
1466     -1,   655,   435,   436,    -1,   438,   439,   981,    -1,   983,
1467    443,   444,   511,   512,    -1,    -1,   515,   516,    -1,     3,
1468     -1,     5,    -1,   997,    -1,    -1,    -1,    -1,    12,    13,
1469     14,    15,    16,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1470    721,   722,   723,   724,   725,   726,    -1,   728,   729,    -1,
1471     34,   894,    -1,   486,    -1,    -1,    -1,    -1,    -1,    -1,
1472     -1,    -1,    46,    -1,    48,    49,    -1,   721,   722,   723,
1473    724,   725,   726,    -1,   728,   729,   620,    -1,    -1,    -1,
1474    513,    -1,   626,   627,    68,    69,   630,   631,    -1,   522,
1475    523,   524,   525,   526,   527,   528,    84,    85,    86,    87,
1476     88,    89,    90,    91,    92,    93,    94,    95,    96,   542,
1477     -1,    -1,    -1,   794,   795,   796,   797,   798,   799,    -1,
1478    619,    -1,   621,    -1,    -1,    -1,    -1,    -1,   809,    -1,
1479     -1,    -1,    -1,   632,   633,    -1,    -1,    -1,    -1,    -1,
1480    794,   795,   796,   797,   798,   799,    -1,    -1,    -1,    -1,
1481     -1,   584,    -1,    -1,    -1,   809,   655,    -1,    -1,    -1,
1482     -1,    -1,    -1,    -1,    -1,    -1,   599,    -1,   712,    -1,
1483     -1,    -1,    -1,   606,    -1,    -1,    -1,    -1,    -1,    -1,
1484     -1,    -1,    -1,   727,    -1,    -1,    -1,    -1,    -1,    -1,
1485    623,    -1,    -1,    -1,    -1,   739,   740,    -1,    -1,    -1,
1486    744,    85,    86,    87,    88,    89,    90,    91,    92,    93,
1487     94,    95,    96,    -1,   647,    -1,    -1,    -1,   651,    -1,
1488    901,    -1,   721,   722,   723,   724,   725,   726,    -1,   728,
1489    729,    86,    87,    88,    89,    90,    91,    92,    93,    94,
1490     95,    96,    -1,    -1,   620,    -1,    -1,   901,    -1,    -1,
1491    626,   627,    -1,    -1,   630,   631,    -1,   801,   802,   803,
1492    804,   805,   806,   807,   808,    -1,   699,    -1,   701,    -1,
1493     -1,   704,   705,    -1,    -1,   620,    -1,    -1,    -1,    -1,
1494    713,   626,   627,    -1,    -1,   630,   631,    -1,    -1,    -1,
1495     -1,    -1,    -1,    -1,    -1,   794,   795,   796,   797,   798,
1496    799,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   741,    -1,
1497    809,    -1,    -1,    -1,    -1,   859,   860,   861,   862,   863,
1498    864,    -1,   866,    87,    88,    89,    90,    91,    92,    93,
1499     94,    95,    96,    -1,    -1,    -1,   712,    87,    88,    89,
1500     90,    91,    92,    93,    94,    95,    96,    -1,   620,    -1,
1501     -1,   727,    -1,    -1,   626,   627,    -1,    -1,   630,   631,
1502     -1,    -1,    -1,   739,   740,    -1,    -1,   712,   744,    -1,
1503     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1504     -1,    -1,   727,    -1,    -1,    -1,   620,   931,    -1,    -1,
1505     -1,    -1,   626,   627,   739,   740,   630,   631,    -1,   744,
1506     -1,    -1,   901,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1507     -1,    -1,    -1,    -1,    -1,   848,   849,    -1,    -1,    -1,
1508     -1,    63,    -1,    -1,   857,   801,   802,   803,   804,   805,
1509    806,   807,   808,    -1,    -1,    -1,    78,    -1,    -1,    81,
1510    712,    83,    84,    85,    86,    87,    88,    89,    90,    91,
1511     92,    93,    94,    95,    96,   727,   801,   802,   803,   804,
1512    805,   806,   807,   808,    -1,    -1,    -1,   739,   740,    -1,
1513     -1,    -1,   744,    -1,    -1,    -1,    -1,    -1,   712,    -1,
1514     -1,    -1,    -1,   859,   860,   861,   862,   863,   864,    -1,
1515    866,    -1,    -1,   727,    -1,   928,    -1,    -1,    -1,    -1,
1516     -1,    -1,   935,    -1,    -1,   739,   740,    -1,    -1,    -1,
1517    744,    -1,    -1,    -1,   859,   860,   861,   862,   863,   864,
1518     63,   866,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   801,
1519    802,   803,   804,   805,   806,   807,   808,    -1,    81,    -1,
1520     83,    84,    85,    86,    87,    88,    89,    90,    91,    92,
1521     93,    94,    95,    96,    -1,   931,    -1,    -1,    -1,    -1,
1522     -1,    -1,    -1,    -1,    -1,    -1,    -1,   801,   802,   803,
1523    804,   805,   806,   807,   808,    -1,    -1,    -1,    -1,    -1,
1524     -1,    -1,    -1,    -1,    -1,    -1,   931,   859,   860,   861,
1525    862,   863,   864,    81,   866,    83,    84,    85,    86,    87,
1526     88,    89,    90,    91,    92,    93,    94,    95,    96,     3,
1527     -1,     5,    -1,    -1,    -1,    -1,    -1,    -1,    12,    13,
1528     14,    15,    16,    -1,    -1,   859,   860,   861,   862,   863,
1529    864,    -1,   866,    27,    28,    -1,    -1,    -1,    32,    -1,
1530     34,    35,    36,    -1,    -1,    -1,    40,    41,    -1,    -1,
1531     44,    45,    46,    -1,    48,    49,    50,    51,    63,   931,
1532     54,    55,    56,    57,    58,    59,    60,    61,    62,    -1,
1533     -1,    -1,    66,    78,    68,    69,    81,    -1,    83,    84,
1534     85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
1535     95,    96,    -1,    -1,    -1,    -1,    -1,   931,    -1,    -1,
1536     -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,    -1,     5,
1537     -1,    -1,    -1,    -1,    -1,    -1,    12,    13,    14,    15,
1538     16,   115,   116,   117,   118,   119,    -1,    -1,    -1,   123,
1539     -1,    27,    28,    -1,   128,   129,    32,    -1,    34,    35,
1540     36,    -1,    -1,    -1,    40,    41,    -1,    -1,    44,    45,
1541     46,    -1,    48,    49,    50,    51,    63,    -1,    54,    55,
1542     56,    57,    58,    59,    60,    61,    62,    -1,    -1,    -1,
1543     -1,    78,    68,    69,    81,    -1,    83,    84,    85,    86,
1544     87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
1545     78,    -1,    -1,    81,    82,    83,    84,    85,    86,    87,
1546     88,    89,    90,    91,    92,    93,    94,    95,    96,    -1,
1547     -1,    -1,    -1,    -1,     7,    -1,    -1,    -1,    -1,   115,
1548    116,   117,   118,   119,    17,    -1,    -1,   123,    -1,    -1,
1549     -1,    24,   128,   129,    27,    28,    -1,    -1,    -1,    32,
1550     -1,    34,    35,    36,    -1,    -1,    -1,    40,    41,    42,
1551     -1,    44,    45,    46,    -1,    48,    49,    50,    51,    -1,
1552     -1,    54,    55,    56,    57,    58,    59,    60,    61,    62,
1553     64,    -1,    -1,    -1,    67,    -1,    69,    -1,    -1,    -1,
1554     -1,    -1,    -1,    -1,    78,    -1,    -1,    81,    -1,    83,
1555     84,    85,    86,    87,    88,    89,    90,    91,    92,    93,
1556     94,    95,    96,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1557     -1,     7,    -1,    -1,    -1,   108,    -1,    -1,    -1,    -1,
1558     -1,    17,   115,   116,   117,   118,   119,    -1,    24,    -1,
1559     -1,    27,    28,    -1,    -1,   128,    32,    -1,    34,    35,
1560     36,    -1,    -1,    -1,    40,    41,    42,    -1,    44,    45,
1561     46,    -1,    48,    49,    50,    51,    -1,    -1,    54,    55,
1562     56,    57,    58,    59,    60,    61,    62,    67,    -1,    -1,
1563     -1,    -1,    -1,    69,    -1,    -1,    -1,    -1,    78,    -1,
1564     -1,    81,    -1,    83,    84,    85,    86,    87,    88,    89,
1565     90,    91,    92,    93,    94,    95,    96,    83,    84,    85,
1566     86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
1567     96,    -1,   108,    -1,    -1,    -1,    -1,    -1,    17,   115,
1568    116,   117,   118,   119,    -1,    24,    -1,    -1,    27,    28,
1569     -1,    -1,   128,    32,    -1,    34,    35,    36,    -1,    -1,
1570     -1,    40,    41,    42,    -1,    44,    45,    46,    -1,    48,
1571     49,    50,    51,    -1,    -1,    54,    55,    56,    57,    58,
1572     59,    60,    61,    62,    20,    -1,    -1,    -1,    -1,    -1,
1573     69,    27,    -1,    -1,    -1,    -1,    32,    -1,    34,    -1,
1574     36,    -1,    -1,    -1,    40,    41,    -1,    -1,    44,    45,
1575     46,    -1,    -1,    49,    50,    51,    -1,    -1,    54,    55,
1576     56,    57,    58,    59,    60,    61,    62,    -1,    -1,    -1,
1577     -1,    -1,    -1,    69,    67,    -1,   115,   116,   117,   118,
1578    119,    -1,    -1,    -1,    -1,    78,    -1,    -1,    81,   128,
1579     83,    84,    85,    86,    87,    88,    89,    90,    91,    92,
1580     93,    94,    95,    96,    83,    84,    85,    86,    87,    88,
1581     89,    90,    91,    92,    93,    94,    95,    96,    -1,   115,
1582    116,   117,   118,   119,    23,    -1,    -1,    -1,    27,    -1,
1583     -1,    -1,   128,    32,    -1,    34,    -1,    36,    -1,    -1,
1584     -1,    40,    41,    -1,    -1,    44,    45,    46,    -1,    -1,
1585     49,    50,    51,    -1,    -1,    54,    55,    56,    57,    58,
1586     59,    60,    61,    62,    -1,    -1,    -1,    -1,    -1,    68,
1587     69,    -1,    -1,    72,    73,    74,    -1,    -1,    -1,    -1,
1588     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,
1589     -1,    -1,    -1,    -1,    93,    94,    -1,    -1,    -1,    98,
1590     99,   100,   101,    -1,    -1,    -1,   105,   106,   107,    -1,
1591    109,   110,   111,   112,   113,   114,   115,   116,   117,   118,
1592    119,   120,    -1,   122,    23,    -1,    25,    26,   127,   128,
1593     29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,    38,
1594     39,    -1,    -1,    -1,    43,    -1,    -1,    -1,    47,    -1,
1595     -1,    -1,    -1,    52,    -1,    -1,    -1,    -1,    -1,    -1,
1596     -1,    -1,    -1,    -1,    -1,    -1,    65,    -1,    67,    68,
1597     -1,    -1,    -1,    72,    73,    74,    -1,    -1,    -1,    -1,
1598     -1,    23,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,
1599     -1,    -1,    -1,    -1,    93,    94,    -1,    -1,    -1,    98,
1600     99,   100,   101,    -1,    -1,    -1,   105,   106,   107,    -1,
1601    109,   110,   111,   112,   113,   114,    -1,    -1,    -1,    -1,
1602     -1,   120,    64,   122,    -1,    -1,    68,    -1,   127,    -1,
1603     72,    73,    74,    -1,    -1,    -1,    -1,    23,    -1,    -1,
1604     -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,
1605     -1,    93,    94,    -1,    -1,    -1,    98,    99,   100,   101,
1606     -1,    -1,    -1,   105,   106,   107,    -1,   109,   110,   111,
1607    112,   113,   114,    -1,    -1,    -1,    -1,    -1,   120,    65,
1608    122,    -1,    68,    -1,    -1,   127,    72,    73,    74,    -1,
1609     -1,    -1,    -1,    23,    -1,    -1,    -1,    -1,    -1,    -1,
1610     -1,    87,    -1,    -1,    -1,    -1,    -1,    93,    94,    -1,
1611     -1,    -1,    98,    99,   100,   101,    -1,    -1,    -1,   105,
1612    106,   107,    -1,   109,   110,   111,   112,   113,   114,    -1,
1613     -1,    -1,    -1,    63,   120,    -1,   122,    -1,    68,    -1,
1614     -1,   127,    72,    73,    74,    -1,    -1,    -1,    -1,    23,
1615     -1,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,
1616     -1,    -1,    -1,    93,    94,    -1,    -1,    -1,    98,    99,
1617    100,   101,    -1,    -1,    -1,   105,   106,   107,    -1,   109,
1618    110,   111,   112,   113,   114,    -1,    -1,    -1,    -1,    -1,
1619    120,    65,   122,    -1,    68,    -1,    -1,   127,    72,    73,
1620     74,    -1,    -1,    -1,    -1,    23,    -1,    -1,    -1,    -1,
1621     -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    93,
1622     94,    -1,    -1,    -1,    98,    99,   100,   101,    -1,    -1,
1623     -1,   105,   106,   107,    -1,   109,   110,   111,   112,   113,
1624    114,    -1,    -1,    -1,    -1,    -1,   120,    -1,   122,    67,
1625     68,    -1,    -1,   127,    72,    73,    74,    -1,    -1,    -1,
1626     -1,    23,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    87,
1627     -1,    -1,    -1,    -1,    -1,    93,    94,    -1,    -1,    -1,
1628     98,    99,   100,   101,    -1,    -1,    -1,   105,   106,   107,
1629     -1,   109,   110,   111,   112,   113,   114,    -1,    -1,    -1,
1630     -1,    -1,   120,    -1,   122,    -1,    68,    -1,    -1,   127,
1631     72,    73,    74,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1632     -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,
1633     -1,    93,    94,    -1,    -1,    -1,    98,    99,   100,   101,
1634     -1,    -1,    -1,   105,   106,   107,    -1,   109,   110,   111,
1635    112,   113,   114,    -1,    27,    -1,    -1,    -1,   120,    32,
1636    122,    34,    -1,    36,    -1,   127,    -1,    40,    41,    -1,
1637     -1,    44,    45,    46,    -1,    -1,    49,    50,    51,    -1,
1638     -1,    54,    55,    56,    57,    58,    59,    60,    61,    62,
1639     67,    -1,    -1,    -1,    -1,    68,    69,    -1,    -1,    -1,
1640     -1,    78,    -1,    -1,    81,    -1,    83,    84,    85,    86,
1641     87,    88,    89,    90,    91,    92,    93,    94,    95,    96,
1642     -1,    94,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,
1643     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1644     -1,    -1,   115,   116,   117,   118,   119,    27,    -1,    -1,
1645     -1,    -1,    32,    -1,    34,   128,    36,    -1,    -1,    -1,
1646     40,    41,    -1,    -1,    44,    45,    46,    -1,    -1,    49,
1647     50,    51,    -1,    -1,    54,    55,    56,    57,    58,    59,
1648     60,    61,    62,    -1,    -1,    -1,    -1,    -1,    27,    69,
1649     -1,    -1,    -1,    32,    -1,    34,    -1,    36,    -1,    -1,
1650     -1,    40,    41,    -1,    -1,    44,    45,    46,    -1,    -1,
1651     49,    50,    51,    -1,    94,    54,    55,    56,    57,    58,
1652     59,    60,    61,    62,    -1,    -1,    -1,    -1,    -1,    68,
1653     69,    -1,    -1,    -1,    -1,   115,   116,   117,   118,   119,
1654     27,    -1,    -1,    -1,    -1,    32,    -1,    34,   128,    36,
1655     -1,    -1,    -1,    40,    41,    -1,    -1,    44,    45,    46,
1656     -1,    -1,    49,    50,    51,    -1,    -1,    54,    55,    56,
1657     57,    58,    59,    60,    61,    62,   115,   116,   117,   118,
1658    119,    27,    69,    -1,    -1,    -1,    32,    -1,    34,   128,
1659     36,    -1,    -1,    -1,    40,    41,    -1,    -1,    44,    45,
1660     46,    -1,    -1,    49,    50,    51,    -1,    -1,    54,    55,
1661     56,    57,    58,    59,    60,    61,    62,    -1,    -1,    -1,
1662     66,    -1,    -1,    69,    -1,    -1,    -1,    -1,   115,   116,
1663    117,   118,   119,    27,    -1,    -1,    -1,    -1,    32,    -1,
1664     -1,   128,    36,    -1,    -1,    -1,    40,    41,    -1,    -1,
1665     44,    45,    -1,    -1,    -1,    -1,    50,    51,    -1,    -1,
1666     54,    55,    56,    57,    58,    59,    60,    61,    62,   115,
1667    116,   117,   118,   119,    68,    69,    27,    -1,    -1,    -1,
1668     -1,    32,   128,    -1,    -1,    36,    -1,    -1,    -1,    40,
1669     41,    -1,    -1,    44,    45,    -1,    -1,    -1,    -1,    50,
1670     51,    -1,    -1,    54,    55,    56,    57,    58,    59,    60,
1671     61,    62,    -1,    -1,    -1,    -1,    -1,    -1,    69,    -1,
1672     -1,   115,   116,   117,   118,   119,    27,    -1,    -1,    -1,
1673     -1,    32,    -1,    -1,   128,    36,    -1,    -1,    -1,    40,
1674     41,    -1,    -1,    44,    45,    -1,    -1,    -1,    -1,    50,
1675     51,    -1,    -1,    54,    55,    56,    57,    58,    59,    60,
1676     61,    62,    -1,    -1,   115,   116,   117,   118,   119,    -1,
1677     -1,    -1,    -1,    78,    -1,    -1,    81,   128,    83,    84,
1678     85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
1679     95,    96,    78,    -1,    -1,    81,    -1,    83,    84,    85,
1680     86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
1681     96,    -1,    -1,    -1,   115,   116,   117,   118,   119,    -1,
1682     -1,    -1,    -1,    78,    -1,    -1,    81,   128,    83,    84,
1683     85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
1684     95,    96,    81,    82,    83,    84,    85,    86,    87,    88,
1685     89,    90,    91,    92,    93,    94,    95,    96
1686 };
1687 /* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
1688 #line 3 "/local/encap/bison-1.25/share/bison.simple"
1689
1690 /* Skeleton output parser for bison,
1691    Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
1692
1693    This program is free software; you can redistribute it and/or modify
1694    it under the terms of the GNU General Public License as published by
1695    the Free Software Foundation; either version 2, or (at your option)
1696    any later version.
1697
1698    This program is distributed in the hope that it will be useful,
1699    but WITHOUT ANY WARRANTY; without even the implied warranty of
1700    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1701    GNU General Public License for more details.
1702
1703    You should have received a copy of the GNU General Public License
1704    along with this program; if not, write to the Free Software
1705    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
1706
1707 /* As a special exception, when this file is copied by Bison into a
1708    Bison output file, you may use that output file without restriction.
1709    This special exception was added by the Free Software Foundation
1710    in version 1.24 of Bison.  */
1711
1712 #ifndef alloca
1713 #ifdef __GNUC__
1714 #define alloca __builtin_alloca
1715 #else /* not GNU C.  */
1716 #if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi)
1717 #include <alloca.h>
1718 #else /* not sparc */
1719 #if defined (MSDOS) && !defined (__TURBOC__)
1720 #include <malloc.h>
1721 #else /* not MSDOS, or __TURBOC__ */
1722 #if defined(_AIX)
1723 #include <malloc.h>
1724  #pragma alloca
1725 #else /* not MSDOS, __TURBOC__, or _AIX */
1726 #ifdef __hpux
1727 #ifdef __cplusplus
1728 extern "C" {
1729 void *alloca (unsigned int);
1730 };
1731 #else /* not __cplusplus */
1732 void *alloca ();
1733 #endif /* not __cplusplus */
1734 #endif /* __hpux */
1735 #endif /* not _AIX */
1736 #endif /* not MSDOS, or __TURBOC__ */
1737 #endif /* not sparc.  */
1738 #endif /* not GNU C.  */
1739 #endif /* alloca not defined.  */
1740
1741 /* This is the parser code that is written into each bison parser
1742   when the %semantic_parser declaration is not specified in the grammar.
1743   It was written by Richard Stallman by simplifying the hairy parser
1744   used when %semantic_parser is specified.  */
1745
1746 /* Note: there must be only one dollar sign in this file.
1747    It is replaced by the list of actions, each action
1748    as one case of the switch.  */
1749
1750 #define yyerrok         (yyerrstatus = 0)
1751 #define yyclearin       (yychar = YYEMPTY)
1752 #define YYEMPTY         -2
1753 #define YYEOF           0
1754 #define YYACCEPT        return(0)
1755 #define YYABORT         return(1)
1756 #define YYERROR         goto yyerrlab1
1757 /* Like YYERROR except do call yyerror.
1758    This remains here temporarily to ease the
1759    transition to the new meaning of YYERROR, for GCC.
1760    Once GCC version 2 has supplanted version 1, this can go.  */
1761 #define YYFAIL          goto yyerrlab
1762 #define YYRECOVERING()  (!!yyerrstatus)
1763 #define YYBACKUP(token, value) \
1764 do                                                              \
1765   if (yychar == YYEMPTY && yylen == 1)                          \
1766     { yychar = (token), yylval = (value);                       \
1767       yychar1 = YYTRANSLATE (yychar);                           \
1768       YYPOPSTACK;                                               \
1769       goto yybackup;                                            \
1770     }                                                           \
1771   else                                                          \
1772     { yyerror ("syntax error: cannot back up"); YYERROR; }      \
1773 while (0)
1774
1775 #define YYTERROR        1
1776 #define YYERRCODE       256
1777
1778 #ifndef YYPURE
1779 #define YYLEX           yylex()
1780 #endif
1781
1782 #ifdef YYPURE
1783 #ifdef YYLSP_NEEDED
1784 #ifdef YYLEX_PARAM
1785 #define YYLEX           yylex(&yylval, &yylloc, YYLEX_PARAM)
1786 #else
1787 #define YYLEX           yylex(&yylval, &yylloc)
1788 #endif
1789 #else /* not YYLSP_NEEDED */
1790 #ifdef YYLEX_PARAM
1791 #define YYLEX           yylex(&yylval, YYLEX_PARAM)
1792 #else
1793 #define YYLEX           yylex(&yylval)
1794 #endif
1795 #endif /* not YYLSP_NEEDED */
1796 #endif
1797
1798 /* If nonreentrant, generate the variables here */
1799
1800 #ifndef YYPURE
1801
1802 int     yychar;                 /*  the lookahead symbol                */
1803 YYSTYPE yylval;                 /*  the semantic value of the           */
1804                                 /*  lookahead symbol                    */
1805
1806 #ifdef YYLSP_NEEDED
1807 YYLTYPE yylloc;                 /*  location data for the lookahead     */
1808                                 /*  symbol                              */
1809 #endif
1810
1811 int yynerrs;                    /*  number of parse errors so far       */
1812 #endif  /* not YYPURE */
1813
1814 #if YYDEBUG != 0
1815 int yydebug;                    /*  nonzero means print parse trace     */
1816 /* Since this is uninitialized, it does not stop multiple parsers
1817    from coexisting.  */
1818 #endif
1819
1820 /*  YYINITDEPTH indicates the initial size of the parser's stacks       */
1821
1822 #ifndef YYINITDEPTH
1823 #define YYINITDEPTH 200
1824 #endif
1825
1826 /*  YYMAXDEPTH is the maximum size the stacks can grow to
1827     (effective only if the built-in stack extension method is used).  */
1828
1829 #if YYMAXDEPTH == 0
1830 #undef YYMAXDEPTH
1831 #endif
1832
1833 #ifndef YYMAXDEPTH
1834 #define YYMAXDEPTH 10000
1835 #endif
1836
1837 /* Prevent warning if -Wstrict-prototypes.  */
1838 #ifdef __GNUC__
1839 int yyparse (void);
1840 #endif
1841 \f
1842 #if __GNUC__ > 1                /* GNU C and GNU C++ define this.  */
1843 #define __yy_memcpy(TO,FROM,COUNT)      __builtin_memcpy(TO,FROM,COUNT)
1844 #else                           /* not GNU C or C++ */
1845 #ifndef __cplusplus
1846
1847 /* This is the most reliable way to avoid incompatibilities
1848    in available built-in functions on various systems.  */
1849 static void
1850 __yy_memcpy (to, from, count)
1851      char *to;
1852      char *from;
1853      int count;
1854 {
1855   register char *f = from;
1856   register char *t = to;
1857   register int i = count;
1858
1859   while (i-- > 0)
1860     *t++ = *f++;
1861 }
1862
1863 #else /* __cplusplus */
1864
1865 /* This is the most reliable way to avoid incompatibilities
1866    in available built-in functions on various systems.  */
1867 static void
1868 __yy_memcpy (char *to, char *from, int count)
1869 {
1870   register char *f = from;
1871   register char *t = to;
1872   register int i = count;
1873
1874   while (i-- > 0)
1875     *t++ = *f++;
1876 }
1877
1878 #endif
1879 #endif
1880 \f
1881 #line 196 "/local/encap/bison-1.25/share/bison.simple"
1882
1883 /* The user can define YYPARSE_PARAM as the name of an argument to be passed
1884    into yyparse.  The argument should have type void *.
1885    It should actually point to an object.
1886    Grammar actions can access the variable by casting it
1887    to the proper pointer type.  */
1888
1889 #ifdef YYPARSE_PARAM
1890 #ifdef __cplusplus
1891 #define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
1892 #define YYPARSE_PARAM_DECL
1893 #else /* not __cplusplus */
1894 #define YYPARSE_PARAM_ARG YYPARSE_PARAM
1895 #define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
1896 #endif /* not __cplusplus */
1897 #else /* not YYPARSE_PARAM */
1898 #define YYPARSE_PARAM_ARG
1899 #define YYPARSE_PARAM_DECL
1900 #endif /* not YYPARSE_PARAM */
1901
1902 int
1903 yyparse(YYPARSE_PARAM_ARG)
1904      YYPARSE_PARAM_DECL
1905 {
1906   register int yystate;
1907   register int yyn;
1908   register short *yyssp;
1909   register YYSTYPE *yyvsp;
1910   int yyerrstatus;      /*  number of tokens to shift before error messages enabled */
1911   int yychar1 = 0;              /*  lookahead token as an internal (translated) token number */
1912
1913   short yyssa[YYINITDEPTH];     /*  the state stack                     */
1914   YYSTYPE yyvsa[YYINITDEPTH];   /*  the semantic value stack            */
1915
1916   short *yyss = yyssa;          /*  refer to the stacks thru separate pointers */
1917   YYSTYPE *yyvs = yyvsa;        /*  to allow yyoverflow to reallocate them elsewhere */
1918
1919 #ifdef YYLSP_NEEDED
1920   YYLTYPE yylsa[YYINITDEPTH];   /*  the location stack                  */
1921   YYLTYPE *yyls = yylsa;
1922   YYLTYPE *yylsp;
1923
1924 #define YYPOPSTACK   (yyvsp--, yyssp--, yylsp--)
1925 #else
1926 #define YYPOPSTACK   (yyvsp--, yyssp--)
1927 #endif
1928
1929   int yystacksize = YYINITDEPTH;
1930
1931 #ifdef YYPURE
1932   int yychar;
1933   YYSTYPE yylval;
1934   int yynerrs;
1935 #ifdef YYLSP_NEEDED
1936   YYLTYPE yylloc;
1937 #endif
1938 #endif
1939
1940   YYSTYPE yyval;                /*  the variable used to return         */
1941                                 /*  semantic values from the action     */
1942                                 /*  routines                            */
1943
1944   int yylen;
1945
1946 #if YYDEBUG != 0
1947   if (yydebug)
1948     fprintf(stderr, "Starting parse\n");
1949 #endif
1950
1951   yystate = 0;
1952   yyerrstatus = 0;
1953   yynerrs = 0;
1954   yychar = YYEMPTY;             /* Cause a token to be read.  */
1955
1956   /* Initialize stack pointers.
1957      Waste one element of value and location stack
1958      so that they stay on the same level as the state stack.
1959      The wasted elements are never initialized.  */
1960
1961   yyssp = yyss - 1;
1962   yyvsp = yyvs;
1963 #ifdef YYLSP_NEEDED
1964   yylsp = yyls;
1965 #endif
1966
1967 /* Push a new state, which is found in  yystate  .  */
1968 /* In all cases, when you get here, the value and location stacks
1969    have just been pushed. so pushing a state here evens the stacks.  */
1970 yynewstate:
1971
1972   *++yyssp = yystate;
1973
1974   if (yyssp >= yyss + yystacksize - 1)
1975     {
1976       /* Give user a chance to reallocate the stack */
1977       /* Use copies of these so that the &'s don't force the real ones into memory. */
1978       YYSTYPE *yyvs1 = yyvs;
1979       short *yyss1 = yyss;
1980 #ifdef YYLSP_NEEDED
1981       YYLTYPE *yyls1 = yyls;
1982 #endif
1983
1984       /* Get the current used size of the three stacks, in elements.  */
1985       int size = yyssp - yyss + 1;
1986
1987 #ifdef yyoverflow
1988       /* Each stack pointer address is followed by the size of
1989          the data in use in that stack, in bytes.  */
1990 #ifdef YYLSP_NEEDED
1991       /* This used to be a conditional around just the two extra args,
1992          but that might be undefined if yyoverflow is a macro.  */
1993       yyoverflow("parser stack overflow",
1994                  &yyss1, size * sizeof (*yyssp),
1995                  &yyvs1, size * sizeof (*yyvsp),
1996                  &yyls1, size * sizeof (*yylsp),
1997                  &yystacksize);
1998 #else
1999       yyoverflow("parser stack overflow",
2000                  &yyss1, size * sizeof (*yyssp),
2001                  &yyvs1, size * sizeof (*yyvsp),
2002                  &yystacksize);
2003 #endif
2004
2005       yyss = yyss1; yyvs = yyvs1;
2006 #ifdef YYLSP_NEEDED
2007       yyls = yyls1;
2008 #endif
2009 #else /* no yyoverflow */
2010       /* Extend the stack our own way.  */
2011       if (yystacksize >= YYMAXDEPTH)
2012         {
2013           yyerror("parser stack overflow");
2014           return 2;
2015         }
2016       yystacksize *= 2;
2017       if (yystacksize > YYMAXDEPTH)
2018         yystacksize = YYMAXDEPTH;
2019       yyss = (short *) alloca (yystacksize * sizeof (*yyssp));
2020       __yy_memcpy ((char *)yyss, (char *)yyss1, size * sizeof (*yyssp));
2021       yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp));
2022       __yy_memcpy ((char *)yyvs, (char *)yyvs1, size * sizeof (*yyvsp));
2023 #ifdef YYLSP_NEEDED
2024       yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp));
2025       __yy_memcpy ((char *)yyls, (char *)yyls1, size * sizeof (*yylsp));
2026 #endif
2027 #endif /* no yyoverflow */
2028
2029       yyssp = yyss + size - 1;
2030       yyvsp = yyvs + size - 1;
2031 #ifdef YYLSP_NEEDED
2032       yylsp = yyls + size - 1;
2033 #endif
2034
2035 #if YYDEBUG != 0
2036       if (yydebug)
2037         fprintf(stderr, "Stack size increased to %d\n", yystacksize);
2038 #endif
2039
2040       if (yyssp >= yyss + yystacksize - 1)
2041         YYABORT;
2042     }
2043
2044 #if YYDEBUG != 0
2045   if (yydebug)
2046     fprintf(stderr, "Entering state %d\n", yystate);
2047 #endif
2048
2049   goto yybackup;
2050  yybackup:
2051
2052 /* Do appropriate processing given the current state.  */
2053 /* Read a lookahead token if we need one and don't already have one.  */
2054 /* yyresume: */
2055
2056   /* First try to decide what to do without reference to lookahead token.  */
2057
2058   yyn = yypact[yystate];
2059   if (yyn == YYFLAG)
2060     goto yydefault;
2061
2062   /* Not known => get a lookahead token if don't already have one.  */
2063
2064   /* yychar is either YYEMPTY or YYEOF
2065      or a valid token in external form.  */
2066
2067   if (yychar == YYEMPTY)
2068     {
2069 #if YYDEBUG != 0
2070       if (yydebug)
2071         fprintf(stderr, "Reading a token: ");
2072 #endif
2073       yychar = YYLEX;
2074     }
2075
2076   /* Convert token to internal form (in yychar1) for indexing tables with */
2077
2078   if (yychar <= 0)              /* This means end of input. */
2079     {
2080       yychar1 = 0;
2081       yychar = YYEOF;           /* Don't call YYLEX any more */
2082
2083 #if YYDEBUG != 0
2084       if (yydebug)
2085         fprintf(stderr, "Now at end of input.\n");
2086 #endif
2087     }
2088   else
2089     {
2090       yychar1 = YYTRANSLATE(yychar);
2091
2092 #if YYDEBUG != 0
2093       if (yydebug)
2094         {
2095           fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
2096           /* Give the individual parser a way to print the precise meaning
2097              of a token, for further debugging info.  */
2098 #ifdef YYPRINT
2099           YYPRINT (stderr, yychar, yylval);
2100 #endif
2101           fprintf (stderr, ")\n");
2102         }
2103 #endif
2104     }
2105
2106   yyn += yychar1;
2107   if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
2108     goto yydefault;
2109
2110   yyn = yytable[yyn];
2111
2112   /* yyn is what to do for this token type in this state.
2113      Negative => reduce, -yyn is rule number.
2114      Positive => shift, yyn is new state.
2115        New state is final state => don't bother to shift,
2116        just return success.
2117      0, or most negative number => error.  */
2118
2119   if (yyn < 0)
2120     {
2121       if (yyn == YYFLAG)
2122         goto yyerrlab;
2123       yyn = -yyn;
2124       goto yyreduce;
2125     }
2126   else if (yyn == 0)
2127     goto yyerrlab;
2128
2129   if (yyn == YYFINAL)
2130     YYACCEPT;
2131
2132   /* Shift the lookahead token.  */
2133
2134 #if YYDEBUG != 0
2135   if (yydebug)
2136     fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
2137 #endif
2138
2139   /* Discard the token being shifted unless it is eof.  */
2140   if (yychar != YYEOF)
2141     yychar = YYEMPTY;
2142
2143   *++yyvsp = yylval;
2144 #ifdef YYLSP_NEEDED
2145   *++yylsp = yylloc;
2146 #endif
2147
2148   /* count tokens shifted since error; after three, turn off error status.  */
2149   if (yyerrstatus) yyerrstatus--;
2150
2151   yystate = yyn;
2152   goto yynewstate;
2153
2154 /* Do the default action for the current state.  */
2155 yydefault:
2156
2157   yyn = yydefact[yystate];
2158   if (yyn == 0)
2159     goto yyerrlab;
2160
2161 /* Do a reduction.  yyn is the number of a rule to reduce with.  */
2162 yyreduce:
2163   yylen = yyr2[yyn];
2164   if (yylen > 0)
2165     yyval = yyvsp[1-yylen]; /* implement default value of the action */
2166
2167 #if YYDEBUG != 0
2168   if (yydebug)
2169     {
2170       int i;
2171
2172       fprintf (stderr, "Reducing via rule %d (line %d), ",
2173                yyn, yyrline[yyn]);
2174
2175       /* Print the symbols being reduced, and their result.  */
2176       for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
2177         fprintf (stderr, "%s ", yytname[yyrhs[i]]);
2178       fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
2179     }
2180 #endif
2181
2182
2183   switch (yyn) {
2184
2185 case 1:
2186 #line 217 "xl-yacc.y"
2187 { if (yylex()) 
2188                              warning("Ignoring Extraneous Characters at End"); 
2189                           return(0); 
2190                         ;
2191     break;}
2192 case 2:
2193 #line 224 "xl-yacc.y"
2194 { CurrentTable=StackBase->tableptr;
2195                           if (InPass1)
2196                                 {Pass1Module=GetSymTabNode(CurrentModule->name);
2197                                  Pass1Module->type=CurrentModule->type;
2198                                 } 
2199                         ;
2200     break;}
2201 case 3:
2202 #line 231 "xl-yacc.y"
2203 { CurrentTable=StackBase->tableptr;
2204                           if (InPass1)
2205                                 {Pass1Module=GetSymTabNode(CurrentModule->name);
2206                                  Pass1Module->type=CurrentModule->type;
2207                                 } 
2208                         ;
2209     break;}
2210 case 4:
2211 #line 240 "xl-yacc.y"
2212 { CurrentTable=StackBase->tableptr;
2213                           CurrentModule=NULL;
2214                         ;
2215     break;}
2216 case 5:
2217 #line 244 "xl-yacc.y"
2218 { CurrentTable=StackBase->tableptr;
2219                           CurrentModule=NULL;
2220                         ;
2221     break;}
2222 case 6:
2223 #line 249 "xl-yacc.y"
2224 { IMPORTFLAG=TRUE; ImportLevel=0;;
2225     break;}
2226 case 7:
2227 #line 251 "xl-yacc.y"
2228 { CurrentModule=Insert(yyvsp[0]->string,StackBase->tableptr); 
2229                           FillSymTabNode(CurrentModule,MODULENAME,IMPORTED,
2230                                 UNDEFINED,UNDEFINED,1,TRUE,NULL);
2231                           CurrentTable=CurrentModule->type->table;
2232 /* Adding On Oct. 27, 1991.*/
2233                           SwapFile(OUT1);
2234                           if (strcmp(yyvsp[0]->string,ModuleName)) {
2235                                 SELFIMPMODULE = 0;
2236                                 writeoutput("\nextern struct { ",NOFREE);
2237                               } 
2238                           else{
2239                                 SELFIMPMODULE = 1;
2240                                 writeoutput("\nstruct { ",NOFREE);
2241                           }
2242                           SwapFile(NULL);
2243                           DestroyString(yyvsp[0]->string);dontfree(yyvsp[0]);
2244                         ;
2245     break;}
2246 case 8:
2247 #line 269 "xl-yacc.y"
2248 { SwapFile(OUT1);writeoutput("} ",NOFREE);
2249                           writeoutput(CkPrefix,NOFREE);
2250                           writeoutput(CurrentModule->name,NOFREE);
2251                           writeoutput(" ;",NOFREE);WriteReturn();
2252                           SwapFile(NULL);
2253                           IMPORTFLAG=FALSE;
2254                         ;
2255     break;}
2256 case 11:
2257 #line 282 "xl-yacc.y"
2258 { SwapFile(OUT0);writeoutput("typedef ",NOFREE); ;
2259     break;}
2260 case 12:
2261 #line 287 "xl-yacc.y"
2262 { SetIdList(yyvsp[-2]->type,yyvsp[-1]->listptr,TYPENAME,0);
2263                             dontfree(yyvsp[-2]);dontfree(yyvsp[-1]);
2264                             WriteReturn();      
2265                             SwapFile(NULL);
2266                           ;
2267     break;}
2268 case 13:
2269 #line 294 "xl-yacc.y"
2270 { SetIdList(DUMMYPTR,yyvsp[-1]->listptr,TYPENAME,0);
2271                             dontfree(yyvsp[-1]);
2272                             WriteReturn();      
2273                             SwapFile(NULL);
2274                           ;
2275     break;}
2276 case 14:
2277 #line 300 "xl-yacc.y"
2278 { SwapFile(NULL); ;
2279     break;}
2280 case 15:
2281 #line 302 "xl-yacc.y"
2282 { SwapFile(NULL); ;
2283     break;}
2284 case 16:
2285 #line 304 "xl-yacc.y"
2286 { SwapFile(NULL); ;
2287     break;}
2288 case 17:
2289 #line 306 "xl-yacc.y"
2290 { SwapFile(NULL); ;
2291     break;}
2292 case 18:
2293 #line 308 "xl-yacc.y"
2294 { SwapFile(NULL); ;
2295     break;}
2296 case 19:
2297 #line 310 "xl-yacc.y"
2298 { SwapFile(NULL); ;
2299     break;}
2300 case 20:
2301 #line 312 "xl-yacc.y"
2302 { SwapFile(NULL); ;
2303     break;}
2304 case 21:
2305 #line 313 "xl-yacc.y"
2306 { SwapFile(OUT0);  /* Jan 2 1992, Attila */
2307                     if (SELFIMPMODULE) writeoutput("/* ",NOFREE);;
2308     break;}
2309 case 22:
2310 #line 316 "xl-yacc.y"
2311 { if (SELFIMPMODULE) {
2312                        writeoutput("*/",NOFREE);
2313               /*       WriteReturn(); Dec 15, 1993*/
2314                     }
2315                     WriteReturn(); /* Dec 15,1993 Attila */
2316                     SwapFile(NULL); ;
2317     break;}
2318 case 23:
2319 #line 322 "xl-yacc.y"
2320 { SwapFile(OUT0); /* Jan 6 1992, Attila */
2321                     if (SELFIMPMODULE) writeoutput("/* ",NOFREE);;
2322     break;}
2323 case 24:
2324 #line 325 "xl-yacc.y"
2325 { if (SELFIMPMODULE) {
2326                        writeoutput("*/",NOFREE);
2327               /*       WriteReturn(); Dec 15 1993 */
2328                     } 
2329                     WriteReturn(); /* Dec 15, 1993 */
2330                     SwapFile(NULL); ;
2331     break;}
2332 case 25:
2333 #line 333 "xl-yacc.y"
2334 { SwapFile(OUT1); ;
2335     break;}
2336 case 26:
2337 #line 335 "xl-yacc.y"
2338 { writeoutput(";",NOFREE);WriteReturn(); ;
2339     break;}
2340 case 27:
2341 #line 338 "xl-yacc.y"
2342 { SwapFile(OUT1); ;
2343     break;}
2344 case 28:
2345 #line 340 "xl-yacc.y"
2346 { writeoutput(";",NOFREE);WriteReturn(); ;
2347     break;}
2348 case 29:
2349 #line 344 "xl-yacc.y"
2350 { worksymtab=Insert(yyvsp[0]->string,CurrentTable);
2351                           worksymtab->idtype=ACCNAME;
2352                           writeoutput("int ",NOFREE);
2353                           writeoutput(yyvsp[0]->string,NOFREE);
2354                           DestroyString(yyvsp[0]->string);dontfree(yyvsp[0]);
2355                         ;
2356     break;}
2357 case 30:
2358 #line 351 "xl-yacc.y"
2359 { worksymtab=Insert(yyvsp[0]->string,CurrentTable);
2360                           worksymtab->idtype=ACCNAME;
2361                           writeoutput(",",NOFREE);
2362                           writeoutput(yyvsp[0]->string,NOFREE);
2363                           DestroyString(yyvsp[0]->string);dontfree(yyvsp[0]);
2364                         ;
2365     break;}
2366 case 31:
2367 #line 360 "xl-yacc.y"
2368 { worksymtab=Insert(yyvsp[0]->string,CurrentTable);
2369                           worksymtab->idtype=MONONAME;
2370                           writeoutput("int ",NOFREE);
2371                           writeoutput(yyvsp[0]->string,NOFREE);
2372                           DestroyString(yyvsp[0]->string);dontfree(yyvsp[0]);
2373                         ;
2374     break;}
2375 case 32:
2376 #line 367 "xl-yacc.y"
2377 { worksymtab=Insert(yyvsp[0]->string,CurrentTable);
2378                           worksymtab->idtype=MONONAME;
2379                           writeoutput(",",NOFREE);
2380                           writeoutput(yyvsp[0]->string,NOFREE);
2381                           DestroyString(yyvsp[0]->string);dontfree(yyvsp[0]);
2382                         ;
2383     break;}
2384 case 34:
2385 #line 379 "xl-yacc.y"
2386 { worksymtab=Insert(yyvsp[-3]->string,CurrentTable);
2387                           worksymtab->idtype=FNNAME;
2388                           writeoutput(" (* ",NOFREE);
2389                           writeoutput(yyvsp[-3]->string,NOFREE);
2390                           writeoutput(")();\n  int ",NOFREE);
2391                           writeoutput(yyvsp[-3]->string,NOFREE);
2392                           writeoutput(REFSUFFIX,NOFREE);
2393                           writeoutput(";",NOFREE);WriteReturn();
2394                           DestroyString(yyvsp[-3]->string);dontfree(yyvsp[-3]);
2395                         ;
2396     break;}
2397 case 35:
2398 #line 391 "xl-yacc.y"
2399 { SwapFile(OUT1); writeoutput("  int",NOFREE); ;
2400     break;}
2401 case 37:
2402 #line 392 "xl-yacc.y"
2403 { SwapFile(OUT1); writeoutput(" ",NOFREE); ;
2404     break;}
2405 case 38:
2406 #line 393 "xl-yacc.y"
2407 {writeoutput(yyvsp[0]->string);;
2408     break;}
2409 case 40:
2410 #line 395 "xl-yacc.y"
2411 {
2412                           SwapFile(OUT1);
2413                           writeoutput("  ",NOFREE); 
2414                           writeoutput(Map(CurrentModule->name,"0",
2415                                                 yyvsp[0]->string),NOFREE);
2416                           DestroyString(yyvsp[0]->string);dontfree(yyvsp[0]);
2417                         ;
2418     break;}
2419 case 42:
2420 #line 403 "xl-yacc.y"
2421 {SwapFile(OUT1); writeoutput("  ",NOFREE);;
2422     break;}
2423 case 45:
2424 #line 408 "xl-yacc.y"
2425 { writeoutput(Map(CurrentModule->name,"0",yyvsp[0]->string),NOFREE);
2426                           worksymtab=Insert(yyvsp[0]->string,CurrentTable);
2427                           worksymtab->idtype=STRUCTNAME;
2428                           DestroyString(yyvsp[0]->string);dontfree(yyvsp[0]);
2429         /* NOT BOTHERING TO SET ITS TYPE */
2430                         ;
2431     break;}
2432 case 46:
2433 #line 416 "xl-yacc.y"
2434 { SwapFile(OUT0);
2435                                   writeoutput("typedef struct ",NOFREE);
2436                                   ImportLevel=0;
2437                                   /* Dec 30 ,1991 added by Attila */
2438                                   IMPORTMSGFLAG = 1;
2439                                   /* End of Addition */
2440                                 ;
2441     break;}
2442 case 47:
2443 #line 423 "xl-yacc.y"
2444 { PushStack(); writeoutput(" {",NOFREE); ;
2445     break;}
2446 case 48:
2447 #line 425 "xl-yacc.y"
2448 { TYPEPTR typeptr;
2449                           /* Added by Attila, Dec 23 1991 */
2450                                   SwapFile(OUT1);
2451                                   writeoutput("    int ",NOFREE);
2452                                   writeoutput(yyvsp[-1]->string,NOFREE);
2453                                   writeoutput(";",NOFREE);
2454                                   WriteReturn();
2455                                   SwapFile(OUT0);
2456                           /* End Of Addition */
2457                           writeoutput(" } ",NOFREE);
2458                           typeptr=GetTypeNode(1,0);
2459                           typeptr->basictype=STRUCTTYPE;
2460                           typeptr->table=CurrentTable;
2461                           PopStack(NOFREE);RestoreCurrentTable();
2462                           worksymtab=Insert(yyvsp[-1]->string,CurrentTable);
2463                           worksymtab->idtype=MESSAGENAME;
2464                           worksymtab->type=typeptr;
2465  /*               writeoutput(Map(CurrentModule,"0",$8->string),NOFREE); */
2466  /* The statement above has been modified as follows, Attila Dec 23 1991 */
2467                           writeoutput(Map(CurrentModule->name,
2468                                           "0",yyvsp[-1]->string),NOFREE);
2469                           writeoutput(";",NOFREE);WriteReturn();
2470                           DestroyString(yyvsp[-1]->string);dontfree(yyvsp[-1]);
2471                           IMPORTMSGFLAG = 0; /* Dec 30,1991 added by Attila */
2472                         ;
2473     break;}
2474 case 49:
2475 #line 453 "xl-yacc.y"
2476 { SwapFile(OUT1);
2477                           writeoutput("  struct {",NOFREE);
2478                           SwapFile(NULL);
2479                           worksymtab=Insert(yyvsp[0]->string,CurrentTable);
2480                           FillSymTabNode(worksymtab,CHARENAME,IMPORTED,
2481                                 UNDEFINED,UNDEFINED,1,TRUE,NULL);
2482                           CurrentTable=worksymtab->type->table;
2483                           CurrentChare=worksymtab;
2484                         ;
2485     break;}
2486 case 50:
2487 #line 463 "xl-yacc.y"
2488 { SwapFile(OUT1);
2489                           writeoutput("  } ",NOFREE);
2490                           writeoutput(CkPrefix,NOFREE);
2491                           writeoutput(yyvsp[-4]->string,NOFREE);
2492                           writeoutput(";\n  int ",NOFREE);
2493                           writeoutput(yyvsp[-4]->string,NOFREE);
2494                           writeoutput(";",NOFREE);WriteReturn();
2495                           SwapFile(NULL);
2496                           DestroyString(yyvsp[-4]->string);dontfree(yyvsp[-4]);
2497                           CurrentTable=CurrentModule->type->table;
2498                           CurrentChare=NULL;
2499                         ;
2500     break;}
2501 case 51:
2502 #line 478 "xl-yacc.y"
2503 { SwapFile(OUT1);
2504                           writeoutput("  struct {",NOFREE);
2505                           worksymtab=Insert(yyvsp[0]->string,CurrentTable);
2506                           FillSymTabNode(worksymtab,BOCNAME,IMPORTED,
2507                                 UNDEFINED,UNDEFINED,1,TRUE,NULL);
2508                           CurrentTable=worksymtab->type->table;
2509                           CurrentChare=worksymtab;
2510                         ;
2511     break;}
2512 case 52:
2513 #line 487 "xl-yacc.y"
2514 { SwapFile(OUT1);
2515                           writeoutput("  } ",NOFREE);
2516                           writeoutput(CkPrefix,NOFREE);
2517                           writeoutput(yyvsp[-4]->string,NOFREE);
2518                           writeoutput(";\n  int ",NOFREE);
2519                           writeoutput(yyvsp[-4]->string,NOFREE);
2520                           writeoutput(";",NOFREE);WriteReturn();
2521                           DestroyString(yyvsp[-4]->string);dontfree(yyvsp[-4]);
2522                           CurrentTable=CurrentModule->type->table;
2523                           CurrentChare=NULL;
2524                         ;
2525     break;}
2526 case 53:
2527 #line 501 "xl-yacc.y"
2528 { SwapFile(OUT1);
2529                           writeoutput("  struct {",NOFREE);
2530                           /* Jan 6, 1992, added by Attila */
2531                           worksymtab=Insert("main",CurrentTable);
2532                           FillSymTabNode(worksymtab,CHARENAME,IMPORTED,
2533                                 UNDEFINED,UNDEFINED,1,TRUE,NULL);
2534                           CurrentTable=worksymtab->type->table;
2535                           CurrentChare=worksymtab;
2536                           /* end of addition */
2537                         ;
2538     break;}
2539 case 54:
2540 #line 512 "xl-yacc.y"
2541 { /* Jan 6 1992 , Attila */ SwapFile(OUT1);
2542                           writeoutput("  } ",NOFREE);
2543                           writeoutput(CkPrefix,NOFREE);
2544                           writeoutput("main",NOFREE);
2545                           writeoutput(";\n  int ",NOFREE);
2546                           writeoutput("main",NOFREE);
2547                           writeoutput(";",NOFREE);WriteReturn();
2548                           /* Jan 6 1992, added by Attila */
2549                           CurrentTable=CurrentModule->type->table;
2550                           CurrentChare=NULL;
2551                           /* end of addition */
2552                         ;
2553     break;}
2554 case 55:
2555 #line 527 "xl-yacc.y"
2556 { SwapFile(OUT1);
2557                           writeoutput("    int ",NOFREE);
2558                           writeoutput(yyvsp[-1]->string,NOFREE);
2559                           writeoutput(";",NOFREE);WriteReturn();
2560                           SwapFile(NULL);
2561                           worksymtab=Insert(yyvsp[-1]->string,CurrentTable);
2562                           worksymtab->idtype=ENTRYNAME;
2563                           worksymtab->declflag=IMPORTED;
2564                           DestroyString(yyvsp[-1]->string);dontfree(yyvsp[-1]);
2565                         ;
2566     break;}
2567 case 58:
2568 #line 544 "xl-yacc.y"
2569 { OUTPUTOFF=FALSE;SwapFile(OUT1);
2570                           writeoutput("    int ",NOFREE);
2571                           writeoutput(yyvsp[-3]->string,NOFREE);
2572                           writeoutput(";",NOFREE);WriteReturn();
2573                           worksymtab=Insert(yyvsp[-3]->string,CurrentTable);
2574                           worksymtab->idtype=PUBLICFNNAME;
2575                           worksymtab->declflag=IMPORTED;
2576                           DestroyString(yyvsp[-3]->string);dontfree(yyvsp[-3]);
2577                         ;
2578     break;}
2579 case 59:
2580 #line 554 "xl-yacc.y"
2581 { OUTPUTOFF=TRUE; ;
2582     break;}
2583 case 66:
2584 #line 565 "xl-yacc.y"
2585 { worksymtab=LocalFind(yyvsp[0]->string);
2586                           InPass1 = !InPass1;
2587                           if (!InPass1) SwapFile(OUT); else SwapFile(NULL);
2588                           SavedLineNo=CurrentInputLineNo;
2589                           strcpy(SavedFileName,CurrentFileName);        
2590                           if (worksymtab==NULL)
2591                                 CurrentModule=Insert(yyvsp[0]->string,StackBase->tableptr); 
2592                           else  { if (InPass1)
2593                                   { CurrentModule=worksymtab;
2594                                     GenerateStruct(yyvsp[0]->string,
2595                                      worksymtab->type->table,TRUE,CkPrefix,0);
2596                                     ImportModule=worksymtab->type->table;
2597                                   }
2598                                 }
2599                           FillSymTabNode(CurrentModule,MODULENAME,DECLARED,
2600                                 UNDEFINED,UNDEFINED,1,TRUE,NULL);
2601                           CurrentTable=CurrentModule->type->table;
2602                           ModuleDefined=CurrentModule;
2603                           DestroyString(yyvsp[0]->string);dontfree(yyvsp[0]);
2604                           InsertSysCalls();
2605                           _dag_init(CurrentModule->name);
2606                         ;
2607     break;}
2608 case 70:
2609 #line 595 "xl-yacc.y"
2610 { writeoutput(yyvsp[0]->string,NOFREE);
2611                           worksymtab = Insert(yyvsp[0]->string,
2612                                                 CurrentModule->type->table);
2613                           worksymtab->idtype=VARNAME;
2614                           worksymtab->type=INTPTR;
2615                           DestroyString(yyvsp[0]->string);dontfree(yyvsp[0]); ;
2616     break;}
2617 case 71:
2618 #line 601 "xl-yacc.y"
2619 {writeoutput(yyvsp[0]->string,NOFREE);;
2620     break;}
2621 case 72:
2622 #line 602 "xl-yacc.y"
2623 {writeoutput("[",NOFREE);;
2624     break;}
2625 case 73:
2626 #line 605 "xl-yacc.y"
2627 {writeoutput("]",NOFREE);
2628                           worksymtab = Insert(yyvsp[-5]->string,
2629                                                 CurrentModule->type->table);
2630                           worksymtab->idtype=ARRAYNAME;
2631                           worksymtab->type=INTPTR;
2632                           DestroyString(yyvsp[-5]->string);dontfree(yyvsp[-5]); ;
2633     break;}
2634 case 74:
2635 #line 612 "xl-yacc.y"
2636 { writeoutput(yyvsp[-2]->string,NOFREE);
2637                           writeoutput("()",NOFREE);
2638                           worksymtab = Insert(yyvsp[-2]->string,
2639                                                 CurrentModule->type->table);
2640                           DestroyString(yyvsp[-2]->string);dontfree(yyvsp[-2]);
2641                           worksymtab->idtype=SYSCALLNAME;
2642                           worksymtab->type=INTPTR;
2643                         ;
2644     break;}
2645 case 75:
2646 #line 621 "xl-yacc.y"
2647 { writeoutput(yyvsp[-1]->string, NOFREE);
2648               writeoutput("(", NOFREE);
2649             ;
2650     break;}
2651 case 76:
2652 #line 625 "xl-yacc.y"
2653 { worksymtab = Insert(yyvsp[-4]->string,
2654                     CurrentModule->type->table);
2655               DestroyString(yyvsp[-4]->string);dontfree(yyvsp[-4]);
2656               worksymtab->idtype=SYSCALLNAME;
2657               worksymtab->type=INTPTR;
2658               writeoutput(")", NOFREE);
2659             ;
2660     break;}
2661 case 77:
2662 #line 634 "xl-yacc.y"
2663 {
2664               ;
2665             ;
2666     break;}
2667 case 78:
2668 #line 637 "xl-yacc.y"
2669 {
2670               writeoutput(yyvsp[-1]->string, NOFREE);
2671             ;
2672     break;}
2673 case 79:
2674 #line 640 "xl-yacc.y"
2675 {
2676              /* writeoutput($3->string, NOFREE);*/
2677             ;
2678     break;}
2679 case 80:
2680 #line 643 "xl-yacc.y"
2681 {
2682               writeoutput(yyvsp[0]->string, NOFREE);
2683             ;
2684     break;}
2685 case 83:
2686 #line 652 "xl-yacc.y"
2687 {if(yyvsp[0]!=NULL) {writeoutput("*",NOFREE);dontfree(yyvsp[0]);} ;
2688     break;}
2689 case 85:
2690 #line 656 "xl-yacc.y"
2691 {if(yyvsp[0]!=NULL) {writeoutput("*",NOFREE);dontfree(yyvsp[0]);};
2692     break;}
2693 case 87:
2694 #line 661 "xl-yacc.y"
2695 { SetIdList(yyvsp[-2]->type,yyvsp[-1]->listptr,TYPENAME,0);
2696                           dontfree(yyvsp[-2]);dontfree(yyvsp[-1]);
2697                         ;
2698     break;}
2699 case 88:
2700 #line 665 "xl-yacc.y"
2701 { SetIdList(DUMMYPTR,yyvsp[-1]->listptr,TYPENAME,0);
2702                             dontfree(yyvsp[-1]);
2703                           ;
2704     break;}
2705 case 89:
2706 #line 669 "xl-yacc.y"
2707 {  SetIdList(yyvsp[-2]->type,yyvsp[-1]->listptr,VARNAME,0);
2708                        dontfree(yyvsp[-1]); dontfree(yyvsp[-2]);
2709                     ;
2710     break;}
2711 case 92:
2712 #line 675 "xl-yacc.y"
2713 { worksymtab=yyvsp[-1]->table;
2714                               if (worksymtab->localid==0)
2715                                         worksymtab->idtype=SYSCALLNAME;
2716                                 PopStack(FREE);PopStack(FREE);
2717                                 RestoreCurrentTable(); ;
2718     break;}
2719 case 93:
2720 #line 681 "xl-yacc.y"
2721 { worksymtab=yyvsp[-1]->table;
2722                     worksymtab->localid=1;
2723                     dontfree(yyvsp[-1]); RestoreCurrentTable();;
2724     break;}
2725 case 94:
2726 #line 685 "xl-yacc.y"
2727 { export_to_c_flag = 1;;
2728     break;}
2729 case 95:
2730 #line 687 "xl-yacc.y"
2731 { export_to_c_flag = 0;;
2732     break;}
2733 case 96:
2734 #line 689 "xl-yacc.y"
2735 { worksymtab=yyvsp[-2]->table;
2736                           worksymtab->localid=1;
2737                           dontfree(yyvsp[-2]); RestoreCurrentTable();
2738                         ;
2739     break;}
2740 case 108:
2741 #line 708 "xl-yacc.y"
2742 {
2743               writeoutput(yyvsp[0]->string, NOFREE);
2744                       writeoutput("=", NOFREE);
2745             ;
2746     break;}
2747 case 109:
2748 #line 713 "xl-yacc.y"
2749 { writeoutput(";", NOFREE); ;
2750     break;}
2751 case 110:
2752 #line 719 "xl-yacc.y"
2753 { if (IMPORTFLAG) ImportStruct=TRUE;
2754